jvanzyl 2004/05/26 18:31:23 Added: maven-plugin/src/main/java/org/apache/maven/plugin/generator BeanGenerator.java Log: o deal with parameters that are arrays properly Revision Changes Path 1.1 maven-components/maven-plugin/src/main/java/org/apache/maven/plugin/generator/BeanGenerator.java Index: BeanGenerator.java =================================================================== package org.apache.maven.plugin.generator; import org.apache.maven.plugin.descriptor.Parameter; import org.apache.maven.plugin.descriptor.PluginDescriptor; import org.codehaus.modello.generator.java.javasource.JClass; import org.codehaus.modello.generator.java.javasource.JConstructor; import org.codehaus.modello.generator.java.javasource.JMethod; import org.codehaus.modello.generator.java.javasource.JParameter; import org.codehaus.modello.generator.java.javasource.JSourceWriter; import org.codehaus.modello.generator.java.javasource.JType; import java.io.File; import java.io.FileWriter; import java.util.List; /** * @todo use the descriptions in the descriptor for the javadoc pushed into * the source code. */ public class BeanGenerator extends AbstractGenerator { protected String pluginArtifactName( PluginDescriptor pluginDescriptor ) { // ---------------------------------------------------------------------- // We will base the classname on the implementation we are wrapping // ---------------------------------------------------------------------- return getClassName( pluginDescriptor ) + ".java"; } protected String getClassName( PluginDescriptor pluginDescriptor ) { String implementation = pluginDescriptor.getImplementation(); return implementation.substring( implementation.lastIndexOf( "." ) + 1 ) + "Bean"; } protected void writePluginArtifact( PluginDescriptor pluginDescriptor, File destination ) throws Exception { String implementation = pluginDescriptor.getImplementation(); JClass jClass = new JClass( getClassName( pluginDescriptor ) ); // ---------------------------------------------------------------------- // // ---------------------------------------------------------------------- jClass.setSuperClass( "org.apache.maven.plugin.BeanPluginAdapter" ); // ---------------------------------------------------------------------- // Use the same package as the plugin we are wrapping. // ---------------------------------------------------------------------- String packageName = implementation.substring( 0, implementation.lastIndexOf( "." ) ); jClass.setPackageName( packageName ); // ---------------------------------------------------------------------- // // ---------------------------------------------------------------------- JConstructor constructor = new JConstructor( jClass ); constructor.getSourceCode().add( "super( new " + implementation + "() );" ); jClass.addConstructor( constructor ); // ---------------------------------------------------------------------- // // ---------------------------------------------------------------------- List parameters = pluginDescriptor.getParameters(); for ( int i = 0; i < parameters.size(); i++ ) { Parameter parameter = (Parameter) parameters.get( i ); jClass.addMethod( createSetter( parameter ) ); } // ---------------------------------------------------------------------- // // ---------------------------------------------------------------------- FileWriter writer = new FileWriter( destination ); JSourceWriter sourceWriter = new JSourceWriter( writer ); jClass.print( sourceWriter ); writer.flush(); writer.close(); } private JMethod createSetter( Parameter parameter ) { String propertyName = capitalise( parameter.getName() ); JMethod setter = new JMethod( null, "set" + propertyName ); String type = parameter.getType(); JType parameterType; int arrayLocation = type.indexOf( "[]" ); if ( arrayLocation > 0 ) { parameterType = new JClass( type.substring( 0, arrayLocation ) ).createArray(); } else { parameterType = new JClass( type ); } setter.addParameter( new JParameter( parameterType, parameter.getName() ) ); setter.getSourceCode().add( "addParameter( " + "\"" + parameter.getName() + "\", " + parameter.getName() + " );" ); return setter; } protected String capitalise( String str ) { if ( str == null || str.length() == 0 ) { return str; } return new StringBuffer( str.length() ) .append( Character.toTitleCase( str.charAt( 0 ) ) ) .append( str.substring( 1 ) ) .toString(); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]