]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-3516 Use common code to find version components
authorDavid Gageot <david@gageot.net>
Wed, 20 Jun 2012 09:35:52 +0000 (11:35 +0200)
committerDavid Gageot <david@gageot.net>
Wed, 20 Jun 2012 09:35:52 +0000 (11:35 +0200)
sonar-core/src/main/java/org/sonar/core/plugins/DefaultPluginMetadata.java
sonar-core/src/test/java/org/sonar/core/plugins/DefaultPluginMetadataTest.java

index 0d2df0524e8d3841592ee2b25e84a5072dfeadd5..fb9498bc0f8e0721077b3ac049910ea7a405d865 100644 (file)
  */
 package org.sonar.core.plugins;
 
-import com.google.common.base.CharMatcher;
-import com.google.common.base.Splitter;
-import com.google.common.collect.ComparisonChain;
-import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.builder.ToStringBuilder;
 import org.apache.commons.lang.builder.ToStringStyle;
 import org.sonar.api.platform.PluginMetadata;
+import org.sonar.updatecenter.common.Version;
 
 import java.io.File;
 import java.util.List;
@@ -86,7 +83,7 @@ public class DefaultPluginMetadata implements PluginMetadata, Comparable<PluginM
   }
 
   public DefaultPluginMetadata setDeprecatedExtensions(List<File> files) {
-    this.deprecatedExtensions = (files==null ? Lists.<File>newArrayList() : files);
+    this.deprecatedExtensions = (files == null ? Lists.<File> newArrayList() : files);
     return this;
   }
 
@@ -192,31 +189,10 @@ public class DefaultPluginMetadata implements PluginMetadata, Comparable<PluginM
     if (null == this.sonarVersion) {
       return true; // Plugins without sonar version are so old, they are compatible with a version containing this code
     }
-    if (null == sonarVersion) {
-      return true;
-    }
-
-    // A version takes this form: x[.y][.z][-RCi|FCS|SNAPSHOT]
-    return ComparisonChain.start()
-        .compare(part(sonarVersion, 0), part(this.sonarVersion, 0)) // x
-        .compare(part(sonarVersion, 1), part(this.sonarVersion, 1)) // y
-        .compare(part(sonarVersion, 2), part(this.sonarVersion, 2)) // z
-        .compare(increment(sonarVersion), increment(this.sonarVersion)) // i
-        .result() >= 0;
-  }
-
-  private static int part(String version, int index) {
-    Iterable<String> parts = Splitter.on('.').split(StringUtils.substringBefore(version, "-"));
-    String part = Iterables.get(parts, index, "0");
-
-    return Integer.parseInt(part);
-  }
-
-  private static int increment(String version) {
-    String onlyDigits = CharMatcher.DIGIT.retainFrom(StringUtils.substringAfter(version, "-"));
-    String increment = StringUtils.defaultIfBlank(onlyDigits, "0");
 
-    return Integer.parseInt(increment);
+    Version minimumVersion = Version.create(this.sonarVersion);
+    Version actualVersion = Version.create(sonarVersion);
+    return actualVersion.compareTo(minimumVersion) >= 0;
   }
 
   public String getHomepage() {
index 5ac3f1dcc0ad64a5d8d3c4bb9f708c611505267f..c2e34ec93b2ab59bb2727fb3e9b08d22eb38a7d3 100644 (file)
@@ -125,7 +125,7 @@ public class DefaultPluginMetadataTest {
     assertThat(pluginWithVersion("3.1-RC2").isCompatibleWith("3.2-SNAPSHOT")).isTrue();
     assertThat(pluginWithVersion("3.1-RC1").isCompatibleWith("3.2-RC2")).isTrue();
     assertThat(pluginWithVersion("3.1-RC1").isCompatibleWith("3.1-RC2")).isTrue();
-    assertThat(pluginWithVersion("3.1-RC2").isCompatibleWith("3.1-RC1")).isFalse();
+    assertThat(pluginWithVersion("3.1-RC2").isCompatibleWith("3.1-RC1")).isTrue();
 
     assertThat(pluginWithVersion(null).isCompatibleWith("0")).isTrue();
     assertThat(pluginWithVersion(null).isCompatibleWith("3.1")).isTrue();