jvanzyl 2004/05/21 17:50:06
Modified: maven-plugin project.xml
maven-plugin/src/test/resources/source IdeaPlugin.java
Added: maven-plugin/src/main/java/org/apache/maven/plugin/generator
BeanPluginGenerator.java
maven-plugin/src/test/java/org/apache/maven/plugin/generator
BeanPluginGeneratorTest.java
Log:
o a little generator that will create a wrapper which adapts an m2 plugin
so it behaves like a setter bean that jelly and ant are accustom to
dealing with.
Revision Changes Path
1.3 +5 -0 maven-components/maven-plugin/project.xml
Index: project.xml
===================================================================
RCS file: /home/cvs/maven-components/maven-plugin/project.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- project.xml 20 May 2004 16:59:45 -0000 1.2
+++ project.xml 22 May 2004 00:50:06 -0000 1.3
@@ -31,5 +31,10 @@
<artifactId>junit</artifactId>
<version>3.8.1</version>
</dependency>
+ <dependency>
+ <groupId>modello</groupId>
+ <artifactId>modello</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
</dependencies>
</project>
1.1
maven-components/maven-plugin/src/main/java/org/apache/maven/plugin/generator/BeanPluginGenerator.java
Index: BeanPluginGenerator.java
===================================================================
package org.apache.maven.plugin.generator;
import com.thoughtworks.xstream.xml.XMLWriter;
import com.thoughtworks.xstream.xml.text.PrettyPrintXMLWriter;
import org.apache.maven.plugin.descriptor.Goal;
import org.apache.maven.plugin.descriptor.Parameter;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.plugin.descriptor.Goal;
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.JSourceWriter;
import org.codehaus.modello.generator.java.javasource.JConstructor;
import org.codehaus.modello.generator.java.javasource.JMethod;
import org.codehaus.modello.generator.java.javasource.JField;
import org.codehaus.modello.generator.java.javasource.JParameter;
import org.codehaus.modello.generator.java.javasource.JType;
import java.io.File;
import java.io.FileWriter;
import java.util.List;
import java.util.Map;
public class BeanPluginGenerator
extends AbstractGenerator
{
protected String pluginArtifactName()
{
return "BeanPlugin.java";
}
protected void writePluginArtifact( PluginDescriptor pluginDescriptor, File
destination )
throws Exception
{
JClass jClass = new JClass( pluginArtifactName() );
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
jClass.addImport( "org.apache.maven.plugin.BeanPluginAdapter" );
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
jClass.setSuperClass( "BeanPluginAdapter" );
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
jClass.setPackageName( "org.apache.maven.plugin" );
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
JConstructor constructor = new JConstructor( jClass );
constructor.getSourceCode().add( "super( new " +
pluginDescriptor.getImplementation() + "() );" );
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 );
setter.addParameter( new JParameter( new JClass( parameter.getType() ),
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();
}
}
1.1
maven-components/maven-plugin/src/test/java/org/apache/maven/plugin/generator/BeanPluginGeneratorTest.java
Index: BeanPluginGeneratorTest.java
===================================================================
package org.apache.maven.plugin.generator;
import junit.framework.TestCase;
import java.io.File;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
* @version $Id: BeanPluginGeneratorTest.java,v 1.1 2004/05/22 00:50:06 jvanzyl Exp $
*/
public class BeanPluginGeneratorTest
extends TestCase
{
public void testPluginDescriptorCreationFromPluginSource()
throws Exception
{
String basedir = System.getProperty( "basedir" );
BeanPluginGenerator pluggy = new BeanPluginGenerator();
pluggy.execute( new File( basedir, "src/test/resources/source" ).getPath(),
new File( basedir, "target" ).getPath() );
}
}
1.3 +1 -1
maven-components/maven-plugin/src/test/resources/source/IdeaPlugin.java
Index: IdeaPlugin.java
===================================================================
RCS file:
/home/cvs/maven-components/maven-plugin/src/test/resources/source/IdeaPlugin.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- IdeaPlugin.java 20 May 2004 16:59:45 -0000 1.2
+++ IdeaPlugin.java 22 May 2004 00:50:06 -0000 1.3
@@ -11,7 +11,7 @@
*
* @parameter sourceDirectory String required validator
* @parameter outputDirectory String required validator
- * @parameter classpathElements String[] required validator
+ * @parameter classpathElements String required validator
* @parameter compiler String required validator
*
* @goal.name compile
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]