From f84ed04cc871b0d8a123222f836dc4b49ab75915 Mon Sep 17 00:00:00 2001 From: markt Date: Mon, 1 Nov 2010 17:22:33 +0000 Subject: [PATCH] Make Tomcat more tolerant of nulls when generating JMX names for Valves. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1029755 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/mbeans/MBeanUtils.java | 12 +++++++--- java/org/apache/catalina/valves/ValveBase.java | 32 +++++++++++++++---------- webapps/docs/changelog.xml | 4 ++++ 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/java/org/apache/catalina/mbeans/MBeanUtils.java b/java/org/apache/catalina/mbeans/MBeanUtils.java index c14a32c42..938850646 100644 --- a/java/org/apache/catalina/mbeans/MBeanUtils.java +++ b/java/org/apache/catalina/mbeans/MBeanUtils.java @@ -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()); } diff --git a/java/org/apache/catalina/valves/ValveBase.java b/java/org/apache/catalina/valves/ValveBase.java index fb5ed1cb3..07ceb50d6 100644 --- a/java/org/apache/catalina/valves/ValveBase.java +++ b/java/org/apache/catalina/valves/ValveBase.java @@ -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 LifecycleMBeanBase 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 ++; + } } } diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index c9acc60d4..69249a1b4 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -87,6 +87,10 @@ 49180: Add option to disable log rotation in juli FileHandler. credit: Pid (pidster at apache ) + + Make Tomcat more tolerant of null when generating JMX names + for Valves. (markt) + -- 2.11.0