aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/sonar-server/src/test/projects/test-base-plugin-v2/src/org/sonar/plugins/testbase/api/BaseApi.java6
-rw-r--r--server/sonar-server/src/test/projects/test-base-plugin-v2/target/test-base-plugin-0.2-SNAPSHOT.jarbin2437 -> 3400 bytes
-rw-r--r--server/sonar-server/src/test/projects/test-base-plugin/src/org/sonar/plugins/testbase/api/BaseApi.java6
-rw-r--r--server/sonar-server/src/test/projects/test-base-plugin/target/test-base-plugin-0.1-SNAPSHOT.jarbin2437 -> 3400 bytes
-rw-r--r--server/sonar-server/src/test/projects/test-core-plugin/target/test-core-plugin-0.1-SNAPSHOT.jarbin2412 -> 2411 bytes
-rw-r--r--server/sonar-server/src/test/projects/test-extend-plugin/target/test-extend-plugin-0.1-SNAPSHOT.jarbin2481 -> 2480 bytes
-rw-r--r--server/sonar-server/src/test/projects/test-libs-plugin/target/test-libs-plugin-0.1-SNAPSHOT.jarbin40097 -> 40096 bytes
-rw-r--r--server/sonar-server/src/test/projects/test-require-plugin/pom.xml7
-rw-r--r--server/sonar-server/src/test/projects/test-require-plugin/src/RequirePlugin.java5
-rw-r--r--server/sonar-server/src/test/projects/test-require-plugin/target/test-require-plugin-0.1-SNAPSHOT.jarbin2488 -> 2576 bytes
-rw-r--r--server/sonar-server/src/test/projects/test-requirenew-plugin/pom.xml7
-rw-r--r--server/sonar-server/src/test/projects/test-requirenew-plugin/src/RequirePlugin.java5
-rw-r--r--server/sonar-server/src/test/projects/test-requirenew-plugin/target/test-requirenew-plugin-0.1-SNAPSHOT.jarbin2553 -> 2643 bytes
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/PluginLoader.java11
14 files changed, 45 insertions, 2 deletions
diff --git a/server/sonar-server/src/test/projects/test-base-plugin-v2/src/org/sonar/plugins/testbase/api/BaseApi.java b/server/sonar-server/src/test/projects/test-base-plugin-v2/src/org/sonar/plugins/testbase/api/BaseApi.java
new file mode 100644
index 00000000000..356a9c829af
--- /dev/null
+++ b/server/sonar-server/src/test/projects/test-base-plugin-v2/src/org/sonar/plugins/testbase/api/BaseApi.java
@@ -0,0 +1,6 @@
+package org.sonar.plugins.testbase.api;
+
+public class BaseApi {
+ public void doNothing() {
+ }
+}
diff --git a/server/sonar-server/src/test/projects/test-base-plugin-v2/target/test-base-plugin-0.2-SNAPSHOT.jar b/server/sonar-server/src/test/projects/test-base-plugin-v2/target/test-base-plugin-0.2-SNAPSHOT.jar
index 9bd9e0e0fc1..32ac594aad1 100644
--- a/server/sonar-server/src/test/projects/test-base-plugin-v2/target/test-base-plugin-0.2-SNAPSHOT.jar
+++ b/server/sonar-server/src/test/projects/test-base-plugin-v2/target/test-base-plugin-0.2-SNAPSHOT.jar
Binary files differ
diff --git a/server/sonar-server/src/test/projects/test-base-plugin/src/org/sonar/plugins/testbase/api/BaseApi.java b/server/sonar-server/src/test/projects/test-base-plugin/src/org/sonar/plugins/testbase/api/BaseApi.java
new file mode 100644
index 00000000000..356a9c829af
--- /dev/null
+++ b/server/sonar-server/src/test/projects/test-base-plugin/src/org/sonar/plugins/testbase/api/BaseApi.java
@@ -0,0 +1,6 @@
+package org.sonar.plugins.testbase.api;
+
+public class BaseApi {
+ public void doNothing() {
+ }
+}
diff --git a/server/sonar-server/src/test/projects/test-base-plugin/target/test-base-plugin-0.1-SNAPSHOT.jar b/server/sonar-server/src/test/projects/test-base-plugin/target/test-base-plugin-0.1-SNAPSHOT.jar
index 2a6148ce7b6..f943a16b28f 100644
--- a/server/sonar-server/src/test/projects/test-base-plugin/target/test-base-plugin-0.1-SNAPSHOT.jar
+++ b/server/sonar-server/src/test/projects/test-base-plugin/target/test-base-plugin-0.1-SNAPSHOT.jar
Binary files differ
diff --git a/server/sonar-server/src/test/projects/test-core-plugin/target/test-core-plugin-0.1-SNAPSHOT.jar b/server/sonar-server/src/test/projects/test-core-plugin/target/test-core-plugin-0.1-SNAPSHOT.jar
index 62eba2aa80f..278b4596227 100644
--- a/server/sonar-server/src/test/projects/test-core-plugin/target/test-core-plugin-0.1-SNAPSHOT.jar
+++ b/server/sonar-server/src/test/projects/test-core-plugin/target/test-core-plugin-0.1-SNAPSHOT.jar
Binary files differ
diff --git a/server/sonar-server/src/test/projects/test-extend-plugin/target/test-extend-plugin-0.1-SNAPSHOT.jar b/server/sonar-server/src/test/projects/test-extend-plugin/target/test-extend-plugin-0.1-SNAPSHOT.jar
index 7a81fdf0cce..71dcee70496 100644
--- a/server/sonar-server/src/test/projects/test-extend-plugin/target/test-extend-plugin-0.1-SNAPSHOT.jar
+++ b/server/sonar-server/src/test/projects/test-extend-plugin/target/test-extend-plugin-0.1-SNAPSHOT.jar
Binary files differ
diff --git a/server/sonar-server/src/test/projects/test-libs-plugin/target/test-libs-plugin-0.1-SNAPSHOT.jar b/server/sonar-server/src/test/projects/test-libs-plugin/target/test-libs-plugin-0.1-SNAPSHOT.jar
index 85e4772f474..590d91b74f2 100644
--- a/server/sonar-server/src/test/projects/test-libs-plugin/target/test-libs-plugin-0.1-SNAPSHOT.jar
+++ b/server/sonar-server/src/test/projects/test-libs-plugin/target/test-libs-plugin-0.1-SNAPSHOT.jar
Binary files differ
diff --git a/server/sonar-server/src/test/projects/test-require-plugin/pom.xml b/server/sonar-server/src/test/projects/test-require-plugin/pom.xml
index 1f77e233f62..2c45fb3afb0 100644
--- a/server/sonar-server/src/test/projects/test-require-plugin/pom.xml
+++ b/server/sonar-server/src/test/projects/test-require-plugin/pom.xml
@@ -16,6 +16,13 @@
<version>4.5.4</version>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.codehaus.sonar.tests</groupId>
+ <artifactId>test-base-plugin</artifactId>
+ <version>0.1-SNAPSHOT</version>
+ <type>sonar-plugin</type>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
diff --git a/server/sonar-server/src/test/projects/test-require-plugin/src/RequirePlugin.java b/server/sonar-server/src/test/projects/test-require-plugin/src/RequirePlugin.java
index 440f73bfb58..80aa622cf84 100644
--- a/server/sonar-server/src/test/projects/test-require-plugin/src/RequirePlugin.java
+++ b/server/sonar-server/src/test/projects/test-require-plugin/src/RequirePlugin.java
@@ -5,6 +5,11 @@ import java.util.List;
public class RequirePlugin extends SonarPlugin {
+ public RequirePlugin() {
+ // call a class that is in the api published by the base plugin
+ new org.sonar.plugins.testbase.api.BaseApi().doNothing();
+ }
+
public List getExtensions() {
return Collections.emptyList();
}
diff --git a/server/sonar-server/src/test/projects/test-require-plugin/target/test-require-plugin-0.1-SNAPSHOT.jar b/server/sonar-server/src/test/projects/test-require-plugin/target/test-require-plugin-0.1-SNAPSHOT.jar
index ac1f9f68e46..abf9bbed5eb 100644
--- a/server/sonar-server/src/test/projects/test-require-plugin/target/test-require-plugin-0.1-SNAPSHOT.jar
+++ b/server/sonar-server/src/test/projects/test-require-plugin/target/test-require-plugin-0.1-SNAPSHOT.jar
Binary files differ
diff --git a/server/sonar-server/src/test/projects/test-requirenew-plugin/pom.xml b/server/sonar-server/src/test/projects/test-requirenew-plugin/pom.xml
index ca207b10c19..58aee047206 100644
--- a/server/sonar-server/src/test/projects/test-requirenew-plugin/pom.xml
+++ b/server/sonar-server/src/test/projects/test-requirenew-plugin/pom.xml
@@ -16,6 +16,13 @@
<version>4.5.4</version>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.codehaus.sonar.tests</groupId>
+ <artifactId>test-base-plugin</artifactId>
+ <version>0.1-SNAPSHOT</version>
+ <type>sonar-plugin</type>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
diff --git a/server/sonar-server/src/test/projects/test-requirenew-plugin/src/RequirePlugin.java b/server/sonar-server/src/test/projects/test-requirenew-plugin/src/RequirePlugin.java
index 440f73bfb58..80aa622cf84 100644
--- a/server/sonar-server/src/test/projects/test-requirenew-plugin/src/RequirePlugin.java
+++ b/server/sonar-server/src/test/projects/test-requirenew-plugin/src/RequirePlugin.java
@@ -5,6 +5,11 @@ import java.util.List;
public class RequirePlugin extends SonarPlugin {
+ public RequirePlugin() {
+ // call a class that is in the api published by the base plugin
+ new org.sonar.plugins.testbase.api.BaseApi().doNothing();
+ }
+
public List getExtensions() {
return Collections.emptyList();
}
diff --git a/server/sonar-server/src/test/projects/test-requirenew-plugin/target/test-requirenew-plugin-0.1-SNAPSHOT.jar b/server/sonar-server/src/test/projects/test-requirenew-plugin/target/test-requirenew-plugin-0.1-SNAPSHOT.jar
index 3437dfee71c..671f69f10f8 100644
--- a/server/sonar-server/src/test/projects/test-requirenew-plugin/target/test-requirenew-plugin-0.1-SNAPSHOT.jar
+++ b/server/sonar-server/src/test/projects/test-requirenew-plugin/target/test-requirenew-plugin-0.1-SNAPSHOT.jar
Binary files differ
diff --git a/sonar-core/src/main/java/org/sonar/core/platform/PluginLoader.java b/sonar-core/src/main/java/org/sonar/core/platform/PluginLoader.java
index 7afda907021..8722703d7f7 100644
--- a/sonar-core/src/main/java/org/sonar/core/platform/PluginLoader.java
+++ b/sonar-core/src/main/java/org/sonar/core/platform/PluginLoader.java
@@ -36,6 +36,7 @@ import java.net.URL;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
+import org.sonar.classloader.Mask;
import static java.util.Arrays.asList;
import static org.sonar.classloader.ClassloaderBuilder.LoadingOrder.SELF_FIRST;
@@ -56,7 +57,7 @@ import static org.sonar.classloader.ClassloaderBuilder.LoadingOrder.SELF_FIRST;
*/
public class PluginLoader implements BatchComponent, ServerComponent {
- private static final String[] DEFAULT_SHARED_RESOURCES = {"org/sonar/plugins/", "com/sonar/plugins/", "com/sonarsource/plugins/"};
+ private static final String[] DEFAULT_SHARED_RESOURCES = {"org/sonar/plugins", "com/sonar/plugins", "com/sonarsource/plugins"};
private final PluginExploder exploder;
@@ -91,7 +92,7 @@ public class PluginLoader implements BatchComponent, ServerComponent {
def.addMainClass(info.getKey(), info.getMainClass());
for (String defaultSharedResource : DEFAULT_SHARED_RESOURCES) {
- def.getMask().addInclusion(defaultSharedResource + info.getKey() + "/");
+ def.getMask().addInclusion(String.format("%s/%s/api/", defaultSharedResource, info.getKey()));
}
if (Strings.isNullOrEmpty(info.getBasePlugin())) {
// The plugins that extend other plugins can only add some files to classloader.
@@ -110,11 +111,17 @@ public class PluginLoader implements BatchComponent, ServerComponent {
for (ClassloaderDef def : defs) {
builder
.newClassloader(def.getBasePluginKey(), getClass().getClassLoader())
+ // resources to be exported to other plugin classloaders (siblings)
.setExportMask(def.getBasePluginKey(), def.getMask())
.setLoadingOrder(def.getBasePluginKey(), def.isSelfFirstStrategy() ? SELF_FIRST : LoadingOrder.PARENT_FIRST);
for (File file : def.getFiles()) {
builder.addURL(def.getBasePluginKey(), fileToUrl(file));
}
+ for (ClassloaderDef sibling : defs) {
+ if (!sibling.getBasePluginKey().equals(def.getBasePluginKey())) {
+ builder.addSibling(def.getBasePluginKey(), sibling.getBasePluginKey(), new Mask());
+ }
+ }
}
Map<String, ClassLoader> classloadersByBasePluginKey = builder.build();
for (ClassloaderDef def : defs) {