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
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
* @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
.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