1 package org
.argeo
.slc
.ant
.spring
;
4 import java
.util
.Vector
;
6 import org
.apache
.tools
.ant
.BuildException
;
8 import org
.argeo
.slc
.core
.SlcException
;
10 /** Ant type allowing to override bean properties. */
11 public class OverrideArg
extends AbstractSpringArg
{
14 private OverrideList overrideList
;
15 private MapArg overrideMap
;
16 private String antref
;
18 /** The name of the property to override. */
19 public String
getName() {
24 public void setName(String name
) {
28 /** Sets a reference to an ant data type. */
29 public void setAntref(String antref
) {
30 checkValueAlreadySet();
34 /** Both value and bean cannot be set. */
35 public void setValue(String value
) {
36 checkValueAlreadySet();
41 public void setBean(String bean
) {
42 checkValueAlreadySet();
46 /** Creates override list sub tag. */
47 public OverrideList
createList() {
48 checkValueAlreadySet();
49 overrideList
= new OverrideList();
53 public MapArg
createMap() {
54 checkValueAlreadySet();
55 overrideMap
= new MapArg();
60 * The related object: the value if a value had been set or an instance of
63 public Object
getObject() {
66 } else if (getBean() != null) {
67 return getBeanInstance();
68 } else if (overrideList
!= null) {
69 return overrideList
.getAsObjectList();
70 } else if (overrideMap
!= null) {
71 return overrideMap
.getMap();
72 } else if (antref
!= null) {
73 Object obj
= getProject().getReference(antref
);
75 throw new SlcException("No object found for reference "
78 setOverridenProperties(obj
);
81 throw new BuildException("Value or bean not set.");
85 private void checkValueAlreadySet() {
86 if (value
!= null || overrideList
!= null || antref
!= null
87 || getBean() != null || overrideMap
!= null) {
88 throw new BuildException("Value already set.");
92 /** List of overrides */
93 protected class OverrideList
{
94 private List
<OverrideArg
> list
= new Vector
<OverrideArg
>();
96 /** Creates override sub tag. */
97 public OverrideArg
createOverride() {
98 OverrideArg overrideArg
= new OverrideArg();
99 list
.add(overrideArg
);
103 /** Gets as list of objects. */
104 public List
<Object
> getAsObjectList() {
105 List
<Object
> objectList
= new Vector
<Object
>();
106 for (OverrideArg arg
: list
) {
107 objectList
.add(arg
.getObject());