X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fant%2Fspring%2FOverrideArg.java;h=5c0dc3e690e37f0b5ece4f1566836af79565f6c1;hb=f366b06720d300b3e20f996902d0c2dab55a3473;hp=00b2676601f7bc6fe924fc7b9ef4647f77adcc04;hpb=38033cb1dbfe8d9c3e8cb8beb8fa0e11299f7714;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/OverrideArg.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/OverrideArg.java index 00b267660..5c0dc3e69 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/OverrideArg.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/OverrideArg.java @@ -12,6 +12,7 @@ public class OverrideArg extends AbstractSpringArg { private String name; private Object value; private OverrideList overrideList; + private MapArg overrideMap; private String antref; /** The name of the property to override. */ @@ -26,41 +27,35 @@ public class OverrideArg extends AbstractSpringArg { /** Sets a reference to an ant data type. */ public void setAntref(String antref) { - if (value != null || overrideList != null || getBean() != null) { - throw new BuildException("Value already set."); - } + checkValueAlreadySet(); this.antref = antref; } /** Both value and bean cannot be set. */ public void setValue(String value) { - if (getBean() != null || overrideList != null || antref != null) { - throw new BuildException("Value already set."); - } + checkValueAlreadySet(); this.value = value; } @Override public void setBean(String bean) { - if (value != null || overrideList != null || antref != null) { - throw new BuildException("Value already set."); - } + checkValueAlreadySet(); super.setBean(bean); } /** Creates override list sub tag. */ public OverrideList createList() { - if (value != null || getBean() != null) { - throw new BuildException("Value already set."); - } - if (overrideList == null) { - overrideList = new OverrideList(); - } else { - throw new BuildException("Only one list can be declared"); - } + checkValueAlreadySet(); + overrideList = new OverrideList(); return overrideList; } + public MapArg createMap() { + checkValueAlreadySet(); + overrideMap = new MapArg(); + return overrideMap; + } + /** * The related object: the value if a value had been set or an instance of * the bean if not. @@ -72,18 +67,28 @@ public class OverrideArg extends AbstractSpringArg { return getBeanInstance(); } else if (overrideList != null) { return overrideList.getAsObjectList(); + } else if (overrideMap != null) { + return overrideMap.getMap(); } else if (antref != null) { Object obj = getProject().getReference(antref); if (obj == null) { throw new SlcException("No object found for reference " + antref); } + setOverridenProperties(obj); return obj; } else { throw new BuildException("Value or bean not set."); } } + private void checkValueAlreadySet() { + if (value != null || overrideList != null || antref != null + || getBean() != null || overrideMap != null) { + throw new BuildException("Value already set."); + } + } + /** List of overrides */ protected class OverrideList { private List list = new Vector();