private String name;\r
private Object value;\r
private OverrideList overrideList;\r
+ private MapArg overrideMap;\r
private String antref;\r
\r
/** The name of the property to override. */\r
\r
/** Sets a reference to an ant data type. */\r
public void setAntref(String antref) {\r
- if (value != null || overrideList != null || getBean() != null) {\r
- throw new BuildException("Value already set.");\r
- }\r
+ checkValueAlreadySet();\r
this.antref = antref;\r
}\r
\r
/** Both value and bean cannot be set. */\r
public void setValue(String value) {\r
- if (getBean() != null || overrideList != null || antref != null) {\r
- throw new BuildException("Value already set.");\r
- }\r
+ checkValueAlreadySet();\r
this.value = value;\r
}\r
\r
@Override\r
public void setBean(String bean) {\r
- if (value != null || overrideList != null || antref != null) {\r
- throw new BuildException("Value already set.");\r
- }\r
+ checkValueAlreadySet();\r
super.setBean(bean);\r
}\r
\r
/** Creates override list sub tag. */\r
public OverrideList createList() {\r
- if (value != null || getBean() != null) {\r
- throw new BuildException("Value already set.");\r
- }\r
- if (overrideList == null) {\r
- overrideList = new OverrideList();\r
- } else {\r
- throw new BuildException("Only one list can be declared");\r
- }\r
+ checkValueAlreadySet();\r
+ overrideList = new OverrideList();\r
return overrideList;\r
}\r
\r
+ public MapArg createMap() {\r
+ checkValueAlreadySet();\r
+ overrideMap = new MapArg();\r
+ return overrideMap;\r
+ }\r
+\r
/**\r
* The related object: the value if a value had been set or an instance of\r
* the bean if not.\r
return getBeanInstance();\r
} else if (overrideList != null) {\r
return overrideList.getAsObjectList();\r
+ } else if (overrideMap != null) {\r
+ return overrideMap.getMap();\r
} else if (antref != null) {\r
Object obj = getProject().getReference(antref);\r
if (obj == null) {\r
throw new SlcException("No object found for reference "\r
+ antref);\r
}\r
+ setOverridenProperties(obj);\r
return obj;\r
} else {\r
throw new BuildException("Value or bean not set.");\r
}\r
}\r
\r
+ private void checkValueAlreadySet() {\r
+ if (value != null || overrideList != null || antref != null\r
+ || getBean() != null || overrideMap != null) {\r
+ throw new BuildException("Value already set.");\r
+ }\r
+ }\r
+\r
/** List of overrides */\r
protected class OverrideList {\r
private List<OverrideArg> list = new Vector<OverrideArg>();\r