donaldp 2002/11/15 21:15:45 Modified: info/src/java/org/apache/avalon/framework/tools/ant MetaGenerateTask.java info/src/test/org/apache/avalon/framework/tools/infobuilder/test InfoBuilderTestCase.java Added: info/src/java/org/apache/avalon/framework/tools/qdox DefaultInfoBuilder.java Removed: info/src/java/org/apache/avalon/framework/tools/qdox QDoxInfoBuilder.java Log: Rename QDoxInfoBuilder to DefaultInfoBuilder Revision Changes Path 1.3 +3 -3 jakarta-avalon-excalibur/info/src/java/org/apache/avalon/framework/tools/ant/MetaGenerateTask.java Index: MetaGenerateTask.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/info/src/java/org/apache/avalon/framework/tools/ant/MetaGenerateTask.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- MetaGenerateTask.java 16 Nov 2002 05:00:05 -0000 1.2 +++ MetaGenerateTask.java 16 Nov 2002 05:15:45 -0000 1.3 @@ -18,7 +18,7 @@ import org.apache.avalon.framework.tools.infobuilder.SerializedInfoWriter; import org.apache.avalon.framework.tools.infobuilder.InfoWriter; import org.apache.avalon.framework.tools.infobuilder.XMLInfoWriter; -import org.apache.avalon.framework.tools.qdox.QDoxInfoBuilder; +import org.apache.avalon.framework.tools.qdox.DefaultInfoBuilder; import org.apache.avalon.framework.tools.ant.FormatEnum; import org.apache.tools.ant.BuildException; @@ -136,7 +136,7 @@ final DocletTag tag = javaClass.getTagByName( "avalon.component" ); if( null != tag ) { - final QDoxInfoBuilder infoBuilder = new QDoxInfoBuilder(); + final DefaultInfoBuilder infoBuilder = new DefaultInfoBuilder(); info = infoBuilder.buildComponentInfo( javaClass ); } else 1.1 jakarta-avalon-excalibur/info/src/java/org/apache/avalon/framework/tools/qdox/DefaultInfoBuilder.java Index: DefaultInfoBuilder.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software License * version 1.1, a copy of which has been included with this distribution in * the LICENSE.txt file. */ package org.apache.avalon.framework.tools.qdox; import com.thoughtworks.qdox.model.DocletTag; import com.thoughtworks.qdox.model.JavaClass; import com.thoughtworks.qdox.model.JavaMethod; import java.util.ArrayList; import org.apache.avalon.framework.info.ComponentDescriptor; import org.apache.avalon.framework.info.ComponentInfo; import org.apache.avalon.framework.info.ContextDescriptor; import org.apache.avalon.framework.info.DependencyDescriptor; import org.apache.avalon.framework.info.EntryDescriptor; import org.apache.avalon.framework.info.LoggerDescriptor; import org.apache.avalon.framework.info.SchemaDescriptor; import org.apache.avalon.framework.info.ServiceDescriptor; /** * This is a utility class that is used to build a ComponentInfo object * from QDoxs JavaClass object model. This essentially involves interpreting * all of the javadoc tags present in JavaClass object model. * * @author <a href="mailto:peter at apache.org">Peter Donald</a> * @version $Revision: 1.1 $ $Date: 2002/11/16 05:15:45 $ */ public class DefaultInfoBuilder extends AbstractInfoBuilder { /** * Build a ComponentInfo object for specified class. * * @param javaClass the class * @return the ComponentInfo object */ public ComponentInfo buildComponentInfo( final JavaClass javaClass ) { final ComponentDescriptor component = buildComponent( javaClass ); final ServiceDescriptor[] services = buildServices( javaClass ); final ContextDescriptor context = buildContext( javaClass ); final LoggerDescriptor[] loggers = buildLoggers( javaClass ); final SchemaDescriptor schema = buildSchema( javaClass ); final DependencyDescriptor[] dependencies = buildDependencies( javaClass ); return new ComponentInfo( component, services, loggers, context, dependencies, schema ); } /** * Build the component descriptor for specified class. * * @param javaClass the class * @return the component descriptor */ private ComponentDescriptor buildComponent( final JavaClass javaClass ) { final String type = javaClass.getFullyQualifiedName(); return new ComponentDescriptor( type, EMPTY_ATTRIBUTES ); } /** * Build the set of service descriptors for specified class. * * @param javaClass the class * @return the set of service descriptors */ private ServiceDescriptor[] buildServices( final JavaClass javaClass ) { final ArrayList services = new ArrayList(); final DocletTag[] tags = javaClass.getTagsByName( "avalon.service" ); for( int i = 0; i < tags.length; i++ ) { final DocletTag tag = tags[ i ]; final String unresolvedType = getNamedParameter( tag, "type" ); final String type = resolveType( javaClass, unresolvedType ); final ServiceDescriptor service = new ServiceDescriptor( type, EMPTY_ATTRIBUTES ); services.add( service ); } return (ServiceDescriptor[])services.toArray( new ServiceDescriptor[ services.size() ] ); } /** * Build the set of logger descriptors for specified class. * * @param javaClass the class * @return the set of logger descriptors */ private LoggerDescriptor[] buildLoggers( final JavaClass javaClass ) { final JavaMethod method = getLifecycleMethod( javaClass, "enableLogging", LOGGER_CLASS ); if( null == method ) { return new LoggerDescriptor[ 0 ]; } else { final ArrayList loggers = new ArrayList(); final DocletTag[] tags = method.getTagsByName( "avalon.logger" ); for( int i = 0; i < tags.length; i++ ) { final String name = getNamedParameter( tags[ i ], "name", "" ); final LoggerDescriptor logger = new LoggerDescriptor( name, EMPTY_ATTRIBUTES ); loggers.add( logger ); } return (LoggerDescriptor[])loggers.toArray( new LoggerDescriptor[ loggers.size() ] ); } } /** * Build the context descriptor for specified class. * * @param javaClass the class * @return the context descriptor */ private ContextDescriptor buildContext( final JavaClass javaClass ) { final JavaMethod method = getLifecycleMethod( javaClass, "contextualize", CONTEXT_CLASS ); if( null == method ) { return new ContextDescriptor( CONTEXT_CLASS, new EntryDescriptor[ 0 ], EMPTY_ATTRIBUTES ); } else { String type = CONTEXT_CLASS; final DocletTag tag = method.getTagByName( "avalon.context" ); if( null != tag && null != tag.getNamedParameter( "type" ) ) { final String value = getNamedParameter( tag, "type" ); type = resolveType( javaClass, value ); } final ArrayList entrySet = new ArrayList(); final DocletTag[] tags = method.getTagsByName( "avalon.entry" ); for( int i = 0; i < tags.length; i++ ) { final String key = getNamedParameter( tags[ i ], "key" ); final String entryType = getNamedParameter( tags[ i ], "type" ); final String optional = getNamedParameter( tags[ i ], "optional", "false" ); final boolean isOptional = "true".equals( optional ); final EntryDescriptor entry = new EntryDescriptor( key, entryType, isOptional, EMPTY_ATTRIBUTES ); entrySet.add( entry ); } final EntryDescriptor[] entrys = (EntryDescriptor[])entrySet.toArray( new EntryDescriptor[ entrySet.size() ] ); return new ContextDescriptor( type, entrys, EMPTY_ATTRIBUTES ); } } /** * Build the schema descriptor for specified class. * * @param javaClass the class * @return the schema descriptor */ private SchemaDescriptor buildSchema( final JavaClass javaClass ) { String category = "configuration"; JavaMethod method = getLifecycleMethod( javaClass, "configure", CONFIGURATION_CLASS ); DocletTag tag = null; if( null != method ) { tag = method.getTagByName( "avalon.configuration" ); } else { method = getLifecycleMethod( javaClass, "parameterize", PARAMETERS_CLASS ); category = "parameters"; if( null == method ) { return new SchemaDescriptor( "", "", "", EMPTY_ATTRIBUTES ); } tag = method.getTagByName( "avalon.parameters" ); } final String location = getNamedParameter( tag, "location", "" ); final String type = getNamedParameter( tag, "type", "" ); return new SchemaDescriptor( category, location, type, EMPTY_ATTRIBUTES ); } /** * Build the set of dependency descriptors for specified class. * * @param javaClass the class * @return the set of dependency descriptors */ private DependencyDescriptor[] buildDependencies( final JavaClass javaClass ) { JavaMethod method = getLifecycleMethod( javaClass, "compose", COMPONENT_MANAGER_CLASS ); //If no compose then try for a service method ... if( null == method ) { method = getLifecycleMethod( javaClass, "service", SERVICE_MANAGER_CLASS ); } if( null == method ) { return new DependencyDescriptor[ 0 ]; } else { final ArrayList deps = new ArrayList(); final DocletTag[] tags = method.getTagsByName( "avalon.dependency" ); for( int i = 0; i < tags.length; i++ ) { final DocletTag tag = tags[ i ]; final String unresolvedType = getNamedParameter( tag, "type" ); final String type = resolveType( javaClass, unresolvedType ); final String key = getNamedParameter( tag, "key", type ); final String optional = getNamedParameter( tag, "optional", "false" ); final boolean isOptional = "true".equals( optional ); final DependencyDescriptor dependency = new DependencyDescriptor( key, type, isOptional, EMPTY_ATTRIBUTES ); deps.add( dependency ); } return (DependencyDescriptor[])deps.toArray( new DependencyDescriptor[ deps.size() ] ); } } } 1.14 +3 -3 jakarta-avalon-excalibur/info/src/test/org/apache/avalon/framework/tools/infobuilder/test/InfoBuilderTestCase.java Index: InfoBuilderTestCase.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/info/src/test/org/apache/avalon/framework/tools/infobuilder/test/InfoBuilderTestCase.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- InfoBuilderTestCase.java 16 Nov 2002 04:34:50 -0000 1.13 +++ InfoBuilderTestCase.java 16 Nov 2002 05:15:45 -0000 1.14 @@ -25,7 +25,7 @@ import org.apache.avalon.framework.tools.infobuilder.InfoWriter; import org.apache.avalon.framework.tools.infobuilder.InfoReader; import org.apache.avalon.framework.tools.infobuilder.XMLInfoReader; -import org.apache.avalon.framework.tools.qdox.QDoxInfoBuilder; +import org.apache.avalon.framework.tools.qdox.DefaultInfoBuilder; import org.apache.avalon.framework.container.ContainerUtil; import java.util.Properties; import java.util.Arrays; @@ -120,7 +120,7 @@ System.out.println( "source.getImports() = " + Arrays.asList( source.getImports() ) ); - final QDoxInfoBuilder infoBuilder = new QDoxInfoBuilder(); + final DefaultInfoBuilder infoBuilder = new DefaultInfoBuilder(); final ComponentInfo actual = infoBuilder.buildComponentInfo( classes[ 0 ] ); final ComponentInfo expected = loadComponentInfo( SOURCE1_INFO );
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>