diff options
author | Aurelien Poscia <aurelien.poscia@sonarsource.com> | 2023-09-28 10:15:21 +0200 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2023-09-28 20:03:12 +0000 |
commit | 5bfc3521a7245389ca2dbf3fb6f8d32291df82de (patch) | |
tree | debc9af355d8b2d285d8e0188425d6c0cad90c6b /sonar-core/src | |
parent | ea684ddb279361b820c310eb79801df2ce7846c5 (diff) | |
download | sonarqube-5bfc3521a7245389ca2dbf3fb6f8d32291df82de.tar.gz sonarqube-5bfc3521a7245389ca2dbf3fb6f8d32291df82de.zip |
SONAR-20578 remove dependency from common part to extension
Diffstat (limited to 'sonar-core/src')
7 files changed, 52 insertions, 0 deletions
diff --git a/sonar-core/src/main/java/org/sonar/core/extension/CoreExtension.java b/sonar-core/src/main/java/org/sonar/core/extension/CoreExtension.java index fb5b98df5cc..d95c2729fc3 100644 --- a/sonar-core/src/main/java/org/sonar/core/extension/CoreExtension.java +++ b/sonar-core/src/main/java/org/sonar/core/extension/CoreExtension.java @@ -50,6 +50,8 @@ public interface CoreExtension { addExtensions(asList(otherComponents)); return this; } + + void addWebApiV2ConfigurationClass(Class<?> clazz); } void load(Context context); diff --git a/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionsInstaller.java b/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionsInstaller.java index d9f8c96296c..2fcf6602818 100644 --- a/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionsInstaller.java +++ b/sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionsInstaller.java @@ -129,6 +129,11 @@ public abstract class CoreExtensionsInstaller { } @Override + public void addWebApiV2ConfigurationClass(Class<?> clazz) { + container.addWebApiV2ConfigurationClass(clazz); + } + + @Override public <T> CoreExtension.Context addExtensions(Collection<T> components) { requireNonNull(components, "components can't be null"); components.forEach(this::addExtension); diff --git a/sonar-core/src/main/java/org/sonar/core/platform/ExtensionContainer.java b/sonar-core/src/main/java/org/sonar/core/platform/ExtensionContainer.java index 18378e9a5a2..5a188c04b99 100644 --- a/sonar-core/src/main/java/org/sonar/core/platform/ExtensionContainer.java +++ b/sonar-core/src/main/java/org/sonar/core/platform/ExtensionContainer.java @@ -19,6 +19,7 @@ */ package org.sonar.core.platform; +import java.util.Set; import javax.annotation.CheckForNull; import javax.annotation.Nullable; @@ -31,6 +32,10 @@ public interface ExtensionContainer extends Container { ExtensionContainer declareExtension(@Nullable String defaultCategory, Object extension); + void addWebApiV2ConfigurationClass(Class<?> clazz); + + Set<Class<?>> getWebApiV2ConfigurationClasses(); + @CheckForNull ExtensionContainer getParent(); } diff --git a/sonar-core/src/main/java/org/sonar/core/platform/ListContainer.java b/sonar-core/src/main/java/org/sonar/core/platform/ListContainer.java index b96609d3f5c..cd2f9336997 100644 --- a/sonar-core/src/main/java/org/sonar/core/platform/ListContainer.java +++ b/sonar-core/src/main/java/org/sonar/core/platform/ListContainer.java @@ -21,8 +21,10 @@ package org.sonar.core.platform; import com.google.common.collect.Iterables; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Optional; +import java.util.Set; import javax.annotation.Nullable; import static java.util.Collections.unmodifiableList; @@ -32,6 +34,7 @@ import static java.util.Collections.unmodifiableList; */ public class ListContainer implements ExtensionContainer { private final List<Object> objects = new ArrayList<>(); + private final Set<Class<?>> webConfigurationClasses = new HashSet<>(); @Override public Container add(Object... objects) { @@ -89,6 +92,16 @@ public class ListContainer implements ExtensionContainer { } @Override + public void addWebApiV2ConfigurationClass(Class<?> clazz) { + webConfigurationClasses.add(clazz); + } + + @Override + public Set<Class<?>> getWebApiV2ConfigurationClasses() { + return webConfigurationClasses; + } + + @Override public ExtensionContainer getParent() { throw new UnsupportedOperationException(); } diff --git a/sonar-core/src/main/java/org/sonar/core/platform/SpringComponentContainer.java b/sonar-core/src/main/java/org/sonar/core/platform/SpringComponentContainer.java index 596398dc4e0..142b5780483 100644 --- a/sonar-core/src/main/java/org/sonar/core/platform/SpringComponentContainer.java +++ b/sonar-core/src/main/java/org/sonar/core/platform/SpringComponentContainer.java @@ -22,8 +22,10 @@ package org.sonar.core.platform; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Optional; +import java.util.Set; import java.util.function.Supplier; import javax.annotation.CheckForNull; import javax.annotation.Nullable; @@ -41,6 +43,7 @@ public class SpringComponentContainer implements StartableContainer { @Nullable protected final SpringComponentContainer parent; protected final List<SpringComponentContainer> children = new ArrayList<>(); + private final Set<Class<?>> webConfigurationClasses = new HashSet<>(); private final PropertyDefinitions propertyDefinitions; private final ComponentKeys componentKeys = new ComponentKeys(); @@ -107,6 +110,16 @@ public class SpringComponentContainer implements StartableContainer { return this; } + @Override + public void addWebApiV2ConfigurationClass(Class<?> clazz) { + webConfigurationClasses.add(clazz); + } + + @Override + public Set<Class<?>> getWebApiV2ConfigurationClasses() { + return Set.copyOf(webConfigurationClasses); + } + private <T> void registerInstance(T instance) { Supplier<T> supplier = () -> instance; Class<T> clazz = (Class<T>) instance.getClass(); diff --git a/sonar-core/src/test/java/org/sonar/core/platform/ListContainerTest.java b/sonar-core/src/test/java/org/sonar/core/platform/ListContainerTest.java index a2d2dad8633..492b8149be6 100644 --- a/sonar-core/src/test/java/org/sonar/core/platform/ListContainerTest.java +++ b/sonar-core/src/test/java/org/sonar/core/platform/ListContainerTest.java @@ -67,6 +67,13 @@ public class ListContainerTest { assertThatThrownBy(container::getParent).isInstanceOf(UnsupportedOperationException.class); } + @Test + public void addWebApiV2ConfigurationClass_whenClassIsAdded_isReturnedByGetWebApiV2ConfigurationClasses() { + ListContainer container = new ListContainer(); + container.addWebApiV2ConfigurationClass(org.sonar.core.test.Test.class); + assertThat(container.getWebApiV2ConfigurationClasses()).containsOnly(org.sonar.core.test.Test.class); + } + class A { } diff --git a/sonar-core/src/test/java/org/sonar/core/platform/SpringComponentContainerTest.java b/sonar-core/src/test/java/org/sonar/core/platform/SpringComponentContainerTest.java index 15528d99cab..02a2ba31d44 100644 --- a/sonar-core/src/test/java/org/sonar/core/platform/SpringComponentContainerTest.java +++ b/sonar-core/src/test/java/org/sonar/core/platform/SpringComponentContainerTest.java @@ -79,6 +79,13 @@ public class SpringComponentContainerTest { } @Test + public void addWebConfigurationClass_addsClass() { + SpringComponentContainer container = new SpringComponentContainer(); + container.addWebApiV2ConfigurationClass(org.sonar.core.test.Test.class); + assertThat(container.getWebApiV2ConfigurationClasses()).contains(org.sonar.core.test.Test.class); + } + + @Test public void add_configures_module_instances() { SpringComponentContainer container = new SpringComponentContainer(); container.add(new TestModule()); |