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]>

Reply via email to