costin 2002/12/26 10:21:01
Modified: modeler/src/java/org/apache/commons/modeler Registry.java
Log:
Refactored digester to a "source" module.
Add a simple scheme to map the "type" parameter to a module.
Revision Changes Path
1.10 +30 -106
jakarta-commons/modeler/src/java/org/apache/commons/modeler/Registry.java
Index: Registry.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/modeler/src/java/org/apache/commons/modeler/Registry.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- Registry.java 13 Nov 2002 06:25:32 -0000 1.9
+++ Registry.java 26 Dec 2002 18:21:01 -0000 1.10
@@ -69,11 +69,9 @@
import javax.management.*;
import javax.management.modelmbean.ModelMBean;
-import org.apache.commons.digester.Digester;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-
/**
* <p>Registry for MBean descriptor information. This class implements
* the Singleton design pattern.</p>
@@ -267,6 +265,34 @@
registry.loadDescriptors( stream, "modeler" );
}
+
+ /** Source for descriptor data. More sources can be added.
+ *
+ */
+ public static class DescriptorSource {
+
+ public void loadDescriptors( Registry registry, String location,
+ String type, InputStream stream)
+ throws Exception
+ {
+ // TODO
+ }
+ }
+
+ public void loadDescriptors( String location, String type, InputStream stream )
+ throws Exception
+ {
+ if( type==null ) type="MbeansDescriptorsDOM";
+ String moduleType=type + "Source";
+ String
sourceClassName=System.getProperty("org.apache.commons.modeler.source",
+ "org.apache.commons.modeler.modules." + moduleType);
+ // "org.apache.commons.modeler.modules.MBeansDescriptorsDigesterSource")
+
+ Class c=Class.forName( sourceClassName );
+ DescriptorSource ds=(DescriptorSource)c.newInstance();
+ ds.loadDescriptors(this, location, type, stream);
+ }
+
/**
* Load the registry from the XML input found in the specified input
* stream.
@@ -279,107 +305,7 @@
public void loadDescriptors(InputStream stream, String type)
throws Exception
{
- long t1=System.currentTimeMillis();
-
- // Create a digester to use for parsing
- Registry registry = this;
-
- Digester digester = new Digester();
- digester.setNamespaceAware(false);
- digester.setValidating(false);
- URL url = registry.getClass().getResource
- ("/org/apache/commons/modeler/mbeans-descriptors.dtd");
- digester.register
- ("-//Apache Software Foundation//DTD Model MBeans Configuration File",
- url.toString());
-
- // Push our registry object onto the stack
- digester.push(registry);
-
- // Configure the parsing rules
- digester.addObjectCreate
- ("mbeans-descriptors/mbean",
- "org.apache.commons.modeler.ManagedBean");
- digester.addSetProperties
- ("mbeans-descriptors/mbean");
- digester.addSetNext
- ("mbeans-descriptors/mbean",
- "addManagedBean",
- "org.apache.commons.modeler.ManagedBean");
-
- digester.addObjectCreate
- ("mbeans-descriptors/mbean/attribute",
- "org.apache.commons.modeler.AttributeInfo");
- digester.addSetProperties
- ("mbeans-descriptors/mbean/attribute");
- digester.addSetNext
- ("mbeans-descriptors/mbean/attribute",
- "addAttribute",
- "org.apache.commons.modeler.AttributeInfo");
-
- digester.addObjectCreate
- ("mbeans-descriptors/mbean/constructor",
- "org.apache.commons.modeler.ConstructorInfo");
- digester.addSetProperties
- ("mbeans-descriptors/mbean/constructor");
- digester.addSetNext
- ("mbeans-descriptors/mbean/constructor",
- "addConstructor",
- "org.apache.commons.modeler.ConstructorInfo");
-
- digester.addObjectCreate
- ("mbeans-descriptors/mbean/constructor/parameter",
- "org.apache.commons.modeler.ParameterInfo");
- digester.addSetProperties
- ("mbeans-descriptors/mbean/constructor/parameter");
- digester.addSetNext
- ("mbeans-descriptors/mbean/constructor/parameter",
- "addParameter",
- "org.apache.commons.modeler.ParameterInfo");
-
- digester.addObjectCreate
- ("mbeans-descriptors/mbean/notification",
- "org.apache.commons.modeler.NotificationInfo");
- digester.addSetProperties
- ("mbeans-descriptors/mbean/notification");
- digester.addSetNext
- ("mbeans-descriptors/mbean/notification",
- "addNotification",
- "org.apache.commons.modeler.NotificationInfo");
- digester.addCallMethod
- ("mbeans-descriptors/mbean/notification/notification-type",
- "addNotifType", 0);
-
- digester.addObjectCreate
- ("mbeans-descriptors/mbean/operation",
- "org.apache.commons.modeler.OperationInfo");
- digester.addSetProperties
- ("mbeans-descriptors/mbean/operation");
- digester.addSetNext
- ("mbeans-descriptors/mbean/operation",
- "addOperation",
- "org.apache.commons.modeler.OperationInfo");
-
- digester.addObjectCreate
- ("mbeans-descriptors/mbean/operation/parameter",
- "org.apache.commons.modeler.ParameterInfo");
- digester.addSetProperties
- ("mbeans-descriptors/mbean/operation/parameter");
- digester.addSetNext
- ("mbeans-descriptors/mbean/operation/parameter",
- "addParameter",
- "org.apache.commons.modeler.ParameterInfo");
-
- // Process the input file to configure our registry
- try {
- digester.parse(stream);
- } catch (Exception e) {
- log.error("Error digesting Registry data", e);
- throw e;
- }
- long t2=System.currentTimeMillis();
- if( t2-t1 > 500 )
- log.info("Loaded registry information " + ( t2 - t1 ) + " ms");
+ loadDescriptors(null, type, stream );
}
/**
@@ -389,9 +315,7 @@
* @param mbeanServer The new <code>MBeanServer</code> instance
*/
public static void setServer(MBeanServer mbeanServer) {
-
server = mbeanServer;
-
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>