From a785cf6473a120423908d076a6c43a584d6b1a03 Mon Sep 17 00:00:00 2001 From: David Gageot Date: Mon, 24 Sep 2012 15:26:55 +0200 Subject: [PATCH] SONAR-3529 API: ability to define property sets. Fix server startup --- .../src/main/java/org/sonar/api/config/PropertySet.java | 3 ++- .../org/sonar/api/config/PropertySetDefinitions.java | 9 ++++++++- .../org/sonar/api/config/PropertySetDefinitionsTest.java | 1 + .../src/main/java/org/sonar/server/ui/JRubyFacade.java | 8 +++++--- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/config/PropertySet.java b/sonar-plugin-api/src/main/java/org/sonar/api/config/PropertySet.java index fcc808eed91..ee13b940487 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/config/PropertySet.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/config/PropertySet.java @@ -26,8 +26,9 @@ import java.util.List; public class PropertySet { private final List fields = Lists.newArrayList(); - public void add(PropertySetField field) { + public PropertySet add(PropertySetField field) { fields.add(field); + return this; } public List getFields() { diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/config/PropertySetDefinitions.java b/sonar-plugin-api/src/main/java/org/sonar/api/config/PropertySetDefinitions.java index 07c6075725b..511f3d909a6 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/config/PropertySetDefinitions.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/config/PropertySetDefinitions.java @@ -19,12 +19,15 @@ */ package org.sonar.api.config; +import com.google.common.collect.ImmutableList; import com.google.common.collect.Maps; +import org.sonar.api.ServerExtension; +import java.util.List; import java.util.Map; import java.util.NoSuchElementException; -public class PropertySetDefinitions { +public class PropertySetDefinitions implements ServerExtension { private final Map index = Maps.newHashMap(); public void register(String name, PropertySet propertySet) { @@ -33,6 +36,10 @@ public class PropertySetDefinitions { } } + public List findAll() { + return ImmutableList.copyOf(index.values()); + } + public PropertySet findByName(String name) { PropertySet propertySet = index.get(name); if (propertySet == null) { diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/config/PropertySetDefinitionsTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/config/PropertySetDefinitionsTest.java index 5fcd1e21d22..cd0a3c39112 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/config/PropertySetDefinitionsTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/config/PropertySetDefinitionsTest.java @@ -38,6 +38,7 @@ public class PropertySetDefinitionsTest { assertThat(definitions.findByName("name")).isSameAs(set); assertThat(definitions.findByName("other")).isSameAs(other); + assertThat(definitions.findAll()).containsOnly(set, other); } @Test(expected = IllegalStateException.class) diff --git a/sonar-server/src/main/java/org/sonar/server/ui/JRubyFacade.java b/sonar-server/src/main/java/org/sonar/server/ui/JRubyFacade.java index 263bf563112..85f177aaec9 100644 --- a/sonar-server/src/main/java/org/sonar/server/ui/JRubyFacade.java +++ b/sonar-server/src/main/java/org/sonar/server/ui/JRubyFacade.java @@ -23,9 +23,7 @@ import com.google.common.collect.ListMultimap; import com.google.common.collect.Lists; import org.slf4j.LoggerFactory; import org.sonar.api.CoreProperties; -import org.sonar.api.config.License; -import org.sonar.api.config.PropertyDefinitions; -import org.sonar.api.config.Settings; +import org.sonar.api.config.*; import org.sonar.api.platform.ComponentContainer; import org.sonar.api.platform.NewUserHandler; import org.sonar.api.platform.PluginMetadata; @@ -510,4 +508,8 @@ public final class JRubyFacade { .build()); } } + + public List listPropertySets() { + return get(PropertySetDefinitions.class).findAll(); + } } -- 2.39.5