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]>

Reply via email to