You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by mc...@apache.org on 2002/08/14 04:59:03 UTC

cvs commit: jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/meta/info/builder Resources.properties XMLTypeCreator.java package.html

mcconnell    2002/08/13 19:59:02

  Modified:    assembly/src/java/org/apache/excalibur/meta type.dtd
               assembly/src/java/org/apache/excalibur/meta/info Type.java
               assembly/src/java/org/apache/excalibur/meta/info/builder
                        Resources.properties XMLTypeCreator.java
                        package.html
  Log:
  Updatating the Type DTD to reflect stage terminology in preference to phase.
  
  Revision  Changes    Path
  1.2       +14 -17    jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/meta/type.dtd
  
  Index: type.dtd
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/meta/type.dtd,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- type.dtd	5 Aug 2002 12:39:38 -0000	1.1
  +++ type.dtd	14 Aug 2002 02:59:02 -0000	1.2
  @@ -28,14 +28,12 @@
   context      the context required by this component
   services     the services offered by this component
   dependencies the services that this component require to operate
  -phase        the lifecycle phases that this component manages
  +stages       the lifecycle stage extensions that this component is depenent on
  +extensions   the lifecycle extensions that this component provides
   
   -->
  -<!ELEMENT type (component, loggers?, context?, services?, dependencies?, phases?, extensions?)>
  -<!--
  -  !ATTLIST component-info id ID #IMPLIED
  -          xmlns CDATA #FIXED "http://jakarta.apache.org/avalon/componentinfo_1_0.dtd"
  - -->
  +
  +<!ELEMENT type (component, loggers?, context?, services?, dependencies?, stages?, extensions?)>
   
   <!--
   The component element describes the component, it defines:
  @@ -96,7 +94,7 @@
          version CDATA #IMPLIED >
   
   <!--
  -The extension element defines a lifecycle extension phase supplied by a type:
  +The extension element defines a lifecycle extension stage supplied by a type:
   
   name  the extension name.
   reference  the version lifecycle interface supported
  @@ -108,24 +106,23 @@
          %stage.attribute; >
   
   <!--
  -The phase element defines a lifecycle extension phase that this component provides.
  +The stage element defines a lifecycle extension stage that this component is dependent on.
   It contains:
   
  -name  the phase name.
  -interface  the client interface phase dependency
  -attributes	  Optional attributes about phase
  +name  the stage name.
  +interface  the client stage interface
  +attributes	  Optional attributes about the stage
   -->
  -<!ELEMENT phase      (reference,attributes?)>
  +<!ELEMENT stage      (reference,attributes?)>
   
   <!--
  -The phases element contains a list of phases that this component provides.
  -It contains phase elements.
  +The stages element contains a list of stages that this component id dependent on.
  +It contains stage elements.
   -->
  -<!ELEMENT phases    (phase*)>
  +<!ELEMENT stages    (stage*)>
   
   <!--
  -The extensions element contains a list of phases that this component requires.
  -It contains phase elements.
  +The extensions element contains a list of extensions that the component provides.
   -->
   <!ELEMENT extensions    (extension*)>
   
  
  
  
  1.8       +39 -2     jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/meta/info/Type.java
  
  Index: Type.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/meta/info/Type.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Type.java	29 Jul 2002 06:14:33 -0000	1.7
  +++ Type.java	14 Aug 2002 02:59:02 -0000	1.8
  @@ -49,6 +49,7 @@
       private final DependencyDescriptor[] m_dependencies;
       private final LoggerDescriptor[] m_loggers;
       private final PhaseDescriptor[] m_phases;
  +    private final ExtensionDescriptor[] m_extensions;
   
       private transient Configuration m_configuration;
       private transient boolean m_loaded = false;
  @@ -61,7 +62,8 @@
                             final ContextDescriptor context,
                             final ServiceDescriptor[] services,
                             final DependencyDescriptor[] dependencies,
  -                          final PhaseDescriptor[] phases )
  +                          final PhaseDescriptor[] phases,
  +                          final ExtensionDescriptor[] extensions )
       {
           if( null == descriptor )
           {
  @@ -87,12 +89,18 @@
           {
               throw new NullPointerException( "phases" );
           }
  +        if( null == extensions )
  +        {
  +            throw new NullPointerException( "extensions" );
  +        }
  +
           m_descriptor = descriptor;
           m_loggers = loggers;
           m_context = context;
           m_services = services;
           m_dependencies = dependencies;
           m_phases = phases;
  +        m_extensions = extensions;
       }
   
       /**
  @@ -218,6 +226,35 @@
       public PhaseDescriptor[] getPhases()
       {
           return m_phases;
  +    }
  +
  +    /**
  +     * Return the phases supported by this extension.
  +     *
  +     * @return an array of extension descriptors.
  +     */
  +    public ExtensionDescriptor[] getExtensions()
  +    {
  +        return m_extensions;
  +    }
  +
  +    /**
  +     * Return the extension supporting the supplied phase.
  +     *
  +     * @return a matching extension or null if no matching extension
  +     */
  +    public ExtensionDescriptor getExtension( PhaseDescriptor phase )
  +    {
  +        ReferenceDescriptor reference = phase.getReference();
  +        ExtensionDescriptor[] extensions = getExtensions();
  +        for( int i=0; i<extensions.length; i++ )
  +        {
  +            ExtensionDescriptor extension = extensions[i];
  +            ReferenceDescriptor ref = extension.getReference();
  +            if( reference.matches( ref ) )
  +               return extension;
  +        }
  +        return null;
       }
   
      /**
  
  
  
  1.4       +1 -1      jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/meta/info/builder/Resources.properties
  
  Index: Resources.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/meta/info/builder/Resources.properties,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Resources.properties	29 Jul 2002 06:14:34 -0000	1.3
  +++ Resources.properties	14 Aug 2002 02:59:02 -0000	1.4
  @@ -1,7 +1,7 @@
   builder.redundent-role.notice=Warning: Type for class {0} redundently specifies role name "{1}" in dependency when it is identical to the name of service. It is recomended that the <role/> section be elided.
   builder.creating-info.notice=Creating a Type from class "{0}".
   builder.created-info.notice=Constructed Type from class {0} with {1} services, {2} dependencies, {3} context entries, {4} loggers, and {5} extended phases depedencies.
  -builder.bad-toplevel-element.error=Error the component implemented by "{0}" has an invalid element at top level of component info descriptor. Expected: "component-info". Actual: "{1}"
  +builder.bad-toplevel-element.error=Error the component implemented by "{0}" has an invalid element at top level of component info descriptor. Expected: "type". Actual: "{1}"
   builder.missing-info.error=Unable to locate resource from which to load info for component implemented by class "{0}".
   builder.missing-xml-creator.error=Unable to create XMLTypeCreator, usually due to not having XML classes on Classpath. Thus unable to lookup XML descriptor for component type "{0}".
   
  
  
  
  1.9       +79 -6     jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/meta/info/builder/XMLTypeCreator.java
  
  Index: XMLTypeCreator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/meta/info/builder/XMLTypeCreator.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- XMLTypeCreator.java	5 Aug 2002 12:39:38 -0000	1.8
  +++ XMLTypeCreator.java	14 Aug 2002 02:59:02 -0000	1.9
  @@ -26,6 +26,7 @@
   import org.apache.excalibur.meta.info.ServiceDescriptor;
   import org.apache.excalibur.meta.info.ReferenceDescriptor;
   import org.apache.excalibur.meta.info.PhaseDescriptor;
  +import org.apache.excalibur.meta.info.ExtensionDescriptor;
   import org.apache.excalibur.meta.ConfigurationBuilder;
   import org.xml.sax.InputSource;
   
  @@ -118,22 +119,28 @@
           configuration = info.getChild( "dependencies" );
           final DependencyDescriptor[] dependencies = buildDependencies( classname, configuration );
   
  -        configuration = info.getChild( "phases" );
  +        configuration = info.getChild( "stages" );
           final PhaseDescriptor[] phases = buildPhases( configuration );
   
  +        configuration = info.getChild( "extensions" );
  +        final ExtensionDescriptor[] extensions = buildExtensions( configuration );
  +
           if( getLogger().isInfoEnabled() )
           {
               final String message =
  -                REZ.getString( "builder.created-info.notice",
  +                REZ.getString( "builder.created-facility.notice",
                                  classname,
                                  new Integer( services.length ),
                                  new Integer( dependencies.length ),
                                  new Integer( context.getEntrys().length ),
                                  new Integer( loggers.length ),
  -                               new Integer( phases.length ) );
  +                               new Integer( phases.length ),
  +                               new Integer( extensions.length ) );
               getLogger().info( message );
           }
  -        return new Type( descriptor, loggers, context, services, dependencies, phases );
  +
  +        return new Type( 
  +          descriptor, loggers, context, services, dependencies, phases, extensions );
       }
   
      /**
  @@ -145,7 +152,7 @@
       protected PhaseDescriptor[] buildPhases( Configuration config ) throws Exception
       {
           ArrayList list = new ArrayList();
  -        Configuration[] phases = config.getChildren("phase");
  +        Configuration[] phases = config.getChildren("stage");
           for( int i=0; i<phases.length; i++ )
           {
               Configuration phase = phases[i];
  @@ -447,4 +454,70 @@
       {
           return Version.getVersion( version );
       }
  +
  +   /**
  +    * Utility function to create a set of phase descriptor from a configuration.
  +    * @param config a configuration containing 0..n phase elements
  +    * @return an array of phase descriptors
  +    * @exception Exception if a build error occurs
  +    */
  +    protected ExtensionDescriptor[] buildExtensions( Configuration config ) throws Exception
  +    {
  +        ArrayList list = new ArrayList();
  +        Configuration[] extensions = config.getChildren("extension");
  +        for( int i=0; i<extensions.length; i++ )
  +        {
  +            Configuration extension = extensions[i];
  +            final String name = extension.getChild("name").getValue();
  +            final int stage = getStageValue( extension );
  +            ReferenceDescriptor reference = 
  +              buildReferenceDescriptor( extension.getChild("reference") );
  +            ContextDescriptor context = buildContext( extension.getChild("context") );
  +            final Properties attributes =
  +                buildAttributes( extension.getChild( "attributes" ) );
  +            list.add( new ExtensionDescriptor( name, stage, reference, context, attributes ) );
  +        }
  +        return (ExtensionDescriptor[]) list.toArray( new ExtensionDescriptor[0] );
  +    }
  +
  +    private int getStageValue( Configuration phase )
  +    {
  +        final String stage = phase.getAttribute("stage","CREATE");
  +        if( stage.equalsIgnoreCase("CREATE") )
  +        {
  +            return ExtensionDescriptor.CREATE;
  +        }
  +        else if( stage.equalsIgnoreCase("DESTORY") )
  +        {
  +            return ExtensionDescriptor.DESTROY;
  +        }
  +        else if( stage.equalsIgnoreCase("ACCESS") )
  +        {
  +            return ExtensionDescriptor.ACCESS;
  +        }
  +        else if( stage.equalsIgnoreCase("RELEASE") )
  +        {
  +            return ExtensionDescriptor.RELEASE;
  +        }
  +        else if( stage.equalsIgnoreCase("INNER") )
  +        {
  +            return ExtensionDescriptor.INNER;
  +        }
  +        else if( stage.equalsIgnoreCase("OUTER") )
  +        {
  +            return ExtensionDescriptor.OUTER;
  +        }
  +        else if( stage.equalsIgnoreCase("ALL") )
  +        {
  +            return ExtensionDescriptor.ALL;
  +        }
  +        else
  +        {
  +            final String error = "Supplied stage argument '" + stage + " invalid at "
  +              + phase.getLocation() 
  +              + ". Allowable values: CREATE,DESTORY,ACCESS, RELEASE, INNER, OUTER or ALL.";
  +             
  +            throw new IllegalArgumentException( error );
  +        }
  +   }
   }
  
  
  
  1.5       +2 -2      jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/meta/info/builder/package.html
  
  Index: package.html
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/meta/info/builder/package.html,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- package.html	29 Jul 2002 06:14:34 -0000	1.4
  +++ package.html	14 Aug 2002 02:59:02 -0000	1.5
  @@ -16,7 +16,7 @@
   services it is dependent on.
   --&gt;</i></font>
   
  -&lt;component-info&gt;
  +&lt;type&gt;
   
   
     <font color="gray"><i>&lt;!--
  @@ -166,7 +166,7 @@
   
     &lt;/dependencies&gt;
   
  -&lt;/component-info&gt;
  +&lt;/type&gt;
   
   </pre>
   
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>