X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.slc%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fant%2Fspring%2FAbstractSpringArg.java;fp=org.argeo.slc%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fant%2Fspring%2FAbstractSpringArg.java;h=4061f377ff21b295aa6357070d0e2f21458f0c7c;hb=2d2e8673ee9a9c610dcd831833cb67c3a508c372;hp=0000000000000000000000000000000000000000;hpb=4d4cf9b0c21df6d831865bdf0f927d4ec16c5454;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/AbstractSpringArg.java b/org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/AbstractSpringArg.java new file mode 100644 index 000000000..4061f377f --- /dev/null +++ b/org.argeo.slc/src/main/java/org/argeo/slc/ant/spring/AbstractSpringArg.java @@ -0,0 +1,51 @@ +package org.argeo.slc.ant.spring; + +import java.util.List; +import java.util.Vector; + +import org.springframework.beans.BeanWrapper; +import org.springframework.beans.BeanWrapperImpl; +import org.springframework.context.ApplicationContext; + +import org.apache.tools.ant.Location; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.types.DataType; + +import org.argeo.slc.ant.SlcProjectHelper; + +public abstract class AbstractSpringArg extends DataType { + private List overrides = new Vector(); + + private String bean; + + public String getBean() { + return bean; + } + + public void setBean(String bean) { + this.bean = bean; + } + + protected Object getBeanInstance() { + Object obj = getContext().getBean(bean); + + BeanWrapper wrapper = new BeanWrapperImpl(obj); + for (OverrideArg override : overrides) { + wrapper.setPropertyValue(override.getName(), override.getObject()); + } + + return obj; + } + + public OverrideArg createOverride() { + OverrideArg propertyArg = new OverrideArg(); + overrides.add(propertyArg); + return propertyArg; + } + + protected ApplicationContext getContext() { + return (ApplicationContext) getProject().getReference( + SlcProjectHelper.REF_ROOT_CONTEXT); + } + +}