- Clean up a bit.
authorremm <remm@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 30 Mar 2006 15:08:31 +0000 (15:08 +0000)
committerremm <remm@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 30 Mar 2006 15:08:31 +0000 (15:08 +0000)
- For some reason, trying to recycle a static digester doesn't improve performance.

git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@390155 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/tomcat/util/modeler/modules/MbeansDescriptorsDigesterSource.java

index 901926a..a27ff84 100644 (file)
@@ -37,192 +37,199 @@ public class MbeansDescriptorsDigesterSource extends ModelerSource
     String type;\r
     Object source;\r
     List mbeans=new ArrayList();\r
-\r
-    public void setRegistry(Registry reg) {\r
-        this.registry=reg;\r
-    }\r
-\r
-    public void setLocation( String loc ) {\r
-        this.location=loc;\r
-    }\r
-\r
-    /** Used if a single component is loaded\r
-     *\r
-     * @param type\r
-     */\r
-    public void setType( String type ) {\r
-       this.type=type;\r
-    }\r
-\r
-    public void setSource( Object source ) {\r
-        this.source=source;\r
-    }\r
-\r
-    public List loadDescriptors( Registry registry, String location,\r
-                                 String type, Object source)\r
-            throws Exception\r
-    {\r
-        setRegistry(registry);\r
-        setLocation(location);\r
-        setType(type);\r
-        setSource(source);\r
-        execute();\r
-        return mbeans;\r
-    }\r
-\r
-    public void execute() throws Exception {\r
-        if( registry==null ) registry=Registry.getRegistry();\r
-\r
-        InputStream stream=(InputStream)source;\r
-\r
-        long t1=System.currentTimeMillis();\r
+    \r
+    protected static Digester createDigester(Registry registry) {\r
 \r
         Digester digester = new Digester();\r
         digester.setNamespaceAware(false);\r
         digester.setValidating(false);\r
-        URL url = registry.getClass().getResource\r
-                ("/org/apache/commons/modeler/mbeans-descriptors.dtd");\r
+        URL url = Registry.getRegistry(null, null).getClass().getResource\r
+            ("/org/apache/tomcat/util/modeler/mbeans-descriptors.dtd");\r
         digester.register\r
-                ("-//Apache Software Foundation//DTD Model MBeans Configuration File",\r
-                        url.toString());\r
-\r
-        // Push our registry object onto the stack\r
-        digester.push(mbeans);\r
-\r
+            ("-//Apache Software Foundation//DTD Model MBeans Configuration File",\r
+                url.toString());\r
+        \r
         // Configure the parsing rules\r
         digester.addObjectCreate\r
-                ("mbeans-descriptors/mbean",\r
-                        "org.apache.tomcat.util.modeler.ManagedBean");\r
+            ("mbeans-descriptors/mbean",\r
+            "org.apache.tomcat.util.modeler.ManagedBean");\r
         digester.addSetProperties\r
-                ("mbeans-descriptors/mbean");\r
+            ("mbeans-descriptors/mbean");\r
         digester.addSetNext\r
-                ("mbeans-descriptors/mbean",\r
-                        "add",\r
-                        "java.lang.Object");\r
-\r
+            ("mbeans-descriptors/mbean",\r
+                "add",\r
+            "java.lang.Object");\r
+        \r
         digester.addObjectCreate\r
-                ("mbeans-descriptors/mbean/attribute",\r
-                        "org.apache.tomcat.util.modeler.AttributeInfo");\r
+            ("mbeans-descriptors/mbean/attribute",\r
+            "org.apache.tomcat.util.modeler.AttributeInfo");\r
         digester.addSetProperties\r
-                ("mbeans-descriptors/mbean/attribute");\r
+            ("mbeans-descriptors/mbean/attribute");\r
         digester.addSetNext\r
-                ("mbeans-descriptors/mbean/attribute",\r
-                        "addAttribute",\r
-                        "org.apache.tomcat.util.modeler.AttributeInfo");\r
-\r
+            ("mbeans-descriptors/mbean/attribute",\r
+                "addAttribute",\r
+            "org.apache.tomcat.util.modeler.AttributeInfo");\r
+        \r
         digester.addObjectCreate\r
             ("mbeans-descriptors/mbean/attribute/descriptor/field",\r
-             "org.apache.tomcat.util.modeler.FieldInfo");\r
+            "org.apache.tomcat.util.modeler.FieldInfo");\r
         digester.addSetProperties\r
             ("mbeans-descriptors/mbean/attribute/descriptor/field");\r
         digester.addSetNext\r
             ("mbeans-descriptors/mbean/attribute/descriptor/field",\r
-             "addField",\r
-             "org.apache.tomcat.util.modeler.FieldInfo");\r
-\r
+                "addField",\r
+            "org.apache.tomcat.util.modeler.FieldInfo");\r
+        \r
         digester.addObjectCreate\r
