Improve spring arguments
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 4 Jun 2008 08:22:52 +0000 (08:22 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 4 Jun 2008 08:22:52 +0000 (08:22 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1183 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/AntRunner.java
org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/SlcAntConfig.java
org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java
org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/deploy/SlcDeployTask.java
org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/spring/AbstractSpringArg.java [deleted file]
org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/spring/OverrideArg.java
org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/spring/SpringArg.java [new file with mode: 0644]
org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java
org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/test/SlcTestTask.java

index da88eafa13e60c12d2634279043f0215c5a5f923..09de703d8104411096d56712f7e969020f84eae1 100644 (file)
@@ -3,15 +3,13 @@ package org.argeo.slc.ant;
 import java.io.File;\r
 import java.net.URL;\r
 import java.util.Arrays;\r
-import java.util.Collections;\r
 import java.util.Map;\r
 import java.util.Properties;\r
 import java.util.Vector;\r
 \r
-import org.springframework.context.ApplicationContext;\r
-\r
 import org.apache.tools.ant.Project;\r
 import org.apache.tools.ant.ProjectHelper;\r
+import org.springframework.context.ApplicationContext;\r
 \r
 public class AntRunner {\r
        private ApplicationContext context;\r
index 9b2824886aca8503e3cc6dba6e73186729691772..a68f210262fceda4464e36d5c8660c8c730f130a 100644 (file)
@@ -7,11 +7,11 @@ import java.util.Map;
 import java.util.Properties;\r
 import java.util.StringTokenizer;\r
 \r
-import org.springframework.util.Log4jConfigurer;\r
-\r
 import org.apache.commons.logging.Log;\r
 import org.apache.commons.logging.LogFactory;\r
 import org.apache.tools.ant.Project;\r
+import org.argeo.slc.core.test.WritableTestRun;\r
+import org.springframework.util.Log4jConfigurer;\r
 \r
 /**\r
  * <p>\r
index 001ead97bd28db91d77d5bbea186bcde54aa4675..51392cbddbd14c485aab5d902be62883eea3a332 100644 (file)
@@ -11,25 +11,19 @@ import java.util.Properties;
 import java.util.UUID;\r
 import java.util.Vector;\r
 \r
-import org.springframework.beans.factory.ListableBeanFactory;\r
-import org.springframework.context.ApplicationContext;\r
-import org.springframework.context.support.AbstractApplicationContext;\r
-import org.springframework.context.support.FileSystemXmlApplicationContext;\r
-\r
 import org.apache.commons.logging.Log;\r
 import org.apache.commons.logging.LogFactory;\r
-import org.apache.log4j.LogManager;\r
 import org.apache.tools.ant.BuildException;\r
-import org.apache.tools.ant.BuildListener;\r
 import org.apache.tools.ant.Project;\r
 import org.apache.tools.ant.helper.ProjectHelper2;\r
-\r
 import org.argeo.slc.core.process.SlcExecution;\r
-import org.argeo.slc.core.process.SlcExecutionNotifier;\r
 import org.argeo.slc.core.structure.DefaultSRegistry;\r
 import org.argeo.slc.core.structure.SimpleSElement;\r
 import org.argeo.slc.core.structure.StructureRegistry;\r
 import org.argeo.slc.core.structure.tree.TreeSPath;\r
+import org.springframework.beans.factory.ListableBeanFactory;\r
+import org.springframework.context.support.AbstractApplicationContext;\r
+import org.springframework.context.support.FileSystemXmlApplicationContext;\r
 \r
 /**\r
  * Custom implementation of an Ant <code>ProjectHelper</code> binding a Spring\r
index 36c22547bd73d1aee2428562f5de51e3eb85987c..8e6fc63b108b84b04c0df2a15b8c8d84241512d2 100644 (file)
@@ -3,12 +3,13 @@ package org.argeo.slc.ant.deploy;
 import org.apache.commons.logging.Log;\r
 import org.apache.commons.logging.LogFactory;\r
 import org.apache.tools.ant.BuildException;\r
-\r
-import org.argeo.slc.ant.spring.AbstractSpringArg;\r
+import org.argeo.slc.ant.SlcAntConfig;\r
+import org.argeo.slc.ant.spring.SpringArg;\r
 import org.argeo.slc.ant.structure.SAwareTask;\r
+import org.argeo.slc.core.build.Distribution;\r
+import org.argeo.slc.core.deploy.Deployment;\r
 import org.argeo.slc.core.deploy.DeploymentData;\r
 import org.argeo.slc.core.deploy.TargetData;\r
-import org.argeo.slc.core.deploy.WritableDeployment;\r
 \r
 /** Ant task wrapping a deployment. */\r
 public class SlcDeployTask extends SAwareTask {\r
@@ -16,22 +17,28 @@ public class SlcDeployTask extends SAwareTask {
 \r
        private String deploymentBean = null;\r
 \r
-       private DeploymentDataArg deploymentDataArg;\r
-       private TargetDataArg targetDataArg;\r
+       private SpringArg<DeploymentData> deploymentDataArg;\r
+       private SpringArg<TargetData> targetDataArg;\r
+       private SpringArg<Distribution> distributionArg;\r
 \r
        @Override\r
        public void executeActions(String mode) throws BuildException {\r
-               WritableDeployment deployment = (WritableDeployment) getContext()\r
-                               .getBean(deploymentBean);\r
+               Deployment deployment = (Deployment) getContext().getBean(\r
+                               deploymentBean);\r
 \r
                // set overridden references\r
+               if (distributionArg != null) {\r
+                       deployment.setDistribution(distributionArg.getBeanInstance());\r
+                       log.trace("Overrides distribution");\r
+               }\r
+\r
                if (deploymentDataArg != null) {\r
-                       deployment.setDeploymentData(deploymentDataArg.getDeploymentData());\r
+                       deployment.setDeploymentData(deploymentDataArg.getBeanInstance());\r
                        log.trace("Overrides deployment data");\r
                }\r
 \r
                if (targetDataArg != null) {\r
-                       deployment.setTargetData(targetDataArg.getTargetData());\r
+                       deployment.setTargetData(targetDataArg.getBeanInstance());\r
                        log.trace("Overrides target data");\r
                }\r
 \r
@@ -48,28 +55,19 @@ public class SlcDeployTask extends SAwareTask {
        }\r
 \r
        /** Creates deployment data sub tag. */\r
-       public DeploymentDataArg createDeploymentData() {\r
-               deploymentDataArg = new DeploymentDataArg();\r
+       public SpringArg<DeploymentData> createDeploymentData() {\r
+               deploymentDataArg = new SpringArg<DeploymentData>();\r
                return deploymentDataArg;\r
        }\r
 \r
        /** Creates target data sub tag. */\r
-       public TargetDataArg createTargetData() {\r
-               targetDataArg = new TargetDataArg();\r
+       public SpringArg<TargetData> createTargetData() {\r
+               targetDataArg = new SpringArg<TargetData>();\r
                return targetDataArg;\r
        }\r
-}\r
 \r
-class DeploymentDataArg extends AbstractSpringArg {\r
-       DeploymentData getDeploymentData() {\r
-               return (DeploymentData) getBeanInstance();\r
+       public SpringArg<Distribution> createDistribution() {\r
+               distributionArg = new SpringArg<Distribution>();\r
+               return distributionArg;\r
        }\r
-\r
-}\r
-\r
-class TargetDataArg extends AbstractSpringArg {\r
-       TargetData getTargetData() {\r
-               return (TargetData) getBeanInstance();\r
-       }\r
-\r
 }\r
diff --git a/org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/spring/AbstractSpringArg.java b/org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/spring/AbstractSpringArg.java
deleted file mode 100644 (file)
index 6096f1f..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-package org.argeo.slc.ant.spring;\r
-\r
-import java.util.List;\r
-import java.util.Vector;\r
-\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
-       private List<OverrideArg> overrides = new Vector<OverrideArg>();\r
-\r
-       private String bean;\r
-\r
-       // cache bean instance to avoid reading it twice if it is a prototype\r
-       private Object beanInstance = null;\r
-\r
-       /** The <u>name</u> of the underlying bean, as set throught the attribute. */\r
-       public String getBean() {\r
-               return bean;\r
-       }\r
-\r
-       /** Setter for the bean name. */\r
-       public void setBean(String bean) {\r
-               this.bean = bean;\r
-       }\r
-\r
-       /**\r
-        * Retrieve the instance of the bean, and sets the overriden properties.\r
-        * <b>The value is cached.</b>\r
-        */\r
-       public Object getBeanInstance() {\r
-               if (beanInstance == null) {\r
-                       beanInstance = getContext().getBean(bean);\r
-                       \r
-                       setOverridenProperties(beanInstance);\r
-\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
-               OverrideArg propertyArg = new OverrideArg();\r
-               overrides.add(propertyArg);\r
-               return propertyArg;\r
-       }\r
-\r
-       /** The related Spring application context. */\r
-       protected ApplicationContext getContext() {\r
-               return (ApplicationContext) getProject().getReference(\r
-                               SlcProjectHelper.REF_ROOT_CONTEXT);\r
-       }\r
-\r
-}\r
index 5c0dc3e690e37f0b5ece4f1566836af79565f6c1..3dd26c844f7e2f5aa3189b8812ad7622dc6a8c00 100644 (file)
@@ -8,7 +8,7 @@ import org.apache.tools.ant.BuildException;
 import org.argeo.slc.core.SlcException;\r
 \r
 /** Ant type allowing to override bean properties. */\r
-public class OverrideArg extends AbstractSpringArg {\r
+public class OverrideArg extends SpringArg<Object> {\r
        private String name;\r
        private Object value;\r
        private OverrideList overrideList;\r
diff --git a/org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/spring/SpringArg.java b/org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/spring/SpringArg.java
new file mode 100644 (file)
index 0000000..fb07301
--- /dev/null
@@ -0,0 +1,85 @@
+package org.argeo.slc.ant.spring;\r
+\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import org.apache.tools.ant.types.DataType;\r
+import org.argeo.slc.ant.SlcAntException;\r
+import org.argeo.slc.ant.SlcProjectHelper;\r
+import org.argeo.slc.core.SlcException;\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
+/** Abstract Ant type wrapping a Spring bean. */\r
+public class SpringArg<T> extends DataType {\r
+       private List<OverrideArg> overrides = new Vector<OverrideArg>();\r
+\r
+       private String bean;\r
+\r
+       // cache bean instance to avoid reading it twice if it is a prototype\r
+       private T beanInstance = null;\r
+\r
+       /** The <u>name</u> of the underlying bean, as set through the attribute. */\r
+       public String getBean() {\r
+               return bean;\r
+       }\r
+\r
+       /** Setter for the bean name. */\r
+       public void setBean(String bean) {\r
+               this.bean = bean;\r
+       }\r
+\r
+       /**\r
+        * Retrieve the instance of the bean, and sets the overriden properties.\r
+        * <b>The value is cached.</b>\r
+        */\r
+       public T getBeanInstance() {\r
+               if (beanInstance == null) {\r
+                       beanInstance = (T)getContext().getBean(bean);\r
+                       \r
+                       setOverridenProperties(beanInstance);\r
+\r
+                       // FIXME: why are we doing this? Could not find any object using it\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
+               OverrideArg propertyArg = new OverrideArg();\r
+               overrides.add(propertyArg);\r
+               return propertyArg;\r
+       }\r
+\r
+       /** The related Spring application context. */\r
+       protected ApplicationContext getContext() {\r
+               return (ApplicationContext) getProject().getReference(\r
+                               SlcProjectHelper.REF_ROOT_CONTEXT);\r
+       }\r
+\r
+}\r
index d248a38705378bfa318781385bf1a5400362e48d..84a199b757d7569ba258179f867274380523efaf 100644 (file)
@@ -8,7 +8,7 @@ import org.apache.tools.ant.Target;
 \r
 import org.argeo.slc.ant.SlcAntException;\r
 import org.argeo.slc.ant.SlcProjectHelper;\r
-import org.argeo.slc.ant.spring.AbstractSpringArg;\r
+import org.argeo.slc.ant.spring.SpringArg;\r
 import org.argeo.slc.ant.spring.AbstractSpringTask;\r
 import org.argeo.slc.core.structure.SimpleSElement;\r
 import org.argeo.slc.core.structure.StructureAware;\r
@@ -20,7 +20,7 @@ import org.argeo.slc.core.structure.tree.TreeSPath;
 public abstract class SAwareTask extends AbstractSpringTask {\r
        private String path;\r
        private TreeSPath treeSPath;\r
-       private final List<AbstractSpringArg> sAwareArgs = new Vector<AbstractSpringArg>();\r
+       private final List<SpringArg> sAwareArgs = new Vector<SpringArg>();\r
 \r
        private StructureElementArg structureElementArg;\r
 \r
@@ -44,7 +44,7 @@ public abstract class SAwareTask extends AbstractSpringTask {
         * Includes this arg in the checks for propagation of structure related\r
         * information.\r
         */\r
-       protected void addSAwareArg(AbstractSpringArg arg) {\r
+       protected void addSAwareArg(SpringArg arg) {\r
                sAwareArgs.add(arg);\r
        }\r
 \r
@@ -82,7 +82,7 @@ public abstract class SAwareTask extends AbstractSpringTask {
                }\r
 \r
                // notify registered args\r
-               for (AbstractSpringArg arg : sAwareArgs) {\r
+               for (SpringArg arg : sAwareArgs) {\r
                        Object obj = arg.getBeanInstance();\r
 \r
                        if (obj instanceof StructureAware) {\r
@@ -150,7 +150,7 @@ public abstract class SAwareTask extends AbstractSpringTask {
        }\r
 }\r
 \r
-class StructureElementArg extends AbstractSpringArg {\r
+class StructureElementArg extends SpringArg {\r
        public StructureElement getStructureElement() {\r
                return (StructureElement) getBeanInstance();\r
        }\r
index 6f2411c0093ea9454a43caf95538dc8683e6fa8d..263242fb79dde7305c9a827421a99c135f089e49 100644 (file)
@@ -3,14 +3,11 @@ package org.argeo.slc.ant.test;
 import org.apache.commons.logging.Log;\r
 import org.apache.commons.logging.LogFactory;\r
 import org.apache.tools.ant.BuildException;\r
-\r
 import org.argeo.slc.ant.SlcAntConfig;\r
-import org.argeo.slc.ant.spring.AbstractSpringArg;\r
+import org.argeo.slc.ant.spring.SpringArg;\r
 import org.argeo.slc.ant.structure.SAwareTask;\r
-import org.argeo.slc.core.SlcException;\r
 import org.argeo.slc.core.deploy.DeployedSystem;\r
 import org.argeo.slc.core.process.SlcExecution;\r
-import org.argeo.slc.core.process.SlcExecutionAware;\r
 import org.argeo.slc.core.structure.StructureAware;\r
 import org.argeo.slc.core.structure.tree.TreeSPath;\r
 import org.argeo.slc.core.test.ExecutableTestRun;\r
@@ -28,10 +25,10 @@ public class SlcTestTask extends SAwareTask {
 \r
        private String testRunBean = null;\r
 \r
-       private TestDefinitionArg testDefinitionArg;\r
-       private TestDataArg testDataArg;\r
-       private DeployedSystemArg deployedSystemArg;\r
-       private TestResultArg testResultArg;\r
+       private SpringArg<TestDefinition> testDefinitionArg;\r
+       private SpringArg<TestData> testDataArg;\r
+       private SpringArg<DeployedSystem> deployedSystemArg;\r
+       private SpringArg<TestResult> testResultArg;\r
 \r
        @Override\r
        public void executeActions(String mode) throws BuildException {\r
@@ -64,22 +61,22 @@ public class SlcTestTask extends SAwareTask {
 \r
                // set overridden references\r
                if (testDataArg != null) {\r
-                       testRun.setTestData(testDataArg.getTestData());\r
+                       testRun.setTestData(testDataArg.getBeanInstance());\r
                        log.trace("Overrides test data");\r
                }\r
 \r
                if (testDefinitionArg != null) {\r
-                       testRun.setTestDefinition(testDefinitionArg.getTestDefinition());\r
+                       testRun.setTestDefinition(testDefinitionArg.getBeanInstance());\r
                        log.trace("Overrides test definition");\r
                }\r
 \r
                if (deployedSystemArg != null) {\r
-                       testRun.setDeployedSystem(deployedSystemArg.getDeployedSystem());\r
+                       testRun.setDeployedSystem(deployedSystemArg.getBeanInstance());\r
                        log.trace("Overrides deployed system");\r
                }\r
 \r
                if (testResultArg != null) {\r
-                       testRun.setTestResult(testResultArg.getTestResult());\r
+                       testRun.setTestResult(testResultArg.getBeanInstance());\r
                        log.trace("Overrides test result");\r
                }\r
 \r
@@ -118,28 +115,28 @@ public class SlcTestTask extends SAwareTask {
        }\r
 \r
        /** Creates sub tag. */\r
-       public TestDefinitionArg createTestDefinition() {\r
-               testDefinitionArg = new TestDefinitionArg();\r
+       public SpringArg<TestDefinition> createTestDefinition() {\r
+               testDefinitionArg = new SpringArg<TestDefinition>();\r
                // only test definitions can add to path\r
                addSAwareArg(testDefinitionArg);\r
                return testDefinitionArg;\r
        }\r
 \r
        /** Creates sub tag. */\r
-       public TestDataArg createTestData() {\r
-               testDataArg = new TestDataArg();\r
+       public SpringArg<TestData> createTestData() {\r
+               testDataArg = new SpringArg<TestData>();\r
                return testDataArg;\r
        }\r
 \r
        /** Creates sub tag. */\r
-       public DeployedSystemArg createDeployedSystem() {\r
-               deployedSystemArg = new DeployedSystemArg();\r
+       public SpringArg<DeployedSystem> createDeployedSystem() {\r
+               deployedSystemArg = new SpringArg<DeployedSystem>();\r
                return deployedSystemArg;\r
        }\r
 \r
        /** Creates sub tag. */\r
-       public TestResultArg createTestResult() {\r
-               testResultArg = new TestResultArg();\r
+       public SpringArg<TestResult> createTestResult() {\r
+               testResultArg = new SpringArg<TestResult>();\r
                return testResultArg;\r
        }\r
 \r
@@ -147,30 +144,3 @@ public class SlcTestTask extends SAwareTask {
                return SpringUtils.loadSingleFromContext(getContext(), clss);\r
        }\r
 }\r
-\r
-class TestDefinitionArg extends AbstractSpringArg {\r
-       TestDefinition getTestDefinition() {\r
-               return (TestDefinition) getBeanInstance();\r
-       }\r
-}\r
-\r
-class TestDataArg extends AbstractSpringArg {\r
-       TestData getTestData() {\r
-               return (TestData) getBeanInstance();\r
-       }\r
-\r
-}\r
-\r
-class DeployedSystemArg extends AbstractSpringArg {\r
-       DeployedSystem getDeployedSystem() {\r
-               return (DeployedSystem) getBeanInstance();\r
-       }\r
-\r
-}\r
-\r
-class TestResultArg extends AbstractSpringArg {\r
-       TestResult getTestResult() {\r
-               return (TestResult) getBeanInstance();\r
-       }\r
-\r
-}\r