X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fant%2Fstructure%2FSAwareTask.java;h=e0bce6731b818cb5345fe60178abbbaf7f9a1f78;hb=a29c28266fef35c1620f6582ec182bad7f7f85ae;hp=befa20864ce2d58cd485daddc24084e3a5d1b245;hpb=d62a44995fa4bc758ab3b3e6e7ffe7b79c8684ef;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java b/org.argeo.slc/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java index befa20864..e0bce6731 100644 --- a/org.argeo.slc/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java +++ b/org.argeo.slc/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java @@ -9,16 +9,17 @@ import org.apache.tools.ant.Target; import org.argeo.slc.ant.SlcProjectHelper; import org.argeo.slc.ant.spring.AbstractSpringArg; import org.argeo.slc.ant.spring.AbstractSpringTask; +import org.argeo.slc.core.structure.SimpleSElement; import org.argeo.slc.core.structure.StructureAware; +import org.argeo.slc.core.structure.StructureElement; import org.argeo.slc.core.structure.StructurePath; import org.argeo.slc.core.structure.StructureRegistry; -import org.argeo.slc.core.structure.tree.DefaultTreeSAware; -import org.argeo.slc.core.structure.tree.TreeSElement; import org.argeo.slc.core.structure.tree.TreeSPath; /** Ant task that can be registered within a structure. */ -public abstract class SAwareTask extends AbstractSpringTask { - private final DefaultTreeSAware sAware = new DefaultTreeSAware(); +public abstract class SAwareTask extends AbstractSpringTask implements + StructureElement { + private TreeSPath path; private final List sAwareArgs = new Vector(); @Override @@ -27,18 +28,14 @@ public abstract class SAwareTask extends AbstractSpringTask { Target target = getOwningTarget(); TreeSPath targetPath = createTargetPath(target); - TreeSElement targetElement = (TreeSElement) registry + SimpleSElement targetElement = (SimpleSElement) registry .getElement(createTargetPath(target)); if (targetElement == null) { - targetElement = new TreeSElement(target.getDescription(), + targetElement = new SimpleSElement(target.getDescription(), ""); registry.register(targetPath, targetElement); } - - TreeSElement taskElement = new TreeSElement(getDescription(), - ""); - sAware.setElement(taskElement); } protected void addSAwareArg(AbstractSpringArg arg) { @@ -54,22 +51,23 @@ public abstract class SAwareTask extends AbstractSpringTask { * @see StructureRegistry */ public final void execute() throws BuildException { - // init registered args + // register the task in the structure + TreeSPath targetPath = createTargetPath(getOwningTarget()); + TreeSPath taskPath = targetPath.createChild(getTaskName() + + targetPath.listChildren(getRegistry()).size()); + getRegistry().register(taskPath, this); + path = taskPath; + + // notify registered args for (AbstractSpringArg arg : sAwareArgs) { Object obj = arg.getBeanInstance(); - if (obj instanceof StructureAware && sAware != null) { + if (obj instanceof StructureAware) { StructureAware sAwareT = (StructureAware) obj; - sAware.addToPropagationList(arg.getBean(), sAwareT); + sAwareT.notifyCurrentPath(getRegistry(), taskPath); } } - // register the task in the structure - TreeSPath targetPath = createTargetPath(getOwningTarget()); - TreeSPath taskPath = targetPath.createChild(getTaskName() - + targetPath.listChildren(getRegistry()).size()); - getRegistry().register(taskPath, sAware); - // execute depending on the registry mode String mode = getRegistry().getMode(); if (mode.equals(StructureRegistry.ALL)) { @@ -101,4 +99,19 @@ public abstract class SAwareTask extends AbstractSpringTask { .getProject()); return projectPath.createChild(target.getName()); } + + public TreeSPath getPath() { + return path; + } + + @Override + public String getDescription() { + String description = super.getDescription(); + if (description == null) { + return ""; + } else { + return description; + } + } + }