brett 2005/04/14 21:52:31
Modified:
maven-plugins/maven-war-plugin/src/main/java/org/apache/maven/plugin/war
WarMojo.java
maven-core/src/main/java/org/apache/maven/plugin
DefaultPluginManager.java
PluginParameterExpressionEvaluator.java
maven-core/src/main/resources/META-INF/plexus components.xml
maven-core/src/test/java/org/apache/maven/plugin
PluginParameterExpressionEvaluatorTest.java
maven-core pom.xml
maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator
PluginDescriptorGenerator.java
maven-plugin-tools/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator
PluginDescriptorGeneratorTest.java
maven-plugins/maven-ejb-plugin/src/main/java/org/apache/maven/plugin/ejb
EjbMojo.java
maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor
MojoDescriptor.java PluginDescriptorBuilder.java
maven-plugins/maven-surefire-plugin/src/main/java/org/apache/maven/test
SurefirePlugin.java
Log:
utilise the container for populating all mojo configuration, including
expressions
Revision Changes Path
1.14 +6 -17
maven-components/maven-plugins/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/WarMojo.java
Index: WarMojo.java
===================================================================
RCS file:
/home/cvs/maven-components/maven-plugins/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/WarMojo.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- WarMojo.java 30 Mar 2005 08:22:24 -0000 1.13
+++ WarMojo.java 15 Apr 2005 04:52:30 -0000 1.14
@@ -54,21 +54,20 @@
* type="String"
* required="true"
* validator=""
- * expression="#maven.war.src"
- * default="#basedir/src/main/webapp"
+ * expression="#basedir/src/main/webapp"
* description=""
* @parameter name="warSourceIncludes"
* type="String"
* required="false"
* validator=""
- * expression="#maven.war.src.includes"
+ * expression=""
* default="**"
* description=""
* @parameter name="warSourceExcludes"
* type="String"
* required="false"
* validator=""
- * expression="#maven.war.src.excludes"
+ * expression=""
* description=""
* @parameter name="webXml"
* type="String"
@@ -80,14 +79,13 @@
* type="String"
* required="true"
* validator=""
- * expression="#maven.war.webapp.dir"
- * default="#project.build.directory/#project.build.finalName"
+ * expression="#project.build.directory/#project.build.finalName"
* description=""
* @parameter name="mode"
* type="String"
* required="true"
* validator=""
- * expression="#maven.war.mode"
+ * expression=""
* default="war"
* description=""
* @parameter name="classesDirectory"
@@ -100,13 +98,6 @@
* type="String"
* required="true"
* validator=""
- * expression="#maven.war.build.dir"
- * default="#project.build.directory"
- * description=""
- * @parameter name="basedir"
- * type="String"
- * required="true"
- * validator=""
* expression="#project.build.directory"
* description=""
* @parameter name="project"
@@ -129,8 +120,6 @@
private MavenProject project;
- private String basedir;
-
/**
* @todo File
*/
1.80 +122 -87
maven-components/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
Index: DefaultPluginManager.java
===================================================================
RCS file:
/home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java,v
retrieving revision 1.79
retrieving revision 1.80
diff -u -r1.79 -r1.80
--- DefaultPluginManager.java 14 Apr 2005 03:27:35 -0000 1.79
+++ DefaultPluginManager.java 15 Apr 2005 04:52:30 -0000 1.80
@@ -42,12 +42,13 @@
import org.codehaus.plexus.PlexusContainer;
import
org.codehaus.plexus.component.configurator.ComponentConfigurationException;
import org.codehaus.plexus.component.configurator.ComponentConfigurator;
+import
org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
+import
org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
import org.codehaus.plexus.component.discovery.ComponentDiscoveryEvent;
import org.codehaus.plexus.component.discovery.ComponentDiscoveryListener;
import org.codehaus.plexus.component.repository.ComponentSetDescriptor;
import
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.codehaus.plexus.configuration.PlexusConfiguration;
-import org.codehaus.plexus.configuration.PlexusConfigurationException;
import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
import org.codehaus.plexus.context.Context;
import org.codehaus.plexus.context.ContextException;
@@ -392,19 +393,31 @@
configuration = new XmlPlexusConfiguration( dom );
}
- if ( newMojoTechnique )
- {
- Map map = getPluginConfigurationFromExpressions(
mojoDescriptor, configuration, session );
+ configuration = mergeConfiguration( configuration,
mojoDescriptor.getConfiguration() );
- populatePluginFields( plugin, configuration, map );
- }
- else
+ PluginParameterExpressionEvaluator expressionEvaluator = new
PluginParameterExpressionEvaluator( session );
+ try
{
- getLogger().warn( "WARNING: The mojo " +
mojoDescriptor.getId() + " is using the OLD API" );
+ if ( newMojoTechnique )
+ {
+ Map map = getPluginConfigurationFromExpressions(
mojoDescriptor, configuration, session,
+
expressionEvaluator );
+
+ populatePluginFields( plugin, configuration, map,
expressionEvaluator );
+ }
+ else
+ {
+ getLogger().warn( "WARNING: The mojo " +
mojoDescriptor.getId() + " is using the OLD API" );
- Map map = getPluginConfigurationFromExpressions(
mojoDescriptor, configuration, session );
+ Map map = getPluginConfigurationFromExpressions(
mojoDescriptor, configuration, session,
+
expressionEvaluator );
- request = createPluginRequest( configuration, map );
+ request = createPluginRequest( configuration, map );
+ }
+ }
+ catch ( ExpressionEvaluationException e )
+ {
+ throw new PluginExecutionException( "Unable to configure
plugin", e );
}
// !! This is ripe for refactoring to an aspect.
@@ -436,7 +449,8 @@
}
catch ( PluginConfigurationException e )
{
- throw new PluginExecutionException( "Error configuring plugin
for execution.", e );
+ String msg = "Error configuring plugin for execution of .";
+ throw new PluginExecutionException( msg, e );
}
catch ( ComponentLookupException e )
{
@@ -446,8 +460,6 @@
{
try
{
- releaseComponents( mojoDescriptor, request );
-
container.release( plugin );
}
catch ( Exception e )
@@ -458,6 +470,48 @@
}
}
+ private PlexusConfiguration mergeConfiguration( PlexusConfiguration
dominant, PlexusConfiguration configuration )
+ {
+ // TODO: share with mergeXpp3Dom
+ PlexusConfiguration[] children = configuration.getChildren();
+ for ( int i = 0; i < children.length; i++ )
+ {
+ PlexusConfiguration child = children[i];
+ PlexusConfiguration childDom = (XmlPlexusConfiguration)
dominant.getChild( child.getName(), false );
+ if ( childDom != null )
+ {
+ mergeConfiguration( childDom, child );
+ }
+ else
+ {
+ dominant.addChild( copyConfiguration( child ) );
+ }
+ }
+ return dominant;
+ }
+
+ public static PlexusConfiguration copyConfiguration( PlexusConfiguration
src )
+ {
+ // TODO: shouldn't be necessary
+ XmlPlexusConfiguration dom = new XmlPlexusConfiguration(
src.getName() );
+ dom.setValue( src.getValue( null ) );
+
+ String[] attributeNames = src.getAttributeNames();
+ for ( int i = 0; i < attributeNames.length; i++ )
+ {
+ String attributeName = attributeNames[i];
+ dom.setAttribute( attributeName, src.getAttribute(
attributeName, null ) );
+ }
+
+ PlexusConfiguration[] children = src.getChildren();
+ for ( int i = 0; i < children.length; i++ )
+ {
+ dom.addChild( copyConfiguration( children[i] ) );
+ }
+
+ return dom;
+ }
+
/**
* @deprecated
*/
@@ -482,61 +536,36 @@
return newMojoTechnique;
}
- // TODO: don't throw Exception
- private void releaseComponents( MojoDescriptor goal,
PluginExecutionRequest request )
- throws Exception
- {
- if ( request != null && request.getParameters() != null )
- {
- for ( Iterator iterator = goal.getParameters().iterator();
iterator.hasNext(); )
- {
- Parameter parameter = (Parameter) iterator.next();
-
- String key = parameter.getName();
-
- String expression = parameter.getExpression();
-
- if ( expression != null && expression.startsWith(
"#component" ) )
- {
- Object component = request.getParameter( key );
-
- container.release( component );
- }
- }
- }
- }
-
// ----------------------------------------------------------------------
// Mojo Parameter Handling
// ----------------------------------------------------------------------
+ /**
+ * @param configuration
+ * @param map
+ * @return
+ * @deprecated
+ */
private static PluginExecutionRequest createPluginRequest(
PlexusConfiguration configuration, Map map )
- throws PluginConfigurationException
{
- try
+ Map parameters = new HashMap();
+ PlexusConfiguration[] children = configuration.getChildren();
+ for ( int i = 0; i < children.length; i++ )
{
- Map parameters = new HashMap();
- PlexusConfiguration[] children = configuration.getChildren();
- for ( int i = 0; i < children.length; i++ )
- {
- PlexusConfiguration child = children[i];
- parameters.put( child.getName(), child.getValue() );
- }
- map = CollectionUtils.mergeMaps( map, parameters );
- }
- catch ( PlexusConfigurationException e )
- {
- throw new PluginConfigurationException( "Unable to construct map
from plugin configuration", e );
+ PlexusConfiguration child = children[i];
+ parameters.put( child.getName(), child.getValue( null ) );
}
+ map = CollectionUtils.mergeMaps( map, parameters );
return new PluginExecutionRequest( map );
}
- private void populatePluginFields( Plugin plugin, PlexusConfiguration
configuration, Map map )
+ private void populatePluginFields( Plugin plugin, PlexusConfiguration
configuration, Map map,
+ ExpressionEvaluator
expressionEvaluator )
throws PluginConfigurationException
{
try
{
- configurator.configureComponent( plugin, configuration );
+ configurator.configureComponent( plugin, configuration,
expressionEvaluator );
}
catch ( ComponentConfigurationException e )
{
@@ -544,7 +573,7 @@
}
// Configuration does not store objects, so the non-String fields
are configured here
- // TODO: we don't have converters, so "primitives" that -are-
strings are not configured properly (eg String -> File from an expression)
+ // TODO: remove - this is for plugins built with alpha-1
for ( Iterator i = map.keySet().iterator(); i.hasNext(); )
{
String key = (String) i.next();
@@ -602,9 +631,12 @@
}
}
+ /**
+ * @deprecated
+ */
private Map getPluginConfigurationFromExpressions( MojoDescriptor goal,
PlexusConfiguration configuration,
- MavenSession session )
- throws PluginConfigurationException
+ MavenSession session,
ExpressionEvaluator expressionEvaluator )
+ throws ExpressionEvaluationException, PluginConfigurationException
{
List parameters = goal.getParameters();
@@ -616,49 +648,52 @@
String key = parameter.getName();
+ String expression;
if ( configuration.getChild( key, false ) == null )
{
- String expression = parameter.getExpression();
+ expression = parameter.getExpression();
+ }
+ else
+ {
+ expression = configuration.getChild( key, false ).getValue(
null );
+ }
- Object value = PluginParameterExpressionEvaluator.evaluate(
expression, session );
+ Object value = expressionEvaluator.evaluate( expression );
- getLogger().debug( "Evaluated mojo parameter expression: \'"
+ expression + "\' to: " + value );
+ getLogger().debug( "Evaluated mojo parameter expression: \'" +
expression + "\' to: " + value );
- if ( value == null )
+ if ( value == null )
+ {
+ if ( parameter.getDefaultValue() != null )
{
- if ( parameter.getDefaultValue() != null )
- {
- value = PluginParameterExpressionEvaluator.evaluate(
parameter.getDefaultValue(), session );
- }
+ value = expressionEvaluator.evaluate(
parameter.getDefaultValue() );
}
+ }
- //
----------------------------------------------------------------------
- // We will perform a basic check here for parameters values
that are
- // required. Required parameters can't be null so we throw an
- // Exception in the case where they are. We probably want
some
- // pluggable
- // mechanism here but this will catch the most obvious of
- // misconfigurations.
- //
----------------------------------------------------------------------
+ //
----------------------------------------------------------------------
+ // We will perform a basic check here for parameters values that
are
+ // required. Required parameters can't be null so we throw an
+ // Exception in the case where they are. We probably want some
+ // pluggable
+ // mechanism here but this will catch the most obvious of
+ // misconfigurations.
+ //
----------------------------------------------------------------------
- if ( value == null && parameter.isRequired() )
- {
- throw new PluginConfigurationException(
createPluginParameterRequiredMessage( goal, parameter ) );
- }
-
- String type = parameter.getType();
+ if ( value == null && parameter.isRequired() )
+ {
+ throw new PluginConfigurationException(
createPluginParameterRequiredMessage( goal, parameter ) );
+ }
- // TODO: Not sure how we might find files that are nested in
other objects... perhaps
- // we add a "needs translation" to the mojo so such types
can be translated (implementing some interface) and
- // address their own file objects
- if ( type != null && ( type.equals( "File" ) || type.equals(
"java.io.File" ) ) )
- {
- value = pathTranslator.alignToBaseDirectory( (String)
value,
-
session.getProject().getFile().getParentFile() );
- }
+ String type = parameter.getType();
- map.put( key, value );
+ // TODO: remove - done via plexus configuration, but need to
inject the base directory into it
+ if ( type != null && ( type.equals( "File" ) || type.equals(
"java.io.File" ) ) )
+ {
+ value = pathTranslator.alignToBaseDirectory( (String) value,
+
session.getProject().getFile().getParentFile() );
}
+
+ map.put( key, value );
}
return map;
}
1.14 +36 -30
maven-components/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
Index: PluginParameterExpressionEvaluator.java
===================================================================
RCS file:
/home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- PluginParameterExpressionEvaluator.java 14 Apr 2005 03:27:35 -0000
1.13
+++ PluginParameterExpressionEvaluator.java 15 Apr 2005 04:52:30 -0000
1.14
@@ -1,35 +1,44 @@
package org.apache.maven.plugin;
-/* ====================================================================
- * Copyright 2001-2004 The Apache Software Foundation.
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ====================================================================
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
import org.apache.maven.execution.MavenSession;
-import org.apache.maven.project.MavenProject;
import org.apache.maven.util.introspection.ReflectionValueExtractor;
+import
org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
+import
org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
import
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
* @version $Id$
+ * @todo belong in MavenSession, so it only gets created once?
*/
public class PluginParameterExpressionEvaluator
+ implements ExpressionEvaluator
{
- public static Object evaluate( String expression, MavenSession context )
- throws PluginConfigurationException
+ private final MavenSession context;
+
+ public PluginParameterExpressionEvaluator( MavenSession context )
+ {
+ this.context = context;
+ }
+
+ public Object evaluate( String expression )
+ throws ExpressionEvaluationException
{
Object value = null;
@@ -51,7 +60,7 @@
}
catch ( ComponentLookupException e )
{
- throw new PluginConfigurationException( "Cannot lookup
component: " + role + ".", e );
+ throw new ExpressionEvaluationException( "Cannot lookup
component: " + role + ".", e );
}
}
else if ( expression.equals( "#localRepository" ) )
@@ -61,7 +70,7 @@
else if ( expression.equals( "#maven.final.name" ) )
{
// TODO: remove this alias
- value =
context.getProject().getModel().getBuild().getFinalName();
+ value = context.getProject().getBuild().getFinalName();
}
else if ( expression.equals( "#project" ) )
{
@@ -75,18 +84,20 @@
if ( pathSeparator > 0 )
{
- value = getValue( expression.substring( 1, pathSeparator
), context.getProject() ) +
- expression.substring( pathSeparator );
+ String pathExpression = expression.substring( 1,
pathSeparator );
+ value = ReflectionValueExtractor.evaluate(
pathExpression, context.getProject() );
+ value = value + expression.substring( pathSeparator );
}
else
{
- value = getValue( expression.substring( 1 ),
context.getProject() );
+ value = ReflectionValueExtractor.evaluate(
expression.substring( 1 ), context.getProject() );
}
}
catch ( Exception e )
{
- throw new PluginConfigurationException( "Error evaluating
plugin parameter expression: " + expression,
- e );
+ // TODO: don't catch exception
+ throw new ExpressionEvaluationException( "Error evaluating
plugin parameter expression: " + expression,
+ e );
}
}
else if ( "#settings".equals( expression ) )
@@ -128,12 +139,12 @@
if ( sharpSeparator > 0 )
{
- val = val.substring( 0, sharpSeparator ) + evaluate(
val.substring( sharpSeparator ), context );
+ val = val.substring( 0, sharpSeparator ) + evaluate(
val.substring( sharpSeparator ) );
value = val;
}
else if ( sharpSeparator > 0 )
{
- value = evaluate( val.substring( sharpSeparator ), context );
+ value = evaluate( val.substring( sharpSeparator ) );
}
}
@@ -154,10 +165,5 @@
return value;
}
- private static Object getValue( String expression, MavenProject project )
- throws Exception
- {
- return ReflectionValueExtractor.evaluate( expression, project );
- }
}
1.27 +6 -0
maven-components/maven-core/src/main/resources/META-INF/plexus/components.xml
Index: components.xml
===================================================================
RCS file:
/home/cvs/maven-components/maven-core/src/main/resources/META-INF/plexus/components.xml,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- components.xml 29 Mar 2005 17:06:30 -0000 1.26
+++ components.xml 15 Apr 2005 04:52:30 -0000 1.27
@@ -232,6 +232,12 @@
<!-- END SNIPPET: lifecycle -->
</configuration>
</component>
+
+ <component>
+
<role>org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator</role>
+ <implementation>org.apache.maven.</implementation>
+ </component>
+
<!-- ********************* FIXME
*******************************************
| I realize this is duplicated but allows the project builder to work
by itself
-->
1.10 +15 -7
maven-components/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java
Index: PluginParameterExpressionEvaluatorTest.java
===================================================================
RCS file:
/home/cvs/maven-components/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- PluginParameterExpressionEvaluatorTest.java 21 Mar 2005 08:18:33
-0000 1.9
+++ PluginParameterExpressionEvaluatorTest.java 15 Apr 2005 04:52:30
-0000 1.10
@@ -11,6 +11,7 @@
import org.apache.maven.project.MavenProject;
import org.apache.maven.settings.MavenSettings;
import org.codehaus.plexus.PlexusContainer;
+import
org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
import java.io.File;
import java.util.Collections;
@@ -25,7 +26,8 @@
{
private MavenProject project;
- protected void setUp() throws Exception
+ protected void setUp()
+ throws Exception
{
super.setUp();
@@ -34,7 +36,8 @@
project = getProject( f );
}
- public void testValueExtractionWithAPomValueContainingAPath() throws
Exception
+ public void testValueExtractionWithAPomValueContainingAPath()
+ throws Exception
{
String expected = getTestFile( "target/test-classes/target/classes"
).getCanonicalPath();
@@ -59,7 +62,8 @@
new
DefaultEventDispatcher(), new DefaultLog( container.getLogger() ),
Collections.EMPTY_LIST );
- Object value = PluginParameterExpressionEvaluator.evaluate(
"#project.build.directory/classes", session );
+ ExpressionEvaluator expressionEvaluator = new
PluginParameterExpressionEvaluator( session );
+ Object value = expressionEvaluator.evaluate(
"#project.build.directory/classes" );
String actual = new File( value.toString() ).getCanonicalPath();
@@ -69,7 +73,8 @@
assertEquals( expected, actual );
}
- public void testParameterThatIsAComponent() throws Exception
+ public void testParameterThatIsAComponent()
+ throws Exception
{
String role =
"#component.org.apache.maven.project.MavenProjectBuilder";
@@ -85,12 +90,14 @@
new
DefaultEventDispatcher(), new DefaultLog( container.getLogger() ),
Collections.EMPTY_LIST );
- Object value = PluginParameterExpressionEvaluator.evaluate( role,
session );
+ ExpressionEvaluator expressionEvaluator = new
PluginParameterExpressionEvaluator( session );
+ Object value = expressionEvaluator.evaluate( role );
assertNotNull( value );
}
- public void testLocalRepositoryExtraction() throws Exception
+ public void testLocalRepositoryExtraction()
+ throws Exception
{
ArtifactRepositoryLayout repoLayout = (ArtifactRepositoryLayout)
lookup( ArtifactRepositoryLayout.ROLE,
"legacy" );
@@ -104,7 +111,8 @@
new
DefaultEventDispatcher(), new DefaultLog( container.getLogger() ),
Collections.EMPTY_LIST );
- Object value = PluginParameterExpressionEvaluator.evaluate(
"#localRepository", session );
+ ExpressionEvaluator expressionEvaluator = new
PluginParameterExpressionEvaluator( session );
+ Object value = expressionEvaluator.evaluate( "#localRepository" );
assertEquals( "local", ( (ArtifactRepository) value ).getId() );
}
1.34 +1 -1 maven-components/maven-core/pom.xml
Index: pom.xml
===================================================================
RCS file: /home/cvs/maven-components/maven-core/pom.xml,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- pom.xml 13 Apr 2005 05:11:48 -0000 1.33
+++ pom.xml 15 Apr 2005 04:52:30 -0000 1.34
@@ -62,7 +62,7 @@
<dependency>
<groupId>plexus</groupId>
<artifactId>plexus-container-default</artifactId>
- <version>1.0-alpha-2</version>
+ <version>1.0-alpha-3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.maven.wagon</groupId>
1.9 +71 -2
maven-components/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java
Index: PluginDescriptorGenerator.java
===================================================================
RCS file:
/home/cvs/maven-components/maven-plugin-tools/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGenerator.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- PluginDescriptorGenerator.java 14 Apr 2005 03:27:35 -0000 1.8
+++ PluginDescriptorGenerator.java 15 Apr 2005 04:52:30 -0000 1.9
@@ -27,8 +27,10 @@
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Set;
/**
@@ -162,6 +164,7 @@
w.startElement( "parameters" );
Collection requirements = new ArrayList();
+ Map configuration = new HashMap( parameters.size() );
for ( int j = 0; j < parameters.size(); j++ )
{
Parameter parameter = (Parameter) parameters.get( j );
@@ -174,6 +177,7 @@
element( w, "validator", parameter.getValidator() );
+ String value = null;
if ( parameter.getExpression().startsWith( "#component" ) )
{
requirements.add( parameter );
@@ -182,12 +186,20 @@
{
element( w, "required", Boolean.toString(
parameter.isRequired() ) );
- element( w, "expression", parameter.getExpression() );
+ value = parameter.getExpression();
}
element( w, "description", parameter.getDescription() );
- element( w, "default", parameter.getDefaultValue() );
+ if ( value == null || value.length() == 0 )
+ {
+ value = parameter.getDefaultValue();
+ }
+
+ if ( value != null && value.length() > 0 )
+ {
+ configuration.put( parameter, value );
+ }
w.endElement();
}
@@ -195,6 +207,34 @@
w.endElement();
//
----------------------------------------------------------------------
+ // Coinfiguration
+ //
----------------------------------------------------------------------
+
+ if ( !configuration.isEmpty() )
+ {
+ w.startElement( "configuration" );
+
+ for ( Iterator i = configuration.keySet().iterator();
i.hasNext(); )
+ {
+ Parameter parameter = (Parameter) i.next();
+
+ w.startElement( parameter.getName() );
+
+ String type = convertType( parameter.getType() );
+ if ( type != null )
+ {
+ w.addAttribute( "implementation", type );
+ }
+
+ w.writeText( (String) configuration.get( parameter ) );
+
+ w.endElement();
+ }
+
+ w.endElement();
+ }
+
+ //
----------------------------------------------------------------------
// Requirements
//
----------------------------------------------------------------------
@@ -225,6 +265,35 @@
w.endElement();
}
+ /**
+ * @param type
+ * @return
+ * @deprecated - should force proper class specification
+ */
+ private static String convertType( String type )
+ {
+ if ( "String".equals( type ) )
+ {
+ return "java.lang.String";
+ }
+ else if ( "File".equals( type ) )
+ {
+ return "java.io.File";
+ }
+ else if ( "List".equals( type ) )
+ {
+ return "java.util.List";
+ }
+ else if ( "".equals( type ) )
+ {
+ return null;
+ }
+ else
+ {
+ return type;
+ }
+ }
+
public void element( XMLWriter w, String name, String value )
{
w.startElement( name );
1.4 +0 -2
maven-components/maven-plugin-tools/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGeneratorTest.java
Index: PluginDescriptorGeneratorTest.java
===================================================================
RCS file:
/home/cvs/maven-components/maven-plugin-tools/maven-plugin-tools-api/src/test/java/org/apache/maven/tools/plugin/generator/PluginDescriptorGeneratorTest.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- PluginDescriptorGeneratorTest.java 5 Apr 2005 08:17:28 -0000
1.3
+++ PluginDescriptorGeneratorTest.java 15 Apr 2005 04:52:30 -0000
1.4
@@ -106,8 +106,6 @@
private void checkParameter( Parameter parameter )
{
- assertEquals( "value", parameter.getDefaultValue() );
- assertEquals( "#project.build.directory", parameter.getExpression()
);
assertEquals( "dir", parameter.getName() );
assertEquals( "String", parameter.getType() );
assertTrue( parameter.isRequired() );
1.6 +2 -2
maven-components/maven-plugins/maven-ejb-plugin/src/main/java/org/apache/maven/plugin/ejb/EjbMojo.java
Index: EjbMojo.java
===================================================================
RCS file:
/home/cvs/maven-components/maven-plugins/maven-ejb-plugin/src/main/java/org/apache/maven/plugin/ejb/EjbMojo.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- EjbMojo.java 30 Mar 2005 08:14:52 -0000 1.5
+++ EjbMojo.java 15 Apr 2005 04:52:30 -0000 1.6
@@ -46,7 +46,7 @@
* type="String"
* required="false"
* validator=""
- * expression="#maven.ejb.generateclient"
+ * expression=""
* default="false"
* description=""
* @parameter name="outputDirectory"
1.3 +13 -0
maven-components/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java
Index: MojoDescriptor.java
===================================================================
RCS file:
/home/cvs/maven-components/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- MojoDescriptor.java 14 Apr 2005 03:27:35 -0000 1.2
+++ MojoDescriptor.java 15 Apr 2005 04:52:31 -0000 1.3
@@ -17,6 +17,7 @@
*/
import org.codehaus.plexus.component.repository.ComponentRequirement;
+import org.codehaus.plexus.configuration.PlexusConfiguration;
import java.util.ArrayList;
import java.util.HashMap;
@@ -68,6 +69,8 @@
private String language = DEFAULT_LANGUAGE;
+ private PlexusConfiguration configuration;
+
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
@@ -230,4 +233,14 @@
{
getRequirements().add( cr );
}
+
+ public void setConfiguration( PlexusConfiguration configuration )
+ {
+ this.configuration = configuration;
+ }
+
+ public PlexusConfiguration getConfiguration()
+ {
+ return configuration;
+ }
}
1.4 +9 -1
maven-components/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java
Index: PluginDescriptorBuilder.java
===================================================================
RCS file:
/home/cvs/maven-components/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptorBuilder.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- PluginDescriptorBuilder.java 14 Apr 2005 03:27:35 -0000 1.3
+++ PluginDescriptorBuilder.java 15 Apr 2005 04:52:31 -0000 1.4
@@ -147,8 +147,10 @@
parameter.setDescription( d.getChild( "description" ).getValue()
);
+ // TODO: remove
parameter.setExpression( d.getChild( "expression" ).getValue() );
+ // TODO: remove
parameter.setDefaultValue( d.getChild( "default" ).getValue() );
parameters.add( parameter );
@@ -159,6 +161,12 @@
// TODO: this should not need to be handed off...
//
----------------------------------------------------------------------
+ // Configuration
+ //
----------------------------------------------------------------------
+
+ mojo.setConfiguration( c.getChild( "configuration" ) );
+
+ //
----------------------------------------------------------------------
// Requirements
//
----------------------------------------------------------------------
1.23 +10 -5
maven-components/maven-plugins/maven-surefire-plugin/src/main/java/org/apache/maven/test/SurefirePlugin.java
Index: SurefirePlugin.java
===================================================================
RCS file:
/home/cvs/maven-components/maven-plugins/maven-surefire-plugin/src/main/java/org/apache/maven/test/SurefirePlugin.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- SurefirePlugin.java 4 Apr 2005 03:48:01 -0000 1.22
+++ SurefirePlugin.java 15 Apr 2005 04:52:31 -0000 1.23
@@ -53,19 +53,19 @@
* expression="#project.build.testOutputDirectory"
* description=""
* @parameter name="includes"
- * type="String"
+ * type="java.util.List"
* required="false"
* validator=""
* description=""
* expression=""
* @parameter name="excludes"
- * type="String"
+ * type="java.util.List"
* required="false"
* validator=""
* description=""
* expression=""
* @parameter name="classpathElements"
- * type="String[]"
+ * type="java.util.List"
* required="true"
* validator=""
* expression="#project.testClasspathElements"
@@ -82,7 +82,12 @@
* validator=""
* expression="#test"
* description="Specify this parameter if you want to use the test regex
notation to select tests to run."
- * @parameter name="localRepository" type="ArtifactRepository"
required="true" validator="" expression="#localRepository" description=""
+ * @parameter name="localRepository"
+ * type="org.apache.maven.artifact.repository.ArtifactRepository"
+ * required="true"
+ * validator=""
+ * expression="#localRepository"
+ * description=""
* @todo make version of junit and surefire configurable
* @todo make report to be produced configurable
*/