7070import org .objectweb .asm .commons .Remapper ;
7171import org .slf4j .Logger ;
7272import org .slf4j .LoggerFactory ;
73+ import org .vafer .jdependency .Clazz ;
7374
7475/**
7576 * @author Jason van Zyl
@@ -593,8 +594,14 @@ private void addRemappedClass(
593594 renamedClass = originalClass ;
594595 }
595596
596- // Need to take the .class off for remapping evaluation
597- String mappedName = packageMapper .map (name .substring (0 , name .indexOf ('.' )), true , false );
597+ String mappedName ;
598+ if (Clazz .isMultiReleaseClassFile (name )) {
599+ mappedName = packageMapper .map (name , true , false ); // .substring(0, name.indexOf('.'));
600+ } else {
601+ // Need to take the .class off for remapping evaluation
602+ mappedName = packageMapper .map (name .substring (0 , name .indexOf ('.' )), true , false );
603+ }
604+ logger .debug ("Rewrote class bytecode: >> TO MAPPED NAME: {}" , mappedName );
598605
599606 try {
600607 // Now we put it back on so the class file is written out with the right extension.
@@ -728,11 +735,19 @@ public String map(String entityName, boolean mapPaths, final boolean mapPackages
728735 String prefix = "" ;
729736 String suffix = "" ;
730737
731- Matcher m = CLASS_PATTERN .matcher (entityName );
732- if (m .matches ()) {
733- prefix = m .group (1 ) + "L" ;
734- suffix = ";" ;
735- entityName = m .group (2 );
738+ boolean isMultiReleaseClassFile = Clazz .isMultiReleaseClassFile (entityName );
739+
740+ if (isMultiReleaseClassFile ) {
741+ Clazz .ParsedFileName parsedFileName = Clazz .parseClassFileName (entityName );
742+ prefix = "META-INF/versions/" + parsedFileName .forJava + "/" ;
743+ entityName = parsedFileName .className .replace ("." , "/" );
744+ } else {
745+ Matcher m = CLASS_PATTERN .matcher (entityName );
746+ if (m .matches ()) {
747+ prefix = m .group (1 ) + "L" ;
748+ suffix = ";" ;
749+ entityName = m .group (2 );
750+ }
736751 }
737752
738753 for (Relocator r : relocators ) {
@@ -744,6 +759,7 @@ public String map(String entityName, boolean mapPaths, final boolean mapPackages
744759 break ;
745760 }
746761 }
762+
747763 return value ;
748764 }
749765 }
0 commit comments