donaldp 2002/11/15 21:14:07 Modified: info/src/java/org/apache/avalon/framework/tools/qdox QDoxInfoBuilder.java Added: info/src/java/org/apache/avalon/framework/tools/qdox AbstractInfoBuilder.java Log: Extract superclass so it is easier to create InfoBuilders that read different javadoc dialects Revision Changes Path 1.4 +3 -112 jakarta-avalon-excalibur/info/src/java/org/apache/avalon/framework/tools/qdox/QDoxInfoBuilder.java Index: QDoxInfoBuilder.java =================================================================== RCS file: /home/cvs/jakarta-avalon-excalibur/info/src/java/org/apache/avalon/framework/tools/qdox/QDoxInfoBuilder.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- QDoxInfoBuilder.java 16 Nov 2002 04:34:50 -0000 1.3 +++ QDoxInfoBuilder.java 16 Nov 2002 05:14:07 -0000 1.4 @@ -10,17 +10,15 @@ import com.thoughtworks.qdox.model.DocletTag; import com.thoughtworks.qdox.model.JavaClass; import com.thoughtworks.qdox.model.JavaMethod; -import com.thoughtworks.qdox.model.Type; import java.util.ArrayList; -import org.apache.avalon.framework.info.Attribute; 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.ServiceDescriptor; 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 @@ -31,22 +29,8 @@ * @version $Revision$ $Date$ */ public class QDoxInfoBuilder + extends AbstractInfoBuilder { - private static final String LOGGER_CLASS = - "org.apache.avalon.framework.logger.Logger"; - private static final String CONTEXT_CLASS = - "org.apache.avalon.framework.context.Context"; - private static final String COMPONENT_MANAGER_CLASS = - "org.apache.avalon.framework.component.ComponentManager"; - private static final String SERVICE_MANAGER_CLASS = - "org.apache.avalon.framework.service.ServiceManager"; - private static final String CONFIGURATION_CLASS = - "org.apache.avalon.framework.configuration.Configuration"; - private static final String PARAMETERS_CLASS = - "org.apache.avalon.framework.parameters.Parameters"; - - private static final Attribute[] EMPTY_ATTRIBUTES = new Attribute[ 0 ]; - /** * Build a ComponentInfo object for specified class. * @@ -247,98 +231,5 @@ } return (DependencyDescriptor[])deps.toArray( new DependencyDescriptor[ deps.size() ] ); } - } - - /** - * Resolve the specified type. - * Resolving essentially means finding the fully qualified name of - * a class from just it's short name. - * - * @param javaClass the java class relative to which the type must be resolved - * @param type the unresolved type - * @return the resolved type - */ - private String resolveType( final JavaClass javaClass, - final String type ) - { - return javaClass.getParentSource().resolveType( type ); - } - - /** - * Retrieve a method with specified name and one parameter of specified - * type. The method must also return void. - * - * @param javaClass the java class to retrieve method for - * @param methodName the name of the method - * @param parameterType the class name of parameter - * @return the method if such a method exists - */ - private JavaMethod getLifecycleMethod( final JavaClass javaClass, - final String methodName, - final String parameterType ) - { - final JavaMethod[] methods = javaClass.getMethods(); - for( int i = 0; i < methods.length; i++ ) - { - final JavaMethod method = methods[ i ]; - if( methodName.equals( method.getName() ) && - method.getReturns().equals( new Type( "void", 0 ) ) && - method.getParameters().length == 1 && - method.getParameters()[ 0 ].getType().getValue().equals( parameterType ) ) - { - return method; - } - } - return null; - } - - /** - * Retrieve specified named parameter from tag. If the parameter - * does not exist then return specified default value. - * - * @param tag the tag - * @param name the name of parameter - * @return the value of named parameter - */ - private String getNamedParameter( final DocletTag tag, - final String name, - final String defaultValue ) - { - String value = tag.getNamedParameter( name ); - if( null == value ) - { - return defaultValue; - } - value = value.trim(); - if( value.startsWith( "\"" ) || value.startsWith( "'" ) ) - { - value = value.substring( 1 ); - } - if( value.endsWith( "\"" ) || value.endsWith( "'" ) ) - { - value = value.substring( 0, value.length() - 1 ); - } - return value; - } - - /** - * Retrieve specified named parameter from tag. If the parameter - * does not exist then throw an exception. - * - * @param tag the tag - * @param name the name of parameter - * @return the value of named parameter - */ - private String getNamedParameter( final DocletTag tag, final String name ) - { - final String value = getNamedParameter( tag, name, null ); - if( null == value ) - { - final String message = - "Malformed tag '" + tag.getName() + "'. " + - "Missing required parameter '" + name + "'"; - throw new IllegalArgumentException( message ); - } - return value; } } 1.1 jakarta-avalon-excalibur/info/src/java/org/apache/avalon/framework/tools/qdox/AbstractInfoBuilder.java Index: AbstractInfoBuilder.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.JavaClass; import com.thoughtworks.qdox.model.JavaMethod; import com.thoughtworks.qdox.model.Type; import com.thoughtworks.qdox.model.DocletTag; import org.apache.avalon.framework.info.Attribute; /** * This is an abstract base class that is used to build a ComponentInfo object * from QDoxs JavaClass object model. Subclasses interpret different dialects * of javadocs markup. * * @author <a href="mailto:peter at apache.org">Peter Donald</a> * @version $Revision: 1.1 $ $Date: 2002/11/16 05:14:07 $ */ class AbstractInfoBuilder { protected static final String LOGGER_CLASS = "org.apache.avalon.framework.logger.Logger"; protected static final String CONTEXT_CLASS = "org.apache.avalon.framework.context.Context"; protected static final String COMPONENT_MANAGER_CLASS = "org.apache.avalon.framework.component.ComponentManager"; protected static final String SERVICE_MANAGER_CLASS = "org.apache.avalon.framework.service.ServiceManager"; protected static final String CONFIGURATION_CLASS = "org.apache.avalon.framework.configuration.Configuration"; protected static final String PARAMETERS_CLASS = "org.apache.avalon.framework.parameters.Parameters"; protected static final Attribute[] EMPTY_ATTRIBUTES = new Attribute[ 0 ]; /** * Resolve the specified type. * Resolving essentially means finding the fully qualified name of * a class from just it's short name. * * @param javaClass the java class relative to which the type must be resolved * @param type the unresolved type * @return the resolved type */ protected String resolveType( final JavaClass javaClass, final String type ) { return javaClass.getParentSource().resolveType( type ); } /** * Retrieve a method with specified name and one parameter of specified * type. The method must also return void. * * @param javaClass the java class to retrieve method for * @param methodName the name of the method * @param parameterType the class name of parameter * @return the method if such a method exists */ protected JavaMethod getLifecycleMethod( final JavaClass javaClass, final String methodName, final String parameterType ) { final JavaMethod[] methods = javaClass.getMethods(); for( int i = 0; i < methods.length; i++ ) { final JavaMethod method = methods[ i ]; if( methodName.equals( method.getName() ) && method.getReturns().equals( new Type( "void", 0 ) ) && method.getParameters().length == 1 && method.getParameters()[ 0 ].getType().getValue().equals( parameterType ) ) { return method; } } return null; } /** * Retrieve specified named parameter from tag. If the parameter * does not exist then return specified default value. * * @param tag the tag * @param name the name of parameter * @return the value of named parameter */ protected String getNamedParameter( final DocletTag tag, final String name, final String defaultValue ) { String value = tag.getNamedParameter( name ); if( null == value ) { return defaultValue; } value = value.trim(); if( value.startsWith( "\"" ) || value.startsWith( "'" ) ) { value = value.substring( 1 ); } if( value.endsWith( "\"" ) || value.endsWith( "'" ) ) { value = value.substring( 0, value.length() - 1 ); } return value; } /** * Retrieve specified named parameter from tag. If the parameter * does not exist then throw an exception. * * @param tag the tag * @param name the name of parameter * @return the value of named parameter */ protected String getNamedParameter( final DocletTag tag, final String name ) { final String value = getNamedParameter( tag, name, null ); if( null == value ) { final String message = "Malformed tag '" + tag.getName() + "'. " + "Missing required parameter '" + name + "'"; throw new IllegalArgumentException( message ); } return value; } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>