[Bug 66536] New: tagsfiles seem to be compiles with the wrong source encoding
https://bz.apache.org/bugzilla/show_bug.cgi?id=66536 Bug ID: 66536 Summary: tagsfiles seem to be compiles with the wrong source encoding Product: Tomcat 9 Version: 9.0.69 Hardware: PC OS: Linux Status: NEW Severity: normal Priority: P2 Component: Jasper Assignee: dev@tomcat.apache.org Reporter: info@klawitter.de Target Milestone: - Created attachment 38526 --> https://bz.apache.org/bugzilla/attachment.cgi?id=38526&action=edit minimal webapp Hi there, When I let tomcat/jasper compile the following tag file (WEB-INF/tags/umlaut.jsp): <%@tag trimDirectiveWhitespaces="true" pageEncoding="UTF-8" %> <%= "ü does not work" %> // bytes c3 bc compiles into umlaut_tag.java in which the umlaut is doubly utf-8 encoded like this: out.print( "ü does not work" ); // bytes c3 83 c2 bc String literals in jsp files work just fine, so I'd like to rule out errors in my encoding setup. (Tomcat is running with LC_ALL=de_DE.UTF-8.) I've attached a minimal webapp demonstrating that jsp is working, but the tag files are not. Regards, Holger -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch main updated: Fix LambdaExpression to functional interface coercion
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 0bc6e4f4c9 Fix LambdaExpression to functional interface coercion 0bc6e4f4c9 is described below commit 0bc6e4f4c91804f1d2dd3102947393e928f5d58e Author: Mark Thomas AuthorDate: Tue Mar 21 15:19:07 2023 + Fix LambdaExpression to functional interface coercion --- java/jakarta/el/ELContext.java | 67 +++ java/org/apache/el/lang/ELSupport.java | 12 +++- test/org/apache/el/TestValueExpressionImpl.java | 86 + test/org/apache/el/TesterBeanJ.java | 50 ++ webapps/docs/changelog.xml | 9 +++ 5 files changed, 223 insertions(+), 1 deletion(-) diff --git a/java/jakarta/el/ELContext.java b/java/jakarta/el/ELContext.java index 0f6d221cc9..0e80de277f 100644 --- a/java/jakarta/el/ELContext.java +++ b/java/jakarta/el/ELContext.java @@ -16,6 +16,8 @@ */ package jakarta.el; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collections; @@ -310,6 +312,71 @@ public abstract class ELContext { setPropertyResolved(originalResolved); } +if (obj instanceof LambdaExpression && isFunctionalInterface(type)) { +((LambdaExpression) obj).setELContext(this); +} + return ELManager.getExpressionFactory().coerceToType(obj, type); } + + +/* + * Copied from org.apache.el.lang.ELSupport - keep in sync + */ +static boolean isFunctionalInterface(Class type) { + +if (!type.isInterface()) { +return false; +} + +boolean foundAbstractMethod = false; +Method[] methods = type.getMethods(); +for (Method method : methods) { +if (Modifier.isAbstract(method.getModifiers())) { +// Abstract methods that override one of the public methods +// of Object don't count +if (overridesObjectMethod(method)) { +continue; +} +if (foundAbstractMethod) { +// Found more than one +return false; +} else { +foundAbstractMethod = true; +} +} +} +return foundAbstractMethod; +} + + +/* + * Copied from org.apache.el.lang.ELSupport - keep in sync + */ +private static boolean overridesObjectMethod(Method method) { +// There are three methods that can be overridden +if ("equals".equals(method.getName())) { +if (method.getReturnType().equals(boolean.class)) { +if (method.getParameterCount() == 1) { +if (method.getParameterTypes()[0].equals(Object.class)) { +return true; +} +} +} +} else if ("hashCode".equals(method.getName())) { +if (method.getReturnType().equals(int.class)) { +if (method.getParameterCount() == 0) { +return true; +} +} +} else if ("toString".equals(method.getName())) { +if (method.getReturnType().equals(String.class)) { +if (method.getParameterCount() == 0) { +return true; +} +} +} + +return false; +} } diff --git a/java/org/apache/el/lang/ELSupport.java b/java/org/apache/el/lang/ELSupport.java index d663450a4a..4aa4f4aa7e 100644 --- a/java/org/apache/el/lang/ELSupport.java +++ b/java/org/apache/el/lang/ELSupport.java @@ -619,7 +619,11 @@ public class ELSupport { if (!Modifier.isAbstract(method.getModifiers())) { throw new ELException(MessageFactory.get("elSupport.coerce.nonAbstract", type, method)); } -return lambdaExpression.invoke(ctx, args); +if (ctx == null) { +return lambdaExpression.invoke(args); +} else { +return lambdaExpression.invoke(ctx, args); +} }); return result; }; @@ -675,6 +679,9 @@ public class ELSupport { } +/* + * Copied to jakarta.el.ELContext - keep in sync + */ static boolean isFunctionalInterface(Class type) { if (!type.isInterface()) { @@ -702,6 +709,9 @@ public class ELSupport { } +/* + * Copied to jakarta.el.ELContext - keep in sync + */ private static boolean overridesObjectMethod(Method method) { // There are three methods that can be overridden if ("equals".equals
[tomcat] branch 10.1.x updated: Fix LambdaExpression to functional interface coercion
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/10.1.x by this push: new c8601ff3a6 Fix LambdaExpression to functional interface coercion c8601ff3a6 is described below commit c8601ff3a6a6d6bdc9b5475ae902536ef5f87135 Author: Mark Thomas AuthorDate: Tue Mar 21 15:19:07 2023 + Fix LambdaExpression to functional interface coercion --- java/jakarta/el/ELContext.java | 67 +++ java/org/apache/el/lang/ELSupport.java | 12 +++- test/org/apache/el/TestValueExpressionImpl.java | 86 + test/org/apache/el/TesterBeanJ.java | 50 ++ webapps/docs/changelog.xml | 9 +++ 5 files changed, 223 insertions(+), 1 deletion(-) diff --git a/java/jakarta/el/ELContext.java b/java/jakarta/el/ELContext.java index 0f6d221cc9..0e80de277f 100644 --- a/java/jakarta/el/ELContext.java +++ b/java/jakarta/el/ELContext.java @@ -16,6 +16,8 @@ */ package jakarta.el; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collections; @@ -310,6 +312,71 @@ public abstract class ELContext { setPropertyResolved(originalResolved); } +if (obj instanceof LambdaExpression && isFunctionalInterface(type)) { +((LambdaExpression) obj).setELContext(this); +} + return ELManager.getExpressionFactory().coerceToType(obj, type); } + + +/* + * Copied from org.apache.el.lang.ELSupport - keep in sync + */ +static boolean isFunctionalInterface(Class type) { + +if (!type.isInterface()) { +return false; +} + +boolean foundAbstractMethod = false; +Method[] methods = type.getMethods(); +for (Method method : methods) { +if (Modifier.isAbstract(method.getModifiers())) { +// Abstract methods that override one of the public methods +// of Object don't count +if (overridesObjectMethod(method)) { +continue; +} +if (foundAbstractMethod) { +// Found more than one +return false; +} else { +foundAbstractMethod = true; +} +} +} +return foundAbstractMethod; +} + + +/* + * Copied from org.apache.el.lang.ELSupport - keep in sync + */ +private static boolean overridesObjectMethod(Method method) { +// There are three methods that can be overridden +if ("equals".equals(method.getName())) { +if (method.getReturnType().equals(boolean.class)) { +if (method.getParameterCount() == 1) { +if (method.getParameterTypes()[0].equals(Object.class)) { +return true; +} +} +} +} else if ("hashCode".equals(method.getName())) { +if (method.getReturnType().equals(int.class)) { +if (method.getParameterCount() == 0) { +return true; +} +} +} else if ("toString".equals(method.getName())) { +if (method.getReturnType().equals(String.class)) { +if (method.getParameterCount() == 0) { +return true; +} +} +} + +return false; +} } diff --git a/java/org/apache/el/lang/ELSupport.java b/java/org/apache/el/lang/ELSupport.java index 6e0c4c075e..aafb057041 100644 --- a/java/org/apache/el/lang/ELSupport.java +++ b/java/org/apache/el/lang/ELSupport.java @@ -635,7 +635,11 @@ public class ELSupport { if (!Modifier.isAbstract(method.getModifiers())) { throw new ELException(MessageFactory.get("elSupport.coerce.nonAbstract", type, method)); } -return lambdaExpression.invoke(ctx, args); +if (ctx == null) { +return lambdaExpression.invoke(args); +} else { +return lambdaExpression.invoke(ctx, args); +} }); return result; }; @@ -695,6 +699,9 @@ public class ELSupport { } +/* + * Copied to jakarta.el.ELContext - keep in sync + */ static boolean isFunctionalInterface(Class type) { if (!type.isInterface()) { @@ -722,6 +729,9 @@ public class ELSupport { } +/* + * Copied to jakarta.el.ELContext - keep in sync + */ private static boolean overridesObjectMethod(Method method) { // There are three methods that can be overridden if ("equals".eq
Buildbot failure in on tomcat-10.1.x
Build status: BUILD FAILED: failed compile (failure) Logs copied. (failure) Worker used: bb_worker2_ubuntu URL: https://ci2.apache.org/#builders/44/builds/724 Blamelist: Mark Thomas Build Text: failed compile (failure) Logs copied. (failure) Status Detected: new failure Build Source Stamp: [branch 10.1.x] c8601ff3a6a6d6bdc9b5475ae902536ef5f87135 Steps: worker_preparation: 0 git: 0 shell: 0 shell_1: 0 shell_2: 0 shell_3: 0 shell_4: 0 shell_5: 0 compile: 1 shell_6: 0 shell_7: 0 shell_8: 0 shell_9: 0 Rsync docs to nightlies.apache.org: 0 shell_10: 0 Rsync RAT to nightlies.apache.org: 0 compile_1: 2 shell_11: 2 -- ASF Buildbot - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch 10.1.x updated: Fix backport
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/10.1.x by this push: new 030fed371b Fix backport 030fed371b is described below commit 030fed371bcab81462627c12328ef05e264684f6 Author: Mark Thomas AuthorDate: Tue Mar 21 17:10:42 2023 + Fix backport --- test/org/apache/el/TestValueExpressionImpl.java | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/org/apache/el/TestValueExpressionImpl.java b/test/org/apache/el/TestValueExpressionImpl.java index 6eb447479c..a56f569db5 100644 --- a/test/org/apache/el/TestValueExpressionImpl.java +++ b/test/org/apache/el/TestValueExpressionImpl.java @@ -247,7 +247,7 @@ public class TestValueExpressionImpl { @Test public void testOptional01() { ExpressionFactory factory = ExpressionFactory.newInstance(); -ELContext context = new ELContextImpl(); +ELContext context = new ELContextImpl(factory); final String data = "some data"; @@ -271,7 +271,7 @@ public class TestValueExpressionImpl { @Test public void testOptional02() { ExpressionFactory factory = ExpressionFactory.newInstance(); -ELContext context = new ELContextImpl(); +ELContext context = new ELContextImpl(factory); TesterBeanJ beanJ = new TesterBeanJ(); @@ -290,7 +290,7 @@ public class TestValueExpressionImpl { @Test public void testOptional03() { ExpressionFactory factory = ExpressionFactory.newInstance(); -ELContext context = new ELContextImpl(); +ELContext context = new ELContextImpl(factory); final String data = "some data"; @@ -312,7 +312,7 @@ public class TestValueExpressionImpl { @Test public void testOptional04() { ExpressionFactory factory = ExpressionFactory.newInstance(); -ELContext context = new ELContextImpl(); +ELContext context = new ELContextImpl(factory); TesterBeanJ beanJ = new TesterBeanJ(); - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 66513] Primary Key Violation using PersistentManager + PersistentValves +
https://bz.apache.org/bugzilla/show_bug.cgi?id=66513 --- Comment #6 from Christopher Schultz --- (In reply to Vincent Liautaud from comment #5) > in addition to the fix, may you ask the development team : Let's try to keep the discussion of this enhancement request on-topic with the original request. If you have other fixes, etc. either post them to the development mailing list or file separate bugs for them. It's not okay to have "Random changes Vincent wants" to be a perpetually-open bug in Bugzilla. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: [tomcat] branch main updated: Fix LambdaExpression to functional interface coercion
Mark, On 3/21/23 11:19, 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 0bc6e4f4c9 Fix LambdaExpression to functional interface coercion 0bc6e4f4c9 is described below commit 0bc6e4f4c91804f1d2dd3102947393e928f5d58e Author: Mark Thomas AuthorDate: Tue Mar 21 15:19:07 2023 + Fix LambdaExpression to functional interface coercion --- java/jakarta/el/ELContext.java | 67 +++ java/org/apache/el/lang/ELSupport.java | 12 +++- test/org/apache/el/TestValueExpressionImpl.java | 86 + test/org/apache/el/TesterBeanJ.java | 50 ++ webapps/docs/changelog.xml | 9 +++ 5 files changed, 223 insertions(+), 1 deletion(-) diff --git a/java/jakarta/el/ELContext.java b/java/jakarta/el/ELContext.java index 0f6d221cc9..0e80de277f 100644 --- a/java/jakarta/el/ELContext.java +++ b/java/jakarta/el/ELContext.java @@ -16,6 +16,8 @@ */ package jakarta.el; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collections; @@ -310,6 +312,71 @@ public abstract class ELContext { setPropertyResolved(originalResolved); } +if (obj instanceof LambdaExpression && isFunctionalInterface(type)) { +((LambdaExpression) obj).setELContext(this); +} + return ELManager.getExpressionFactory().coerceToType(obj, type); } + + +/* + * Copied from org.apache.el.lang.ELSupport - keep in sync + */ +static boolean isFunctionalInterface(Class type) { + +if (!type.isInterface()) { +return false; +} + +boolean foundAbstractMethod = false; +Method[] methods = type.getMethods(); +for (Method method : methods) { +if (Modifier.isAbstract(method.getModifiers())) { +// Abstract methods that override one of the public methods +// of Object don't count +if (overridesObjectMethod(method)) { +continue; +} +if (foundAbstractMethod) { +// Found more than one +return false; +} else { +foundAbstractMethod = true; +} +} +} +return foundAbstractMethod; +} + + +/* + * Copied from org.apache.el.lang.ELSupport - keep in sync + */ +private static boolean overridesObjectMethod(Method method) { +// There are three methods that can be overridden +if ("equals".equals(method.getName())) { +if (method.getReturnType().equals(boolean.class)) { +if (method.getParameterCount() == 1) { +if (method.getParameterTypes()[0].equals(Object.class)) { +return true; +} +} +} +} else if ("hashCode".equals(method.getName())) { +if (method.getReturnType().equals(int.class)) { +if (method.getParameterCount() == 0) { +return true; +} +} +} else if ("toString".equals(method.getName())) { +if (method.getReturnType().equals(String.class)) { +if (method.getParameterCount() == 0) { +return true; +} +} +} + +return false; +} } I'm curious about this. How is a "functional interface" (i.e. all methods are abstract, except for those which were originally-defined in java.lang.Object and for some reason overridden to be abstract in this functional-interface) different from an actual interface, and why does JSP care? I can't tell what the use-case is from reading the unit tests. -chris - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Buildbot success in on tomcat-10.1.x
Build status: Build succeeded! Worker used: bb_worker2_ubuntu URL: https://ci2.apache.org/#builders/44/builds/725 Blamelist: Mark Thomas Build Text: build successful Status Detected: restored build Build Source Stamp: [branch 10.1.x] 030fed371bcab81462627c12328ef05e264684f6 Steps: worker_preparation: 0 git: 0 shell: 0 shell_1: 0 shell_2: 0 shell_3: 0 shell_4: 0 shell_5: 0 compile: 1 shell_6: 0 shell_7: 0 shell_8: 0 shell_9: 0 Rsync docs to nightlies.apache.org: 0 shell_10: 0 Rsync RAT to nightlies.apache.org: 0 compile_1: 1 shell_11: 0 Rsync Logs to nightlies.apache.org: 0 -- ASF Buildbot - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch main updated: Fix formatting in XML source that results in an unwanted space in the final documentation.
This is an automated email from the ASF dual-hosted git repository. schultz 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 deb1c10352 Fix formatting in XML source that results in an unwanted space in the final documentation. deb1c10352 is described below commit deb1c10352cf71dd923a687d95d7a521b5a5af1b Author: Christopher Schultz AuthorDate: Tue Mar 21 15:04:22 2023 -0400 Fix formatting in XML source that results in an unwanted space in the final documentation. --- webapps/docs/config/valve.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webapps/docs/config/valve.xml b/webapps/docs/config/valve.xml index 1cf349253f..45d9b32b14 100644 --- a/webapps/docs/config/valve.xml +++ b/webapps/docs/config/valve.xml @@ -2593,8 +2593,8 @@ notify the valve that no session required during this request. If the request matches this filter pattern, the valve assumes there has been no need to restore session. An example filter would look like -filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html| -.*\.css|.*\.txt". The filter is a regular expression using + filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt". +The filter is a regular expression using java.util.regex. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch 9.0.x updated: Fix formatting in XML source that results in an unwanted space in the final documentation.
This is an automated email from the ASF dual-hosted git repository. schultz pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/9.0.x by this push: new 101cf5c21b Fix formatting in XML source that results in an unwanted space in the final documentation. 101cf5c21b is described below commit 101cf5c21be4e29d7e8dd9ceaf4cefa587a10d8b Author: Christopher Schultz AuthorDate: Tue Mar 21 15:04:22 2023 -0400 Fix formatting in XML source that results in an unwanted space in the final documentation. --- webapps/docs/config/valve.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webapps/docs/config/valve.xml b/webapps/docs/config/valve.xml index 0f09a0353e..2e876defda 100644 --- a/webapps/docs/config/valve.xml +++ b/webapps/docs/config/valve.xml @@ -2594,8 +2594,8 @@ notify the valve that no session required during this request. If the request matches this filter pattern, the valve assumes there has been no need to restore session. An example filter would look like -filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html| -.*\.css|.*\.txt". The filter is a regular expression using + filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt". +The filter is a regular expression using java.util.regex. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch 10.1.x updated: Fix formatting in XML source that results in an unwanted space in the final documentation.
This is an automated email from the ASF dual-hosted git repository. schultz pushed a commit to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/10.1.x by this push: new ac33fb7ba3 Fix formatting in XML source that results in an unwanted space in the final documentation. ac33fb7ba3 is described below commit ac33fb7ba34b081f53747540528d3c9e56fa09f6 Author: Christopher Schultz AuthorDate: Tue Mar 21 15:04:22 2023 -0400 Fix formatting in XML source that results in an unwanted space in the final documentation. --- webapps/docs/config/valve.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webapps/docs/config/valve.xml b/webapps/docs/config/valve.xml index df79480994..5bfcf664c8 100644 --- a/webapps/docs/config/valve.xml +++ b/webapps/docs/config/valve.xml @@ -2593,8 +2593,8 @@ notify the valve that no session required during this request. If the request matches this filter pattern, the valve assumes there has been no need to restore session. An example filter would look like -filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html| -.*\.css|.*\.txt". The filter is a regular expression using + filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt". +The filter is a regular expression using java.util.regex. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch 8.5.x updated: Fix formatting in XML source that results in an unwanted space in the final documentation.
This is an automated email from the ASF dual-hosted git repository. schultz pushed a commit to branch 8.5.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/8.5.x by this push: new fcf10c2d9b Fix formatting in XML source that results in an unwanted space in the final documentation. fcf10c2d9b is described below commit fcf10c2d9be8fc7cee1b9d61e9c0b10ce91b5f20 Author: Christopher Schultz AuthorDate: Tue Mar 21 15:04:22 2023 -0400 Fix formatting in XML source that results in an unwanted space in the final documentation. --- webapps/docs/config/valve.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webapps/docs/config/valve.xml b/webapps/docs/config/valve.xml index e09b167f0d..237fe29154 100644 --- a/webapps/docs/config/valve.xml +++ b/webapps/docs/config/valve.xml @@ -2556,8 +2556,8 @@ notify the valve that no session required during this request. If the request matches this filter pattern, the valve assumes there has been no need to restore session. An example filter would look like -filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html| -.*\.css|.*\.txt". The filter is a regular expression using + filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt". +The filter is a regular expression using java.util.regex. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org