-                ("mbeans-descriptors/mbean/constructor",\r
-                        "org.apache.tomcat.util.modeler.ConstructorInfo");\r
+            ("mbeans-descriptors/mbean/constructor",\r
+            "org.apache.tomcat.util.modeler.ConstructorInfo");\r
         digester.addSetProperties\r
-                ("mbeans-descriptors/mbean/constructor");\r
+            ("mbeans-descriptors/mbean/constructor");\r
         digester.addSetNext\r
-                ("mbeans-descriptors/mbean/constructor",\r
-                        "addConstructor",\r
-                        "org.apache.tomcat.util.modeler.ConstructorInfo");\r
-\r
+            ("mbeans-descriptors/mbean/constructor",\r
+                "addConstructor",\r
+            "org.apache.tomcat.util.modeler.ConstructorInfo");\r
+        \r
         digester.addObjectCreate\r
             ("mbeans-descriptors/mbean/constructor/descriptor/field",\r
-             "org.apache.tomcat.util.modeler.FieldInfo");\r
+            "org.apache.tomcat.util.modeler.FieldInfo");\r
         digester.addSetProperties\r
             ("mbeans-descriptors/mbean/constructor/descriptor/field");\r
         digester.addSetNext\r
             ("mbeans-descriptors/mbean/constructor/descriptor/field",\r
-             "addField",\r
-             "org.apache.tomcat.util.modeler.FieldInfo");\r
-\r
+                "addField",\r
+            "org.apache.tomcat.util.modeler.FieldInfo");\r
+        \r
         digester.addObjectCreate\r
-                ("mbeans-descriptors/mbean/constructor/parameter",\r
-                        "org.apache.tomcat.util.modeler.ParameterInfo");\r
+            ("mbeans-descriptors/mbean/constructor/parameter",\r
+            "org.apache.tomcat.util.modeler.ParameterInfo");\r
         digester.addSetProperties\r
-                ("mbeans-descriptors/mbean/constructor/parameter");\r
+            ("mbeans-descriptors/mbean/constructor/parameter");\r
         digester.addSetNext\r
-                ("mbeans-descriptors/mbean/constructor/parameter",\r
-                        "addParameter",\r
-                        "org.apache.tomcat.util.modeler.ParameterInfo");\r
-\r
+            ("mbeans-descriptors/mbean/constructor/parameter",\r
+                "addParameter",\r
+            "org.apache.tomcat.util.modeler.ParameterInfo");\r
+        \r
         digester.addObjectCreate\r
             ("mbeans-descriptors/mbean/descriptor/field",\r
-             "org.apache.tomcat.util.modeler.FieldInfo");\r
+            "org.apache.tomcat.util.modeler.FieldInfo");\r
         digester.addSetProperties\r
             ("mbeans-descriptors/mbean/descriptor/field");\r
         digester.addSetNext\r
             ("mbeans-descriptors/mbean/descriptor/field",\r
-             "addField",\r
-             "org.apache.tomcat.util.modeler.FieldInfo");\r
-\r
+                "addField",\r
+            "org.apache.tomcat.util.modeler.FieldInfo");\r
+        \r
         digester.addObjectCreate\r
-                ("mbeans-descriptors/mbean/notification",\r
-                        "org.apache.tomcat.util.modeler.NotificationInfo");\r
+            ("mbeans-descriptors/mbean/notification",\r
+            "org.apache.tomcat.util.modeler.NotificationInfo");\r
         digester.addSetProperties\r
-                ("mbeans-descriptors/mbean/notification");\r
+            ("mbeans-descriptors/mbean/notification");\r
         digester.addSetNext\r
-                ("mbeans-descriptors/mbean/notification",\r
-                        "addNotification",\r
-                        "org.apache.tomcat.util.modeler.NotificationInfo");\r
-\r
+            ("mbeans-descriptors/mbean/notification",\r
+                "addNotification",\r
+            "org.apache.tomcat.util.modeler.NotificationInfo");\r
+        \r
         digester.addObjectCreate\r
             ("mbeans-descriptors/mbean/notification/descriptor/field",\r
-             "org.apache.tomcat.util.modeler.FieldInfo");\r
+            "org.apache.tomcat.util.modeler.FieldInfo");\r
         digester.addSetProperties\r
             ("mbeans-descriptors/mbean/notification/descriptor/field");\r
         digester.addSetNext\r
             ("mbeans-descriptors/mbean/notification/descriptor/field",\r
-             "addField",\r
-             "org.apache.tomcat.util.modeler.FieldInfo");\r
-\r
+                "addField",\r
+            "org.apache.tomcat.util.modeler.FieldInfo");\r
+        \r
         digester.addCallMethod\r
