aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-core
diff options
context:
space:
mode:
Diffstat (limited to 'sonar-core')
-rw-r--r--sonar-core/pom.xml2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/PluginInfo.java14
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/RemotePlugin.java25
-rw-r--r--sonar-core/src/test/java/org/sonar/core/platform/PluginInfoTest.java3
-rw-r--r--sonar-core/src/test/java/org/sonar/core/platform/RemotePluginTest.java29
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");
}
}