The way Peter originally suggested to fix this was the simplest. I originally coded up that change in December or January, I think... it didn't strike me as a BC issue because I didn't think about the possibility that someone would want to extend Exit/<fail>... oh, well...
-Matt --- [EMAIL PROTECTED] wrote: > mbenson 2004/04/29 14:25:40 > > Modified: > src/testcases/org/apache/tools/ant/taskdefs > FailTest.java > docs/manual/CoreTasks fail.html > > src/main/org/apache/tools/ant/taskdefs Exit.java > src/etc/testcases/taskdefs fail.xml > Log: > Restore Task inheritance to Exit/<fail>. > > Revision Changes Path > 1.15 +15 -2 > ant/src/testcases/org/apache/tools/ant/taskdefs/FailTest.java > > Index: FailTest.java > > =================================================================== > RCS file: > /home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/FailTest.java,v > retrieving revision 1.14 > retrieving revision 1.15 > diff -u -r1.14 -r1.15 > --- FailTest.java 28 Apr 2004 18:08:47 -0000 1.14 > +++ FailTest.java 29 Apr 2004 21:25:40 -0000 1.15 > @@ -138,7 +138,7 @@ > public void testNested5() { > > expectSpecificBuildException("testNested5", > "it is required to fail :-)", > - "Too many conditions: 2"); > + "Only one nested condition is > allowed."); > } > > public void testNested6() { > @@ -147,4 +147,17 @@ > > "testNested6\ntestNested6\ntestNested6"); > } > > - } > + public void testNested7() { > + String specificMessage = "A single nested > condition is required."; > + > + char[] c = {'a', 'b'}; > + StringBuffer target = new > StringBuffer("testNested7x"); > + > + for (int i = 0; i < c.length; i++) { > + target.setCharAt(target.length() - 1, > c[i]); > + > expectSpecificBuildException(target.toString(), > + "it is required to fail :-)", > specificMessage); > + } > + } > + > +} > > > > 1.11 +11 -8 > ant/docs/manual/CoreTasks/fail.html > > Index: fail.html > > =================================================================== > RCS file: > /home/cvs/ant/docs/manual/CoreTasks/fail.html,v > retrieving revision 1.10 > retrieving revision 1.11 > diff -u -r1.10 -r1.11 > --- fail.html 28 Apr 2004 18:08:47 -0000 1.10 > +++ fail.html 29 Apr 2004 21:25:40 -0000 1.11 > @@ -41,10 +41,10 @@ > <h3>Parameters specified as nested elements</h3> > > <p>As an alternative to the > <i>if</i>/<i>unless</i> attributes, > - conditional failure can be achieved using a > single nested condition. > - For a complete list of core conditions, as well > as information > - about custom conditions, see <a > href="conditions.html">here</a>.<br /> > - <b>Since Ant 1.6.2</b> > + conditional failure can be achieved using a > single nested > + <condition> element, which should contain > exactly one > + core or custom condition. For information > about conditions, see > + <a href="conditions.html">here</a>.<br > /><b>Since Ant 1.6.2</b> > </p> > > <h3>Examples</h3> > @@ -79,12 +79,15 @@ > build.xml:2: unless=thisdoesnotexist > </pre> > > -A simple example using conditions to achieve the > same effect: > +Using a condition to achieve the same effect: > + > <pre> > <fail> > - <not> > - <isset > property="thisdoesnotexist"/> > - </not> > + <condition> > + <not> > + <isset > property="thisdoesnotexist"/> > + </not> > + </condition> > </fail> > </pre> > > > > > 1.31 +39 -11 > ant/src/main/org/apache/tools/ant/taskdefs/Exit.java > > Index: Exit.java > > =================================================================== > RCS file: > /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Exit.java,v > retrieving revision 1.30 > retrieving revision 1.31 > diff -u -r1.30 -r1.31 > --- Exit.java 28 Apr 2004 18:08:47 -0000 1.30 > +++ Exit.java 29 Apr 2004 21:25:40 -0000 1.31 > @@ -17,6 +17,8 @@ > > package org.apache.tools.ant.taskdefs; > > +import java.util.Vector; > +import org.apache.tools.ant.Task; > import org.apache.tools.ant.BuildException; > import > org.apache.tools.ant.taskdefs.condition.Condition; > import > org.apache.tools.ant.taskdefs.condition.ConditionBase; > @@ -42,9 +44,21 @@ > * > * @ant.task name="fail" category="control" > */ > -public class Exit extends ConditionBase { > +public class Exit extends Task { > + > + private class NestedCondition extends > ConditionBase implements Condition { > + public boolean eval() { > + if (countConditions() != 1) { > + throw new BuildException( > + "A single nested condition is > required."); > + } > + return > ((Condition)(getConditions().nextElement())).eval(); > + } > + } > + > private String message; > private String ifCondition, unlessCondition; > + private NestedCondition nestedCondition; > > /** > * A message giving further information on > why the build exited. > @@ -129,6 +143,19 @@ > } > > /** > + * Add a condition element. > + * @return <CODE>ConditionBase</CODE>. > + * @since Ant 1.6.2 > + */ > + public ConditionBase createCondition() { > + if (nestedCondition != null) { > + throw new BuildException("Only one > nested condition is allowed."); > + } > + nestedCondition = new NestedCondition(); > + return nestedCondition; > + } > + > + /** > * test the if condition > * @return true if there is no if condition, > or the named property exists > */ > @@ -156,21 +183,22 @@ > === message truncated === __________________________________ Do you Yahoo!? Win a $20,000 Career Makeover at Yahoo! HotJobs http://hotjobs.sweepstakes.yahoo.com/careermakeover --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]