{
Map.Entry entry = (Map.Entry) it.next();
JavaField field = (JavaField) entry.getValue();
Parameter pd = new Parameter();
pd.setType( field.getType().getValue() );
pd.setDescription( field.getComment() );
DocletTag componentTag = field.getTagByName( COMPONENT );
if ( componentTag != null )
{
String role = componentTag.getNamedParameter( "role" );
if ( role == null )
{
role = field.getType().toString();
}
String roleHint = componentTag.getNamedParameter( "roleHint" );
pd.setRequirement( new Requirement( role, roleHint ) );
pd.setName( (String) entry.getKey() );
}
else
{
DocletTag parameter = field.getTagByName( PARAMETER );
// ----------------------------------------------------------------------
// We will look for a property name here first and use that if present
// i.e:
//
// @parameter property="project"
//
// Which will become the name used for the configuration element which
// will in turn will allow plexus to use the corresponding setter.
// ----------------------------------------------------------------------
String property = parameter.getNamedParameter( PARAMETER_PROPERTY );
if ( !StringUtils.isEmpty( property ) )
{
pd.setName( property );
}
else
{
pd.setName( (String) entry.getKey() );
}
pd.setRequired( field.getTagByName( REQUIRED ) != null );
pd.setEditable( field.getTagByName( READONLY ) == null );
DocletTag deprecationTag = field.getTagByName( DEPRECATED );
if ( deprecationTag != null )
{
pd.setDeprecated( deprecationTag.getValue() );
}
String alias = parameter.getNamedParameter( "alias" );
if ( !StringUtils.isEmpty( alias ) )
{
pd.setAlias( alias );
}
pd.setExpression( parameter.getNamedParameter( PARAMETER_EXPRESSION ) );
if ( "${reports}".equals( pd.getExpression() ) )
{
mojoDescriptor.setRequiresReports( true );
}
pd.setDefaultValue( parameter.getNamedParameter( PARAMETER_DEFAULT_VALUE ) );
}
mojoDescriptor.addParameter( pd );
}
}