X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fant%2Fstructure%2FSAwareTask.java;h=91f59cf8f4475ea1632d16cd23d476073087c148;hb=0ee30b3cfd07a1e96eeb21ee729b2c7825585b94;hp=3f4d35864abd8017f3ac0629caff3ec8fd9ae99c;hpb=faf680e212bf3e18837c4f798587856e061273b3;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java index 3f4d35864..91f59cf8f 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java @@ -6,6 +6,7 @@ import java.util.Vector; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Target; +import org.argeo.slc.ant.SlcAntException; import org.argeo.slc.ant.SlcProjectHelper; import org.argeo.slc.ant.spring.AbstractSpringArg; import org.argeo.slc.ant.spring.AbstractSpringTask; @@ -22,6 +23,8 @@ public abstract class SAwareTask extends AbstractSpringTask implements private TreeSPath path; private final List sAwareArgs = new Vector(); + private StructureElementArg structureElementArg; + @Override public void init() throws BuildException { StructureRegistry registry = getRegistry(); @@ -39,7 +42,7 @@ public abstract class SAwareTask extends AbstractSpringTask implements } /** - * Includes this arg in the checks for propagation of sstructure related + * Includes this arg in the checks for propagation of structure related * information. */ protected void addSAwareArg(AbstractSpringArg arg) { @@ -59,7 +62,12 @@ public abstract class SAwareTask extends AbstractSpringTask implements TreeSPath targetPath = createTargetPath(getOwningTarget()); TreeSPath taskPath = targetPath.createChild(getTaskName() + targetPath.listChildren(getRegistry()).size()); - getRegistry().register(taskPath, this); + if (structureElementArg != null) + getRegistry().register(taskPath, + structureElementArg.getStructureElement()); + else + getRegistry().register(taskPath, this); + path = taskPath; // notify registered args @@ -91,6 +99,14 @@ public abstract class SAwareTask extends AbstractSpringTask implements /** Actions to be executed by the implementor. */ protected abstract void executeActions(String mode); + /** Create a reference to an external structure element. */ + public StructureElementArg createStructureElement() { + if (structureElementArg != null) + throw new SlcAntException("Arg already set."); + structureElementArg = new StructureElementArg(); + return structureElementArg; + } + /** Gets the underlying structure registry. */ protected StructureRegistry getRegistry() { return (StructureRegistry) getProject().getReference( @@ -109,8 +125,7 @@ public abstract class SAwareTask extends AbstractSpringTask implements return path; } - @Override - public String getDescription() { + public String getLabel() { String description = super.getDescription(); if (description == null) { return ""; @@ -120,3 +135,9 @@ public abstract class SAwareTask extends AbstractSpringTask implements } } + +class StructureElementArg extends AbstractSpringArg { + public StructureElement getStructureElement() { + return (StructureElement) getBeanInstance(); + } +} \ No newline at end of file