Browse Source

add an antversion condition as requested in #32804

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@409337 13f79535-47bb-0310-9956-ffa450edef68
master
Kevin Jackson 19 years ago
parent
commit
b31456c5e8
3 changed files with 113 additions and 34 deletions
  1. +67
    -0
      src/main/org/apache/tools/ant/taskdefs/condition/AntVersion.java
  2. +45
    -34
      src/main/org/apache/tools/ant/taskdefs/condition/ConditionBase.java
  3. +1
    -0
      src/main/org/apache/tools/ant/taskdefs/condition/antlib.xml

+ 67
- 0
src/main/org/apache/tools/ant/taskdefs/condition/AntVersion.java View File

@@ -0,0 +1,67 @@
package org.apache.tools.ant.taskdefs.condition;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
public class AntVersion implements Condition {
private String atLeast = null;
private String exactly = null;
public boolean eval() throws BuildException {
validate();
String actual = getVersion();
if (null != atLeast) {
if (Float.valueOf(actual).compareTo(Float.valueOf(atLeast)) >= 0) {
return true;
} else {
return false;
}
}
if (null != exactly) {
if (Float.valueOf(actual).compareTo(Float.valueOf(exactly)) == 0) {
return true;
} else {
return false;
}
}
//default
return false;
}
private void validate() throws BuildException {
if (atLeast != null && exactly != null) {
throw new BuildException("Only one of atleast or exactly may be set.");
}
if (null == atLeast && null == exactly) {
throw new BuildException("One of atleast or exactly must be set.");
}
}
private String getVersion() {
Project p = new Project();
p.init();
String versionString = p.getProperty("ant.version");
String version = versionString.substring(versionString.indexOf("Ant version")+12,
versionString.indexOf("compiled on")-1);
version = version.replaceAll("alpha","");
return version;
}
public String getAtLeast() {
return atLeast;
}
public void setAtLeast(String atLeast) {
this.atLeast = atLeast;
}
public String getExactly() {
return exactly;
}
public void setExactly(String exactly) {
this.exactly = exactly;
}
}

+ 45
- 34
src/main/org/apache/tools/ant/taskdefs/condition/ConditionBase.java View File

@@ -32,25 +32,25 @@ import org.apache.tools.ant.taskdefs.UpToDate;
* @since Ant 1.4
*/
public abstract class ConditionBase extends ProjectComponent {
/**
* name of the component
*/
private String taskName="condition";
/**
*
*/
private Vector conditions = new Vector();
/**
* simple constructor.
*/
protected ConditionBase() {
taskName = "component";
}
/**
* constructor that takes the name of the task
* in the task name
@@ -60,7 +60,7 @@ public abstract class ConditionBase extends ProjectComponent {
protected ConditionBase(String taskName) {
this.taskName = taskName;
}
/**
* Count the conditions.
*
@@ -70,7 +70,7 @@ public abstract class ConditionBase extends ProjectComponent {
protected int countConditions() {
return conditions.size();
}
/**
* Iterate through all conditions.
*
@@ -80,7 +80,7 @@ public abstract class ConditionBase extends ProjectComponent {
protected final Enumeration getConditions() {
return conditions.elements();
}
/**
* Sets the name to use in logging messages.
*
@@ -91,7 +91,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void setTaskName(String name) {
this.taskName = name;
}
/**
* Returns the name to use in logging messages.
*
@@ -101,7 +101,7 @@ public abstract class ConditionBase extends ProjectComponent {
public String getTaskName() {
return taskName;
}
/**
* Add an <available> condition.
* @param a an available condition
@@ -110,7 +110,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addAvailable(Available a) {
conditions.addElement(a);
}
/**
* Add an <checksum> condition.
*
@@ -120,7 +120,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addChecksum(Checksum c) {
conditions.addElement(c);
}
/**
* Add an <uptodate> condition.
*
@@ -130,7 +130,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addUptodate(UpToDate u) {
conditions.addElement(u);
}
/**
* Add an <not> condition "container".
*
@@ -140,7 +140,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addNot(Not n) {
conditions.addElement(n);
}
/**
* Add an <and> condition "container".
*
@@ -150,7 +150,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addAnd(And a) {
conditions.addElement(a);
}
/**
* Add an <or> condition "container".
*
@@ -160,7 +160,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addOr(Or o) {
conditions.addElement(o);
}
/**
* Add an <equals> condition.
*
@@ -170,7 +170,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addEquals(Equals e) {
conditions.addElement(e);
}
/**
* Add an <os> condition.
*
@@ -180,7 +180,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addOs(Os o) {
conditions.addElement(o);
}
/**
* Add an <isset> condition.
*
@@ -190,7 +190,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addIsSet(IsSet i) {
conditions.addElement(i);
}
/**
* Add an <http> condition.
*
@@ -200,7 +200,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addHttp(Http h) {
conditions.addElement(h);
}
/**
* Add a <socket> condition.
*
@@ -210,7 +210,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addSocket(Socket s) {
conditions.addElement(s);
}
/**
* Add a <filesmatch> condition.
*
@@ -220,7 +220,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addFilesMatch(FilesMatch test) {
conditions.addElement(test);
}
/**
* Add a <contains> condition.
*
@@ -230,7 +230,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addContains(Contains test) {
conditions.addElement(test);
}
/**
* Add a <istrue> condition.
*
@@ -240,7 +240,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addIsTrue(IsTrue test) {
conditions.addElement(test);
}
/**
* Add a <isfalse> condition.
*
@@ -250,7 +250,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addIsFalse(IsFalse test) {
conditions.addElement(test);
}
/**
* Add an <isreference> condition.
*
@@ -260,7 +260,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addIsReference(IsReference i) {
conditions.addElement(i);
}
/**
* Add an <typefound> condition.
* @param test a TypeFound condition
@@ -269,7 +269,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addTypeFound(TypeFound test) {
conditions.addElement(test);
}
/**
* Add an <isfailure> condition.
*
@@ -278,7 +278,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addIsFailure(IsFailure test) {
conditions.addElement(test);
}
/**
* Add an <isfileselected> condition.
* @param test the condition
@@ -286,7 +286,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addIsFileSelected(IsFileSelected test) {
conditions.addElement(test);
}
/**
* Add an <isreachable> condition.
*
@@ -296,7 +296,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addIsReachable(IsReachable test) {
conditions.addElement(test);
}
/**
* Add an <issigned> condition.
*
@@ -306,7 +306,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addIsSigned(IsSigned test) {
conditions.addElement(test);
}
/**
* Add an <parsersupports> condition.
*
@@ -316,7 +316,7 @@ public abstract class ConditionBase extends ProjectComponent {
public void addParserSupports(ParserSupports test) {
conditions.addElement(test);
}
/**
* Add a <ResourcesMatch> condition.
*
@@ -326,8 +326,8 @@ public abstract class ConditionBase extends ProjectComponent {
public void addResourcesMatch(ResourcesMatch test) {
conditions.addElement(test);
}
/**
* Add an <xor> condition.
*
@@ -337,6 +337,17 @@ public abstract class ConditionBase extends ProjectComponent {
public void addXor(Xor test) {
conditions.addElement(test);
}
/**
* Add an <antversion> condition.
*
* @param test the condition
* @since Ant 1.7
*/
public void addAntVersion(AntVersion test) {
conditions.addElement(test);
}
/**
* Add an arbitrary condition
* @param c a condition


+ 1
- 0
src/main/org/apache/tools/ant/taskdefs/condition/antlib.xml View File

@@ -47,4 +47,5 @@
<typedef name="socket" classname="org.apache.tools.ant.taskdefs.condition.Socket"/>
<typedef name="typefound" classname="org.apache.tools.ant.taskdefs.condition.TypeFound"/>
<typedef name="xor" classname="org.apache.tools.ant.taskdefs.condition.Xor"/>
<typedef name="antversion" classname="org.apache.tools.ant.taskdefs.condition.AntVersion"/>
</antlib>

Loading…
Cancel
Save