2012/2/3  <ma...@apache.org>:
> Author: markt
> Date: Fri Feb  3 12:08:09 2012
> New Revision: 1240105
>
> URL: http://svn.apache.org/viewvc?rev=1240105&view=rev
> Log:
> Refactor to remove some circular dependencies
>
> Modified:
>    tomcat/trunk/java/org/apache/catalina/Container.java
>    tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java
>    tomcat/trunk/java/org/apache/catalina/core/StandardHost.java
>    tomcat/trunk/java/org/apache/catalina/deploy/NamingResources.java
>    tomcat/trunk/java/org/apache/catalina/mbeans/MBeanUtils.java
>    tomcat/trunk/java/org/apache/catalina/realm/RealmBase.java
>    tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java
>    tomcat/trunk/java/org/apache/catalina/valves/ValveBase.java
>
> Modified: tomcat/trunk/java/org/apache/catalina/Container.java
> URL: 
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/Container.java?rev=1240105&r1=1240104&r2=1240105&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/catalina/Container.java (original)
> +++ tomcat/trunk/java/org/apache/catalina/Container.java Fri Feb  3 12:08:09 
> 2012
> @@ -159,6 +159,17 @@ public interface Container extends Lifec
>      */
>     public ObjectName getObjectName();
>
> +
> +    /**
> +     * Calculate the key properties string to be added to an object's
> +     * {@link ObjectName} to indicate that it is associated with this 
> container.
> +     *
> +     * @return          A string suitable for appending to the ObjectName
> +     *
> +     */
> +    public String getMBeanKeyProperties();
> +
> +
>     /**
>      * Return the Pipeline object that manages the Valves associated with
>      * this Container.
>
> Modified: tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java
> URL: 
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java?rev=1240105&r1=1240104&r2=1240105&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java (original)
> +++ tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java Fri Feb  3 
> 12:08:09 2012
> @@ -45,7 +45,10 @@ import org.apache.catalina.Cluster;
>  import org.apache.catalina.Container;
>  import org.apache.catalina.ContainerEvent;
>  import org.apache.catalina.ContainerListener;
> +import org.apache.catalina.Context;
> +import org.apache.catalina.Engine;
>  import org.apache.catalina.Globals;
> +import org.apache.catalina.Host;
>  import org.apache.catalina.Lifecycle;
>  import org.apache.catalina.LifecycleException;
>  import org.apache.catalina.LifecycleState;
> @@ -54,9 +57,11 @@ import org.apache.catalina.Manager;
>  import org.apache.catalina.Pipeline;
>  import org.apache.catalina.Realm;
>  import org.apache.catalina.Valve;
> +import org.apache.catalina.Wrapper;
>  import org.apache.catalina.connector.Request;
>  import org.apache.catalina.connector.Response;
>  import org.apache.catalina.mbeans.MBeanUtils;
> +import org.apache.catalina.util.ContextName;
>  import org.apache.catalina.util.LifecycleMBeanBase;
>  import org.apache.juli.logging.Log;
>  import org.apache.juli.logging.LogFactory;
> @@ -1405,6 +1410,44 @@ public abstract class ContainerBase exte
>         return MBeanUtils.getDomain(this);
>     }
>
> +
> +    @Override
> +    public String getMBeanKeyProperties() {
> +        Container c = this;
> +        StringBuilder keyProperties = new StringBuilder();
> +        int containerCount = 0;
> +
> +        // Work up container hierarchy, add a component to the name for
> +        // each container
> +        while (!(c instanceof Engine)) {
> +            if (c instanceof Wrapper) {
> +                keyProperties.append(",servlet=");
> +                keyProperties.append(c.getName());

I think that the names should be wrapped by ObjectName.quote().
Here and in similar method implemented in another class below.
I do not think that there is a restriction that forbids ,;:= in a servlet name.

> +            } else if (c instanceof Context) {
> +                keyProperties.append(",context=");
> +                ContextName cn = new ContextName(c.getName());
> +                keyProperties.append(cn.getDisplayName());
> +            } 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(",container");
> +                keyProperties.append(containerCount++);
> +                keyProperties.append('=');
> +                keyProperties.append(c.getName());
> +            }
> +            c = c.getParent();
> +        }
> +        return keyProperties.toString();
> +    }
> +
>     public ObjectName[] getChildren() {
>         ObjectName result[]=new ObjectName[children.size()];
>         Iterator<Container> it=children.values().iterator();
>
> Modified: tomcat/trunk/java/org/apache/catalina/core/StandardHost.java
> URL: 
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardHost.java?rev=1240105&r1=1240104&r2=1240105&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/catalina/core/StandardHost.java (original)
> +++ tomcat/trunk/java/org/apache/catalina/core/StandardHost.java Fri Feb  3 
> 12:08:09 2012
> @@ -35,7 +35,6 @@ import org.apache.catalina.LifecycleExce
>  import org.apache.catalina.LifecycleListener;
>  import org.apache.catalina.Valve;
>  import org.apache.catalina.loader.WebappClassLoader;
> -import org.apache.catalina.mbeans.MBeanUtils;
>  import org.apache.catalina.valves.ValveBase;
>  import org.apache.tomcat.util.ExceptionUtils;
>
> @@ -825,7 +824,7 @@ public class StandardHost extends Contai
>     protected String getObjectNameKeyProperties() {
>
>         StringBuilder keyProperties = new StringBuilder("type=Host");
> -        keyProperties.append(MBeanUtils.getContainerKeyProperties(this));
> +        keyProperties.append(getMBeanKeyProperties());
>
>         return keyProperties.toString();
>     }
>
> Modified: tomcat/trunk/java/org/apache/catalina/deploy/NamingResources.java
> URL: 
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/deploy/NamingResources.java?rev=1240105&r1=1240104&r2=1240105&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/catalina/deploy/NamingResources.java 
> (original)
> +++ tomcat/trunk/java/org/apache/catalina/deploy/NamingResources.java Fri Feb 
>  3 12:08:09 2012
> @@ -1088,7 +1088,7 @@ public class NamingResources extends Lif
>         Object c = getContainer();
>         if (c instanceof Container) {
>             return "type=NamingResources" +
> -                    MBeanUtils.getContainerKeyProperties((Container) c);
> +                    ((Container) c).getMBeanKeyProperties();
>         }
>         // Server or just unknown
>         return "type=NamingResources";
>
> 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=1240105&r1=1240104&r2=1240105&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/catalina/mbeans/MBeanUtils.java (original)
> +++ tomcat/trunk/java/org/apache/catalina/mbeans/MBeanUtils.java Fri Feb  3 
> 12:08:09 2012
> @@ -1562,6 +1562,7 @@ public class MBeanUtils {
>      *
>      * @param container The container the object is associated with
>      * @return          A string suitable for appending to the ObjectName
> +     *
>      */
>     public static String getContainerKeyProperties(Container container) {
>
>
> Modified: tomcat/trunk/java/org/apache/catalina/realm/RealmBase.java
> URL: 
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/realm/RealmBase.java?rev=1240105&r1=1240104&r2=1240105&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/catalina/realm/RealmBase.java (original)
> +++ tomcat/trunk/java/org/apache/catalina/realm/RealmBase.java Fri Feb  3 
> 12:08:09 2012
> @@ -1313,7 +1313,7 @@ public abstract class RealmBase extends
>
>         StringBuilder keyProperties = new StringBuilder("type=Realm");
>         keyProperties.append(getRealmSuffix());
> -        
> keyProperties.append(MBeanUtils.getContainerKeyProperties(container));
> +        keyProperties.append(container.getMBeanKeyProperties());
>
>         return keyProperties.toString();
>     }
>
> Modified: tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java
> URL: 
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java?rev=1240105&r1=1240104&r2=1240105&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java 
> (original)
> +++ tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java Fri Feb  
> 3 12:08:09 2012
> @@ -35,6 +35,8 @@ import org.apache.catalina.Cluster;
>  import org.apache.catalina.Container;
>  import org.apache.catalina.ContainerListener;
>  import org.apache.catalina.Context;
> +import org.apache.catalina.Engine;
> +import org.apache.catalina.Host;
>  import org.apache.catalina.LifecycleException;
>  import org.apache.catalina.Loader;
>  import org.apache.catalina.Manager;
> @@ -53,6 +55,7 @@ import org.apache.catalina.deploy.Naming
>  import org.apache.catalina.deploy.SecurityConstraint;
>  import org.apache.catalina.mbeans.MBeanUtils;
>  import org.apache.catalina.util.CharsetMapper;
> +import org.apache.catalina.util.ContextName;
>  import org.apache.catalina.util.LifecycleMBeanBase;
>  import org.apache.juli.logging.Log;
>  import org.apache.tomcat.JarScanner;
> @@ -123,6 +126,41 @@ public class FailedContext extends Lifec
>
>
>     @Override
> +    public String getMBeanKeyProperties() {
> +        Container c = this;
> +        StringBuilder keyProperties = new StringBuilder();
> +        int containerCount = 0;
> +
> +        // Work up container hierarchy, add a component to the name for
> +        // each container
> +        while (!(c instanceof Engine)) {
> +            if (c instanceof Context) {
> +                keyProperties.append(",context=");
> +                ContextName cn = new ContextName(c.getName());
> +                keyProperties.append(cn.getDisplayName());
> +            } 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(",container");
> +                keyProperties.append(containerCount++);
> +                keyProperties.append('=');
> +                keyProperties.append(c.getName());
> +            }
> +            c = c.getParent();
> +        }
> +        return keyProperties.toString();
> +    }
> +
> +
> +    @Override
>     protected String getObjectNameKeyProperties() {
>
>         StringBuilder keyProperties =
>
> 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=1240105&r1=1240104&r2=1240105&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/catalina/valves/ValveBase.java (original)
> +++ tomcat/trunk/java/org/apache/catalina/valves/ValveBase.java Fri Feb  3 
> 12:08:09 2012
> @@ -266,7 +266,7 @@ public abstract class ValveBase extends
>
>         Container container = getContainer();
>
> -        name.append(MBeanUtils.getContainerKeyProperties(container));
> +        name.append(container.getMBeanKeyProperties());
>
>         int seq = 0;
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: dev-h...@tomcat.apache.org
>

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

Reply via email to