This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat-jakartaee-migration.git
The following commit(s) were added to refs/heads/main by this push: new ddc2f11 Additional Profile to Migrate Back to JEE8 from Jakarta EE ddc2f11 is described below commit ddc2f1173ae9da5204913aa20199b634941e6161 Author: Steffen Blaß <bla...@hdpgmbh.de> AuthorDate: Tue Jul 12 12:02:28 2022 +0200 Additional Profile to Migrate Back to JEE8 from Jakarta EE --- .gitignore | 1 + .../apache/tomcat/jakartaee/ClassConverter.java | 10 ++--- .../org/apache/tomcat/jakartaee/EESpecProfile.java | 49 ++++++++++++++++++++-- .../tomcat/jakartaee/LocalStrings.properties | 3 +- 4 files changed, 53 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 2a968e1..f723270 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ target *.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.lang.instrument.IllegalClassFormatException; 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 @@ public class ClassConverter implements Converter, ClassFileTransformer { // 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 @@ public class ClassConverter implements Converter, ClassFileTransformer { 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 @@ import java.util.regex.Pattern; */ public enum EESpecProfile { - TOMCAT("javax([/\\.](annotation(?![/\\.]processing)" + + TOMCAT("javax", "jakarta", + "javax([/\\.](annotation(?![/\\.]processing)" + "|ejb" + "|el" + "|mail" + @@ -34,7 +35,33 @@ public enum EESpecProfile { "|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 @@ public enum EESpecProfile { "|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 @@ where options includes:\n\ \ -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\ --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org