70
70
import org .objectweb .asm .commons .Remapper ;
71
71
import org .slf4j .Logger ;
72
72
import org .slf4j .LoggerFactory ;
73
+ import org .vafer .jdependency .Clazz ;
73
74
74
75
/**
75
76
* @author Jason van Zyl
@@ -593,8 +594,14 @@ private void addRemappedClass(
593
594
renamedClass = originalClass ;
594
595
}
595
596
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 );
598
605
599
606
try {
600
607
// 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
728
735
String prefix = "" ;
729
736
String suffix = "" ;
730
737
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
+ }
736
751
}
737
752
738
753
for (Relocator r : relocators ) {
@@ -744,6 +759,7 @@ public String map(String entityName, boolean mapPaths, final boolean mapPackages
744
759
break ;
745
760
}
746
761
}
762
+
747
763
return value ;
748
764
}
749
765
}
0 commit comments