1 package org.apache.maven.plugin.toolchain;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.HashMap;
23 import java.util.Map;
24
25 import org.codehaus.plexus.component.configurator.ComponentConfigurationException;
26 import org.codehaus.plexus.component.configurator.ConfigurationListener;
27 import org.codehaus.plexus.component.configurator.converters.AbstractConfigurationConverter;
28 import org.codehaus.plexus.component.configurator.converters.ConfigurationConverter;
29 import org.codehaus.plexus.component.configurator.converters.lookup.ConverterLookup;
30 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
31 import org.codehaus.plexus.configuration.PlexusConfiguration;
32 import org.codehaus.plexus.configuration.PlexusConfigurationException;
33
34
35
36
37
38
39
40 public class ToolchainConverter
41 extends AbstractConfigurationConverter
42 {
43
44 public static final String ROLE = ConfigurationConverter.class.getName();
45
46
47
48
49 public boolean canConvert( Class type )
50 {
51 return ToolchainsRequirement.class.isAssignableFrom( type );
52 }
53
54
55
56
57 public Object fromConfiguration( ConverterLookup converterLookup,
58 PlexusConfiguration configuration,
59 Class type, Class baseType,
60 ClassLoader classLoader,
61 ExpressionEvaluator expressionEvaluator,
62 ConfigurationListener listener )
63 throws ComponentConfigurationException
64 {
65 ToolchainsRequirement retValue = new ToolchainsRequirement();
66
67 processConfiguration( retValue, configuration, expressionEvaluator );
68
69 return retValue;
70 }
71
72 private void processConfiguration( ToolchainsRequirement requirement,
73 PlexusConfiguration configuration,
74 ExpressionEvaluator expressionEvaluator )
75 throws ComponentConfigurationException
76 {
77 Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>();
78
79 PlexusConfiguration[] tools = configuration.getChildren();
80 for ( PlexusConfiguration tool : tools )
81 {
82 String type = tool.getName();
83 PlexusConfiguration[] params = tool.getChildren();
84
85 Map<String, String> parameters = new HashMap<String, String>();
86 for ( PlexusConfiguration param : params )
87 {
88 try
89 {
90 parameters.put( param.getName(), param.getValue() );
91 }
92 catch ( PlexusConfigurationException ex )
93 {
94 throw new ComponentConfigurationException( ex );
95 }
96 }
97 map.put( type, parameters );
98 }
99
100 requirement.toolchains = map;
101 }
102 }