Improved the regular expression to match the version number we want to get

Project: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-chef/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-chef/commit/fb8c7f1c
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-chef/tree/fb8c7f1c
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-jclouds-chef/diff/fb8c7f1c

Branch: refs/heads/253-parseversion
Commit: fb8c7f1c38bc11cd7c758f5042244320ea9e60e1
Parents: 5565365
Author: Ignasi Barrera <[email protected]>
Authored: Thu Sep 12 21:54:01 2013 +0200
Committer: Ignasi Barrera <[email protected]>
Committed: Thu Sep 12 21:54:01 2013 +0200

----------------------------------------------------------------------
 .../jclouds/chef/suppliers/ChefVersionSupplier.java    | 13 ++++++-------
 .../chef/suppliers/ChefVersionSupplierTest.java        |  2 ++
 2 files changed, 8 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-jclouds-chef/blob/fb8c7f1c/core/src/main/java/org/jclouds/chef/suppliers/ChefVersionSupplier.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/jclouds/chef/suppliers/ChefVersionSupplier.java 
b/core/src/main/java/org/jclouds/chef/suppliers/ChefVersionSupplier.java
index 8d9e627..a08fc40 100644
--- a/core/src/main/java/org/jclouds/chef/suppliers/ChefVersionSupplier.java
+++ b/core/src/main/java/org/jclouds/chef/suppliers/ChefVersionSupplier.java
@@ -16,6 +16,7 @@
  */
 package org.jclouds.chef.suppliers;
 
+import static com.google.common.base.Objects.firstNonNull;
 import static com.google.common.base.Preconditions.checkNotNull;
 
 import java.util.regex.Matcher;
@@ -57,7 +58,10 @@ public class ChefVersionSupplier implements 
Supplier<Integer> {
 
    @Override
    public Integer get() {
-      Pattern versionPattern = Pattern.compile("(\\d+)\\.(\\d+)(\\.\\d+)*");
+      // Old versions of Chef have versions like 0.9.x, 0.10.x, but newer
+      // versions are in the format 10.x.y, 11.x.y
+      Pattern versionPattern = 
Pattern.compile("(?:0\\.(\\d+)|(\\d+)\\.\\d+)(?:\\.\\d)*");
+
       Matcher m = versionPattern.matcher(apiVersion);
       if (!m.matches()) {
          logger.warn("Configured version does not match the standard version 
pattern. Assuming version %s",
@@ -65,12 +69,7 @@ public class ChefVersionSupplier implements 
Supplier<Integer> {
          return DEFAULT_VERSION;
       }
 
-      int major = Integer.parseInt(m.group(1));
-      int minor = Integer.parseInt(m.group(2));
-
-      // Old versions of Chef have versions like 0.9.x, 0.10.x, but newer 
versions
-      // are in the format 10.x.y, 11.x.y
-      return major == 0? minor : major;
+      return Integer.valueOf(firstNonNull(m.group(1), m.group(2)));
    }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-jclouds-chef/blob/fb8c7f1c/core/src/test/java/org/jclouds/chef/suppliers/ChefVersionSupplierTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/jclouds/chef/suppliers/ChefVersionSupplierTest.java 
b/core/src/test/java/org/jclouds/chef/suppliers/ChefVersionSupplierTest.java
index d5efd90..7bde5ac 100644
--- a/core/src/test/java/org/jclouds/chef/suppliers/ChefVersionSupplierTest.java
+++ b/core/src/test/java/org/jclouds/chef/suppliers/ChefVersionSupplierTest.java
@@ -31,6 +31,8 @@ public class ChefVersionSupplierTest {
 
    public void testReturnsDefaultVersion() {
       assertEquals(new ChefVersionSupplier("15").get(), DEFAULT_VERSION);
+      assertEquals(new ChefVersionSupplier("0").get(), DEFAULT_VERSION);
+      assertEquals(new ChefVersionSupplier("0.").get(), DEFAULT_VERSION);
    }
 
    public void testReturnsMajorVersionIfNotZero() {

Reply via email to