]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/MapArg.java
Inhtroduce basedon context
[gpl/argeo-slc.git] / org.argeo.slc.core / src / main / java / org / argeo / slc / ant / spring / MapArg.java
index 3bab27f952fb71069279c919021cbcb95090a520..eb45276448b7ce9b49a897e592b1245deb3b2a23 100644 (file)
@@ -5,6 +5,8 @@ import java.util.Map;
 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
@@ -24,7 +26,7 @@ public class MapArg {
                                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
@@ -33,7 +35,8 @@ public class MapArg {
 \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
@@ -43,13 +46,31 @@ public class MapArg {
                        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