mcconnell 2002/09/12 01:07:43 Modified: meta/src/java/org/apache/excalibur/meta example-service.xml service.dtd meta/src/java/org/apache/excalibur/meta/info Service.java meta/src/java/org/apache/excalibur/meta/info/builder ServiceBuilder.java TypeBuilder.java XMLServiceCreator.java XMLTypeCreator.java Log: Addition of classname and version accessors. Revision Changes Path 1.2 +1 -0 jakarta-avalon-excalibur/meta/src/java/org/apache/excalibur/meta/example-service.xml Index: example-service.xml =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/meta/src/java/org/apache/excalibur/meta/example-service.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- example-service.xml 12 Sep 2002 05:35:33 -0000 1.1 +++ example-service.xml 12 Sep 2002 08:07:43 -0000 1.2 @@ -7,6 +7,7 @@ --> <service> + <version>1.2</version> <attributes> <attribute key="avalon:service.name" value="example"/> <attribute key="avalon:service.href" value="http:\\www.somewhere.com\description.html"/> 1.2 +8 -2 jakarta-avalon-excalibur/meta/src/java/org/apache/excalibur/meta/service.dtd Index: service.dtd =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/meta/src/java/org/apache/excalibur/meta/service.dtd,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- service.dtd 12 Sep 2002 05:35:33 -0000 1.1 +++ service.dtd 12 Sep 2002 08:07:43 -0000 1.2 @@ -20,12 +20,18 @@ --> <!-- -A service element is the document root, it defines: +A service element is the document root, it contains: attributes an attributes set + +It includes the attribute + +version #.#.# (default value 1.0) + --> -<!ELEMENT service (attributes?)> +<!ELEMENT service (version?,attributes?)> + <!ELEMENT version (#PCDATA) > <!-- The attributes element contains a list of attributes for feature. 1.2 +84 -3 jakarta-avalon-excalibur/meta/src/java/org/apache/excalibur/meta/info/Service.java Index: Service.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/meta/src/java/org/apache/excalibur/meta/info/Service.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Service.java 12 Sep 2002 05:35:33 -0000 1.1 +++ Service.java 12 Sep 2002 08:07:43 -0000 1.2 @@ -9,6 +9,8 @@ import java.util.Properties; +import org.apache.avalon.framework.Version; + /** * This class contains the meta information about a particular * service. It contains a set of attributes qualifying the service; @@ -18,13 +20,92 @@ */ public class Service extends Descriptor { + private static final Version DEFAULT_VERSION = Version.getVersion( "1.0" ); + /** - * Creation of a new Service instance using a supplied properties argument. + * The service classname key. + */ + private final String m_classname; + + /** + * The service version. + */ + private final Version m_version; + + /** + * Creation of a new Service instance. * + * @param classname the classname of the service + */ + public Service( final String classname ) + { + this( classname, 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 attributes the set of attributes to assign to the descriptor */ - public Service( final Properties attributes ) + public Service( final String classname, final Version version ) + { + this( classname, version, 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 attributes the set of attributes to assign to the descriptor + */ + public Service( final String classname, final Version version, final Properties attributes ) { super( attributes ); + if( classname == null ) + { + throw new NullPointerException( "classname" ); + } + m_version = version; + m_classname = classname; + } + + /** + * Return the service classname key. + * @return the service classname + */ + public String getClassname() + { + return m_classname; + } + + /** + * Return the service version. + * @return the version + */ + public Version getVersion() + { + if( m_version == null ) + { + return DEFAULT_VERSION; + } + return m_version; + } + + /** + * Determine if supplied reference will match this service. + * To match a service has to have same classname and must comply with version. + * + * @param reference the reference descriptor + * @return true if matches, false otherwise + */ + public boolean matches( final ReferenceDescriptor reference ) + { + return + reference.getClassname().equals( getClassname() ) && + reference.getVersion().complies( getVersion() ); } + } 1.2 +4 -1 jakarta-avalon-excalibur/meta/src/java/org/apache/excalibur/meta/info/builder/ServiceBuilder.java Index: ServiceBuilder.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/meta/src/java/org/apache/excalibur/meta/info/builder/ServiceBuilder.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ServiceBuilder.java 12 Sep 2002 06:03:10 -0000 1.1 +++ ServiceBuilder.java 12 Sep 2002 08:07:43 -0000 1.2 @@ -128,7 +128,10 @@ if( null == inputStream ) { - return new Service( null ); + final String message = + REZ.getString( "builder.missing-info.error", + classname ); + throw new Exception( message ); } // 1.3 +1 -7 jakarta-avalon-excalibur/meta/src/java/org/apache/excalibur/meta/info/builder/TypeBuilder.java Index: TypeBuilder.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/meta/src/java/org/apache/excalibur/meta/info/builder/TypeBuilder.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- TypeBuilder.java 21 Aug 2002 03:34:32 -0000 1.2 +++ TypeBuilder.java 12 Sep 2002 08:07:43 -0000 1.3 @@ -133,12 +133,6 @@ if( null == inputStream ) { - //##############################################################// - // Need to upgrade this to handle automated xinfo creation // - // using implemented interfaces for services, no dependecies, // - // no context, etc. // - //##############################################################// - final String message = REZ.getString( "builder.missing-info.error", classname ); 1.2 +18 -2 jakarta-avalon-excalibur/meta/src/java/org/apache/excalibur/meta/info/builder/XMLServiceCreator.java Index: XMLServiceCreator.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/meta/src/java/org/apache/excalibur/meta/info/builder/XMLServiceCreator.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- XMLServiceCreator.java 12 Sep 2002 05:35:33 -0000 1.1 +++ XMLServiceCreator.java 12 Sep 2002 08:07:43 -0000 1.2 @@ -11,6 +11,7 @@ import java.util.Properties; import org.apache.avalon.excalibur.i18n.ResourceManager; import org.apache.avalon.excalibur.i18n.Resources; +import org.apache.avalon.framework.Version; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; import org.apache.avalon.framework.logger.AbstractLogEnabled; @@ -87,6 +88,8 @@ final Properties attributes = buildAttributes( configuration.getChild( "attributes" ) ); + final String versionString = configuration.getChild( "version" ).getValue("1.0"); + final Version version = buildVersion( versionString ); if( getLogger().isInfoEnabled() ) { @@ -97,7 +100,7 @@ getLogger().info( message ); } - return new Service( attributes ); + return new Service( classname, version, attributes ); } /** @@ -125,4 +128,17 @@ } return attributes; } + + /** + * A utility method to parse a Version object from specified string. + * + * @param version the version string + * @return the created Version object + */ + protected Version buildVersion( final String version ) + { + return Version.getVersion( version ); + } + + } 1.5 +1 -12 jakarta-avalon-excalibur/meta/src/java/org/apache/excalibur/meta/info/builder/XMLTypeCreator.java Index: XMLTypeCreator.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/meta/src/java/org/apache/excalibur/meta/info/builder/XMLTypeCreator.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- XMLTypeCreator.java 12 Sep 2002 05:35:33 -0000 1.4 +++ XMLTypeCreator.java 12 Sep 2002 08:07:43 -0000 1.5 @@ -422,17 +422,6 @@ return new ComponentDescriptor( name, classname, version, attributes ); } - /** - * A utility method to parse a Version object from specified string. - * - * @param version the version string - * @return the created Version object - */ - protected Version buildVersion( final String version ) - { - 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
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>