You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by jv...@apache.org on 2004/05/22 16:58:41 UTC
cvs commit: maven-components/maven-plugin/src/test/java/org/apache/maven/plugin/generator/jelly JellyHarnessGeneratorTest.java
jvanzyl 2004/05/22 07:58:41
Added: maven-plugin/src/main/java/org/apache/maven/plugin/generator/jelly
JellyHarnessGenerator.java
maven-plugin/src/test/java/org/apache/maven/plugin/generator/jelly
JellyHarnessGeneratorTest.java
Log:
o generate the jelly harness that will invoke the bean adapter so that
m2 plugins can be used in the context of m1.
Revision Changes Path
1.1 maven-components/maven-plugin/src/main/java/org/apache/maven/plugin/generator/jelly/JellyHarnessGenerator.java
Index: JellyHarnessGenerator.java
===================================================================
package org.apache.maven.plugin.generator.jelly;
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.apache.maven.plugin.generator.AbstractGenerator;
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;
/**
* @todo use the descriptions in the descriptor for the javadoc pushed into
* the source code.
*/
public class JellyHarnessGenerator
extends AbstractGenerator
{
protected String pluginArtifactName( PluginDescriptor pluginDescriptor )
{
return "plugin.jelly";
}
protected String getClassName( PluginDescriptor pluginDescriptor )
{
return pluginDescriptor.getImplementation() + "Bean";
}
/*
<project
xmlns:j="jelly:core"
xmlns:define="jelly:define"
xmlns:vdoclet="vdoclet">
// <define:jellybean
// name="vdocletBean"
// className="org.apache.maven.vdoclet.VDocletBean"
// method="execute">
// </define:jellybean>
</define:tag>
</define:taglib>
</project>
*/
protected void writePluginArtifact( PluginDescriptor pluginDescriptor, File destination )
throws Exception
{
String id = pluginDescriptor.getId();
FileWriter writer = new FileWriter( destination );
PrettyPrintXMLWriter w = new PrettyPrintXMLWriter( writer );
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
w.startElement( "project" );
w.addAttribute( "xmlns:j", "jelly:core" );
w.addAttribute( "xmlns:d", "jelly:define" );
w.addAttribute( "xmlns:" + id, id );
// ----------------------------------------------------------------------
// taglib + jellybean
// ----------------------------------------------------------------------
//
// <define:jellybean
// name="vdocletBean"
// className="org.apache.maven.vdoclet.VDocletBean"
// method="execute">
// </define:jellybean>
//
// ----------------------------------------------------------------------
w.startElement( "d:taglib" );
w.addAttribute( "uri", id );
w.startElement( "d:jellybean" );
w.addAttribute( "name", id + "Bean" );
w.addAttribute( "className", getClassName( pluginDescriptor ) );
w.addAttribute( "method", "execute" );
w.endElement();
w.endElement();
// ----------------------------------------------------------------------
// tag
// ----------------------------------------------------------------------
//
// <define:tag name="vdoclet">
// <vdoclet:vdocletBean
// srcDir="${srcDir}"
// destDir="${destDir}"
// template="${template}"
// outputFile="${outputFile}"
// encoding="${encoding}"
// jellyContext="${context}"
// />
// </define:tag>
//
// ----------------------------------------------------------------------
w.startElement( "d:tag" );
w.addAttribute( "name", id );
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
w.startElement( id + ":" + id + "Bean" );
List parameters = pluginDescriptor.getParameters();
for ( int i = 0; i < parameters.size(); i++ )
{
Parameter parameter = (Parameter) parameters.get( i );
w.addAttribute( parameter.getName(), "${" + parameter.getName() + "}" );
}
w.endElement();
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
w.endElement();
// ----------------------------------------------------------------------
// goals
// ----------------------------------------------------------------------
List goals = pluginDescriptor.getGoals();
for ( int i = 0; i < goals.size(); i++ )
{
Goal goal = (Goal) goals.get( i );
w.startElement( "goal" );
w.addAttribute( "name", goal.getName() );
w.startElement( id + ":" + id + "Bean" );
List goalParameters = goal.getParameters();
for ( int j = 0; j < goalParameters.size(); j++ )
{
Parameter p = (Parameter) goalParameters.get( j );
String expression = p.getExpression();
int projectIndex = expression.indexOf( "project" );
if ( projectIndex > 0 )
{
expression = expression.substring( 0, projectIndex ) + "pom" + expression.substring( projectIndex + 7);
}
if ( expression.startsWith( "#" ) )
{
expression = "${" + expression.substring( 1 ) + "}";
}
w.addAttribute( p.getName(), expression );
}
w.endElement();
w.endElement();
}
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
w.endElement();
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
writer.flush();
writer.close();
}
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/jelly/JellyHarnessGeneratorTest.java
Index: JellyHarnessGeneratorTest.java
===================================================================
package org.apache.maven.plugin.generator.jelly;
import junit.framework.TestCase;
import java.io.File;
import org.apache.maven.plugin.generator.jelly.JellyHarnessGenerator;
/**
* @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
* @version $Id: JellyHarnessGeneratorTest.java,v 1.1 2004/05/22 14:58:41 jvanzyl Exp $
*/
public class JellyHarnessGeneratorTest
extends TestCase
{
public void testPluginDescriptorCreationFromPluginSource()
throws Exception
{
String basedir = System.getProperty( "basedir" );
JellyHarnessGenerator pluggy = new JellyHarnessGenerator();
pluggy.execute( new File( basedir, "src/test/resources/source" ).getPath(), new File( basedir, "target" ).getPath() );
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org