aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-core/src
diff options
context:
space:
mode:
authorAurelien Poscia <aurelien.poscia@sonarsource.com>2023-09-28 10:15:21 +0200
committersonartech <sonartech@sonarsource.com>2023-09-28 20:03:12 +0000
commit5bfc3521a7245389ca2dbf3fb6f8d32291df82de (patch)
treedebc9af355d8b2d285d8e0188425d6c0cad90c6b /sonar-core/src
parentea684ddb279361b820c310eb79801df2ce7846c5 (diff)
downloadsonarqube-5bfc3521a7245389ca2dbf3fb6f8d32291df82de.tar.gz
sonarqube-5bfc3521a7245389ca2dbf3fb6f8d32291df82de.zip
SONAR-20578 remove dependency from common part to extension
Diffstat (limited to 'sonar-core/src')
-rw-r--r--sonar-core/src/main/java/org/sonar/core/extension/CoreExtension.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/extension/CoreExtensionsInstaller.java5
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/ExtensionContainer.java5
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/ListContainer.java13
-rw-r--r--sonar-core/src/main/java/org/sonar/core/platform/SpringComponentContainer.java13
-rw-r--r--sonar-core/src/test/java/org/sonar/core/platform/ListContainerTest.java7
-rw-r--r--sonar-core/src/test/java/org/sonar/core/platform/SpringComponentContainerTest.java7
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());