]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java
Introduce end to end testing with logging of results
[gpl/argeo-slc.git] / org.argeo.slc / src / main / java / org / argeo / slc / ant / structure / SAwareTask.java
index befa20864ce2d58cd485daddc24084e3a5d1b245..5bf326c2f987958ea4ddbf0c866a112ad51c3e34 100644 (file)
@@ -9,16 +9,17 @@ import org.apache.tools.ant.Target;
 import org.argeo.slc.ant.SlcProjectHelper;\r
 import org.argeo.slc.ant.spring.AbstractSpringArg;\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
+import org.argeo.slc.core.structure.StructureElement;\r
 import org.argeo.slc.core.structure.StructurePath;\r
 import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.structure.tree.DefaultTreeSAware;\r
-import org.argeo.slc.core.structure.tree.TreeSElement;\r
 import org.argeo.slc.core.structure.tree.TreeSPath;\r
 \r
 /** Ant task that can be registered within a structure. */\r
-public abstract class SAwareTask extends AbstractSpringTask {\r
-       private final DefaultTreeSAware sAware = new DefaultTreeSAware();\r
+public abstract class SAwareTask extends AbstractSpringTask implements StructureElement {\r
+       private TreeSPath path;\r
+       //private final DefaultTreeSAware sAware = new DefaultTreeSAware();\r
        private final List<AbstractSpringArg> sAwareArgs = new Vector<AbstractSpringArg>();\r
 \r
        @Override\r
@@ -27,18 +28,14 @@ public abstract class SAwareTask extends AbstractSpringTask {
                Target target = getOwningTarget();\r
 \r
                TreeSPath targetPath = createTargetPath(target);\r
-               TreeSElement targetElement = (TreeSElement) registry\r
+               SimpleSElement targetElement = (SimpleSElement) registry\r
                                .getElement(createTargetPath(target));\r
 \r
                if (targetElement == null) {\r
-                       targetElement = new TreeSElement(target.getDescription(),\r
+                       targetElement = new SimpleSElement(target.getDescription(),\r
                                        "<no target desc>");\r
                        registry.register(targetPath, targetElement);\r
                }\r
-\r
-               TreeSElement taskElement = new TreeSElement(getDescription(),\r
-                               "<no task desc>");\r
-               sAware.setElement(taskElement);\r
        }\r
 \r
        protected void addSAwareArg(AbstractSpringArg arg) {\r
@@ -54,22 +51,23 @@ public abstract class SAwareTask extends AbstractSpringTask {
         * @see StructureRegistry\r
         */\r
        public final void execute() throws BuildException {\r
-               // init registered args\r
+               // register the task in the structure\r
+               TreeSPath targetPath = createTargetPath(getOwningTarget());\r
+               TreeSPath taskPath = targetPath.createChild(getTaskName()\r
+                               + targetPath.listChildren(getRegistry()).size());\r
+               getRegistry().register(taskPath, this);\r
+               path = taskPath;\r
+               \r
+               // notify registered args\r
                for (AbstractSpringArg arg : sAwareArgs) {\r
                        Object obj = arg.getBeanInstance();\r
 \r
-                       if (obj instanceof StructureAware && sAware != null) {\r
+                       if (obj instanceof StructureAware) {\r
                                StructureAware sAwareT = (StructureAware) obj;\r
-                               sAware.addToPropagationList(arg.getBean(), sAwareT);\r
+                               sAwareT.notifyCurrentPath(getRegistry(), taskPath);\r
                        }\r
                }\r
 \r
-               // register the task in the structure\r
-               TreeSPath targetPath = createTargetPath(getOwningTarget());\r
-               TreeSPath taskPath = targetPath.createChild(getTaskName()\r
-                               + targetPath.listChildren(getRegistry()).size());\r
-               getRegistry().register(taskPath, sAware);\r
-\r
                // execute depending on the registry mode\r
                String mode = getRegistry().getMode();\r
                if (mode.equals(StructureRegistry.ALL)) {\r
@@ -101,4 +99,21 @@ public abstract class SAwareTask extends AbstractSpringTask {
                                .getProject());\r
                return projectPath.createChild(target.getName());\r
        }\r
+\r
+       public TreeSPath getPath() {\r
+               return path;\r
+       }\r
+\r
+       @Override\r
+       public String getDescription() {\r
+               String description = super.getDescription();\r
+               if(description==null){\r
+                       return "<no task def>";\r
+               }\r
+               else{\r
+                       return description;\r
+               }\r
+       }\r
+       \r
+       \r
 }\r