-                ("mbeans-descriptors/mbean/notification/notification-type",\r
-                        "addNotifType", 0);\r
-\r
+            ("mbeans-descriptors/mbean/notification/notification-type",\r
+                "addNotifType", 0);\r
+        \r
         digester.addObjectCreate\r
-                ("mbeans-descriptors/mbean/operation",\r
-                        "org.apache.tomcat.util.modeler.OperationInfo");\r
+            ("mbeans-descriptors/mbean/operation",\r
+            "org.apache.tomcat.util.modeler.OperationInfo");\r
         digester.addSetProperties\r
-                ("mbeans-descriptors/mbean/operation");\r
+            ("mbeans-descriptors/mbean/operation");\r
         digester.addSetNext\r
-                ("mbeans-descriptors/mbean/operation",\r
-                        "addOperation",\r
-                        "org.apache.tomcat.util.modeler.OperationInfo");\r
-\r
+            ("mbeans-descriptors/mbean/operation",\r
+                "addOperation",\r
+            "org.apache.tomcat.util.modeler.OperationInfo");\r
+        \r
         digester.addObjectCreate\r
             ("mbeans-descriptors/mbean/operation/descriptor/field",\r
-             "org.apache.tomcat.util.modeler.FieldInfo");\r
+            "org.apache.tomcat.util.modeler.FieldInfo");\r
         digester.addSetProperties\r
             ("mbeans-descriptors/mbean/operation/descriptor/field");\r
         digester.addSetNext\r
             ("mbeans-descriptors/mbean/operation/descriptor/field",\r
-             "addField",\r
-             "org.apache.tomcat.util.modeler.FieldInfo");\r
-\r
+                "addField",\r
+            "org.apache.tomcat.util.modeler.FieldInfo");\r
+        \r
         digester.addObjectCreate\r
-                ("mbeans-descriptors/mbean/operation/parameter",\r
-                        "org.apache.tomcat.util.modeler.ParameterInfo");\r
+            ("mbeans-descriptors/mbean/operation/parameter",\r
+            "org.apache.tomcat.util.modeler.ParameterInfo");\r
         digester.addSetProperties\r
-                ("mbeans-descriptors/mbean/operation/parameter");\r
+            ("mbeans-descriptors/mbean/operation/parameter");\r
         digester.addSetNext\r
-                ("mbeans-descriptors/mbean/operation/parameter",\r
-                        "addParameter",\r
-                        "org.apache.tomcat.util.modeler.ParameterInfo");\r
+            ("mbeans-descriptors/mbean/operation/parameter",\r
+                "addParameter",\r
+            "org.apache.tomcat.util.modeler.ParameterInfo");\r
+        \r
+        return digester;\r
+        \r
+    }\r
+    \r
+    public void setRegistry(Registry reg) {\r
+        this.registry=reg;\r
+    }\r
+\r
+    public void setLocation( String loc ) {\r
+        this.location=loc;\r
+    }\r
+\r
+    /** Used if a single component is loaded\r
+     *\r
+     * @param type\r
+     */\r
+    public void setType( String type ) {\r
+       this.type=type;\r
+    }\r
 \r
+    public void setSource( Object source ) {\r
+        this.source=source;\r
+    }\r
+\r
+    public List loadDescriptors( Registry registry, String location,\r
+                                 String type, Object source)\r
+            throws Exception\r
+    {\r
+        setRegistry(registry);\r
+        setLocation(location);\r
+        setType(type);\r
+        setSource(source);\r
+        execute();\r
+        return mbeans;\r
+    }\r
+\r
+    public void execute() throws Exception {\r
+        if (registry == null) {\r
+            registry = Registry.getRegistry(null, null);\r
+        }\r
+\r
+        InputStream stream = (InputStream) source;\r
+\r
+        Digester digester = createDigester(registry);\r
+        // Push our registry object onto the stack\r
+        digester.push(mbeans);\r
+        \r
         // Process the input file to configure our registry\r
         try {\r
             digester.parse(stream);\r
         } catch (Exception e) {\r
             log.error("Error digesting Registry data", e);\r
             throw e;\r
+        } finally {\r
+            digester.reset();\r
         }\r
-        long t2=System.currentTimeMillis();\r
-//        if( t2-t1 > 500 )\r
-        log.info("Loaded registry information (digester) " + ( t2 - t1 ) + " ms");\r
+            \r
     }\r
 }\r