Author: hboutemy Date: Fri Oct 31 22:03:58 2014 New Revision: 1635871 URL: http://svn.apache.org/r1635871 Log: updated code with Java 5 typed collections
Modified: maven/plugins/trunk/maven-toolchains-plugin/src/main/java/org/apache/maven/plugin/toolchain/ToolchainConverter.java maven/plugins/trunk/maven-toolchains-plugin/src/main/java/org/apache/maven/plugin/toolchain/ToolchainMojo.java maven/plugins/trunk/maven-toolchains-plugin/src/main/java/org/apache/maven/plugin/toolchain/Toolchains.java maven/plugins/trunk/maven-toolchains-plugin/src/site/apt/toolchains/jdk.apt.vm Modified: maven/plugins/trunk/maven-toolchains-plugin/src/main/java/org/apache/maven/plugin/toolchain/ToolchainConverter.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-toolchains-plugin/src/main/java/org/apache/maven/plugin/toolchain/ToolchainConverter.java?rev=1635871&r1=1635870&r2=1635871&view=diff ============================================================================== --- maven/plugins/trunk/maven-toolchains-plugin/src/main/java/org/apache/maven/plugin/toolchain/ToolchainConverter.java (original) +++ maven/plugins/trunk/maven-toolchains-plugin/src/main/java/org/apache/maven/plugin/toolchain/ToolchainConverter.java Fri Oct 31 22:03:58 2014 @@ -62,6 +62,7 @@ public class ToolchainConverter throws ComponentConfigurationException { Toolchains retValue = new Toolchains(); + processConfiguration( retValue, configuration, expressionEvaluator ); return retValue; @@ -72,20 +73,20 @@ public class ToolchainConverter ExpressionEvaluator expressionEvaluator ) throws ComponentConfigurationException { - Map map = new HashMap(); + Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>(); + PlexusConfiguration[] tools = configuration.getChildren(); for ( PlexusConfiguration tool : tools ) { String type = tool.getName(); PlexusConfiguration[] params = tool.getChildren(); - Map parameters = new HashMap(); + + Map<String, String> parameters = new HashMap<String, String>(); for ( PlexusConfiguration param : params ) { try { - String name = param.getName(); - String val = param.getValue(); - parameters.put( name, val ); + parameters.put( param.getName(), param.getValue() ); } catch ( PlexusConfigurationException ex ) { @@ -94,6 +95,7 @@ public class ToolchainConverter } map.put( type, parameters ); } + chain.toolchains = map; } } \ No newline at end of file Modified: maven/plugins/trunk/maven-toolchains-plugin/src/main/java/org/apache/maven/plugin/toolchain/ToolchainMojo.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-toolchains-plugin/src/main/java/org/apache/maven/plugin/toolchain/ToolchainMojo.java?rev=1635871&r1=1635870&r2=1635871&view=diff ============================================================================== --- maven/plugins/trunk/maven-toolchains-plugin/src/main/java/org/apache/maven/plugin/toolchain/ToolchainMojo.java (original) +++ maven/plugins/trunk/maven-toolchains-plugin/src/main/java/org/apache/maven/plugin/toolchain/ToolchainMojo.java Fri Oct 31 22:03:58 2014 @@ -34,7 +34,6 @@ import org.apache.maven.toolchain.Toolch import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; import java.util.Map; @@ -49,7 +48,7 @@ public class ToolchainMojo /** */ @Component - private ToolchainManagerPrivate toolchainManager; + private ToolchainManagerPrivate toolchainManagerPrivate; /** * The current build session instance. This is used for @@ -70,78 +69,87 @@ public class ToolchainMojo public void execute() throws MojoExecutionException, MojoFailureException { - if ( toolchains != null ) + if ( toolchains == null ) { - Iterator en = toolchains.getToolchainsTypes().iterator(); - List nonMatchedTypes = new ArrayList(); - while ( en.hasNext() ) + // should not happen since parameter is required... + getLog().warn( "No toolchains requirements configured." ); + return; + } + + List<String> nonMatchedTypes = new ArrayList<String>(); + + for ( Map.Entry<String, Map<String, String>> entry : toolchains.getToolchains().entrySet() ) + { + try { - try + String type = entry.getKey(); + Map<String, String> params = entry.getValue(); + + getLog().info( "Type:" + type ); + ToolchainPrivate[] tcs = getToolchains( type ); + + boolean matched = false; + for ( ToolchainPrivate tc : tcs ) { - String type = (String) en.next(); - getLog().info( "Type:" + type ); - Map params = toolchains.getParams( type ); - ToolchainPrivate[] tcs = getToolchains( type ); - boolean matched = false; - for ( ToolchainPrivate tc : tcs ) + if ( tc.matchesRequirements( params ) ) { - if ( tc.matchesRequirements( params ) ) - { - getLog().info( "Toolchain (" + type + ") matched:" + tc ); - toolchainManager.storeToolchainToBuildContext( tc, session ); - matched = true; - break; - } - } - if ( !matched ) - { - nonMatchedTypes.add( type ); + getLog().info( "Toolchain (" + type + ") matched: " + tc ); + + toolchainManagerPrivate.storeToolchainToBuildContext( tc, session ); + + matched = true; + break; } } - catch ( MisconfiguredToolchainException ex ) + + if ( !matched ) { - throw new MojoExecutionException( "Misconfigured toolchains.", ex ); + nonMatchedTypes.add( type ); } } - if ( !nonMatchedTypes.isEmpty() ) + catch ( MisconfiguredToolchainException ex ) { - // TODO add the default toolchain instance if defined?? - StringBuilder buff = new StringBuilder(); - buff.append( "Cannot find matching toolchain definitions for the following toolchain types:" ); - for ( Object nonMatchedType : nonMatchedTypes ) + throw new MojoExecutionException( "Misconfigured toolchains.", ex ); + } + } + + if ( !nonMatchedTypes.isEmpty() ) + { + // TODO add the default toolchain instance if defined?? + StringBuilder buff = new StringBuilder(); + buff.append( "Cannot find matching toolchain definitions for the following toolchain types:" ); + + for ( String type : nonMatchedTypes ) + { + buff.append( '\n' ); + buff.append( type ); + + Map<String, String> params = toolchains.getParams( type ); + + if ( params.size() > 0 ) { - String type = (String) nonMatchedType; - buff.append( '\n' ); - buff.append( type ); - Map params = toolchains.getParams( type ); - if ( params.size() > 0 ) + buff.append( " [" ); + + for ( Map.Entry<String, String> param : params.entrySet() ) { - Iterator it2 = params.keySet().iterator(); - buff.append( " [" ); - while ( it2.hasNext() ) - { - String string = (String) it2.next(); - buff.append( " " ).append( string ).append( "='" ).append( params.get( string ) ); - buff.append( "' " ); - } - buff.append( ']' ); + buff.append( " " ).append( param.getKey() ).append( "='" ).append( param.getValue() ); + buff.append( "'" ); } + buff.append( " ]" ); } - getLog().error( buff.toString() ); - throw new MojoFailureException( buff.toString() - + "\nPlease make sure you define the required toolchains in your ~/.m2/toolchains.xml file." ); } - } - else - { - //can that happen? + + getLog().error( buff.toString() ); + + throw new MojoFailureException( buff.toString() + + "\nPlease make sure you define the required toolchains in your ~/.m2/toolchains.xml file." ); } } private ToolchainPrivate[] getToolchains( String type ) throws MojoExecutionException, MisconfiguredToolchainException { - Class managerClass = toolchainManager.getClass(); + Class<?> managerClass = toolchainManagerPrivate.getClass(); try { @@ -151,14 +159,14 @@ public class ToolchainMojo Method newMethod = managerClass.getMethod( "getToolchainsForType", new Class[] { String.class, MavenSession.class } ); - return (ToolchainPrivate[]) newMethod.invoke( toolchainManager, type, session ); + return (ToolchainPrivate[]) newMethod.invoke( toolchainManagerPrivate, type, session ); } catch ( NoSuchMethodException e ) { // try 2.x style API Method oldMethod = managerClass.getMethod( "getToolchainsForType", new Class[] { String.class } ); - return (ToolchainPrivate[]) oldMethod.invoke( toolchainManager, type ); + return (ToolchainPrivate[]) oldMethod.invoke( toolchainManagerPrivate, type ); } } catch ( NoSuchMethodException e ) Modified: maven/plugins/trunk/maven-toolchains-plugin/src/main/java/org/apache/maven/plugin/toolchain/Toolchains.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-toolchains-plugin/src/main/java/org/apache/maven/plugin/toolchain/Toolchains.java?rev=1635871&r1=1635870&r2=1635871&view=diff ============================================================================== --- maven/plugins/trunk/maven-toolchains-plugin/src/main/java/org/apache/maven/plugin/toolchain/Toolchains.java (original) +++ maven/plugins/trunk/maven-toolchains-plugin/src/main/java/org/apache/maven/plugin/toolchain/Toolchains.java Fri Oct 31 22:03:58 2014 @@ -24,22 +24,26 @@ import java.util.Map; import java.util.Set; /** + * Type for plugins's <code>toolchain</code> attribute. * * @author mkleint */ public final class Toolchains { + Map<String, Map<String, String>> toolchains; - /** <String type, Map<String param, String value>> */ - Map toolchains; + public Map<String, Map<String, String>> getToolchains() + { + return Collections.unmodifiableMap( toolchains ); + } - public Set getToolchainsTypes() + public Set<String> getToolchainsTypes() { return Collections.unmodifiableSet( toolchains.keySet() ); } - public Map getParams( String type ) + public Map<String, String> getParams( String type ) { - return Collections.unmodifiableMap( (Map) toolchains.get( type ) ); + return Collections.unmodifiableMap( toolchains.get( type ) ); } } \ No newline at end of file Modified: maven/plugins/trunk/maven-toolchains-plugin/src/site/apt/toolchains/jdk.apt.vm URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-toolchains-plugin/src/site/apt/toolchains/jdk.apt.vm?rev=1635871&r1=1635870&r2=1635871&view=diff ============================================================================== --- maven/plugins/trunk/maven-toolchains-plugin/src/site/apt/toolchains/jdk.apt.vm (original) +++ maven/plugins/trunk/maven-toolchains-plugin/src/site/apt/toolchains/jdk.apt.vm Fri Oct 31 22:03:58 2014 @@ -83,6 +83,13 @@ Sample Plugin Configuration <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-toolchains-plugin</artifactId> <version>${project.version}</version> + <executions> + <execution> + <goals> + <goal>toolchain</goal> + </goals> + </execution> + </executions> <configuration> <toolchains> <jdk>