[MPLUGIN-259] added @Parameter name="xxx" to set bean property name different from class' field

git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1592217 13f79535-47bb-0310-9956-ffa450edef68
master
Herve Boutemy 2014-05-03 15:20:29 +00:00
parent 10d0a99bec
commit 37b87d5ef5
13 changed files with 53 additions and 11 deletions

View File

@ -40,6 +40,12 @@ import java.lang.annotation.Target;
@Inherited
public @interface Parameter
{
/**
* name of the bean property used to get/set the field: by default, field name is used.
* @return the name of the bean property
*/
String name() default "";
/**
* alias supported to get parameter value.
* @return the alias

View File

@ -62,7 +62,7 @@ public class FirstMojo
* @since 0.1
* @deprecated As of 0.2
*/
@Parameter( alias = "alias" )
@Parameter( name = "namedParam", alias = "alias" )
private String aliasedParam;
@Component( role = MavenProjectHelper.class, hint = "test" )

View File

@ -79,8 +79,8 @@ assert mojo.requirements.requirement[0].'field-name'.text() == 'projectHelper'
assert mojo.parameters.parameter.size() == 8
parameter = mojo.parameters.parameter.findAll{ it.name.text() == "aliasedParam" }[0]
assert parameter.name.text() == 'aliasedParam'
parameter = mojo.parameters.parameter.findAll{ it.name.text() == "namedParam" }[0]
assert parameter.name.text() == 'namedParam'
assert parameter.alias.text() == 'alias'
assert parameter.type.text() == 'java.lang.String'
assert parameter.deprecated.text() == 'As of 0.2'

View File

@ -58,7 +58,7 @@ public class FirstMojo
private File touchFile;
/**
* @parameter alias="alias"
* @parameter name="namedParam" alias="alias"
* @deprecated As of 0.2
* @since 0.1
*/

View File

@ -79,8 +79,8 @@ assert mojo.requirements.requirement[0].'field-name'.text() == 'projectHelper'
assert mojo.parameters.parameter.size() == 8
parameter = mojo.parameters.parameter.findAll{ it.name.text() == "aliasedParam" }[0]
assert parameter.name.text() == 'aliasedParam'
parameter = mojo.parameters.parameter.findAll{ it.name.text() == "namedParam" }[0]
assert parameter.name.text() == 'namedParam'
assert parameter.alias.text() == 'alias'
assert parameter.type.text() == 'java.lang.String'
assert parameter.deprecated.text() == 'As of 0.2'

View File

@ -544,7 +544,10 @@ public class JavaAnnotationsMojoDescriptorExtractor
{
org.apache.maven.plugin.descriptor.Parameter parameter =
new org.apache.maven.plugin.descriptor.Parameter();
parameter.setName( parameterAnnotationContent.getFieldName() );
String name =
StringUtils.isEmpty( parameterAnnotationContent.name() ) ? parameterAnnotationContent.getFieldName()
: parameterAnnotationContent.name();
parameter.setName( name );
parameter.setAlias( parameterAnnotationContent.alias() );
parameter.setDefaultValue( parameterAnnotationContent.defaultValue() );
parameter.setDeprecated( parameterAnnotationContent.getDeprecated() );

View File

@ -20,6 +20,7 @@ package org.apache.maven.tools.plugin.annotations.datamodel;
*/
import org.apache.maven.plugins.annotations.Parameter;
import org.codehaus.plexus.util.StringUtils;
import java.lang.annotation.Annotation;
@ -32,6 +33,8 @@ public class ParameterAnnotationContent
implements Parameter
{
private String name;
private String alias;
private String property;
@ -61,6 +64,16 @@ public class ParameterAnnotationContent
this.readonly = readonly;
}
public String name()
{
return name;
}
public void name( String name )
{
this.name = name;
}
public String alias()
{
return alias;
@ -132,7 +145,8 @@ public class ParameterAnnotationContent
final StringBuilder sb = new StringBuilder();
sb.append( super.toString() );
sb.append( "ParameterAnnotationContent" );
sb.append( "{alias='" ).append( alias ).append( '\'' );
sb.append( "{name='" ).append( name ).append( '\'' );
sb.append( ", alias='" ).append( alias ).append( '\'' );
sb.append( ", property='" ).append( property ).append( '\'' );
sb.append( ", defaultValue='" ).append( defaultValue ).append( '\'' );
sb.append( ", required=" ).append( required );

View File

@ -283,6 +283,7 @@ public class DefaultMojoAnnotationsScanner
{
populateAnnotationContent( parameterAnnotationContent, mojoFieldVisitor.getMojoAnnotationVisitor() );
}
mojoAnnotatedClass.getParameters().put( parameterAnnotationContent.getFieldName(),
parameterAnnotationContent );
}

View File

@ -78,7 +78,8 @@ public class MyMojo
* @since <since-text>
* @deprecated <deprecated-text>
*/
@Parameter( alias = "myAlias",
@Parameter( name = "parameter",
alias = "myAlias",
property = "a.property",
defaultValue = "an expression, possibly with ${variables}",
readonly = <false|true>,

View File

@ -271,6 +271,15 @@ public interface JavaMojoAnnotation
*/
String PARAMETER = "parameter";
/**
* This defines the name of the bean property used to get/set the field: by default, field name is used.
* <br/>
* Refer to <code>&#64;parameter name="..."</code>.
* <br/>
* <b>Note</b>: Should be defined in a Mojo Field.
*/
String PARAMETER_NAME = "name";
/**
* This defines an alias which can be used to configure a parameter. This is primarily useful to improve
* user-friendliness.

View File

@ -562,6 +562,13 @@ public class JavaMojoDescriptorExtractor
pd.setEditable( field.getTagByName( JavaMojoAnnotation.READONLY ) == null );
String name = parameter.getNamedParameter( JavaMojoAnnotation.PARAMETER_NAME );
if ( !StringUtils.isEmpty( name ) )
{
pd.setName( name );
}
String alias = parameter.getNamedParameter( JavaMojoAnnotation.PARAMETER_ALIAS );
if ( !StringUtils.isEmpty( alias ) )

View File

@ -67,7 +67,7 @@ public class MyMojo
extends AbstractMojo
{
/**
* @parameter alias="myAlias" implementation="" property="aProperty" default-value="${anExpression}"
* @parameter name="parameter" alias="myAlias" implementation="" property="aProperty" default-value="${anExpression}"
* @readonly
* @required
* @since <since-text>

View File

@ -35,7 +35,7 @@ import com.sun.tools.doclets.Taglet;
* &#x2f;&#x2a;&#x2a;
* &#x20;&#x2a; Dummy parameter.
* &#x20;&#x2a;
* &#x20;&#x2a; &#64;parameter &lt;alias="..."&gt; &lt;default-value="..."&gt; &lt;expression="..."&gt;
* &#x20;&#x2a; &#64;parameter &lt;name="..."&gt; &lt;alias="..."&gt; &lt;default-value="..."&gt; &lt;expression="..."&gt;
* &#x20;&#x2a; &lt;implementation="..."&gt; &lt;property="..."&gt;
* &#x20;&#x2a; ...
* &#x20;&#x2a;&#x2f;
@ -59,6 +59,7 @@ public class MojoParameterFieldTaglet
private static final String NAME = JavaMojoAnnotation.PARAMETER;
private static final String[] PARAMETERS_NAME = {
JavaMojoAnnotation.PARAMETER_NAME,
JavaMojoAnnotation.PARAMETER_ALIAS,
JavaMojoAnnotation.PARAMETER_DEFAULT_VALUE,
JavaMojoAnnotation.PARAMETER_EXPRESSION,