jvanzyl 2004/05/07 17:15:34 Modified: maven-core/src/main/java/org/apache/maven/plugin/plexus/executor FieldPluginExecutor.java SetterPluginExecutor.java Removed: maven-core/src/main/java/org/apache/maven/plugin/plexus FieldPluginConfigurator.java SetterPluginConfigurator.java Log: Revision Changes Path 1.4 +63 -9 maven-components/maven-core/src/main/java/org/apache/maven/plugin/plexus/executor/FieldPluginExecutor.java Index: FieldPluginExecutor.java =================================================================== RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/plugin/plexus/executor/FieldPluginExecutor.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- FieldPluginExecutor.java 7 May 2004 23:46:51 -0000 1.3 +++ FieldPluginExecutor.java 8 May 2004 00:15:34 -0000 1.4 @@ -18,11 +18,13 @@ import org.apache.maven.plugin.PluginExecutionRequest; import org.apache.maven.plugin.PluginExecutionResponse; -import org.apache.maven.plugin.plexus.FieldPluginConfigurator; import org.apache.maven.plugin.plexus.PluginConfigurationException; +import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.Iterator; +import java.util.Map; /** * @@ -34,13 +36,6 @@ public class FieldPluginExecutor implements PluginExecutor { - private FieldPluginConfigurator fieldPluginConfigurator; - - public FieldPluginExecutor() - { - fieldPluginConfigurator = new FieldPluginConfigurator(); - } - public void execute( PluginExecutionRequest request, PluginExecutionResponse response ) { Object plugin = request.getPlugin(); @@ -49,7 +44,7 @@ { try { - plugin = fieldPluginConfigurator.configure( plugin, request.getParameters() ); + plugin = configure( plugin, request.getParameters() ); } catch ( PluginConfigurationException e ) { @@ -80,5 +75,64 @@ response.setException( e ); } } + // ---------------------------------------------------------------------- + // + // ---------------------------------------------------------------------- + + protected Object configure( Object plugin, Map parameters ) + throws PluginConfigurationException + { + Class pluginClass = plugin.getClass(); + + for ( Iterator iterator = parameters.keySet().iterator(); iterator.hasNext(); ) + { + String fieldName = (String) iterator.next(); + + Object value = parameters.get( fieldName ); + + try + { + Field field = getField( pluginClass, fieldName ); + + field.setAccessible( true ); + + field.set( plugin, value ); + } + catch ( Exception e ) + { + throw new PluginConfigurationException( + "Error setting value of field " + fieldName + " with " + value + ".", e ); + } + } + + return plugin; + } + + private Field getField( Class clazz, String fieldName ) + throws Exception + { + Field field = null; + + try + { + field = clazz.getDeclaredField( fieldName ); + } + catch ( NoSuchFieldException e ) + { + if ( clazz.getSuperclass() != Object.class ) + { + field = getField( clazz.getSuperclass(), fieldName ); + } + else + { + throw e; + } + } + catch ( Exception e ) + { + throw e; + } + return field; + } } 1.4 +45 -10 maven-components/maven-core/src/main/java/org/apache/maven/plugin/plexus/executor/SetterPluginExecutor.java Index: SetterPluginExecutor.java =================================================================== RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/plugin/plexus/executor/SetterPluginExecutor.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- SetterPluginExecutor.java 7 May 2004 23:46:51 -0000 1.3 +++ SetterPluginExecutor.java 8 May 2004 00:15:34 -0000 1.4 @@ -19,10 +19,11 @@ import org.apache.maven.plugin.PluginExecutionRequest; import org.apache.maven.plugin.PluginExecutionResponse; import org.apache.maven.plugin.plexus.PluginConfigurationException; -import org.apache.maven.plugin.plexus.SetterPluginConfigurator; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.Iterator; +import java.util.Map; /** * @@ -34,13 +35,6 @@ public class SetterPluginExecutor implements PluginExecutor { - private SetterPluginConfigurator setterPluginConfigurator; - - public SetterPluginExecutor() - { - setterPluginConfigurator = new SetterPluginConfigurator(); - } - public void execute( PluginExecutionRequest request, PluginExecutionResponse response ) { Object plugin = request.getPlugin(); @@ -49,7 +43,7 @@ { try { - plugin = setterPluginConfigurator.configure( plugin, request.getParameters() ); + plugin = configure( plugin, request.getParameters() ); } catch ( PluginConfigurationException e ) { @@ -79,5 +73,46 @@ { response.setException( e ); } + } + + // ---------------------------------------------------------------------- + // + // ---------------------------------------------------------------------- + + public Object configure( Object plugin, Map parameters ) + throws PluginConfigurationException + { + Class pluginClass = plugin.getClass(); + + for ( Iterator iterator = parameters.keySet().iterator(); iterator.hasNext(); ) + { + String key = (String) iterator.next(); + + Object value = parameters.get( key); + + String methodName = "set" + capitalise( key ); + + try + { + Method method = pluginClass.getMethod( methodName, new Class[]{value.getClass()} ); + + method.invoke( plugin, new Object[]{value} ); + } + catch ( Exception e ) + { + throw new PluginConfigurationException( + "Error setting value with method " + methodName + " with " + value + ".", e ); + } + } + + return plugin; + } + + private String capitalise( String str ) + { + return new StringBuffer( str.length() ) + .append( Character.toTitleCase( str.charAt( 0 ) ) ) + .append( str.substring( 1 ) ) + .toString(); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]