check super classes for fields to set

git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@163655 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Brett Leslie Porter 2005-03-22 12:28:36 +00:00
parent d9a6576761
commit 32416cf540
1 changed files with 50 additions and 14 deletions

View File

@ -385,16 +385,7 @@ public class DefaultPluginManager
plugin.setLog( session.getLog() ); plugin.setLog( session.getLog() );
// TODO: remove // TODO: remove
boolean newMojoTechnique = false; boolean newMojoTechnique = checkMojoTechnique( plugin.getClass() );
try
{
plugin.getClass().getDeclaredMethod( "execute", new Class[0] );
newMojoTechnique = true;
}
catch ( NoSuchMethodException e )
{
// intentionally ignored
}
// TODO: can probable refactor these a little when only the new plugin technique is in place // TODO: can probable refactor these a little when only the new plugin technique is in place
PlexusConfiguration configuration = getProjectDefinedPluginConfiguration( session.getProject(), PlexusConfiguration configuration = getProjectDefinedPluginConfiguration( session.getProject(),
@ -462,6 +453,30 @@ public class DefaultPluginManager
} }
} }
/**
* @deprecated
*/
private static boolean checkMojoTechnique( Class aClass )
{
boolean newMojoTechnique = false;
try
{
aClass.getDeclaredMethod( "execute", new Class[0] );
newMojoTechnique = true;
}
catch ( NoSuchMethodException e )
{
// intentionally ignored
Class superclass = aClass.getSuperclass();
if ( superclass != AbstractPlugin.class )
{
return checkMojoTechnique( superclass );
}
}
return newMojoTechnique;
}
// TODO: don't throw Exception // TODO: don't throw Exception
private void releaseComponents( MojoDescriptor goal, PluginExecutionRequest request ) private void releaseComponents( MojoDescriptor goal, PluginExecutionRequest request )
throws Exception throws Exception
@ -524,7 +539,7 @@ public class DefaultPluginManager
} }
// Configuration does not store objects, so the non-String fields are configured here // Configuration does not store objects, so the non-String fields are configured here
// TODO: we don't have converters, so something things that -are- strings are not configured properly (eg String -> File from an expression) // TODO: we don't have converters, so "primitives" that -are- strings are not configured properly (eg String -> File from an expression)
for ( Iterator i = map.keySet().iterator(); i.hasNext(); ) for ( Iterator i = map.keySet().iterator(); i.hasNext(); )
{ {
String key = (String) i.next(); String key = (String) i.next();
@ -533,7 +548,7 @@ public class DefaultPluginManager
Class clazz = plugin.getClass(); Class clazz = plugin.getClass();
try try
{ {
Field f = clazz.getDeclaredField( key ); Field f = findPluginField( clazz, key );
boolean accessible = f.isAccessible(); boolean accessible = f.isAccessible();
if ( !accessible ) if ( !accessible )
{ {
@ -547,17 +562,38 @@ public class DefaultPluginManager
f.setAccessible( false ); f.setAccessible( false );
} }
} }
catch ( NoSuchFieldException e1 ) catch ( NoSuchFieldException e )
{ {
throw new PluginConfigurationException( "Unable to set field '" + key + "' on '" + clazz + "'" ); throw new PluginConfigurationException( "Unable to set field '" + key + "' on '" + clazz + "'" );
} }
catch ( IllegalAccessException e11 ) catch ( IllegalAccessException e )
{ {
throw new PluginConfigurationException( "Unable to set field '" + key + "' on '" + clazz + "'" ); throw new PluginConfigurationException( "Unable to set field '" + key + "' on '" + clazz + "'" );
} }
} }
} }
private Field findPluginField( Class clazz, String key )
throws NoSuchFieldException
{
try
{
return clazz.getDeclaredField( key );
}
catch ( NoSuchFieldException e )
{
Class superclass = clazz.getSuperclass();
if ( superclass != Object.class )
{
return findPluginField( superclass, key );
}
else
{
throw e;
}
}
}
private Map getPluginConfigurationFromExpressions( MojoDescriptor goal, PlexusConfiguration configuration, private Map getPluginConfigurationFromExpressions( MojoDescriptor goal, PlexusConfiguration configuration,
MavenSession session ) MavenSession session )
throws PluginConfigurationException throws PluginConfigurationException