import org.apache.commons.logging.LogFactory;\r
import org.apache.tools.ant.types.DataType;\r
\r
+import org.argeo.slc.ant.SlcAntException;\r
import org.argeo.slc.ant.SlcProjectHelper;\r
import org.argeo.slc.core.SlcException;\r
\r
public Object getBeanInstance() {\r
if (beanInstance == null) {\r
beanInstance = getContext().getBean(bean);\r
-\r
- BeanWrapper wrapper = new BeanWrapperImpl(beanInstance);\r
- for (OverrideArg override : overrides) {\r
- LogFactory.getLog(getClass()).debug("Prop "+override.getName());\r
- wrapper.setPropertyValue(override.getName(), override\r
- .getObject());\r
- }\r
+ \r
+ setOverridenProperties(beanInstance);\r
\r
if (beanInstance instanceof InitializingBean) {\r
try {\r
}\r
return beanInstance;\r
}\r
+ \r
+ protected void setOverridenProperties(Object obj){\r
+ BeanWrapper wrapper = new BeanWrapperImpl(obj);\r
+ for (OverrideArg override : overrides) {\r
+ if (override.getName() == null) {\r
+ throw new SlcAntException(\r
+ "The name of the property to override has to be set.");\r
+ }\r
+\r
+// LogFactory.getLog(getClass()).debug(\r
+// "Prop " + override.getName());\r
+ wrapper.setPropertyValue(override.getName(), override\r
+ .getObject());\r
+ }\r
+ \r
+ }\r
\r
/** Creates an override subtag. */\r
public OverrideArg createOverride() {\r
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
+++ /dev/null
-package org.argeo.slc.ant.test;\r
-\r
-import java.util.Collection;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.TreeMap;\r
-import java.util.Vector;\r
-\r
-import org.apache.tools.ant.types.DataType;\r
-\r
-import org.argeo.slc.ant.spring.MapArg;\r
-import org.argeo.slc.core.SlcException;\r
-import org.argeo.slc.core.test.context.ContextAware;\r
-import org.argeo.slc.core.test.context.ParentContextAware;\r
-\r
-public class ParentContextArg extends DataType implements ParentContextAware {\r
- private MapArg values = null;\r
- private MapArg expectedValues = null;\r
-\r
- private List<ContextAware> children = new Vector<ContextAware>();\r
-\r
- public MapArg createValues() {\r
- values = new MapArg();\r
- return values;\r
- }\r
-\r
- public MapArg createExpectedValues() {\r
- expectedValues = new MapArg();\r
- return expectedValues;\r
- }\r
-\r
- public void addChildContext(ContextAware contextAware) {\r
- children.add(contextAware);\r
- }\r
-\r
- public Collection<ContextAware> getChildContexts() {\r
- return children;\r
- }\r
-\r
- public String getContextAnyFlag() {\r
- return DEFAULT_ANY_FLAG;\r
- }\r
-\r
- public String getContextSkipFlag() {\r
- return DEFAULT_SKIP_FLAG;\r
- }\r
-\r
- public Map<String, Object> getExpectedValues() {\r
- if (expectedValues == null)\r
- expectedValues = new MapArg();\r
- return expectedValues.getMap();\r
- }\r
-\r
- public Map<String, Object> getValues() {\r
- if (values == null)\r
- values = new MapArg();\r
- return values.getMap();\r
- }\r
-\r
- public void setValues(Map<String, Object> values) {\r
- throw new SlcException("Cannot override values map.");\r
- }\r
-\r
-}\r
--- /dev/null
+package org.argeo.slc.ant.test;\r
+\r
+import java.util.Collection;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.Vector;\r
+\r
+import org.apache.tools.ant.types.DataType;\r
+\r
+import org.argeo.slc.ant.spring.MapArg;\r
+import org.argeo.slc.core.SlcException;\r
+import org.argeo.slc.core.test.context.ContextAware;\r
+import org.argeo.slc.core.test.context.ParentContextAware;\r
+\r
+public class ParentContextType extends DataType implements ParentContextAware {\r
+ private MapArg values = null;\r
+ private MapArg expectedValues = null;\r
+\r
+ private List<ContextAware> children = new Vector<ContextAware>();\r
+\r
+ public MapArg createValues() {\r
+ values = new MapArg();\r
+ return values;\r
+ }\r
+\r
+ public MapArg createExpectedValues() {\r
+ expectedValues = new MapArg();\r
+ return expectedValues;\r
+ }\r
+\r
+ public void addChildContext(ContextAware contextAware) {\r
+ children.add(contextAware);\r
+ }\r
+\r
+ public Collection<ContextAware> getChildContexts() {\r
+ return children;\r
+ }\r
+\r
+ public String getContextAnyFlag() {\r
+ return DEFAULT_ANY_FLAG;\r
+ }\r
+\r
+ public String getContextSkipFlag() {\r
+ return DEFAULT_SKIP_FLAG;\r
+ }\r
+\r
+ public Map<String, Object> getExpectedValues() {\r
+ if (expectedValues == null)\r
+ expectedValues = new MapArg();\r
+ return expectedValues.getMap();\r
+ }\r
+\r
+ public Map<String, Object> getValues() {\r
+ if (values == null)\r
+ values = new MapArg();\r
+ return values.getMap();\r
+ }\r
+\r
+ public void setValues(Map<String, Object> values) {\r
+ throw new SlcException("Cannot override values map.");\r
+ }\r
+\r
+ public void setUpdateValues(Map<String, Object> overrideValues) {\r
+ getValues().putAll(overrideValues);\r
+ }\r
+\r
+ public void setUpdateExpectedValues(\r
+ Map<String, Object> overrideExpectedValues) {\r
+ getExpectedValues().putAll(overrideExpectedValues);\r
+ }\r
+}\r
--- /dev/null
+package org.argeo.slc.unit.test.tree;\r
+\r
+import junit.framework.TestCase;\r
+\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.argeo.slc.core.test.SimpleResultPart;\r
+import org.argeo.slc.core.test.tree.PartSubList;\r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
+\r
+/** Utilities for unit tests. */\r
+public class UnitTestTreeUtil {\r
+ /** Assert one part of a tree test result. */\r
+ public static void assertPart(TreeTestResult testResult, String pathStr,\r
+ int index, Integer status, String message) {\r
+ TreeSPath path = TreeSPath.parseToCreatePath(pathStr);\r
+ PartSubList list = testResult.getResultParts().get(path);\r
+ SimpleResultPart part = (SimpleResultPart) list.getParts().get(index);\r
+ TestCase.assertEquals(status, part.getStatus());\r
+ TestCase.assertEquals(message, part.getMessage());\r
+ }\r
+\r
+ /** Makes sure this is a singleton */\r
+ private UnitTestTreeUtil() {\r
+\r
+ }\r
+}\r
# Types\r
-slc.context=org.argeo.slc.ant.test.ParentContextArg\r
+slc.context=org.argeo.slc.ant.test.ParentContextType\r