X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fant%2Fspring%2FMapArg.java;h=eb45276448b7ce9b49a897e592b1245deb3b2a23;hb=0ee30b3cfd07a1e96eeb21ee729b2c7825585b94;hp=3bab27f952fb71069279c919021cbcb95090a520;hpb=38033cb1dbfe8d9c3e8cb8beb8fa0e11299f7714;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/MapArg.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/MapArg.java index 3bab27f95..eb4527644 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/MapArg.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/MapArg.java @@ -5,6 +5,8 @@ import java.util.Map; import java.util.TreeMap; import java.util.Vector; +import org.apache.tools.ant.BuildException; + import org.argeo.slc.core.SlcException; public class MapArg { @@ -24,7 +26,7 @@ public class MapArg { if (map.containsKey(key)) { throw new SlcException("Key '" + key + "' already set."); } else { - map.put(key, arg.getValue()); + map.put(key, arg.getValueStr()); } } } @@ -33,7 +35,8 @@ public class MapArg { public static class EntryArg { private String key; - private Object value; + private Object valueStr; + private OverrideArg overrideArg; public String getKey() { return key; @@ -43,13 +46,31 @@ public class MapArg { this.key = key; } - public Object getValue() { - return value; + public Object getValueStr() { + if (overrideArg != null) { + return overrideArg.getObject(); + } else if (valueStr != null) { + return valueStr; + } else { + throw new BuildException("Value not set."); + } } public void setValue(String value) { - this.value = value; + check(); + this.valueStr = value; + } + + public OverrideArg createOverride() { + check(); + overrideArg = new OverrideArg(); + return overrideArg; } + private void check() { + if (valueStr != null || overrideArg != null) { + throw new BuildException("Value already set"); + } + } } }