fixed override of ancestor fields with locally declared ones in parameter processing

git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@164942 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
John Dennis Casey 2005-04-27 03:59:06 +00:00
parent c6fd5e9e2e
commit e771f3f56d
1 changed files with 19 additions and 13 deletions

View File

@ -37,7 +37,10 @@ import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.TreeMap;
import java.util.Map.Entry;
/** /**
* @todo add example usage tag that can be shown in the doco * @todo add example usage tag that can be shown in the doco
@ -227,7 +230,7 @@ public class JavaMojoDescriptorExtractor
// We're resolving class-level, ancestor-class-field, local-class-field order here. // We're resolving class-level, ancestor-class-field, local-class-field order here.
// --------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------
List rawParams = new ArrayList(); Map rawParams = new TreeMap();
// for backward compat, we'll toss on the params declared at the class level. // for backward compat, we'll toss on the params declared at the class level.
DocletTag[] classLevelParams = javaClass.getTagsByName( PARAMETER ); DocletTag[] classLevelParams = javaClass.getTagsByName( PARAMETER );
@ -252,7 +255,7 @@ public class JavaMojoDescriptorExtractor
System.err.println( message ); System.err.println( message );
} }
rawParams.add( tag ); rawParams.put( tag.getNamedParameter("name"), tag );
} }
} }
@ -260,23 +263,26 @@ public class JavaMojoDescriptorExtractor
Set parameters = new HashSet(); Set parameters = new HashSet();
for ( Iterator it = rawParams.iterator(); it.hasNext(); ) for ( Iterator it = rawParams.entrySet().iterator(); it.hasNext(); )
{ {
Object parameterInfo = it.next(); Map.Entry entry = (Entry) it.next();
String paramName = (String) entry.getKey();
Object val = entry.getValue();
JavaField field = null; JavaField field = null;
DocletTag parameter = null; DocletTag parameter = null;
// FIXME: ICK! This is only here for backward compatibility to the class-level annotations of params. // FIXME: ICK! This is only here for backward compatibility to the class-level annotations of params.
if ( parameterInfo instanceof JavaField ) if ( val instanceof JavaField )
{ {
field = (JavaField) parameterInfo; field = (JavaField) val;
parameter = field.getTagByName( PARAMETER ); parameter = field.getTagByName( PARAMETER );
} }
else else
{ {
parameter = (DocletTag) parameterInfo; parameter = (DocletTag) val;
} }
Parameter pd = new Parameter(); Parameter pd = new Parameter();
@ -285,7 +291,7 @@ public class JavaMojoDescriptorExtractor
// TODO: remove when backward compatibility is no longer an issue. // TODO: remove when backward compatibility is no longer an issue.
if ( field == null ) if ( field == null )
{ {
pd.setName( parameter.getNamedParameter( "name" ) ); pd.setName( paramName );
pd.setType( parameter.getNamedParameter( "type" ) ); pd.setType( parameter.getNamedParameter( "type" ) );
@ -295,7 +301,7 @@ public class JavaMojoDescriptorExtractor
} }
else else
{ {
pd.setName( field.getName() ); pd.setName( paramName );
pd.setType( field.getType().getValue() ); pd.setType( field.getType().getValue() );
@ -326,7 +332,7 @@ public class JavaMojoDescriptorExtractor
} }
} }
private void extractFieldParameterTags( JavaClass javaClass, List rawParams ) private void extractFieldParameterTags( JavaClass javaClass, Map rawParams )
{ {
// we have to add the parent fields first, so that they will be overwritten by the local fields if // we have to add the parent fields first, so that they will be overwritten by the local fields if
// that actually happens... // that actually happens...
@ -349,7 +355,7 @@ public class JavaMojoDescriptorExtractor
if ( paramTag != null ) if ( paramTag != null )
{ {
rawParams.add( field ); rawParams.put( field.getName(), field );
} }
} }
} }