1 package org.codehaus.plexus.component.configurator.converters.composite;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import java.util.Map;
28 import java.util.Properties;
29 import java.util.TreeMap;
30
31 import org.codehaus.plexus.component.configurator.ComponentConfigurationException;
32 import org.codehaus.plexus.component.configurator.ConfigurationListener;
33 import org.codehaus.plexus.component.configurator.converters.AbstractConfigurationConverter;
34 import org.codehaus.plexus.component.configurator.converters.lookup.ConverterLookup;
35 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
36 import org.codehaus.plexus.configuration.PlexusConfiguration;
37
38
39
40
41
42
43 public class MapConverter extends AbstractConfigurationConverter {
44 public boolean canConvert(Class type) {
45 return Map.class.isAssignableFrom(type) && !Properties.class.isAssignableFrom(type);
46 }
47
48 public Object fromConfiguration(
49 ConverterLookup converterLookup,
50 PlexusConfiguration configuration,
51 Class type,
52 Class baseType,
53 ClassLoader classLoader,
54 ExpressionEvaluator expressionEvaluator,
55 ConfigurationListener listener)
56 throws ComponentConfigurationException {
57 Object retValue;
58
59 String expression = configuration.getValue(null);
60
61 if (expression == null) {
62 expression = configuration.getAttribute("default-value", null);
63 }
64
65 if (expression == null) {
66 Map map = new TreeMap();
67
68 PlexusConfiguration[] children = configuration.getChildren();
69
70 for (PlexusConfiguration child : children) {
71 String name = child.getName();
72
73 map.put(name, fromExpression(child, expressionEvaluator));
74 }
75 retValue = map;
76 } else {
77 retValue = fromExpression(configuration, expressionEvaluator);
78 }
79 return retValue;
80 }
81 }