X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fant%2Fspring%2FOverrideArg.java;h=14464ff20e00af16bc0646ed51ae5a575cbe4c5e;hb=c228c125b7f40d1716911dd66971c720dc9478b5;hp=80eb4731b388390a90f67222d034d2f63cb55197;hpb=6e6998e19852f8209f955c0d2c773feca161d4d0;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/OverrideArg.java b/org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/OverrideArg.java index 80eb4731b..14464ff20 100644 --- a/org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/OverrideArg.java +++ b/org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/OverrideArg.java @@ -1,13 +1,17 @@ package org.argeo.slc.ant.spring; +import java.util.List; +import java.util.Vector; + import org.apache.tools.ant.BuildException; /** Ant type allowing to override bean properties. */ public class OverrideArg extends AbstractSpringArg { private String name; private Object value; + private OverrideList overrideList; - /** The nbame of the property to override. */ + /** The name of the property to override. */ public String getName() { return name; } @@ -18,22 +22,32 @@ public class OverrideArg extends AbstractSpringArg { /** Both value and bean cannot be set. */ public void setValue(String value) { - if (getBean() != null) { - throw new BuildException( - "Cannot set both 'bean' and 'value' attributes."); + if (getBean() != null || overrideList != null) { + throw new BuildException("Value already set."); } this.value = value; } @Override public void setBean(String bean) { - if (value != null) { - throw new BuildException( - "Cannot set both 'bean' and 'value' attributes."); + if (value != null || overrideList != null) { + throw new BuildException("Value already set."); } super.setBean(bean); } + 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"); + } + return overrideList; + } + /** * The related object: the value if a value had been set or an instance of * the bean if not. @@ -43,9 +57,29 @@ public class OverrideArg extends AbstractSpringArg { return value; } else if (getBean() != null) { return getBeanInstance(); + } else if (overrideList != null) { + return overrideList.getAsObjectList(); } else { throw new BuildException("Value or bean not set."); } } + /** List of overrides */ + protected class OverrideList { + private List list = new Vector(); + + public OverrideArg createOverride() { + OverrideArg overrideArg = new OverrideArg(); + list.add(overrideArg); + return overrideArg; + } + + public List getAsObjectList() { + List objectList = new Vector(); + for (OverrideArg arg : list) { + objectList.add(arg.getObject()); + } + return objectList; + } + } }