How to reproduce? From inside the contextInitialized-Method of an ServletContextListener instance, call context.addFilter(null, new ArbitraryFilter(pathPrefix)).addMappingForUrlPatterns(null, false, pathPrefix); What happens? Dec 12, 2012 3:59:03 PM org.apache.catalina.core.StandardContext filterStart SEVERE: Exception starting filter null java.lang.NullPointerException at org.apache.tomcat.util.modeler.Util.objectNameValueNeedsQuote(Util.java:26) at org.apache.catalina.core.ApplicationFilterConfig.registerJMX(ApplicationFilterConfig.java:421) at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:282) at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4650) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5306) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:657) at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1637) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) Dec 12, 2012 3:59:03 PM org.apache.catalina.core.StandardContext startInternal SEVERE: Error filterStart Dec 12, 2012 3:59:03 PM org.apache.catalina.core.StandardContext startInternal SEVERE: Context [] startup failed due to previous errors What should happen? Either - if null is not an allowed filter name, throw a IllegalArgumentException on context.addFilter(...) Or, if it is an allowed filter name, handle null-values gracefully
I just recognized that i created the bug with a wrong affected version number. The bug happens in Rel. 7.0.34, probably as a result of fixing #54170
Hi, I'm going to work on this. Regards Violeta
Hi, Servlet 3.0 javadoc does not specify what should be the behavior when filterName is NULL. I requested a clarification [1] from the Servlet Specification expert group. I'm changing the status to NEEDINFO. Regards Violeta [1] http://java.net/jira/browse/SERVLET_SPEC-51
Created attachment 29817 [details] Patch proposal
Created attachment 29818 [details] Test case
Hi, As per clarification provided by Servlet Specification expert group - IllegalArgumentException should be thrown when filter name is NULL or empty string. Patch proposal and test case are attached. Any comments will be appreciated. Regards Violeta
Created attachment 29822 [details] patch proposal
Thanks for the patch and for working with the EG to obtain the clarification. The patch has been applied to trunk and 7.0.x and will be included in 7.0.35 onwards.