import java.util.TreeMap;\r
import java.util.Vector;\r
\r
+import org.apache.tools.ant.BuildException;\r
+\r
import org.argeo.slc.core.SlcException;\r
\r
public class MapArg {\r
if (map.containsKey(key)) {\r
throw new SlcException("Key '" + key + "' already set.");\r
} else {\r
- map.put(key, arg.getValue());\r
+ map.put(key, arg.getValueStr());\r
}\r
}\r
}\r
\r
public static class EntryArg {\r
private String key;\r
- private Object value;\r
+ private Object valueStr;\r
+ private OverrideArg overrideArg;\r
\r
public String getKey() {\r
return key;\r
this.key = key;\r
}\r
\r
- public Object getValue() {\r
- return value;\r
+ public Object getValueStr() {\r
+ if (overrideArg != null) {\r
+ return overrideArg.getObject();\r
+ } else if (valueStr != null) {\r
+ return valueStr;\r
+ } else {\r
+ throw new BuildException("Value not set.");\r
+ }\r
}\r
\r
public void setValue(String value) {\r
- this.value = value;\r
+ check();\r
+ this.valueStr = value;\r
+ }\r
+\r
+ public OverrideArg createOverride() {\r
+ check();\r
+ overrideArg = new OverrideArg();\r
+ return overrideArg;\r
}\r
\r
+ private void check() {\r
+ if (valueStr != null || overrideArg != null) {\r
+ throw new BuildException("Value already set");\r
+ }\r
+ }\r
}\r
}\r