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]

Reply via email to