costin      2002/11/05 11:15:07

  Modified:    modeler/src/java/org/apache/commons/modeler
                        BaseRegistry.java
  Log:
  Few changes to the (new) base class. This doesn't affect
  any of the existing uses of modeler, it's new.
  
  The base registry can be used to add jmx support without
  a dependency of jmx ( if jmx is not found, nothing will happen )
  
  Revision  Changes    Path
  1.3       +54 -48    
jakarta-commons/modeler/src/java/org/apache/commons/modeler/BaseRegistry.java
  
  Index: BaseRegistry.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/modeler/src/java/org/apache/commons/modeler/BaseRegistry.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- BaseRegistry.java 2 Nov 2002 06:52:12 -0000       1.2
  +++ BaseRegistry.java 5 Nov 2002 19:15:07 -0000       1.3
  @@ -82,6 +82,16 @@
   /**
    * JMX-enable components.
    *
  + * Component metadata can be set:
  + * <ul>
  + * <li>from a stream - loadDescriptors(Stream )
  + * <li>from resources in a class loader ( discovery )
  + * <li>using introspection
  + * <li>mapping of class names into existing types
  + * <ul>
  + *
  + * Each metadata is associated with a 'type' and a 'domain'.
  + *
    * This class has no dependency on JMX - if JMX is not available it'll
    * just do nothing. This allows applications to compile with a dependency
    * on commons-modeler, but without requiring jmx.jar.
  @@ -100,59 +110,47 @@
   
       private static Log log= LogFactory.getLog(BaseRegistry.class);
   
  -    protected Context componentContext;
  -    protected Context descriptorContext;
  -    protected Context configContext;
  -
       /**
        * Protected constructor to require use of the factory create method.
        */
       protected BaseRegistry() {
       }
   
  +    // --------------------  Registration/unregistration --------------------
   
  -    /** If a JNDI context is set, all components
  -     * will be registered in the context.
  +    /** The main method used to jmx-enable and register components. If the
  +     * bean descriptor cannot be found it'll use introspection to create one.
        *
  -     * @param ctx
  +     * XXX Should we use seq or hash ?
  +     * XXX more explicit control
  +     *
  +     * @param bean Any object ( including an MBean ). An MBean proxy will be
  +     * provided.
  +     * @param domain Domain for registration. If null, the default information
  +     *  from the descriptor will be used, or the default server domain. In future
  +     *  this will also be used to discriminate descriptors
  +     * @param type The key used to create the 'type=' name component and to
  +     *  locate the descriptor. If null we'll use the explicit overrides in
  +     *   addTypeMappings, or compute it from the bean name.
  +     * @param name Local part of the name. If null a seq=XXX will be generated.
        */
  -    public void setComponentContext(Context ctx) {
  -        this.componentContext= ctx;
  -    }
  -
  -    public Object getMBeanServer() {
  -        return null;
  +    public void registerComponent(Object bean, String domain, String type,
  +                                  String name) 
  +        throws Exception
  +    {
  +        getBaseRegistry().registerComponent(bean, domain, type, name );
       }
   
  -    /** Register all component descriptors in this
  -     * naming context.
  +    /** Unregister the component. This will remove all references from the
  +     * mbean server and modeler
        *
  -     * @param ctx
        */
  -    public void setDescriptorContext(Context ctx) {
  -        this.descriptorContext= ctx;
  -    }
  -
  -    public void setConfigContext( Context ctx ) {
  -        this.configContext= ctx;
  +    public void unregisterComponent( String name ) {
  +        getBaseRegistry().unregisterComponent(name);
       }
   
  -    // -------------------- API exposed by Modeler --------------------
  +    // --------------------  Metadata --------------------
   
  -    /** The method used by applications to jmx-enable a component
  -     *  instance.
  -     *
  -     *  @param bean Any object. If a description is registered, it'll be used. If 
not
  -     *                          introspection will be used.
  -     *  @param domain Domain for the object. Default domain used if null.
  -     *                XXX call a getDomain() on the component ?
  -     *  @param name Desired name for the object. If the name is already registered, 
a
  -     *              seq=... will be appened. XXX How do we parse it ? JNDI-style ?
  -     *
  -     */
  -    public void registerComponent(Object bean, String domain, String name) {
  -        getBaseRegistry().registerComponent(bean, domain,name );
  -    }
   
       /** The method used by applications to jmx-enable a component
        *  class.
  @@ -187,6 +185,22 @@
   
       }
   
  +
  +    HashMap typeMappings;
  +
  +    /** Add a mapping between a className and a type. The type is the
  +     * key used to locate the mbean descriptors ( type=foo in the mbean name ).
  +     * It serve the same purpose as 'modules.xml' in tomcat3 and the exceptions
  +     * in tomcat4 MBeanUtils.
  +     *
  +     */
  +    public void addTypeMapping( String className, String type ) {
  +        typeMappings.put( className, type );
  +    }
  +
  +
  +    // --------------------  Other methods --------------------
  +
       /** Find an mbean descriptor for the type
        *
        */
  @@ -209,9 +223,6 @@
           return null;
       }
   
  -    public void unregisterMBean( String name ) {
  -        getBaseRegistry().unregisterMBean(name);
  -    }
   
       // Store all objects that have been registered via modeler
       // it is used to generate unique names automatically - using seq=
  @@ -254,16 +265,11 @@
       }
   
   
  -    HashMap typeMappings;
  -
  -    /** Add a mapping between a className and a type. The type is the
  -     * key used to locate the mbean descriptors ( type=foo in the mbean name ).
  -     * It serve the same purpose as 'modules.xml' in tomcat3 and the exceptions
  -     * in tomcat4 MBeanUtils.
  +    /** Access the MBean server.
        *
        */
  -    public void addTypeMapping( String className, String type ) {
  -        typeMappings.put( className, type );
  +    public Object getMBeanServer() {
  +        return null;
       }
   
       // -------------- Implementation ----------------------
  
  
  

--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@;jakarta.apache.org>

Reply via email to