From 55ada84e847507662f8e884bca47fe2354d1f42f Mon Sep 17 00:00:00 2001 From: Kevin Jackson Date: Tue, 29 Aug 2006 01:51:47 +0000 Subject: [PATCH] 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 --- .../ant/taskdefs/condition/AntVersion.java | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) 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 73fa09360..745fecfe8 100644 --- a/src/main/org/apache/tools/ant/taskdefs/condition/AntVersion.java +++ b/src/main/org/apache/tools/ant/taskdefs/condition/AntVersion.java @@ -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