]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc/src/main/java/org/argeo/slc/ant/AbstractSpringArg.java
Introduce override
[gpl/argeo-slc.git] / org.argeo.slc / src / main / java / org / argeo / slc / ant / AbstractSpringArg.java
index fac2945925ca66be4bb8687b0e6f7abf11b6274f..2e2f3dfefa03d4fab28bd01eb9d19a417ec1362b 100644 (file)
@@ -1,8 +1,16 @@
 package org.argeo.slc.ant;\r
 \r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import org.springframework.beans.BeanWrapper;\r
+import org.springframework.beans.BeanWrapperImpl;\r
 import org.springframework.context.ApplicationContext;\r
 \r
+import org.apache.tools.ant.BuildException;\r
+\r
 public abstract class AbstractSpringArg {\r
+       private List<OverrideArg> overrides = new Vector<OverrideArg>();\r
 \r
        private String bean;\r
        private ApplicationContext context;\r
@@ -14,14 +22,26 @@ public abstract class AbstractSpringArg {
        public void setBean(String bean) {\r
                this.bean = bean;\r
        }\r
-       \r
-       protected Object getBeanInstance(){\r
-               return context.getBean(bean);\r
+\r
+       protected Object getBeanInstance() {\r
+               Object obj = context.getBean(bean);\r
+\r
+               BeanWrapper wrapper = new BeanWrapperImpl(obj);\r
+               for (OverrideArg override : overrides) {\r
+                       wrapper.setPropertyValue(override.getName(), override.getObject());\r
+               }\r
+\r
+               return obj;\r
        }\r
 \r
        public void setContext(ApplicationContext context) {\r
                this.context = context;\r
        }\r
-       \r
-       \r
+\r
+       public OverrideArg createOverride() {\r
+               OverrideArg propertyArg = new OverrideArg();\r
+               propertyArg.setContext(context);\r
+               overrides.add(propertyArg);\r
+               return propertyArg;\r
+       }\r
 }\r