diff options
Diffstat (limited to 'sonar-core')
5 files changed, 57 insertions, 16 deletions
diff --git a/sonar-core/pom.xml b/sonar-core/pom.xml index e447767a2e6..db4949d70fb 100644 --- a/sonar-core/pom.xml +++ b/sonar-core/pom.xml @@ -44,7 +44,7 @@ <artifactId>sonar-plugin-api</artifactId> </dependency> <dependency> - <groupId>org.codehaus.sonar</groupId> + <groupId>org.sonarsource.update-center</groupId> <artifactId>sonar-update-center-common</artifactId> </dependency> diff --git a/sonar-core/src/main/java/org/sonar/core/platform/PluginInfo.java b/sonar-core/src/main/java/org/sonar/core/platform/PluginInfo.java index 2c0ae9a413f..a7b68c7558c 100644 --- a/sonar-core/src/main/java/org/sonar/core/platform/PluginInfo.java +++ b/sonar-core/src/main/java/org/sonar/core/platform/PluginInfo.java @@ -136,6 +136,9 @@ public class PluginInfo implements Comparable<PluginInfo> { @CheckForNull private String implementationBuild; + @CheckForNull + private boolean sonarLintSupported; + private final Set<RequiredPlugin> requiredPlugins = new HashSet<>(); public PluginInfo(String key) { @@ -217,6 +220,11 @@ public class PluginInfo implements Comparable<PluginInfo> { } @CheckForNull + public boolean isSonarLintSupported() { + return sonarLintSupported; + } + + @CheckForNull public String getBasePlugin() { return basePlugin; } @@ -288,6 +296,11 @@ public class PluginInfo implements Comparable<PluginInfo> { return this; } + public PluginInfo setSonarLintSupported(boolean sonarLintPlugin) { + this.sonarLintSupported = sonarLintPlugin; + return this; + } + public PluginInfo setBasePlugin(@Nullable String s) { if ("l10nen".equals(s)) { Loggers.get(PluginInfo.class).info("Plugin [{}] defines 'l10nen' as base plugin. " + @@ -395,6 +408,7 @@ public class PluginInfo implements Comparable<PluginInfo> { info.setHomepageUrl(manifest.getHomepage()); info.setIssueTrackerUrl(manifest.getIssueTrackerUrl()); info.setUseChildFirstClassLoader(manifest.isUseChildFirstClassLoader()); + info.setSonarLintSupported(manifest.isSonarLintSupported()); info.setBasePlugin(manifest.getBasePlugin()); info.setImplementationBuild(manifest.getImplementationBuild()); String[] requiredPlugins = manifest.getRequirePlugins(); diff --git a/sonar-core/src/main/java/org/sonar/core/platform/RemotePlugin.java b/sonar-core/src/main/java/org/sonar/core/platform/RemotePlugin.java index d7e24418de4..13f97be6abd 100644 --- a/sonar-core/src/main/java/org/sonar/core/platform/RemotePlugin.java +++ b/sonar-core/src/main/java/org/sonar/core/platform/RemotePlugin.java @@ -27,6 +27,7 @@ import org.apache.commons.lang.StringUtils; public class RemotePlugin { private String pluginKey; + private boolean sonarLintSupported; private RemotePluginFile file = null; public RemotePlugin(String pluginKey) { @@ -36,14 +37,16 @@ public class RemotePlugin { public static RemotePlugin create(PluginInfo pluginInfo) { RemotePlugin result = new RemotePlugin(pluginInfo.getKey()); result.setFile(pluginInfo.getNonNullJarFile()); + result.setSonarLintSupported(pluginInfo.isSonarLintSupported()); return result; } public static RemotePlugin unmarshal(String row) { String[] fields = StringUtils.split(row, ","); RemotePlugin result = new RemotePlugin(fields[0]); - if (fields.length >= 2) { - String[] nameAndHash = StringUtils.split(fields[1], "|"); + if (fields.length >= 3) { + result.setSonarLintSupported(StringUtils.equals("true", fields[1])); + String[] nameAndHash = StringUtils.split(fields[2], "|"); result.setFile(nameAndHash[0], nameAndHash[1]); } return result; @@ -51,8 +54,13 @@ public class RemotePlugin { public String marshal() { StringBuilder sb = new StringBuilder(); - sb.append(pluginKey); - sb.append(",").append(file.getFilename()).append("|").append(file.getHash()); + sb.append(pluginKey) + .append(",") + .append(sonarLintSupported) + .append(",") + .append(file.getFilename()) + .append("|") + .append(file.getHash()); return sb.toString(); } @@ -65,6 +73,11 @@ public class RemotePlugin { return this; } + public RemotePlugin setSonarLintSupported(boolean sonarLintPlugin) { + this.sonarLintSupported = sonarLintPlugin; + return this; + } + public RemotePlugin setFile(File f) { try (FileInputStream fis = new FileInputStream(f)) { return this.setFile(f.getName(), DigestUtils.md5Hex(fis)); @@ -77,6 +90,10 @@ public class RemotePlugin { return file; } + public boolean isSonarLintSupported() { + return sonarLintSupported; + } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/sonar-core/src/test/java/org/sonar/core/platform/PluginInfoTest.java b/sonar-core/src/test/java/org/sonar/core/platform/PluginInfoTest.java index 35eec26eb91..a433bb905cb 100644 --- a/sonar-core/src/test/java/org/sonar/core/platform/PluginInfoTest.java +++ b/sonar-core/src/test/java/org/sonar/core/platform/PluginInfoTest.java @@ -157,6 +157,7 @@ public class PluginInfoTest { assertThat(pluginInfo.getOrganizationUrl()).isNull(); assertThat(pluginInfo.getMinimalSqVersion()).isNull(); assertThat(pluginInfo.getRequiredPlugins()).isEmpty(); + assertThat(pluginInfo.isSonarLintSupported()).isFalse(); } @Test @@ -176,6 +177,7 @@ public class PluginInfoTest { manifest.setOrganizationUrl("http://sonarsource.com"); manifest.setIssueTrackerUrl("http://jira.com"); manifest.setRequirePlugins(new String[] {"java:2.0", "pmd:1.3"}); + manifest.setSonarLintSupported(true); File jarFile = temp.newFile(); PluginInfo pluginInfo = PluginInfo.create(jarFile, manifest); @@ -190,6 +192,7 @@ public class PluginInfoTest { assertThat(pluginInfo.getOrganizationUrl()).isEqualTo("http://sonarsource.com"); assertThat(pluginInfo.getMinimalSqVersion().getName()).isEqualTo("4.5.1"); assertThat(pluginInfo.getRequiredPlugins()).extracting("key").containsOnly("java", "pmd"); + assertThat(pluginInfo.isSonarLintSupported()).isTrue(); } @Test diff --git a/sonar-core/src/test/java/org/sonar/core/platform/RemotePluginTest.java b/sonar-core/src/test/java/org/sonar/core/platform/RemotePluginTest.java index fbe8f21f5e4..b1e609bdb68 100644 --- a/sonar-core/src/test/java/org/sonar/core/platform/RemotePluginTest.java +++ b/sonar-core/src/test/java/org/sonar/core/platform/RemotePluginTest.java @@ -21,8 +21,7 @@ package org.sonar.core.platform; import org.junit.Test; -import static org.hamcrest.core.Is.is; -import static org.junit.Assert.assertThat; +import static org.assertj.core.api.Assertions.assertThat; public class RemotePluginTest { @Test @@ -30,23 +29,31 @@ public class RemotePluginTest { RemotePlugin clirr1 = new RemotePlugin("clirr"); RemotePlugin clirr2 = new RemotePlugin("clirr"); RemotePlugin checkstyle = new RemotePlugin("checkstyle"); - assertThat(clirr1.equals(clirr2), is(true)); - assertThat(clirr1.equals(clirr1), is(true)); - assertThat(clirr1.equals(checkstyle), is(false)); + assertThat(clirr1).isEqualTo(clirr2); + assertThat(clirr1).isEqualTo(clirr1); + assertThat(clirr1).isNotEqualTo(checkstyle); } @Test - public void shouldMarshal() { + public void shouldMarshalNotSonarLintByDefault() { RemotePlugin clirr = new RemotePlugin("clirr").setFile("clirr-1.1.jar", "fakemd5"); String text = clirr.marshal(); - assertThat(text, is("clirr,clirr-1.1.jar|fakemd5")); + assertThat(text).isEqualTo("clirr,false,clirr-1.1.jar|fakemd5"); + } + + @Test + public void shouldMarshalSonarLint() { + RemotePlugin clirr = new RemotePlugin("clirr").setFile("clirr-1.1.jar", "fakemd5").setSonarLintSupported(true); + String text = clirr.marshal(); + assertThat(text).isEqualTo("clirr,true,clirr-1.1.jar|fakemd5"); } @Test public void shouldUnmarshal() { - RemotePlugin clirr = RemotePlugin.unmarshal("clirr,clirr-1.1.jar|fakemd5"); - assertThat(clirr.getKey(), is("clirr")); - assertThat(clirr.file().getFilename(), is("clirr-1.1.jar")); - assertThat(clirr.file().getHash(), is("fakemd5")); + RemotePlugin clirr = RemotePlugin.unmarshal("clirr,true,clirr-1.1.jar|fakemd5"); + assertThat(clirr.getKey()).isEqualTo("clirr"); + assertThat(clirr.isSonarLintSupported()).isTrue(); + assertThat(clirr.file().getFilename()).isEqualTo("clirr-1.1.jar"); + assertThat(clirr.file().getHash()).isEqualTo("fakemd5"); } } |