]>
git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/AbstractSpringArg.java
6c64235986740357cfff57a52f818b13fabe5ea2
1 package org
.argeo
.slc
.ant
.spring
;
4 import java
.util
.Vector
;
6 import org
.springframework
.beans
.BeanWrapper
;
7 import org
.springframework
.beans
.BeanWrapperImpl
;
8 import org
.springframework
.context
.ApplicationContext
;
10 import org
.apache
.tools
.ant
.types
.DataType
;
12 import org
.argeo
.slc
.ant
.SlcProjectHelper
;
14 /** Abstract Ant type wrapping a Spring bean. */
15 public abstract class AbstractSpringArg
extends DataType
{
16 private List
<OverrideArg
> overrides
= new Vector
<OverrideArg
>();
20 // cache bean instance to avoid reading it twice if it is a prototype
21 private Object beanInstance
= null;
23 /** The <u>name</u> of the underlying bean, as set throught the attribute. */
24 public String
getBean() {
28 /** Setter for the bean name. */
29 public void setBean(String bean
) {
34 * Retrieve the instance of the bean, and sets the overriden properties.
35 * <b>The value is cached.</b>
37 public Object
getBeanInstance() {
38 if (beanInstance
== null) {
39 beanInstance
= getContext().getBean(bean
);
41 BeanWrapper wrapper
= new BeanWrapperImpl(beanInstance
);
42 for (OverrideArg override
: overrides
) {
43 wrapper
.setPropertyValue(override
.getName(), override
50 /** Creates an override subtag. */
51 public OverrideArg
createOverride() {
52 OverrideArg propertyArg
= new OverrideArg();
53 overrides
.add(propertyArg
);
57 /** The related Spring application context. */
58 protected ApplicationContext
getContext() {
59 return (ApplicationContext
) getProject().getReference(
60 SlcProjectHelper
.REF_ROOT_CONTEXT
);