You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by bl...@apache.org on 2001/04/06 16:00:09 UTC

cvs commit: jakarta-avalon/proposal/4.0/src/java/org/apache/framework/component DefaultRoleManager.java RoleManager.java DefaultComponentManager.java DefaultRoleInfo.java RoleInfo.java

bloritsch    01/04/06 07:00:09

  Modified:    proposal/4.0/src/java/org/apache/framework/component
                        DefaultComponentManager.java
  Added:       proposal/4.0/src/java/org/apache/framework/component
                        DefaultRoleManager.java RoleManager.java
  Removed:     proposal/4.0/src/java/org/apache/framework/component
                        DefaultRoleInfo.java RoleInfo.java
  Log:
  Reworked ComponentManagement infrastructure a little bit.
  
  Revision  Changes    Path
  1.3       +45 -59    jakarta-avalon/proposal/4.0/src/java/org/apache/framework/component/DefaultComponentManager.java
  
  Index: DefaultComponentManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon/proposal/4.0/src/java/org/apache/framework/component/DefaultComponentManager.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefaultComponentManager.java	2001/04/05 19:38:43	1.2
  +++ DefaultComponentManager.java	2001/04/06 14:00:05	1.3
  @@ -6,7 +6,7 @@
    * the LICENSE file.                                                         *
    *****************************************************************************/
   
  -package org.apache.framework.component;
  +package org.apache.avalon.component;
   
   import java.util.HashMap;
   import java.util.Map;
  @@ -15,22 +15,26 @@
   import java.util.ArrayList;
   import java.util.List;
   
  -import org.apache.framework.context.Context;
  -import org.apache.framework.context.Contextualizable;
  -import org.apache.framework.configuration.Configurable;
  -import org.apache.framework.configuration.Configuration;
  -import org.apache.framework.configuration.ConfigurationException;
  -import org.apache.framework.configuration.DefaultConfiguration;
  -import org.apache.framework.lifecycle.Disposable;
  -import org.apache.framework.lifecycle.Initializable;
  -import org.apache.framework.logger.AbstractLoggable;
  +import org.apache.avalon.ComponentManager;
  +import org.apache.avalon.Component;
  +import org.apache.avalon.ComponentManagerException;
  +import org.apache.avalon.Context;
  +import org.apache.avalon.Contextualizable;
  +import org.apache.avalon.configuration.Configurable;
  +import org.apache.avalon.configuration.Configuration;
  +import org.apache.avalon.Composer;
  +import org.apache.avalon.configuration.ConfigurationException;
  +import org.apache.avalon.configuration.DefaultConfiguration;
  +import org.apache.avalon.Disposable;
  +import org.apache.avalon.Initializable;
  +import org.apache.avalon.AbstractLoggable;
   
   /**
    * Default component manager for Avalon's components.
    *
    * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
    * @author <a href="mailto:paul@luminas.co.uk">Paul Russell</a>
  - * @version CVS $Revision: 1.2 $ $Date: 2001/04/05 19:38:43 $
  + * @version CVS $Revision: 1.3 $ $Date: 2001/04/06 14:00:05 $
    */
   public class DefaultComponentManager extends AbstractLoggable
           implements ComponentManager, Configurable, Contextualizable, Disposable {
  @@ -49,7 +53,7 @@
   
       /** RoleInfos.
        */
  -    private RoleInfo roles;
  +    private RoleManager roles;
   
       /** Is the Manager disposed or not? */
       private boolean disposed = false;
  @@ -102,7 +106,7 @@
        * case, the Role's FQN is appended with "Selector", and we return a ComponentSelector.
        */
       public Component lookup( String role )
  -    throws ComponentException {
  +    throws ComponentManagerException {
   
           if (disposed) throw new IllegalStateException("You cannot lookup components on a disposed ComponentManager");
   
  @@ -111,7 +115,7 @@
   
           if ( role == null ) {
               getLogger().error("ComponentManager Attempted to retrieve component with null role.");
  -            throw new ComponentException("Attempted to retrieve component with null role.");
  +            throw new ComponentManagerException("Attempted to retrieve component with null role.");
           }
   
           handler = (DefaultComponentHandler) this.componentHandlers.get(role);
  @@ -122,14 +126,14 @@
               Configuration config = new DefaultConfiguration("", "-");
   
               try {
  -                componentClass = this.getClass().getClassLoader().loadClass(roles.defaultClass(role));
  +                componentClass = this.getClass().getClassLoader().loadClass(roles.getDefaultClassNameForRole(role));
   
                   handler = new DefaultComponentHandler(componentClass, config, this, this.context);
                   handler.setLogger(getLogger());
                   handler.init();
               } catch (Exception e) {
                   getLogger().error("ComponentManager Could not find component for role: " + role, e);
  -                throw new ComponentException("Could not find component for role: " + role, e);
  +                throw new ComponentManagerException("Could not find component for role: " + role, e);
               }
   
               this.componentHandlers.put(role, handler);
  @@ -143,10 +147,10 @@
               try {
                   component = handler.get();
               } catch (Exception ee) {
  -                throw new ComponentException("Could not access the Component for you", ee);
  +                throw new ComponentManagerException("Could not access the Component for you", ee);
               }
           } catch (Exception e) {
  -            throw new ComponentException("Could not access the Component for you", e);
  +            throw new ComponentManagerException("Could not access the Component for you", e);
           }
   
           this.componentMapping.put(component, handler);
  @@ -157,56 +161,38 @@
        * Configure the ComponentManager.
        */
       public void configure(Configuration conf) throws ConfigurationException {
  -        DefaultRoleInfo role_info = new DefaultRoleInfo();
  +        DefaultRoleManager role_info = new DefaultRoleManager();
           role_info.setLogger(getLogger());
           role_info.configure(conf);
           roles = role_info;
   
           // Set components
   
  -        Configuration[] e = conf.getChildren("component");
  +        Configuration[] e = conf.getChildren();
           for (int i = 0; i < e.length; i++) {
  -            String type = e[i].getAttribute("type", "");
  -            String role = e[i].getAttribute("role", "");
  -            String className = e[i].getAttribute("class", "");
  +            String type = e[i].getName(); // types are already trimmed
   
  -            if (! "".equals(type)) {
  -                role = roles.lookup(type);
  -            }
  -
  -            if ("".equals(className)) {
  -                className = roles.defaultClass(role);
  -            }
  -
  -            try {
  -                getLogger().debug("Adding component (" + role + " = " + className + ")");
  -                this.addComponent(role, this.getClass().getClassLoader().loadClass(className),e[i]);
  -            } catch ( Exception ex ) {
  -                getLogger().error("Could not load class " + className, ex);
  -                throw new ConfigurationException("Could not get class " + className
  -                    + " for role " + role, ex);
  -            }
  -        }
  -
  -        Iterator r = roles.shorthandNames();
  -        while (r.hasNext()) {
  -            Configuration co = conf.getChild((String) r.next(), false);
  -
  -            if (co != null) {
  -                String role = roles.lookup(co.getName());
  -                String className = co.getAttribute("class", "");
  +            if (("role".equals(type) == false)) {
  +                String role = e[i].getAttribute("role", "");
  +                String className = e[i].getAttribute("class", "");
   
  -                if ("".equals(className)) {
  -                    className = roles.defaultClass(role);
  +                if ("".equals(role)) {
  +                    role = roles.getRoleForName(type);
                   }
   
  -                try {
  -                    getLogger().debug("Adding component (" + role + " = " + className + ")");
  -                    this.addComponent(role, this.getClass().getClassLoader().loadClass(className), co);
  -                } catch ( Exception ex ) {
  -                    getLogger().error("Could not load class " + className, ex);
  -                    throw new ConfigurationException("Could not get class " + className
  -                        + " for role " + role, ex);
  +                if (role != null && ("".equals(role) == false)) {
  +                    if ("".equals(className)) {
  +                        className = roles.getDefaultClassNameForRole(role);
  +                    }
  +
  +                    try {
  +                        getLogger().debug("Adding component (" + role + " = " + className + ")");
  +                        this.addComponent(role, this.getClass().getClassLoader().loadClass(className), e[i]);
  +                    } catch ( Exception ex ) {
  +                        getLogger().error("Could not load class " + className, ex);
  +                        throw new ConfigurationException("Could not get class " + className
  +                            + " for role " + role + " on configuration element " + e[i].getName(), ex);
  +                    }
                   }
               }
           }
  @@ -230,13 +216,13 @@
        * @param Configuration the configuration for this component.
        */
       public void addComponent(String role, Class component, Configuration config)
  -    throws ComponentException {
  +    throws ComponentManagerException {
           try {
               DefaultComponentHandler handler = new DefaultComponentHandler(component, config, this, this.context);
               handler.setLogger(getLogger());
               this.componentHandlers.put(role, handler);
           } catch (Exception e) {
  -            throw new ComponentException ("Could not set up Component for role: " + role, e);
  +            throw new ComponentManagerException ("Could not set up Component for role: " + role, e);
           }
       }
   
  
  
  
  1.1                  jakarta-avalon/proposal/4.0/src/java/org/apache/framework/component/DefaultRoleManager.java
  
  Index: DefaultRoleManager.java
  ===================================================================
  /*****************************************************************************
   * Copyright (C) The Apache Software Foundation. All rights reserved.        *
   * ------------------------------------------------------------------------- *
   * This software is published under the terms of the Apache Software License *
   * version 1.1, a copy of which has been included  with this distribution in *
   * the LICENSE file.                                                         *
   *****************************************************************************/
  
  package org.apache.avalon.component;
  
  import java.util.Map;
  import java.util.Iterator;
  import java.util.HashMap;
  import java.util.Collections;
  
  import org.apache.avalon.configuration.Configurable;
  import org.apache.avalon.configuration.Configuration;
  
  import org.apache.avalon.AbstractLoggable;
  
  import org.apache.avalon.configuration.ConfigurationException;
  
  /**
   * Default RoleManager implementation.  It populates the RoleManager
   * from a configuration file.
   *
   * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
   * @author <a href="mailto:ricardo@apache,org">Ricardo Rocha</a>
   * @author <a href="mailto:giacomo@apache,org">Giacomo Pati</a>
   * @version CVS $Revision: 1.1 $ $Date: 2001/04/06 14:00:06 $
   */
  public class DefaultRoleManager extends AbstractLoggable implements RoleManager, Configurable {
      private Map shorthands = new HashMap();
      private Map classNames = new HashMap();
  
      public final String getRoleForName(String shorthandName) {
          getLogger().debug("looking up role " + shorthandName + ", returning " + (String) this.shorthands.get(shorthandName));
          return (String) this.shorthands.get(shorthandName);
      }
  
      public final String getDefaultClassNameForRole(String role) {
          return (String) this.classNames.get(role);
      }
  
      protected final void addRole(String name, String shorthand, String defaultClassName) {
          this.shorthands.put(shorthand, name);
  
          if (defaultClassName != null) {
              this.classNames.put(name, defaultClassName);
          }
      }
  
      public final void configure(Configuration conf) throws ConfigurationException {
          Configuration[] roles = conf.getChildren("role");
  
          for (int i = 0; i < roles.length; i++) {
              String name = roles[i].getAttribute("name");
              String shorthand = roles[i].getAttribute("shorthand");
              String defaultClassName = roles[i].getAttribute("default-class", null);
  
              this.addRole(name, shorthand, defaultClassName);
              getLogger().debug("added Role " + name + " with shorthand " + shorthand + " for " + defaultClassName);
          }
  
          this.shorthands = Collections.unmodifiableMap(this.shorthands);
          this.classNames = Collections.unmodifiableMap(this.classNames);
      }
  }
  
  
  1.1                  jakarta-avalon/proposal/4.0/src/java/org/apache/framework/component/RoleManager.java
  
  Index: RoleManager.java
  ===================================================================
  /*****************************************************************************
   * Copyright (C) The Apache Software Foundation. All rights reserved.        *
   * ------------------------------------------------------------------------- *
   * This software is published under the terms of the Apache Software License *
   * version 1.1, a copy of which has been included  with this distribution in *
   * the LICENSE file.                                                         *
   *****************************************************************************/
  
  package org.apache.avalon.component;
  
  import java.util.Iterator;
  
  /**
   * RoleManager Interface, use this to specify the Roles and how they
   * correspond easy shorthand names.
   *
   * @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
   * @author <a href="mailto:ricardo@apache,org">Ricardo Rocha</a>
   * @author <a href="mailto:giacomo@apache,org">Giacomo Pati</a>
   * @version CVS $Revision: 1.1 $ $Date: 2001/04/06 14:00:07 $
   */
  public interface RoleManager {
      /**
       * Find Role name based on shorthand name.  Please note that if
       * this returns <code>null</code> or an empty string, then the
       * shorthand name is assumed to be a "reserved word".  In other
       * words, you should not try to instantiate a class from an empty
       * role.
       */
      public String getRoleForName(String shorthandName);
  
      /**
       * Get the default classname for a given role
       */
      public String getDefaultClassNameForRole(String role);
  }
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: avalon-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: avalon-dev-help@jakarta.apache.org