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 2012/11/22 15:58:52 UTC
svn commit: r1412575 - in /tomcat/trunk: ./ java/org/apache/catalina/core/
java/org/apache/tomcat/util/modeler/ test/org/apache/catalina/core/
Author: markt
Date: Thu Nov 22 14:58:51 2012
New Revision: 1412575
URL: http://svn.apache.org/viewvc?rev=1412575&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54170
Ensure correct registration of Filters and Servlets in the JMX registry if the Filter or Servlet name includes a character that must be quoted if used in an ObjectName value.
Added:
tomcat/trunk/java/org/apache/tomcat/util/modeler/Util.java (with props)
tomcat/trunk/test/org/apache/catalina/core/TestApplicationFilterConfig.java (with props)
Modified:
tomcat/trunk/TOMCAT-NEXT.txt
tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterConfig.java
tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java
Modified: tomcat/trunk/TOMCAT-NEXT.txt
URL: http://svn.apache.org/viewvc/tomcat/trunk/TOMCAT-NEXT.txt?rev=1412575&r1=1412574&r2=1412575&view=diff
==============================================================================
--- tomcat/trunk/TOMCAT-NEXT.txt (original)
+++ tomcat/trunk/TOMCAT-NEXT.txt Thu Nov 22 14:58:51 2012
@@ -210,7 +210,7 @@ but possibly 7.1.x).
13. Fix all FindBugs warnings
- Complete for javax.*
- - Complete for o.a.[catalina|coyote|el].*
+ - Complete for o.a.[catalina|coyote|el|juli|naming].*
- Remaining code in progress
14. Review date formatting with a view to reducing duplication.
Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterConfig.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterConfig.java?rev=1412575&r1=1412574&r2=1412575&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterConfig.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterConfig.java Thu Nov 22 14:58:51 2012
@@ -43,6 +43,7 @@ import org.apache.tomcat.InstanceManager
import org.apache.tomcat.util.ExceptionUtils;
import org.apache.tomcat.util.log.SystemLogHandler;
import org.apache.tomcat.util.modeler.Registry;
+import org.apache.tomcat.util.modeler.Util;
import org.apache.tomcat.util.res.StringManager;
@@ -416,16 +417,19 @@ public final class ApplicationFilterConf
String webMod = "//" + hostName + parentName;
String onameStr = null;
+ String filterName = filterDef.getFilterName();
+ if (Util.objectNameValueNeedsQuote(filterName)) {
+ filterName = ObjectName.quote(filterName);
+ }
if (context instanceof StandardContext) {
StandardContext standardContext = (StandardContext) context;
- onameStr = domain + ":j2eeType=Filter,name=" +
- filterDef.getFilterName() + ",WebModule=" + webMod +
- ",J2EEApplication=" +
+ onameStr = domain + ":j2eeType=Filter,name=" + filterName +
+ ",WebModule=" + webMod + ",J2EEApplication=" +
standardContext.getJ2EEApplication() + ",J2EEServer=" +
standardContext.getJ2EEServer();
} else {
- onameStr = domain + ":j2eeType=Filter,name=" +
- filterDef.getFilterName() + ",WebModule=" + webMod;
+ onameStr = domain + ":j2eeType=Filter,name=" + filterName +
+ ",WebModule=" + webMod;
}
try {
oname = new ObjectName(onameStr);
Modified: tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java?rev=1412575&r1=1412574&r2=1412575&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardWrapper.java Thu Nov 22 14:58:51 2012
@@ -66,6 +66,7 @@ import org.apache.tomcat.PeriodicEventLi
import org.apache.tomcat.util.ExceptionUtils;
import org.apache.tomcat.util.log.SystemLogHandler;
import org.apache.tomcat.util.modeler.Registry;
+import org.apache.tomcat.util.modeler.Util;
/**
* Standard implementation of the <b>Wrapper</b> interface that represents
@@ -1775,7 +1776,11 @@ public class StandardWrapper extends Con
StringBuilder keyProperties =
new StringBuilder("j2eeType=Servlet,name=");
- keyProperties.append(getName());
+ String name = getName();
+ if (Util.objectNameValueNeedsQuote(name)) {
+ name = ObjectName.quote(name);
+ }
+ keyProperties.append(name);
keyProperties.append(getWebModuleKeyProperties());
Added: tomcat/trunk/java/org/apache/tomcat/util/modeler/Util.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/modeler/Util.java?rev=1412575&view=auto
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/modeler/Util.java (added)
+++ tomcat/trunk/java/org/apache/tomcat/util/modeler/Util.java Thu Nov 22 14:58:51 2012
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.tomcat.util.modeler;
+
+public class Util {
+
+ private Util() {
+ // Utility class. Hide default constructor.
+ }
+
+ public static boolean objectNameValueNeedsQuote(String input) {
+ char[] chars = input.toCharArray();
+ for (int i = 0; i < input.length(); i++) {
+ char ch = chars[i];
+ if (ch == ',' || ch == '=' || ch == ':' || ch == '*' || ch == '?') {
+ return true;
+ }
+ }
+ return false;
+ }
+}
Propchange: tomcat/trunk/java/org/apache/tomcat/util/modeler/Util.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: tomcat/trunk/test/org/apache/catalina/core/TestApplicationFilterConfig.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/core/TestApplicationFilterConfig.java?rev=1412575&view=auto
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/core/TestApplicationFilterConfig.java (added)
+++ tomcat/trunk/test/org/apache/catalina/core/TestApplicationFilterConfig.java Thu Nov 22 14:58:51 2012
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.catalina.core;
+
+import java.util.Set;
+
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import org.apache.catalina.Context;
+import org.apache.catalina.deploy.FilterDef;
+import org.apache.catalina.filters.AddDefaultCharsetFilter;
+import org.apache.catalina.startup.Tomcat;
+import org.apache.catalina.startup.TomcatBaseTest;
+import org.apache.tomcat.util.modeler.Registry;
+
+public class TestApplicationFilterConfig extends TomcatBaseTest {
+
+ @Test
+ public void testBug54170() throws Exception {
+ Tomcat tomcat = getTomcatInstance();
+
+ // Must have a real docBase - just use temp
+ Context ctx =
+ tomcat.addContext("", System.getProperty("java.io.tmpdir"));
+
+ Tomcat.addServlet(ctx, "HelloWorld", new HelloWorldServlet());
+ ctx.addServletMapping("/", "HelloWorld");
+
+ // Add a filter with a name that should be escaped if used in a JMX
+ // object name
+ FilterDef filterDef = new FilterDef();
+ filterDef.setFilterClass(AddDefaultCharsetFilter.class.getName());
+ filterDef.setFilterName("bug54170*");
+ ctx.addFilterDef(filterDef);
+
+ tomcat.start();
+
+ final MBeanServer mbeanServer =
+ Registry.getRegistry(null, null).getMBeanServer();
+
+ // There should be one Servlet MBean registered
+ Set<ObjectName> servlets = mbeanServer.queryNames(
+ new ObjectName("Tomcat:j2eeType=Servlet,*"), null);
+ Assert.assertEquals(1, servlets.size());
+
+ // There should be one Filter MBean registered
+ Set<ObjectName> filters = mbeanServer.queryNames(
+ new ObjectName("Tomcat:j2eeType=Filter,*"), null);
+ Assert.assertEquals(1, filters.size());
+ }
+}
Propchange: tomcat/trunk/test/org/apache/catalina/core/TestApplicationFilterConfig.java
------------------------------------------------------------------------------
svn:eol-style = native
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org