donaldp 2002/11/16 00:09:09 Modified: info/src/java/org/apache/avalon/framework/tools/verifier InfoVerifier.java Resources.properties Log: Make sure that components with schema implement Configurable/Parameterizable as appropriate Revision Changes Path 1.3 +51 -1 jakarta-avalon-excalibur/info/src/java/org/apache/avalon/framework/tools/verifier/InfoVerifier.java Index: InfoVerifier.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/info/src/java/org/apache/avalon/framework/tools/verifier/InfoVerifier.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- InfoVerifier.java 15 Nov 2002 22:31:14 -0000 1.2 +++ InfoVerifier.java 16 Nov 2002 08:09:08 -0000 1.3 @@ -14,9 +14,12 @@ import org.apache.avalon.framework.info.ComponentInfo; import org.apache.avalon.framework.info.ContextDescriptor; import org.apache.avalon.framework.info.ServiceDescriptor; +import org.apache.avalon.framework.info.SchemaDescriptor; import org.apache.avalon.framework.logger.AbstractLogEnabled; import org.apache.avalon.framework.logger.Logger; import org.apache.avalon.framework.service.Serviceable; +import org.apache.avalon.framework.configuration.Configurable; +import org.apache.avalon.framework.parameters.Parameterizable; /** * This Class verifies that an implementation is valid wrt the @@ -117,6 +120,53 @@ verifyDependencyPresence( name, implementationKey, info, implementation ); verifyContextPresence( name, implementationKey, info, implementation ); + verifySchemaPresence( name, implementationKey, info, implementation ); + } + + /** + * Verify that the if the component is not + * Configurable/Parameterizable that it does not declare schema + * of that type. + * + * @param name the name of component + * @param implementationKey the implementationKey of component + * @param implementation the class implementing component + * @throws VerifyException if fails verification check + */ + protected void verifySchemaPresence( final String name, + final String implementationKey, + final ComponentInfo info, + final Class implementation ) + throws VerifyException + { + final SchemaDescriptor schema = info.getSchema(); + final String category = schema.getCategory(); + if( "".equals( category ) ) + { + return; + } + else if( "configuration".equals( category ) ) + { + if( !Configurable.class.isAssignableFrom( implementation ) ) + { + final String message = + REZ.getString( "metadata.declare-uneeded-configuration-schema.error", + name, + implementationKey ); + throw new VerifyException( message ); + } + } + else if( "parameters".equals( category ) ) + { + if( !Parameterizable.class.isAssignableFrom( implementation ) ) + { + final String message = + REZ.getString( "metadata.declare-uneeded-parameter-schema.error", + name, + implementationKey ); + throw new VerifyException( message ); + } + } } /** 1.3 +3 -1 jakarta-avalon-excalibur/info/src/java/org/apache/avalon/framework/tools/verifier/Resources.properties Index: Resources.properties =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/info/src/java/org/apache/avalon/framework/tools/verifier/Resources.properties,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Resources.properties 14 Sep 2002 06:07:17 -0000 1.2 +++ Resources.properties 16 Nov 2002 08:09:08 -0000 1.3 @@ -16,4 +16,6 @@ metadata.bad-service-class.error=Unable to load service class "{1}" for Component named "{0}". (Reason: {2}). metadata.nodeclare-deps.error=Component named "{0}" of type "{1}" is Composable or Serviceable but does not declare any dependencies. metadata.declare-uneeded-deps.error=Component named "{0}" of type "{1}" is not Composable or Serviceable but declares dependencies. -metadata.declare-uneeded-entrys. \ No newline at end of file +metadata.declare-uneeded-entrys.error=Component named "{0}" of type "{1}" is not Contextualizable but declares Context Entry dependencies. +metadata.declare-uneeded-configuration-schema.error=Component named "{0}" of type "{1}" is not Configurable but declares a Configuration schema. +metadata.declare-uneeded-parameters-schema.error=Component named "{0}" of type "{1}" is not Parameterizable but declares a Parameters schema.
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>