\r
import org.springframework.beans.BeanWrapper;\r
import org.springframework.beans.BeanWrapperImpl;\r
+import org.springframework.beans.factory.InitializingBean;\r
import org.springframework.context.ApplicationContext;\r
\r
+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
/** Abstract Ant type wrapping a Spring bean. */\r
public abstract class AbstractSpringArg extends DataType {\r
public Object getBeanInstance() {\r
if (beanInstance == null) {\r
beanInstance = getContext().getBean(bean);\r
+ \r
+ setOverridenProperties(beanInstance);\r
\r
- BeanWrapper wrapper = new BeanWrapperImpl(beanInstance);\r
- for (OverrideArg override : overrides) {\r
- wrapper.setPropertyValue(override.getName(), override\r
- .getObject());\r
+ if (beanInstance instanceof InitializingBean) {\r
+ try {\r
+ ((InitializingBean) beanInstance).afterPropertiesSet();\r
+ } catch (Exception e) {\r
+ throw new SlcException("Could not initialize bean", e);\r
+ }\r
}\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