[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 @Inherited
public @interface Parameter 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. * alias supported to get parameter value.
* @return the alias * @return the alias

View File

@ -62,7 +62,7 @@ public class FirstMojo
* @since 0.1 * @since 0.1
* @deprecated As of 0.2 * @deprecated As of 0.2
*/ */
@Parameter( alias = "alias" ) @Parameter( name = "namedParam", alias = "alias" )
private String aliasedParam; private String aliasedParam;
@Component( role = MavenProjectHelper.class, hint = "test" ) @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 assert mojo.parameters.parameter.size() == 8
parameter = mojo.parameters.parameter.findAll{ it.name.text() == "aliasedParam" }[0] parameter = mojo.parameters.parameter.findAll{ it.name.text() == "namedParam" }[0]
assert parameter.name.text() == 'aliasedParam' assert parameter.name.text() == 'namedParam'
assert parameter.alias.text() == 'alias' assert parameter.alias.text() == 'alias'
assert parameter.type.text() == 'java.lang.String' assert parameter.type.text() == 'java.lang.String'
assert parameter.deprecated.text() == 'As of 0.2' assert parameter.deprecated.text() == 'As of 0.2'

View File

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

View File

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

View File

@ -544,7 +544,10 @@ public class JavaAnnotationsMojoDescriptorExtractor
{ {
org.apache.maven.plugin.descriptor.Parameter parameter = org.apache.maven.plugin.descriptor.Parameter parameter =
new org.apache.maven.plugin.descriptor.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.setAlias( parameterAnnotationContent.alias() );
parameter.setDefaultValue( parameterAnnotationContent.defaultValue() ); parameter.setDefaultValue( parameterAnnotationContent.defaultValue() );
parameter.setDeprecated( parameterAnnotationContent.getDeprecated() ); 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.apache.maven.plugins.annotations.Parameter;
import org.codehaus.plexus.util.StringUtils;
import java.lang.annotation.Annotation; import java.lang.annotation.Annotation;
@ -32,6 +33,8 @@ public class ParameterAnnotationContent
implements Parameter implements Parameter
{ {
private String name;
private String alias; private String alias;
private String property; private String property;
@ -61,6 +64,16 @@ public class ParameterAnnotationContent
this.readonly = readonly; this.readonly = readonly;
} }
public String name()
{
return name;
}
public void name( String name )
{
this.name = name;
}
public String alias() public String alias()
{ {
return alias; return alias;
@ -132,7 +145,8 @@ public class ParameterAnnotationContent
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
sb.append( super.toString() ); sb.append( super.toString() );
sb.append( "ParameterAnnotationContent" ); 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( ", property='" ).append( property ).append( '\'' );
sb.append( ", defaultValue='" ).append( defaultValue ).append( '\'' ); sb.append( ", defaultValue='" ).append( defaultValue ).append( '\'' );
sb.append( ", required=" ).append( required ); sb.append( ", required=" ).append( required );

View File

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

View File

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

View File

@ -271,6 +271,15 @@ public interface JavaMojoAnnotation
*/ */
String PARAMETER = "parameter"; 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 * This defines an alias which can be used to configure a parameter. This is primarily useful to improve
* user-friendliness. * user-friendliness.

View File

@ -562,6 +562,13 @@ public class JavaMojoDescriptorExtractor
pd.setEditable( field.getTagByName( JavaMojoAnnotation.READONLY ) == null ); 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 ); String alias = parameter.getNamedParameter( JavaMojoAnnotation.PARAMETER_ALIAS );
if ( !StringUtils.isEmpty( alias ) ) if ( !StringUtils.isEmpty( alias ) )

View File

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

View File

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