]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.core/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java
Introduce Context Unit Tests.
[gpl/argeo-slc.git] / org.argeo.slc.core / src / main / java / org / argeo / slc / ant / structure / SAwareTask.java
index 3f4d35864abd8017f3ac0629caff3ec8fd9ae99c..91f59cf8f4475ea1632d16cd23d476073087c148 100644 (file)
@@ -6,6 +6,7 @@ import java.util.Vector;
 import org.apache.tools.ant.BuildException;\r
 import org.apache.tools.ant.Target;\r
 \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.AbstractSpringTask;\r
@@ -22,6 +23,8 @@ public abstract class SAwareTask extends AbstractSpringTask implements
        private TreeSPath path;\r
        private final List<AbstractSpringArg> sAwareArgs = new Vector<AbstractSpringArg>();\r
 \r
+       private StructureElementArg structureElementArg;\r
+\r
        @Override\r
        public void init() throws BuildException {\r
                StructureRegistry registry = getRegistry();\r
@@ -39,7 +42,7 @@ public abstract class SAwareTask extends AbstractSpringTask implements
        }\r
 \r
        /**\r
-        * Includes this arg in the checks for propagation of sstructure related\r
+        * Includes this arg in the checks for propagation of structure related\r
         * information.\r
         */\r
        protected void addSAwareArg(AbstractSpringArg arg) {\r
@@ -59,7 +62,12 @@ public abstract class SAwareTask extends AbstractSpringTask implements
                TreeSPath targetPath = createTargetPath(getOwningTarget());\r
                TreeSPath taskPath = targetPath.createChild(getTaskName()\r
                                + targetPath.listChildren(getRegistry()).size());\r
-               getRegistry().register(taskPath, this);\r
+               if (structureElementArg != null)\r
+                       getRegistry().register(taskPath,\r
+                                       structureElementArg.getStructureElement());\r
+               else\r
+                       getRegistry().register(taskPath, this);\r
+\r
                path = taskPath;\r
 \r
                // notify registered args\r
@@ -91,6 +99,14 @@ public abstract class SAwareTask extends AbstractSpringTask implements
        /** Actions to be executed by the implementor. */\r
        protected abstract void executeActions(String mode);\r
 \r
+       /** Create a reference to an external structure element. */\r
+       public StructureElementArg createStructureElement() {\r
+               if (structureElementArg != null)\r
+                       throw new SlcAntException("Arg already set.");\r
+               structureElementArg = new StructureElementArg();\r
+               return structureElementArg;\r
+       }\r
+\r
        /** Gets the underlying structure registry. */\r
        protected StructureRegistry getRegistry() {\r
                return (StructureRegistry) getProject().getReference(\r
@@ -109,8 +125,7 @@ public abstract class SAwareTask extends AbstractSpringTask implements
                return path;\r
        }\r
 \r
-       @Override\r
-       public String getDescription() {\r
+       public String getLabel() {\r
                String description = super.getDescription();\r
                if (description == null) {\r
                        return "<no task def>";\r
@@ -120,3 +135,9 @@ public abstract class SAwareTask extends AbstractSpringTask implements
        }\r
 \r
 }\r
+\r
+class StructureElementArg extends AbstractSpringArg {\r
+       public StructureElement getStructureElement() {\r
+               return (StructureElement) getBeanInstance();\r
+       }\r
+}
\ No newline at end of file