You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bu...@apache.org on 2002/08/05 22:42:57 UTC
DO NOT REPLY [Bug 11481] New: -
WaitFor doesn't extend Task so it can't be used as a Task programmatically
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11481>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11481
WaitFor doesn't extend Task so it can't be used as a Task programmatically
Summary: WaitFor doesn't extend Task so it can't be used as a
Task programmatically
Product: Ant
Version: 1.5
Platform: All
OS/Version: All
Status: NEW
Severity: Normal
Priority: Other
Component: Core tasks
AssignedTo: ant-dev@jakarta.apache.org
ReportedBy: mmunz@apelon.com
Hi.
This is a design issue. Lacking Architecture / Design documents, I'm not
sure whether this is a defect or a "feature", but either way, I needed a
workaround to use WaitFor that is not required for objects like Copy, and this
is an inconsistency that should be addressed.
I am writing a Task that uses Parallel, Sequence, and WaitFor. The following
code won't work.
WaitFor wait;
...
Sequential sequence = (Sequential) getProject().createTask("sequential");
sequence.addTask(wait);
It won't work because, although WaitFor has an interface compatible with
Task, it does not extend Task, but rather its superclass, ProjectComponent.
workaround:
I created a wrapper class that treats WaitFor like a Task. It is included
below.
solution:
There are several possiblities. I don't think that the workaround is a
robust solution. Alternatives include making WaitFor a subclass of Task, and
(I like this one) making Task (or something like it) an interface. Such an
interface (let's call it ExecutableComponent) would have only one method:
public void execute() throws BuildException;
Just an idea -- I'm interested in hearing anyone else's ideas on the matter.
---- WaitForTask.java ---------
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.taskdefs.WaitFor;
/**
* The WaitFor Condition object is very much like a Task object.
* This class adapts the WaitFor object to the Task API so that it can be
executed
* as a Task.
* @author Matt Munz
*/
public class WaitForTask extends Task
{
protected WaitFor fDelegate;
public WaitForTask(WaitFor newDelegate)
{
super();
setDelegate(newDelegate);
}
public void execute() throws BuildException { delegate().execute(); }
protected WaitFor delegate() { return fDelegate; }
protected void setDelegate(WaitFor newDelegate) { fDelegate = newDelegate; }
}
----------------------
- Matt Munz
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>