You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by ke...@apache.org on 2006/08/29 03:51:48 UTC

svn commit: r437907 - /ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/AntVersion.java

Author: kevj
Date: Mon Aug 28 18:51:47 2006
New Revision: 437907

URL: http://svn.apache.org/viewvc?rev=437907&view=rev
Log:
as requested a refactoring that doesn't use indexOf - test passes with 1.7.0Beta1

Modified:
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/AntVersion.java

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/AntVersion.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/AntVersion.java?rev=437907&r1=437906&r2=437907&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/AntVersion.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/condition/AntVersion.java Mon Aug 28 18:51:47 2006
@@ -58,24 +58,36 @@
         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() {



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org