updated code with Java 5 typed collections
git-svn-id: https://svn.apache.org/repos/asf/maven/plugins/trunk@1635871 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/plugin/toolchain/ToolchainConverter.java b/src/main/java/org/apache/maven/plugin/toolchain/ToolchainConverter.java
index 7af1c40..23dcc4d 100644
--- a/src/main/java/org/apache/maven/plugin/toolchain/ToolchainConverter.java
+++ b/src/main/java/org/apache/maven/plugin/toolchain/ToolchainConverter.java
@@ -62,6 +62,7 @@
throws ComponentConfigurationException
{
Toolchains retValue = new Toolchains();
+
processConfiguration( retValue, configuration, expressionEvaluator );
return retValue;
@@ -72,20 +73,20 @@
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 @@
}
map.put( type, parameters );
}
+
chain.toolchains = map;
}
}
\ No newline at end of file
diff --git a/src/main/java/org/apache/maven/plugin/toolchain/ToolchainMojo.java b/src/main/java/org/apache/maven/plugin/toolchain/ToolchainMojo.java
index 6f1f599..d56ec59 100644
--- a/src/main/java/org/apache/maven/plugin/toolchain/ToolchainMojo.java
+++ b/src/main/java/org/apache/maven/plugin/toolchain/ToolchainMojo.java
@@ -34,7 +34,6 @@
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 @@
/**
*/
@Component
- private ToolchainManagerPrivate toolchainManager;
+ private ToolchainManagerPrivate toolchainManagerPrivate;
/**
* The current build session instance. This is used for
@@ -70,78 +69,87 @@
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 )
- {
- String type = (String) nonMatchedType;
- buff.append( '\n' );
- buff.append( type );
- Map params = toolchains.getParams( type );
- if ( params.size() > 0 )
- {
- 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( ']' );
- }
- }
- getLog().error( buff.toString() );
- throw new MojoFailureException( buff.toString()
- + "\nPlease make sure you define the required toolchains in your ~/.m2/toolchains.xml file." );
+ throw new MojoExecutionException( "Misconfigured toolchains.", ex );
}
}
- else
+
+ if ( !nonMatchedTypes.isEmpty() )
{
- //can that happen?
+ // 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 )
+ {
+ buff.append( " [" );
+
+ for ( Map.Entry<String, String> param : params.entrySet() )
+ {
+ 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." );
}
}
private ToolchainPrivate[] getToolchains( String type )
throws MojoExecutionException, MisconfiguredToolchainException
{
- Class managerClass = toolchainManager.getClass();
+ Class<?> managerClass = toolchainManagerPrivate.getClass();
try
{
@@ -151,14 +159,14 @@
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 )
diff --git a/src/main/java/org/apache/maven/plugin/toolchain/Toolchains.java b/src/main/java/org/apache/maven/plugin/toolchain/Toolchains.java
index e7a1e70..3746fc9 100644
--- a/src/main/java/org/apache/maven/plugin/toolchain/Toolchains.java
+++ b/src/main/java/org/apache/maven/plugin/toolchain/Toolchains.java
@@ -24,22 +24,26 @@
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
diff --git a/src/site/apt/toolchains/jdk.apt.vm b/src/site/apt/toolchains/jdk.apt.vm
index 717bf51..ce460db 100644
--- a/src/site/apt/toolchains/jdk.apt.vm
+++ b/src/site/apt/toolchains/jdk.apt.vm
@@ -83,6 +83,13 @@
<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>