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.
--></i></font>
-<component-info>
+<type>
<font color="gray"><i><!--
@@ -166,7 +166,7 @@
</dependencies>
-</component-info>
+</type>
</pre>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>