You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2022/11/14 22:38:18 UTC
[tomcat] branch main updated: Avoid runtime dependency on the migration tool unless it is being used
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
---
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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: [tomcat] branch main updated: Avoid runtime dependency on the migration tool unless it is being used
Posted by Mark Thomas <ma...@apache.org>.
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-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: dev-help@tomcat.apache.org
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: [tomcat] branch main updated: Avoid runtime dependency on the migration tool unless it is being used
Posted by Rémy Maucherat <re...@apache.org>.
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.
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-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org