Author: markt
Date: Mon Nov  1 17:22:33 2010
New Revision: 1029755

URL: http://svn.apache.org/viewvc?rev=1029755&view=rev
Log:
Make Tomcat more tolerant of nulls when generating JMX names for Valves.

Modified:
    tomcat/trunk/java/org/apache/catalina/mbeans/MBeanUtils.java
    tomcat/trunk/java/org/apache/catalina/valves/ValveBase.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/catalina/mbeans/MBeanUtils.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/mbeans/MBeanUtils.java?rev=1029755&r1=1029754&r2=1029755&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/mbeans/MBeanUtils.java (original)
+++ tomcat/trunk/java/org/apache/catalina/mbeans/MBeanUtils.java Mon Nov  1 
17:22:33 2010
@@ -1690,7 +1690,7 @@ public class MBeanUtils {
         
         Container c = container;
         StringBuilder keyProperties = new StringBuilder();
-        int unknown = 0;
+        int containerCount = 0;
         
         // Work up container hierarchy, add a component to the name for
         // each container
@@ -1708,10 +1708,16 @@ public class MBeanUtils {
             } else if (c instanceof Host) {
                 keyProperties.append(",host=");
                 keyProperties.append(c.getName());
+            } else if (c == null) {
+                // May happen in unit testing and/or some embedding scenarios
+                keyProperties.append(",container");
+                keyProperties.append(containerCount++);
+                keyProperties.append("=null");
+                break;
             } else {
                 // Should never happen...
-                keyProperties.append(",unknown");
-                keyProperties.append(unknown++);
+                keyProperties.append(",container");
+                keyProperties.append(containerCount++);
                 keyProperties.append('=');
                 keyProperties.append(c.getName());
             }

Modified: tomcat/trunk/java/org/apache/catalina/valves/ValveBase.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/ValveBase.java?rev=1029755&r1=1029754&r2=1029755&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/valves/ValveBase.java (original)
+++ tomcat/trunk/java/org/apache/catalina/valves/ValveBase.java Mon Nov  1 
17:22:33 2010
@@ -27,6 +27,7 @@ import org.apache.catalina.Contained;
 import org.apache.catalina.Container;
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.LifecycleState;
+import org.apache.catalina.Pipeline;
 import org.apache.catalina.Valve;
 import org.apache.catalina.comet.CometEvent;
 import org.apache.catalina.connector.Request;
@@ -289,19 +290,24 @@ public abstract class ValveBase extends 
         name.append(MBeanUtils.getContainerKeyProperties(container));
         
         int seq = 0;
-        for (Valve valve : container.getPipeline().getValves()) {
-            // Skip null valves
-            if (valve == null) {
-                continue;
-            }
-            // Only compare valves in pipeline until we find this valve
-            if (valve == this) {
-                break;
-            }
-            if (valve.getClass() == this.getClass()) {
-                // Duplicate valve earlier in pipeline
-                // increment sequence number
-                seq ++;
+        
+        // Pipeline may not be present in unit testing
+        Pipeline p = container.getPipeline();
+        if (p != null) {
+            for (Valve valve : p.getValves()) {
+                // Skip null valves
+                if (valve == null) {
+                    continue;
+                }
+                // Only compare valves in pipeline until we find this valve
+                if (valve == this) {
+                    break;
+                }
+                if (valve.getClass() == this.getClass()) {
+                    // Duplicate valve earlier in pipeline
+                    // increment sequence number
+                    seq ++;
+                }
             }
         }
         

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1029755&r1=1029754&r2=1029755&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Mon Nov  1 17:22:33 2010
@@ -87,6 +87,10 @@
         <bug>49180</bug>: Add option to disable log rotation in 
         juli FileHandler. credit: Pid (pidster at apache )
       </fix>
+      <fix>
+        Make Tomcat more tolerant of <code>null</code> when generating JMX 
names
+        for Valves. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Jasper">



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

Reply via email to