]> git.argeo.org Git - gpl/argeo-slc.git/blob - AbstractSpringArg.java
5cf3e0831e1526c370eac75decca5639c9fd6c0e
[gpl/argeo-slc.git] / AbstractSpringArg.java
1 package org.argeo.slc.ant.spring;
2
3 import java.util.List;
4 import java.util.Vector;
5
6 import org.springframework.beans.BeanWrapper;
7 import org.springframework.beans.BeanWrapperImpl;
8 import org.springframework.context.ApplicationContext;
9
10 import org.apache.tools.ant.types.DataType;
11
12 import org.argeo.slc.ant.SlcProjectHelper;
13
14 /** Abstract Ant type wrapping a Spring bean. */
15 public abstract class AbstractSpringArg extends DataType {
16 private List<OverrideArg> overrides = new Vector<OverrideArg>();
17
18 private String bean;
19
20 /** The <u>name</u> of the underlying bean, as set throught the attribute. */
21 public String getBean() {
22 return bean;
23 }
24
25 /** Setter for the bean name. */
26 public void setBean(String bean) {
27 this.bean = bean;
28 }
29
30 /**
31 * Retrieve the instance of the bean. <b>If teh underlying Spring bean is a
32 * prototype, it will instanciated each time.</b>
33 */
34 protected Object getBeanInstance() {
35 Object obj = getContext().getBean(bean);
36
37 BeanWrapper wrapper = new BeanWrapperImpl(obj);
38 for (OverrideArg override : overrides) {
39 wrapper.setPropertyValue(override.getName(), override.getObject());
40 }
41
42 return obj;
43 }
44
45 /** Creates an override subtag.*/
46 public OverrideArg createOverride() {
47 OverrideArg propertyArg = new OverrideArg();
48 overrides.add(propertyArg);
49 return propertyArg;
50 }
51
52 /** The related Spring application context.*/
53 protected ApplicationContext getContext() {
54 return (ApplicationContext) getProject().getReference(
55 SlcProjectHelper.REF_ROOT_CONTEXT);
56 }
57
58 }