From b7d789ca78b5e3a359da424379ba9c7abf20851c Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Wed, 20 Feb 2013 11:23:06 +0100 Subject: [PATCH] Replace array of string by list in DefaultPluginMetadata and use immutable listin getter and setter --- .../core/plugins/DefaultPluginMetadata.java | 30 +++++++++++-------- .../sonar/core/plugins/PluginInstaller.java | 7 +++-- .../plugins/DefaultPluginMetadataTest.java | 3 +- .../core/plugins/PluginInstallerTest.java | 2 +- .../sonar/api/platform/PluginMetadata.java | 2 +- .../PluginReferentialMetadataConverter.java | 2 +- ...InstalledPluginReferentialFactoryTest.java | 1 - ...luginReferentialMetadataConverterTest.java | 2 -- 8 files changed, 27 insertions(+), 22 deletions(-) diff --git a/sonar-core/src/main/java/org/sonar/core/plugins/DefaultPluginMetadata.java b/sonar-core/src/main/java/org/sonar/core/plugins/DefaultPluginMetadata.java index fa6a8a0f901..84fab448492 100644 --- a/sonar-core/src/main/java/org/sonar/core/plugins/DefaultPluginMetadata.java +++ b/sonar-core/src/main/java/org/sonar/core/plugins/DefaultPluginMetadata.java @@ -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 { private File file; - private List deployedFiles = newArrayList(); - private List deprecatedExtensions = newArrayList(); - private String[] pathsToInternalDeps = new String[0]; + private List deployedFiles; + private List deprecatedExtensions; + private List pathsToInternalDeps; private String key; private String version; private String sonarVersion; @@ -51,9 +52,13 @@ public class DefaultPluginMetadata implements PluginMetadata, Comparable 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 getPathsToInternalDeps() { + return ImmutableList.copyOf(pathsToInternalDeps); } - public DefaultPluginMetadata setPathsToInternalDeps(String[] pathsToInternalDeps) { - this.pathsToInternalDeps = pathsToInternalDeps; + public DefaultPluginMetadata setPathsToInternalDeps(List pathsToInternalDeps) { + this.pathsToInternalDeps = ImmutableList.copyOf(pathsToInternalDeps); return this; } @@ -191,12 +196,13 @@ public class DefaultPluginMetadata implements PluginMetadata, Comparable getRequiredPlugins() { + return ImmutableList.copyOf(requiredPlugins); } - public void setRequiredPlugins(String[] requiredPlugins) { - this.requiredPlugins = requiredPlugins; + public DefaultPluginMetadata setRequiredPlugins(List requiredPlugins) { + this.requiredPlugins = ImmutableList.copyOf(requiredPlugins); + return this; } /** diff --git a/sonar-core/src/main/java/org/sonar/core/plugins/PluginInstaller.java b/sonar-core/src/main/java/org/sonar/core/plugins/PluginInstaller.java index af469176a28..55e82a58de9 100644 --- a/sonar-core/src/main/java/org/sonar/core/plugins/PluginInstaller.java +++ b/sonar-core/src/main/java/org/sonar/core/plugins/PluginInstaller.java @@ -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; diff --git a/sonar-core/src/test/java/org/sonar/core/plugins/DefaultPluginMetadataTest.java b/sonar-core/src/test/java/org/sonar/core/plugins/DefaultPluginMetadataTest.java index 83eeab7a47a..5de1e93a2e3 100644 --- a/sonar-core/src/test/java/org/sonar/core/plugins/DefaultPluginMetadataTest.java +++ b/sonar-core/src/test/java/org/sonar/core/plugins/DefaultPluginMetadataTest.java @@ -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"); } diff --git a/sonar-core/src/test/java/org/sonar/core/plugins/PluginInstallerTest.java b/sonar-core/src/test/java/org/sonar/core/plugins/PluginInstallerTest.java index 91eafaf5fab..004465f2344 100644 --- a/sonar-core/src/test/java/org/sonar/core/plugins/PluginInstallerTest.java +++ b/sonar-core/src/test/java/org/sonar/core/plugins/PluginInstallerTest.java @@ -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) { diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/platform/PluginMetadata.java b/sonar-plugin-api/src/main/java/org/sonar/api/platform/PluginMetadata.java index a8958e9f557..c43d50897fd 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/platform/PluginMetadata.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/platform/PluginMetadata.java @@ -54,7 +54,7 @@ public interface PluginMetadata { String getParent(); - String[] getRequiredPlugins(); + List getRequiredPlugins(); boolean isCore(); } diff --git a/sonar-server/src/main/java/org/sonar/server/plugins/PluginReferentialMetadataConverter.java b/sonar-server/src/main/java/org/sonar/server/plugins/PluginReferentialMetadataConverter.java index 4e2373de6eb..07c8f2de880 100644 --- a/sonar-server/src/main/java/org/sonar/server/plugins/PluginReferentialMetadataConverter.java +++ b/sonar-server/src/main/java/org/sonar/server/plugins/PluginReferentialMetadataConverter.java @@ -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; } } diff --git a/sonar-server/src/test/java/org/sonar/server/plugins/InstalledPluginReferentialFactoryTest.java b/sonar-server/src/test/java/org/sonar/server/plugins/InstalledPluginReferentialFactoryTest.java index b4f2ade9e88..c6ce0e6e319 100644 --- a/sonar-server/src/test/java/org/sonar/server/plugins/InstalledPluginReferentialFactoryTest.java +++ b/sonar-server/src/test/java/org/sonar/server/plugins/InstalledPluginReferentialFactoryTest.java @@ -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); diff --git a/sonar-server/src/test/java/org/sonar/server/plugins/PluginReferentialMetadataConverterTest.java b/sonar-server/src/test/java/org/sonar/server/plugins/PluginReferentialMetadataConverterTest.java index 5e645593d40..ff8134dd893 100644 --- a/sonar-server/src/test/java/org/sonar/server/plugins/PluginReferentialMetadataConverterTest.java +++ b/sonar-server/src/test/java/org/sonar/server/plugins/PluginReferentialMetadataConverterTest.java @@ -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)); -- 2.39.5