diff options
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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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) { |