]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6517 fix loading of field Sonar-RequirePlugins
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Mon, 11 May 2015 12:14:54 +0000 (14:14 +0200)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Mon, 11 May 2015 12:14:54 +0000 (14:14 +0200)
server/sonar-server/src/main/java/org/sonar/server/plugins/PluginReferentialMetadataConverter.java
sonar-core/src/main/java/org/sonar/core/platform/PluginInfo.java
sonar-core/src/test/java/org/sonar/core/platform/PluginInfoTest.java

index 70afcb4206899895e81988a9e52460f314071c09..1355a971f0c1a63cfc4d41199fa0f2b70b2b03fa 100644 (file)
  */
 package org.sonar.server.plugins;
 
+import com.google.common.base.Function;
+import com.google.common.collect.Collections2;
 import org.sonar.core.platform.PluginInfo;
 import org.sonar.updatecenter.common.PluginManifest;
 import org.sonar.updatecenter.common.PluginReferential;
 import org.sonar.updatecenter.common.PluginReferentialManifestConverter;
 import org.sonar.updatecenter.common.Version;
 
+import javax.annotation.Nonnull;
+
 import java.util.Collection;
 import java.util.List;
 
@@ -36,8 +40,8 @@ public class PluginReferentialMetadataConverter {
     // Only static call
   }
 
-  public static PluginReferential getInstalledPluginReferential(Collection<PluginInfo> metadata) {
-    List<PluginManifest> pluginManifestList = getPluginManifestList(metadata);
+  public static PluginReferential getInstalledPluginReferential(Collection<PluginInfo> infos) {
+    List<PluginManifest> pluginManifestList = getPluginManifestList(infos);
     return PluginReferentialManifestConverter.fromPluginManifests(pluginManifestList);
   }
 
@@ -67,7 +71,17 @@ public class PluginReferentialMetadataConverter {
     pluginManifest.setHomepage(metadata.getHomepageUrl());
     pluginManifest.setIssueTrackerUrl(metadata.getIssueTrackerUrl());
     pluginManifest.setBasePlugin(metadata.getBasePlugin());
-    pluginManifest.setRequirePlugins(metadata.getRequiredPlugins().toArray(new String[] {}));
+    pluginManifest.setRequirePlugins(Collections2.transform(metadata.getRequiredPlugins(), RequiredPluginToString.INSTANCE).toArray(
+      new String[metadata.getRequiredPlugins().size()]));
     return pluginManifest;
   }
+
+  private enum RequiredPluginToString implements Function<PluginInfo.RequiredPlugin, String> {
+    INSTANCE;
+
+    @Override
+    public String apply(@Nonnull PluginInfo.RequiredPlugin requiredPlugin) {
+      return requiredPlugin.toString();
+    }
+  }
 }
index 66e1942ee58cd68f7666323ec62a052a54cd6521..71edd759fb2b815853c859e720248bae92e52cb9 100644 (file)
@@ -87,6 +87,11 @@ public class PluginInfo implements Comparable<PluginInfo> {
     public int hashCode() {
       return key.hashCode();
     }
+
+    @Override
+    public String toString() {
+      return new StringBuilder().append(key).append(':').append(minimalVersion.getName()).toString();
+    }
   }
 
   private final String key;
index ccc1d4793cc23e9b94b1dc7c1f93ae1531a8f896..02cdea2aebe82976550d901a3b7eb8fa7db5b436 100644 (file)
@@ -47,6 +47,9 @@ public class PluginInfoTest {
     PluginInfo.RequiredPlugin plugin = PluginInfo.RequiredPlugin.parse("java:1.1");
     assertThat(plugin.getKey()).isEqualTo("java");
     assertThat(plugin.getMinimalVersion().getName()).isEqualTo("1.1");
+    assertThat(plugin.toString()).isEqualTo("java:1.1");
+    assertThat(plugin.equals(PluginInfo.RequiredPlugin.parse("java:1.2"))).isTrue();
+    assertThat(plugin.equals(PluginInfo.RequiredPlugin.parse("php:1.2"))).isFalse();
 
     try {
       PluginInfo.RequiredPlugin.parse("java");