]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/OverrideArg.java
- Documentation
[gpl/argeo-slc.git] / org.argeo.slc / src / main / java / org / argeo / slc / ant / spring / OverrideArg.java
index 80eb4731b388390a90f67222d034d2f63cb55197..14464ff20e00af16bc0646ed51ae5a575cbe4c5e 100644 (file)
@@ -1,13 +1,17 @@
 package org.argeo.slc.ant.spring;\r
 \r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
 import org.apache.tools.ant.BuildException;\r
 \r
 /** Ant type allowing to override bean properties. */\r
 public class OverrideArg extends AbstractSpringArg {\r
        private String name;\r
        private Object value;\r
+       private OverrideList overrideList;\r
 \r
-       /** The nbame of the property to override. */\r
+       /** The name of the property to override. */\r
        public String getName() {\r
                return name;\r
        }\r
@@ -18,22 +22,32 @@ public class OverrideArg extends AbstractSpringArg {
 \r
        /** Both value and bean cannot be set. */\r
        public void setValue(String value) {\r
-               if (getBean() != null) {\r
-                       throw new BuildException(\r
-                                       "Cannot set both 'bean' and 'value' attributes.");\r
+               if (getBean() != null || overrideList != null) {\r
+                       throw new BuildException("Value already set.");\r
                }\r
                this.value = value;\r
        }\r
 \r
        @Override\r
        public void setBean(String bean) {\r
-               if (value != null) {\r
-                       throw new BuildException(\r
-                                       "Cannot set both 'bean' and 'value' attributes.");\r
+               if (value != null || overrideList != null) {\r
+                       throw new BuildException("Value already set.");\r
                }\r
                super.setBean(bean);\r
        }\r
 \r
+       public OverrideList createList() {\r
+               if (value != null || getBean() != null) {\r
+                       throw new BuildException("Value already set.");\r
+               }\r
+               if (overrideList == null) {\r
+                       overrideList = new OverrideList();\r
+               } else {\r
+                       throw new BuildException("Only one list can be declared");\r
+               }\r
+               return overrideList;\r
+       }\r
+\r
        /**\r
         * The related object: the value if a value had been set or an instance of\r
         * the bean if not.\r
@@ -43,9 +57,29 @@ public class OverrideArg extends AbstractSpringArg {
                        return value;\r
                } else if (getBean() != null) {\r
                        return getBeanInstance();\r
+               } else if (overrideList != null) {\r
+                       return overrideList.getAsObjectList();\r
                } else {\r
                        throw new BuildException("Value or bean not set.");\r
                }\r
        }\r
 \r
+       /** List of overrides */\r
+       protected class OverrideList {\r
+               private List<OverrideArg> list = new Vector<OverrideArg>();\r
+\r
+               public OverrideArg createOverride() {\r
+                       OverrideArg overrideArg = new OverrideArg();\r
+                       list.add(overrideArg);\r
+                       return overrideArg;\r
+               }\r
+\r
+               public List<Object> getAsObjectList() {\r
+                       List<Object> objectList = new Vector<Object>();\r
+                       for (OverrideArg arg : list) {\r
+                               objectList.add(arg.getObject());\r
+                       }\r
+                       return objectList;\r
+               }\r
+       }\r
 }\r