Return-Path: Delivered-To: apmail-jakarta-avalon-cvs-archive@apache.org Received: (qmail 38919 invoked from network); 19 Dec 2002 10:52:52 -0000 Received: from exchange.sun.com (HELO nagoya.betaversion.org) (192.18.33.10) by daedalus.apache.org with SMTP; 19 Dec 2002 10:52:52 -0000 Received: (qmail 22366 invoked by uid 97); 19 Dec 2002 10:54:16 -0000 Delivered-To: qmlist-jakarta-archive-avalon-cvs@jakarta.apache.org Received: (qmail 22339 invoked by uid 97); 19 Dec 2002 10:54:15 -0000 Mailing-List: contact avalon-cvs-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Avalon CVS List" Reply-To: "Avalon Developers List" Delivered-To: mailing list avalon-cvs@jakarta.apache.org Received: (qmail 22327 invoked by uid 98); 19 Dec 2002 10:54:15 -0000 X-Antivirus: nagoya (v4218 created Aug 14 2002) Date: 19 Dec 2002 10:52:47 -0000 Message-ID: <20021219105247.34262.qmail@icarus.apache.org> From: mcconnell@apache.org To: avalon-sandbox-cvs@apache.org Subject: cvs commit: avalon-sandbox/meta/src/java/org/apache/avalon/meta/model/verifier ProfileVerifier.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N mcconnell 2002/12/19 02:52:47 Modified: meta/src/java/org/apache/avalon/meta/info ContextDescriptor.java ExtensionDescriptor.java ReferenceDescriptor.java Service.java Type.java meta/src/java/org/apache/avalon/meta/info/builder XMLServiceCreator.java XMLTypeCreator.java meta/src/java/org/apache/avalon/meta/model/verifier ProfileVerifier.java Log: Enhancement to ContextDirective and Service. ContextDirective updated to support reference to a service defintion of the context interface together with utilities to merge component supplied context entries with service supplied context entries. Revision Changes Path 1.3 +55 -17 avalon-sandbox/meta/src/java/org/apache/avalon/meta/info/ContextDescriptor.java Index: ContextDescriptor.java =================================================================== RCS file: /home/cvs/avalon-sandbox/meta/src/java/org/apache/avalon/meta/info/ContextDescriptor.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ContextDescriptor.java 17 Dec 2002 09:56:20 -0000 1.2 +++ ContextDescriptor.java 19 Dec 2002 10:52:47 -0000 1.3 @@ -51,6 +51,8 @@ package org.apache.avalon.meta.info; import java.util.Properties; +import java.util.Arrays; +import java.util.List; /** * A descriptor describing the Context that the Component @@ -71,18 +73,18 @@ */ public class ContextDescriptor extends Descriptor { - private final ReferenceDescriptor m_type; + private final ReferenceDescriptor m_reference; private final EntryDescriptor[] m_entries; /** * Create a descriptor without attributes. - * @param type the classname of the context class + * @param reference the classname of the context class * @param entries the set of entries required within the context */ - public ContextDescriptor( final ReferenceDescriptor type, + public ContextDescriptor( final ReferenceDescriptor reference, final EntryDescriptor[] entries ) { - this( type, entries, null ); + this( reference, entries, null ); } /** @@ -93,35 +95,34 @@ * @exception NullPointerException if type or entries argument is null * @exception IllegalArgumentException if the classname format is invalid */ - public ContextDescriptor( final ReferenceDescriptor type, + public ContextDescriptor( final ReferenceDescriptor reference, final EntryDescriptor[] entries, final Properties attributes ) throws NullPointerException, IllegalArgumentException { super( attributes ); - if( null == type ) - { - throw new NullPointerException( "type" ); - } - if( null == entries ) { throw new NullPointerException( "entries" ); } + if( null == reference ) + { + throw new NullPointerException( "reference" ); + } - m_type = type; + m_reference = reference; m_entries = entries; } /** - * Return the type of Context class. + * Return the reference decription for the context. * - * @return the type of Context class. + * @return the referencee descriptor. */ - public ReferenceDescriptor getType() + public ReferenceDescriptor getReference() { - return m_type; + return m_reference; } /** @@ -129,7 +130,7 @@ * * @return the entries contained in the context. */ - public EntryDescriptor[] getEntrys() + public EntryDescriptor[] getEntries() { return m_entries; } @@ -150,5 +151,42 @@ } } return null; + } + + /** + * Returns a set of entry descriptors resulting from a merge of the descriptors + * container in this descriptor with the supplied descriptors. + * + * @param entries the entries to merge + * @return the mergerged set of entries + * @exception Exception of a entry conflict occurs + */ + public EntryDescriptor[] merge( EntryDescriptor[] entries ) + throws IllegalArgumentException + { + for( int i=0; i: + * @return the new reference descriptor + */ + public static ReferenceDescriptor newInstance( String path ) + { + final String type; + final Version version; + int index = path.indexOf(":"); + if( index > -1 ) + { + type = path.substring( 0, index ); + version = Version.getVersion( path.substring( index + 1 ) ); + } + else + { + type = path; + version = Version.getVersion( "1.0.0" ); + } + return new ReferenceDescriptor( type, version ); + } + } 1.3 +68 -31 avalon-sandbox/meta/src/java/org/apache/avalon/meta/info/Service.java Index: Service.java =================================================================== RCS file: /home/cvs/avalon-sandbox/meta/src/java/org/apache/avalon/meta/info/Service.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Service.java 15 Dec 2002 17:48:03 -0000 1.2 +++ Service.java 19 Dec 2002 10:52:47 -0000 1.3 @@ -73,61 +73,85 @@ //========================================================================= /** - * The service classname key. + * The service reference. */ - private final String m_classname; + private final ReferenceDescriptor m_reference; /** - * The service version. + * The optional context entry criteria. */ - private final Version m_version; + private final EntryDescriptor[] m_entries; //========================================================================= // constructor //========================================================================= /** - * Creation of a new Service instance. + * Creation of a new Service instance using a classname and + * supplied properties argument. + * + * @param reference the versioned classname + */ + public Service( final ReferenceDescriptor reference ) + { + this( reference, null, null ); + } + + /** + * Creation of a new Service instance using a classname and + * supplied properties argument. * - * @param classname the classname of the service + * @param reference the versioned classname + * @param attributes the set of attributes to assign to the descriptor */ - public Service( final String classname ) + public Service( + final ReferenceDescriptor reference, + final EntryDescriptor[] entries ) { - this( classname, null ); + this( reference, entries, null ); } /** * Creation of a new Service instance using a classname and * supplied properties argument. * - * @param classname the classname of the service - * @param version the service version + * @param reference the versioned classname + * @param attributes the set of attributes to assign to the descriptor */ - public Service( final String classname, final Version version ) + public Service( + final ReferenceDescriptor reference, + final Properties attributes ) { - this( classname, version, null ); + this( reference, null, attributes ); } /** * Creation of a new Service instance using a classname and * supplied properties argument. * - * @param classname the classname of the service - * @param version the service version + * @param reference the versioned classname + * @param entries the set of optional context entries * @param attributes the set of attributes to assign to the descriptor */ public Service( - final String classname, - final Version version, + final ReferenceDescriptor reference, + final EntryDescriptor[] entries, final Properties attributes ) { super( attributes ); - if( classname == null ) + if( reference == null ) + { + throw new NullPointerException( "reference" ); + } + m_reference = reference; + if( entries == null ) + { + m_entries = new EntryDescriptor[0]; + } + else { - throw new NullPointerException( "classname" ); + m_entries = entries; } - m_version = version; - m_classname = classname; } //========================================================================= @@ -140,7 +164,7 @@ */ public String getClassname() { - return m_classname; + return m_reference.getClassname(); } /** @@ -149,11 +173,26 @@ */ public Version getVersion() { - if( m_version == null ) - { - return DEFAULT_VERSION; - } - return m_version; + return m_reference.getVersion(); + } + + /** + * Return the service reference. + * @return the reference + */ + public ReferenceDescriptor getReference() + { + return m_reference; + } + + /** + * Return the entries declared by the service. + * + * @return the entry descriptors + */ + public EntryDescriptor[] getEntries() + { + return m_entries; } /** @@ -165,9 +204,7 @@ */ public boolean matches( final ReferenceDescriptor reference ) { - return - reference.getClassname().equals( getClassname() ) - && reference.getVersion().complies( getVersion() ); + return reference.equals( getReference() ); } /** @@ -209,7 +246,7 @@ */ public String toString() { - return getClassname() + ":" + getVersion(); + return getReference().toString(); } } 1.6 +1 -12 avalon-sandbox/meta/src/java/org/apache/avalon/meta/info/Type.java Index: Type.java =================================================================== RCS file: /home/cvs/avalon-sandbox/meta/src/java/org/apache/avalon/meta/info/Type.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- Type.java 11 Dec 2002 05:16:38 -0000 1.5 +++ Type.java 19 Dec 2002 10:52:47 -0000 1.6 @@ -334,17 +334,6 @@ } /** - * Return the lifecycle stages extensions required by this extension. - * - * @return an array of stage descriptors. - * @deprecated use getStages() - */ - public StageDescriptor[] getPhases() - { - return m_stages; - } - - /** * Return the lifecycle stages extensions required by this component type. * * @return an array of stage descriptors. 1.2 +48 -2 avalon-sandbox/meta/src/java/org/apache/avalon/meta/info/builder/XMLServiceCreator.java Index: XMLServiceCreator.java =================================================================== RCS file: /home/cvs/avalon-sandbox/meta/src/java/org/apache/avalon/meta/info/builder/XMLServiceCreator.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- XMLServiceCreator.java 24 Nov 2002 12:58:27 -0000 1.1 +++ XMLServiceCreator.java 19 Dec 2002 10:52:47 -0000 1.2 @@ -52,6 +52,7 @@ import java.io.InputStream; import java.util.Properties; +import java.util.ArrayList; import org.apache.avalon.excalibur.i18n.ResourceManager; import org.apache.avalon.excalibur.i18n.Resources; import org.apache.avalon.framework.Version; @@ -59,6 +60,8 @@ import org.apache.avalon.framework.configuration.ConfigurationException; import org.apache.avalon.meta.ConfigurationBuilder; import org.apache.avalon.meta.info.Service; +import org.apache.avalon.meta.info.EntryDescriptor; +import org.apache.avalon.meta.info.ReferenceDescriptor; import org.xml.sax.InputSource; /** @@ -119,10 +122,12 @@ final Properties attributes = buildAttributes( info.getChild( "attributes" ) ); + final EntryDescriptor[] entries = + buildEntries( info.getChild( "entries" ).getChildren("entry") ); final String versionString = info.getChild( "version" ).getValue( "1.0" ); final Version version = buildVersion( versionString ); - return new Service( classname, version, attributes ); + return new Service( new ReferenceDescriptor( classname, version ), entries, attributes ); } /** @@ -150,6 +155,47 @@ } return attributes; } + + /** + * A utility method to build an array of {@link EntryDescriptor} + * objects from specified configuration. + * + * @param entrySet the set of entrys to build + * @return the created {@link EntryDescriptor}s + * @throws ConfigurationException if an error occurs + */ + protected EntryDescriptor[] buildEntries( final Configuration[] entrySet ) + throws ConfigurationException + { + final ArrayList entrys = new ArrayList(); + + for( int i = 0; i < entrySet.length; i++ ) + { + final EntryDescriptor service = buildEntry( entrySet[ i ] ); + entrys.add( service ); + } + + return (EntryDescriptor[])entrys.toArray( new EntryDescriptor[ entrys.size() ] ); + } + + /** + * Create a {@link EntryDescriptor} from configuration. + * + * @param config the configuration + * @return the created {@link EntryDescriptor} + * @throws ConfigurationException if an error occurs + */ + protected EntryDescriptor buildEntry( final Configuration config ) + throws ConfigurationException + { + final String key = config.getAttribute( "key" ); + final String type = config.getAttribute( "type", "java.lang.String" ); + final boolean optional = + config.getAttributeAsBoolean( "optional", false ); + + return new EntryDescriptor( key, type, optional ); + } + /** * A utility method to parse a Version object from specified string. 1.4 +6 -45 avalon-sandbox/meta/src/java/org/apache/avalon/meta/info/builder/XMLTypeCreator.java Index: XMLTypeCreator.java =================================================================== RCS file: /home/cvs/avalon-sandbox/meta/src/java/org/apache/avalon/meta/info/builder/XMLTypeCreator.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- XMLTypeCreator.java 17 Dec 2002 09:56:20 -0000 1.3 +++ XMLTypeCreator.java 19 Dec 2002 10:52:47 -0000 1.4 @@ -360,56 +360,17 @@ throws ConfigurationException { final EntryDescriptor[] entrys = - buildEntries( context.getChildren( "entry" ) ); + buildEntries( context.getChildren( "entry" ) ); final Properties attributes = - buildAttributes( context.getChild( "attributes" ) ); + buildAttributes( context.getChild( "attributes" ) ); - final ReferenceDescriptor type = + ReferenceDescriptor reference = createReference( context.getAttribute( "type", Context.class.getName() ) ); - return new ContextDescriptor( type, entrys, attributes ); + return new ContextDescriptor( reference, entrys, attributes ); } - /** - * A utility method to build an array of {@link EntryDescriptor} - * objects from specified configuration. - * - * @param entrySet the set of entrys to build - * @return the created {@link EntryDescriptor}s - * @throws ConfigurationException if an error occurs - */ - protected EntryDescriptor[] buildEntries( final Configuration[] entrySet ) - throws ConfigurationException - { - final ArrayList entrys = new ArrayList(); - - for( int i = 0; i < entrySet.length; i++ ) - { - final EntryDescriptor service = buildEntry( entrySet[ i ] ); - entrys.add( service ); - } - - return (EntryDescriptor[])entrys.toArray( new EntryDescriptor[ entrys.size() ] ); - } - - /** - * Create a {@link EntryDescriptor} from configuration. - * - * @param config the configuration - * @return the created {@link EntryDescriptor} - * @throws ConfigurationException if an error occurs - */ - protected EntryDescriptor buildEntry( final Configuration config ) - throws ConfigurationException - { - final String key = config.getAttribute( "key" ); - final String type = config.getAttribute( "type", "java.lang.String" ); - final boolean optional = - config.getAttributeAsBoolean( "optional", false ); - - return new EntryDescriptor( key, type, optional ); - } /** * A utility method to build an array of {@link ServiceDescriptor} @@ -537,7 +498,7 @@ else { type = path; - version = buildVersion( "1.0" ); + version = buildVersion( "1.0.0" ); } return new ReferenceDescriptor( type, version ); } 1.3 +2 -2 avalon-sandbox/meta/src/java/org/apache/avalon/meta/model/verifier/ProfileVerifier.java Index: ProfileVerifier.java =================================================================== RCS file: /home/cvs/avalon-sandbox/meta/src/java/org/apache/avalon/meta/model/verifier/ProfileVerifier.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ProfileVerifier.java 7 Dec 2002 09:48:58 -0000 1.2 +++ ProfileVerifier.java 19 Dec 2002 10:52:47 -0000 1.3 @@ -180,7 +180,7 @@ final Type info = profile.getType(); final ContextDescriptor context = info.getContext(); - final int count = context.getEntrys().length; + final int count = context.getEntries().length; if( !Contextualizable.class.isAssignableFrom( clazz ) ) { -- To unsubscribe, e-mail: For additional commands, e-mail: