Browse Source

as requested a refactoring that doesn't use indexOf - test passes with 1.7.0Beta1

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@437907 13f79535-47bb-0310-9956-ffa450edef68
master
Kevin Jackson 19 years ago
parent
commit
55ada84e84
1 changed files with 23 additions and 11 deletions
  1. +23
    -11
      src/main/org/apache/tools/ant/taskdefs/condition/AntVersion.java

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

@@ -58,24 +58,36 @@ public class AntVersion implements Condition {
if (null == atLeast && null == exactly) {
throw new BuildException("One of atleast or exactly must be set.");
}
try {
if (atLeast != null) {
new DeweyDecimal(atLeast);
} else {
new DeweyDecimal(exactly);
}
} catch (NumberFormatException e) {
throw new BuildException("The argument is not a Dewey Decimal eg 1.1.0");
}
}
private DeweyDecimal getVersion() {
Project p = new Project();
p.init();
String versionString = p.getProperty("ant.version");
String v = versionString.substring(versionString.indexOf("Ant version")+12,
versionString.indexOf("Ant version")+17);
char[] cs = v.toCharArray();
int end = cs.length;
for (int i = cs.length; i > 0; i--) {
if (!Character.isLetter(cs[i-1])) {
end = i;
char[] versionString = p.getProperty("ant.version").toCharArray();
StringBuffer sb = new StringBuffer();
boolean foundFirstDigit = false;
for (int i=0; i<versionString.length; i++) {
if (Character.isDigit(versionString[i])) {
sb.append(versionString[i]);
foundFirstDigit = true;
}
if (versionString[i]=='.' && foundFirstDigit) {
sb.append(versionString[i]);
}
if (Character.isLetter(versionString[i]) && foundFirstDigit) {
break;
}
}
v = v.substring(0, end);
return new DeweyDecimal(v);
return new DeweyDecimal(sb.toString());
}
public String getAtLeast() {


Loading…
Cancel
Save