On 14/11/2022 22:52, Rémy Maucherat wrote:
On Mon, Nov 14, 2022 at 11:38 PM <ma...@apache.org> wrote:

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.git


The following commit(s) were added to refs/heads/main by this push:
      new dc5cab83ae Avoid runtime dependency on the migration tool unless it 
is being used
dc5cab83ae is described below

commit dc5cab83ae13804152b3d1bab90fafb9582764da
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon Nov 14 22:37:54 2022 +0000

     Avoid runtime dependency on the migration tool unless it is being used

Good idea and nice trick.

Tx.



Rémy

---
  java/org/apache/catalina/loader/WebappLoader.java | 29 ++++++++++++++++-------
  webapps/docs/changelog.xml                        |  5 ++++
  2 files changed, 26 insertions(+), 8 deletions(-)

diff --git a/java/org/apache/catalina/loader/WebappLoader.java 
b/java/org/apache/catalina/loader/WebappLoader.java
index a8fe3cf806..ae4f58523d 100644
--- a/java/org/apache/catalina/loader/WebappLoader.java
+++ b/java/org/apache/catalina/loader/WebappLoader.java
@@ -367,14 +367,7 @@ public class WebappLoader extends LifecycleMBeanBase 
implements Loader{

              // Set Jakarta class converter
              if (getJakartaConverter() != null) {
-                EESpecProfile profile = null;
-                try {
-                    profile = EESpecProfiles.valueOf(getJakartaConverter());
-                } catch (IllegalArgumentException ignored) {
-                    // Use default value
-                    log.warn(sm.getString("webappLoader.unknownProfile", 
getJakartaConverter()));
-                }
-                classLoader.addTransformer((profile != null) ? new 
ClassConverter(profile) : new ClassConverter());
+                MigrationUtil.addJakartaEETransformer(classLoader, 
getJakartaConverter());
              }

              // Configure our repositories
@@ -631,4 +624,24 @@ public class WebappLoader extends LifecycleMBeanBase 
implements Loader{

          return name.toString();
      }
+
+
+    /*
+     * Implemented in a sub-class so EESpecProfile and EESpecProfiles are not
+     * loaded unless a profile is configured. Otherwise, tomcat-embed-core.jar
+     * has a runtime dependency on the migration tool whether it is used or 
not.
+     */
+    private static class MigrationUtil {
+
+        public static void addJakartaEETransformer(WebappClassLoaderBase 
webappClassLoader, String profileName) {
+            EESpecProfile profile = null;
+            try {
+                profile = EESpecProfiles.valueOf(profileName);
+            } catch (IllegalArgumentException ignored) {
+                // Use default value
+                log.warn(sm.getString("webappLoader.unknownProfile", 
profileName));
+            }
+            webappClassLoader.addTransformer((profile != null) ? new 
ClassConverter(profile) : new ClassConverter());
+        }
+    }
  }
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index cbf01a7ebb..ddf984a862 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -152,6 +152,11 @@
          <code>HttpServletRequest.getTrailerFields()</code> and with the 
Servlet
          API provided by the Jakarta EE project. (markt)
        </fix>
+      <fix>
+        Refactor <code>WebappLoader</code> so it only has a runtime dependency
+        on the migration tool for Jakarta EE if configured to use the converter
+        as classes are loaded. (markt)
+      </fix>
      </changelog>
    </subsection>
    <subsection name="Coyote">


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to