diff --git a/src/main/org/apache/tools/ant/taskdefs/condition/AntVersion.java b/src/main/org/apache/tools/ant/taskdefs/condition/AntVersion.java index 9cc8f4fae..33abd474c 100644 --- a/src/main/org/apache/tools/ant/taskdefs/condition/AntVersion.java +++ b/src/main/org/apache/tools/ant/taskdefs/condition/AntVersion.java @@ -20,25 +20,38 @@ package org.apache.tools.ant.taskdefs.condition; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; +import org.apache.tools.ant.Task; import org.apache.tools.ant.util.DeweyDecimal; /** * An Ant version condition. * @since Ant 1.7 */ -public class AntVersion implements Condition { +public class AntVersion extends Task implements Condition { private String atLeast = null; private String exactly = null; + private String propertyname = null; + /** * Evalute the condition. * @return true if the condition is true. * @throws BuildException if an error occurs. */ + public void execute() throws BuildException { + if (propertyname == null) { + throw new BuildException("'property' must be set."); + } + getProject().setNewProperty(propertyname, getVersion().toString()); + } + public boolean eval() throws BuildException { validate(); DeweyDecimal actual = getVersion(); + + System.out.println("AntVersion::actual = " + actual); + if (null != atLeast) { return actual.isGreaterThanOrEqual(new DeweyDecimal(atLeast)); } @@ -123,4 +136,13 @@ public class AntVersion implements Condition { public void setExactly(String exactly) { this.exactly = exactly; } + + public String getProperty() { + return propertyname; + } + + public void setProperty(String propertyname) { + this.propertyname = propertyname; + } + } diff --git a/src/main/org/apache/tools/ant/taskdefs/defaults.properties b/src/main/org/apache/tools/ant/taskdefs/defaults.properties index 392099b08..e1f11f74a 100644 --- a/src/main/org/apache/tools/ant/taskdefs/defaults.properties +++ b/src/main/org/apache/tools/ant/taskdefs/defaults.properties @@ -2,6 +2,7 @@ ant=org.apache.tools.ant.taskdefs.Ant antcall=org.apache.tools.ant.taskdefs.CallTarget antstructure=org.apache.tools.ant.taskdefs.AntStructure +antversion=org.apache.tools.ant.taskdefs.condition.AntVersion apply=org.apache.tools.ant.taskdefs.Transform available=org.apache.tools.ant.taskdefs.Available basename=org.apache.tools.ant.taskdefs.Basename diff --git a/src/tests/antunit/taskdefs/condition/antversion-test.xml b/src/tests/antunit/taskdefs/condition/antversion-test.xml index 4e13967b9..4be5b1b98 100644 --- a/src/tests/antunit/taskdefs/condition/antversion-test.xml +++ b/src/tests/antunit/taskdefs/condition/antversion-test.xml @@ -3,6 +3,7 @@ + @@ -19,6 +20,11 @@ + + + + + @@ -27,4 +33,4 @@ - \ No newline at end of file +