]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/AbstractSpringArg.java
Inhtroduce basedon context
[gpl/argeo-slc.git] / org.argeo.slc.core / src / main / java / org / argeo / slc / ant / spring / AbstractSpringArg.java
index 6c64235986740357cfff57a52f818b13fabe5ea2..6096f1f63ac215f8933fc9bd64f921db0c46cfec 100644 (file)
@@ -5,11 +5,15 @@ import java.util.Vector;
 \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
@@ -37,15 +41,35 @@ public abstract class AbstractSpringArg extends DataType {
        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