*/
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;
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;
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) {
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;
}
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;
}
/**
import java.io.File;
import java.io.IOException;
+import java.util.Arrays;
import java.util.List;
import java.util.zip.ZipEntry;
}
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()) {
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;
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;
@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");
}
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) {
String getParent();
- String[] getRequiredPlugins();
+ List<String> getRequiredPlugins();
boolean isCore();
}
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;
}
}
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);
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();
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));