]> source.dussan.org Git - sonarqube.git/commitdiff
Replace array of string by list in DefaultPluginMetadata and use immutable listin...
authorJulien Lancelot <julien.lancelot@gmail.com>
Wed, 20 Feb 2013 10:23:06 +0000 (11:23 +0100)
committerJulien Lancelot <julien.lancelot@gmail.com>
Wed, 20 Feb 2013 10:23:28 +0000 (11:23 +0100)
sonar-core/src/main/java/org/sonar/core/plugins/DefaultPluginMetadata.java
sonar-core/src/main/java/org/sonar/core/plugins/PluginInstaller.java
sonar-core/src/test/java/org/sonar/core/plugins/DefaultPluginMetadataTest.java
sonar-core/src/test/java/org/sonar/core/plugins/PluginInstallerTest.java
sonar-plugin-api/src/main/java/org/sonar/api/platform/PluginMetadata.java
sonar-server/src/main/java/org/sonar/server/plugins/PluginReferentialMetadataConverter.java
sonar-server/src/test/java/org/sonar/server/plugins/InstalledPluginReferentialFactoryTest.java
sonar-server/src/test/java/org/sonar/server/plugins/PluginReferentialMetadataConverterTest.java

index fa6a8a0f9016e59f255aa6b9d308f1071057b9c2..84fab448492603ee512cd8a5bcf40a251895c2ee 100644 (file)
@@ -19,6 +19,7 @@
  */
 package org.sonar.core.plugins;
 
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.builder.ToStringBuilder;
@@ -33,9 +34,9 @@ import static com.google.common.collect.Lists.newArrayList;
 
 public class DefaultPluginMetadata implements PluginMetadata, Comparable<PluginMetadata> {
   private File file;
-  private List<File> deployedFiles = newArrayList();
-  private List<File> deprecatedExtensions = newArrayList();
-  private String[] pathsToInternalDeps = new String[0];
+  private List<File> deployedFiles;
+  private List<File> deprecatedExtensions;
+  private List<String> pathsToInternalDeps;
   private String key;
   private String version;
   private String sonarVersion;
@@ -51,9 +52,13 @@ public class DefaultPluginMetadata implements PluginMetadata, Comparable<PluginM
   private boolean core;
   private String implementationBuild;
   private String parent;
-  private String[] requiredPlugins = new String[0];
+  private List<String> requiredPlugins;
 
   private DefaultPluginMetadata() {
+    deployedFiles = newArrayList();
+    deprecatedExtensions = newArrayList();
+    pathsToInternalDeps = newArrayList();
+    requiredPlugins = newArrayList();
   }
 
   public static DefaultPluginMetadata create(File file) {
@@ -92,12 +97,12 @@ public class DefaultPluginMetadata implements PluginMetadata, Comparable<PluginM
     return this;
   }
 
-  public String[] getPathsToInternalDeps() {
-    return pathsToInternalDeps;
+  public List<String> getPathsToInternalDeps() {
+    return ImmutableList.copyOf(pathsToInternalDeps);
   }
 
-  public DefaultPluginMetadata setPathsToInternalDeps(String[] pathsToInternalDeps) {
-    this.pathsToInternalDeps = pathsToInternalDeps;
+  public DefaultPluginMetadata setPathsToInternalDeps(List<String> pathsToInternalDeps) {
+    this.pathsToInternalDeps = ImmutableList.copyOf(pathsToInternalDeps);
     return this;
   }
 
@@ -191,12 +196,13 @@ public class DefaultPluginMetadata implements PluginMetadata, Comparable<PluginM
     return this;
   }
 
-  public String[] getRequiredPlugins() {
-    return requiredPlugins;
+  public List<String> getRequiredPlugins() {
+    return ImmutableList.copyOf(requiredPlugins);
   }
 
-  public void setRequiredPlugins(String[] requiredPlugins) {
-    this.requiredPlugins = requiredPlugins;
+  public DefaultPluginMetadata setRequiredPlugins(List<String> requiredPlugins) {
+    this.requiredPlugins = ImmutableList.copyOf(requiredPlugins);
+    return this;
   }
 
   /**
index af469176a28aefa83c353f39bcbc137570a7b0c6..55e82a58de9a5e4d77e5b433983e0ab923a722ca 100644 (file)
@@ -26,6 +26,7 @@ import org.sonar.updatecenter.common.PluginManifest;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.Arrays;
 import java.util.List;
 import java.util.zip.ZipEntry;
 
@@ -72,7 +73,7 @@ public class PluginInstaller {
   }
 
   private void copyDependencies(DefaultPluginMetadata metadata, File pluginFile, File pluginBasedir) throws IOException {
-    if (metadata.getPathsToInternalDeps().length > 0) {
+    if (!metadata.getPathsToInternalDeps().isEmpty()) {
       // needs to unzip the jar
       ZipUtils.unzip(pluginFile, pluginBasedir, new LibFilter());
       for (String depPath : metadata.getPathsToInternalDeps()) {
@@ -115,12 +116,12 @@ public class PluginInstaller {
       metadata.setVersion(manifest.getVersion());
       metadata.setSonarVersion(manifest.getSonarVersion());
       metadata.setHomepage(manifest.getHomepage());
-      metadata.setPathsToInternalDeps(manifest.getDependencies());
+      metadata.setPathsToInternalDeps(Arrays.asList(manifest.getDependencies()));
       metadata.setUseChildFirstClassLoader(manifest.isUseChildFirstClassLoader());
       metadata.setBasePlugin(manifest.getBasePlugin());
       metadata.setImplementationBuild(manifest.getImplementationBuild());
       metadata.setParent(manifest.getParent());
-      metadata.setRequiredPlugins(manifest.getRequiresPlugins());
+      metadata.setRequiredPlugins(Arrays.asList(manifest.getRequiresPlugins()));
       metadata.setCore(isCore);
       return metadata;
 
index 83eeab7a47a630f7b0bc1b2dff240ed93b26e70f..5de1e93a2e3f40e6b15231bbe7037a481ac91735 100644 (file)
@@ -26,6 +26,7 @@ import java.io.File;
 import java.util.Arrays;
 import java.util.List;
 
+import static com.google.common.collect.Lists.newArrayList;
 import static com.google.common.collect.Ordering.natural;
 import static org.fest.assertions.Assertions.assertThat;
 
@@ -78,7 +79,7 @@ public class DefaultPluginMetadataTest {
   @Test
   public void testInternalPathToDependencies() {
     DefaultPluginMetadata metadata = DefaultPluginMetadata.create(new File("sonar-checkstyle-plugin.jar"))
-        .setPathsToInternalDeps(new String[] {"META-INF/lib/commons-lang.jar", "META-INF/lib/commons-io.jar"});
+        .setPathsToInternalDeps(newArrayList("META-INF/lib/commons-lang.jar", "META-INF/lib/commons-io.jar"));
 
     assertThat(metadata.getPathsToInternalDeps()).containsOnly("META-INF/lib/commons-lang.jar", "META-INF/lib/commons-io.jar");
   }
index 91eafaf5fabd8035499b86079e4d7b65fe0a54cd..004465f23444099b750b970421ba822549464655 100644 (file)
@@ -113,7 +113,7 @@ public class PluginInstallerTest {
     DefaultPluginMetadata metadata = extractor.extractMetadata(getFile("fake2-plugin-1.1.jar"), true);
 
     assertThat(metadata.getKey()).isEqualTo("fake2");
-    assertThat(metadata.getRequiredPlugins()).isEqualTo(new String[]{"fake1:1.1"});
+    assertThat(metadata.getRequiredPlugins().get(0)).isEqualTo("fake1:1.1");
   }
 
   static File getFile(String filename) {
index a8958e9f5574029a2bf3139df45cbe9190b1941c..c43d50897fd400a5f1cffbb6cc9da4f06897e43f 100644 (file)
@@ -54,7 +54,7 @@ public interface PluginMetadata {
 
   String getParent();
 
-  String[] getRequiredPlugins();
+  List<String> getRequiredPlugins();
 
   boolean isCore();
 }
index 4e2373de6ebe06432e4a00c6741bd54a19998f3f..07c8f2de8801a815e5520c9b8e3672bc32001b5a 100644 (file)
@@ -63,7 +63,7 @@ public class PluginReferentialMetadataConverter {
     pluginManifest.setHomepage(metadata.getHomepage());
     pluginManifest.setBasePlugin(metadata.getBasePlugin());
     pluginManifest.setParent(metadata.getParent());
-    pluginManifest.setRequiresPlugins(metadata.getRequiredPlugins());
+    pluginManifest.setRequiresPlugins(metadata.getRequiredPlugins().toArray(new String []{}));
     return pluginManifest;
   }
 }
index b4f2ade9e88128fa4bac36a190f7b549886af403..c6ce0e6e319520d4a1bbde919cd3acbd88a6fe3a 100644 (file)
@@ -35,7 +35,6 @@ public class InstalledPluginReferentialFactoryTest {
   public void should_create_plugin_referential() {
     PluginMetadata metadata = mock(DefaultPluginMetadata.class);
     when(metadata.getKey()).thenReturn("foo");
-    when(metadata.getRequiredPlugins()).thenReturn(new String[]{});
     PluginRepository pluginRepository = mock(PluginRepository.class);
     when(pluginRepository.getMetadata()).thenReturn(newArrayList(metadata));
     InstalledPluginReferentialFactory installedPluginReferentialFactory = new InstalledPluginReferentialFactory(pluginRepository);
index 5e645593d402408b813ca4bb0f0b464e4d299797..ff8134dd8935d608940ff3083151e51ee6d54e5e 100644 (file)
@@ -35,7 +35,6 @@ public class PluginReferentialMetadataConverterTest {
   public void should_convert_metadata_to_plugin_referential() {
     PluginMetadata metadata = mock(DefaultPluginMetadata.class);
     when(metadata.getKey()).thenReturn("foo");
-    when(metadata.getRequiredPlugins()).thenReturn(new String []{});
 
     PluginReferential pluginReferential = PluginReferentialMetadataConverter.getInstalledPluginReferential(newArrayList(metadata));
     assertThat(pluginReferential).isNotNull();
@@ -47,7 +46,6 @@ public class PluginReferentialMetadataConverterTest {
   public void should_not_add_core_plugin() {
     PluginMetadata metadata = mock(DefaultPluginMetadata.class);
     when(metadata.getKey()).thenReturn("foo");
-    when(metadata.getRequiredPlugins()).thenReturn(new String []{});
     when(metadata.isCore()).thenReturn(true);
 
     PluginReferential pluginReferential = PluginReferentialMetadataConverter.getInstalledPluginReferential(newArrayList(metadata));