--- /dev/null
+package org.argeo.slc.ant.spring;\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.Location;\r
+import org.apache.tools.ant.Project;\r
+import org.apache.tools.ant.types.DataType;\r
+\r
+import org.argeo.slc.ant.SlcProjectHelper;\r
+\r
+public abstract class AbstractSpringArg extends DataType {\r
+ private List<OverrideArg> overrides = new Vector<OverrideArg>();\r
+\r
+ private String bean;\r
+\r
+ public String getBean() {\r
+ return bean;\r
+ }\r
+\r
+ public void setBean(String bean) {\r
+ this.bean = bean;\r
+ }\r
+\r
+ protected Object getBeanInstance() {\r
+ Object obj = getContext().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 OverrideArg createOverride() {\r
+ OverrideArg propertyArg = new OverrideArg();\r
+ overrides.add(propertyArg);\r
+ return propertyArg;\r
+ }\r
+\r
+ protected ApplicationContext getContext() {\r
+ return (ApplicationContext) getProject().getReference(\r
+ SlcProjectHelper.REF_ROOT_CONTEXT);\r
+ }\r
+\r
+}\r