From 81a06e86f6aab48131591675ccc0dd54261c0e4f Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Thu, 14 Jun 2018 15:43:18 +0200 Subject: [PATCH] SONAR-10690 install Core Extensions before plugins --- .../ce/container/ComputeEngineContainerImpl.java | 4 ++-- .../platform/platformlevel/PlatformLevel4.java | 6 +++--- .../org/sonar/core/extension/PlatformLevel.java | 14 ++++++++++++++ .../core/extension/PlatformLevelPredicates.java | 4 ++++ .../sonar/scanner/scan/ModuleScanContainer.java | 4 ++-- .../sonar/scanner/scan/ProjectScanContainer.java | 4 ++-- .../java/org/sonar/scanner/task/TaskContainer.java | 4 ++-- 7 files changed, 29 insertions(+), 11 deletions(-) create mode 100644 sonar-core/src/main/java/org/sonar/core/extension/PlatformLevel.java create mode 100644 sonar-core/src/main/java/org/sonar/core/extension/PlatformLevelPredicates.java diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java b/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java index 1c45927fa2b..a6760848531 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java @@ -210,10 +210,10 @@ public class ComputeEngineContainerImpl implements ComputeEngineContainer { populateLevel4(this.level4, props); configureFromModules(this.level4); - ServerExtensionInstaller extensionInstaller = this.level4.getComponentByType(ServerExtensionInstaller.class); - extensionInstaller.installExtensions(this.level4); CoreExtensionsInstaller coreExtensionsInstaller = this.level4.getComponentByType(CECoreExtensionsInstaller.class); coreExtensionsInstaller.install(this.level4, t -> true); + ServerExtensionInstaller extensionInstaller = this.level4.getComponentByType(ServerExtensionInstaller.class); + extensionInstaller.installExtensions(this.level4); this.level4.startComponents(); PlatformEditionProvider editionProvider = this.level4.getComponentByType(PlatformEditionProvider.class); Loggers.get(ComputeEngineContainerImpl.class) diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java b/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java index fa23da44099..306f7a36372 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java @@ -579,11 +579,11 @@ public class PlatformLevel4 extends PlatformLevel { @Override public PlatformLevel start() { - ServerExtensionInstaller extensionInstaller = get(ServerExtensionInstaller.class); - CoreExtensionsInstaller coreExtensionsInstaller = get(WebCoreExtensionsInstaller.class); ComponentContainer container = getContainer(); - extensionInstaller.installExtensions(container); + CoreExtensionsInstaller coreExtensionsInstaller = get(WebCoreExtensionsInstaller.class); coreExtensionsInstaller.install(container, t -> true); + ServerExtensionInstaller extensionInstaller = get(ServerExtensionInstaller.class); + extensionInstaller.installExtensions(container); super.start(); diff --git a/sonar-core/src/main/java/org/sonar/core/extension/PlatformLevel.java b/sonar-core/src/main/java/org/sonar/core/extension/PlatformLevel.java new file mode 100644 index 00000000000..6396deac9fe --- /dev/null +++ b/sonar-core/src/main/java/org/sonar/core/extension/PlatformLevel.java @@ -0,0 +1,14 @@ +package org.sonar.core.extension; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface PlatformLevel { + int value() default 4; +} diff --git a/sonar-core/src/main/java/org/sonar/core/extension/PlatformLevelPredicates.java b/sonar-core/src/main/java/org/sonar/core/extension/PlatformLevelPredicates.java new file mode 100644 index 00000000000..bda0f9cfcbc --- /dev/null +++ b/sonar-core/src/main/java/org/sonar/core/extension/PlatformLevelPredicates.java @@ -0,0 +1,4 @@ +package org.sonar.core.extension; + +public class PlatformLevelPredicates { +} diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ModuleScanContainer.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ModuleScanContainer.java index af03f0ae932..2d55e97cd1a 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ModuleScanContainer.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ModuleScanContainer.java @@ -168,10 +168,10 @@ public class ModuleScanContainer extends ComponentContainer { } private void addExtensions() { - ExtensionInstaller pluginInstaller = getComponentByType(ExtensionInstaller.class); - pluginInstaller.install(this, e -> isScannerSide(e) && isInstantiationStrategy(e, PER_PROJECT)); CoreExtensionsInstaller coreExtensionsInstaller = getComponentByType(CoreExtensionsInstaller.class); coreExtensionsInstaller.install(this, t -> isInstantiationStrategy(t, PER_PROJECT)); + ExtensionInstaller pluginInstaller = getComponentByType(ExtensionInstaller.class); + pluginInstaller.install(this, e -> isScannerSide(e) && isInstantiationStrategy(e, PER_PROJECT)); } @Override diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ProjectScanContainer.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ProjectScanContainer.java index c0ab266b34f..1ed39274eba 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ProjectScanContainer.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ProjectScanContainer.java @@ -241,10 +241,10 @@ public class ProjectScanContainer extends ComponentContainer { } private void addBatchExtensions() { - getComponentByType(ExtensionInstaller.class) - .install(this, getBatchPluginExtensionsFilter()); getComponentByType(CoreExtensionsInstaller.class) .install(this, extension -> isInstantiationStrategy(extension, PER_BATCH)); + getComponentByType(ExtensionInstaller.class) + .install(this, getBatchPluginExtensionsFilter()); } @VisibleForTesting diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/task/TaskContainer.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/task/TaskContainer.java index 4d81fa18127..1d0c943aef1 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/task/TaskContainer.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/task/TaskContainer.java @@ -59,10 +59,10 @@ public class TaskContainer extends ComponentContainer { } private void addTaskExtensions() { - getComponentByType(ExtensionInstaller.class) - .install(this, extension -> isScannerSide(extension) && isInstantiationStrategy(extension, PER_TASK)); getComponentByType(CoreExtensionsInstaller.class) .install(this, t -> isInstantiationStrategy(t, PER_TASK)); + getComponentByType(ExtensionInstaller.class) + .install(this, extension -> isScannerSide(extension) && isInstantiationStrategy(extension, PER_TASK)); } @Override -- 2.39.5