Additional Profile to Migrate Back to JEE8 from Jakarta EE
diff --git a/.gitignore b/.gitignore
index 2a968e1..f723270 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,4 @@
*.iml
*.ipr
*.iws
+/bin/
diff --git a/src/main/java/org/apache/tomcat/jakartaee/ClassConverter.java b/src/main/java/org/apache/tomcat/jakartaee/ClassConverter.java
index f6d08e2..da9ee42 100644
--- a/src/main/java/org/apache/tomcat/jakartaee/ClassConverter.java
+++ b/src/main/java/org/apache/tomcat/jakartaee/ClassConverter.java
@@ -26,7 +26,6 @@
import java.security.ProtectionDomain;
import java.util.logging.Level;
import java.util.logging.Logger;
-
import org.apache.bcel.classfile.ClassParser;
import org.apache.bcel.classfile.Constant;
import org.apache.bcel.classfile.ConstantUtf8;
@@ -100,10 +99,10 @@
// Jakarta EE specification classes that exist in the container
String[] split = newString.split(";|<");
for (String current : split) {
- int pos = current.indexOf("jakarta/");
+ int pos = current.indexOf(profile.getTarget() + "/");
boolean dotMode = false;
if (pos < 0) {
- pos = current.indexOf("jakarta.");
+ pos = current.indexOf(profile.getTarget() + ".");
dotMode = true;
}
if (pos >= 0) {
@@ -115,14 +114,15 @@
if (loader.getResource(resourceName) == null) {
if (logger.isLoggable(Level.FINE)) {
logger.log(Level.FINE, sm.getString("classConverter.skipName",
+ profile.getSource(),
current.substring(pos).replace('/','.')));
}
// Cancel the replacement as the replacement does not exist
String originalFragment;
if (dotMode) {
- originalFragment = current.replace("jakarta.", "javax.");
+ originalFragment = current.replace(profile.getTarget() + ".", profile.getSource() + ".");
} else {
- originalFragment = current.replace("jakarta/", "javax/");
+ originalFragment = current.replace(profile.getTarget() + "/", profile.getSource() + "/");
}
newString = newString.replace(current, originalFragment);
}
diff --git a/src/main/java/org/apache/tomcat/jakartaee/EESpecProfile.java b/src/main/java/org/apache/tomcat/jakartaee/EESpecProfile.java
index 36d201b..23eecbc 100644
--- a/src/main/java/org/apache/tomcat/jakartaee/EESpecProfile.java
+++ b/src/main/java/org/apache/tomcat/jakartaee/EESpecProfile.java
@@ -24,7 +24,8 @@
*/
public enum EESpecProfile {
- TOMCAT("javax([/\\.](annotation(?![/\\.]processing)" +
+ TOMCAT("javax", "jakarta",
+ "javax([/\\.](annotation(?![/\\.]processing)" +
"|ejb" +
"|el" +
"|mail" +
@@ -34,7 +35,33 @@
"|transaction(?![/\\.]xa)" +
"|websocket))"),
- EE("javax([/\\.](activation" +
+ EE("javax", "jakarta",
+ "javax([/\\.](activation" +
+ "|annotation(?![/\\.]processing)" +
+ "|batch" +
+ "|decorator" +
+ "|ejb" +
+ "|el" +
+ "|enterprise" +
+ "|faces" +
+ "|jms" +
+ "|json" +
+ "|jws" +
+ "|interceptor" +
+ "|inject" +
+ "|mail" +
+ "|management[/\\.]j2ee" +
+ "|persistence" +
+ "|resource" +
+ "|security[/\\.](auth[/\\.]message|enterprise|jacc)" +
+ "|servlet" +
+ "|transaction(?![/\\.]xa)" +
+ "|validation" +
+ "|websocket" +
+ "|ws[/\\.]rs" +
+ "|xml[/\\.](bind|soap|ws)))"),
+ JEE8("jakarta", "javax",
+ "jakarta([/\\.](activation" +
"|annotation(?![/\\.]processing)" +
"|batch" +
"|decorator" +
@@ -59,14 +86,28 @@
"|ws[/\\.]rs" +
"|xml[/\\.](bind|soap|ws)))");
+ private String source;
+ private String target;
private Pattern pattern;
- EESpecProfile(String pattern) {
+ EESpecProfile(String source, String target, String pattern) {
+ this.source = source;
+ this.target = target;
this.pattern = Pattern.compile(pattern);
}
public String convert(String name) {
Matcher m = pattern.matcher(name);
- return m.replaceAll("jakarta$1");
+ return m.replaceAll(target + "$1");
+ }
+
+ public String getSource()
+ {
+ return source;
+ }
+
+ public String getTarget()
+ {
+ return target;
}
}
diff --git a/src/main/resources/org/apache/tomcat/jakartaee/LocalStrings.properties b/src/main/resources/org/apache/tomcat/jakartaee/LocalStrings.properties
index a4786c3..d3a63bc 100644
--- a/src/main/resources/org/apache/tomcat/jakartaee/LocalStrings.properties
+++ b/src/main/resources/org/apache/tomcat/jakartaee/LocalStrings.properties
@@ -15,7 +15,7 @@
classConverter.converted=Migrated class [{0}]
classConverter.noConversion=No conversion necessary for [{0}]
-classConverter.skipName=Skip conversion of class usage from the javax namespace to [{0}] as it is not accessible to the classloader
+classConverter.skipName=Skip conversion of class usage from the [{0}] namespace to [{1}] as it is not accessible to the classloader
migration.archive.complete=Migration finished for archive [{0}]
migration.archive.memory=Migration starting for archive [{0}] using in memory copy
@@ -38,6 +38,7 @@
\ -profile=<profile name>\n\
\ TOMCAT (default) to convert Java EE APIs provided by Tomcat\n\
\ EE to convert all Java EE APIs\n\
+\ JEE8 to convert back to old Java EE8 APIs\n\
\ -zipInMemory\n\
\ By default zip format archives (.zip, jar, .war, .ear, etc.)\n\
\ are processed as streams. This is more efficient but is not\n\