diff options
author | Julien Lancelot <julien.lancelot@gmail.com> | 2013-04-04 16:38:39 +0200 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@gmail.com> | 2013-04-04 16:38:39 +0200 |
commit | 6f2f4aa5db7b4cbd9f88e02badf52bf7066b0cbc (patch) | |
tree | a1f31d03678eae96701fb65f512f91755c084578 | |
parent | 0641857555a146b070edac44cc3608f2d1b15c07 (diff) | |
download | sonarqube-6f2f4aa5db7b4cbd9f88e02badf52bf7066b0cbc.tar.gz sonarqube-6f2f4aa5db7b4cbd9f88e02badf52bf7066b0cbc.zip |
Use new PropertyDefinition API in CpdPlugin
6 files changed, 64 insertions, 90 deletions
diff --git a/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/CpdPlugin.java b/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/CpdPlugin.java index dcb5903e84f..8d45aae3574 100644 --- a/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/CpdPlugin.java +++ b/plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/CpdPlugin.java @@ -25,48 +25,46 @@ import org.sonar.api.Properties; import org.sonar.api.Property; import org.sonar.api.PropertyType; import org.sonar.api.SonarPlugin; +import org.sonar.api.config.PropertyDefinition; +import org.sonar.api.resources.Qualifiers; import org.sonar.plugins.cpd.decorators.DuplicationDensityDecorator; import org.sonar.plugins.cpd.decorators.SumDuplicationsDecorator; import org.sonar.plugins.cpd.index.IndexFactory; import java.util.List; -@Properties({ - @Property( - key = CoreProperties.CPD_CROSS_RPOJECT, - defaultValue = CoreProperties.CPD_CROSS_RPOJECT_DEFAULT_VALUE + "", - name = "Cross project duplication detection", - description = "Sonar supports the detection of cross project duplications. Activating this property will slightly increase each Sonar analysis time.", - project = true, - module = true, - global = true, - category = CoreProperties.CATEGORY_DUPLICATIONS, - type = PropertyType.BOOLEAN), - @Property( - key = CoreProperties.CPD_SKIP_PROPERTY, - defaultValue = "false", - name = "Skip", - description = "Disable detection of duplications", - // not displayed in UI - project = false, module = false, global = false, - category = CoreProperties.CATEGORY_DUPLICATIONS, - type = PropertyType.BOOLEAN), - @Property( - key = CoreProperties.CPD_EXCLUSIONS, - defaultValue = "", - name = "Duplication exclusions", - description = "Patterns used to exclude some source files from the duplication detection mechanism. " + - "See the \"Exclusions\" category to know how to use wildcards to specify this property.", - project = true, - module = true, - global = true, - category = CoreProperties.CATEGORY_DUPLICATIONS, - multiValues = true) -}) public final class CpdPlugin extends SonarPlugin { public List getExtensions() { return ImmutableList.of( + PropertyDefinition.build(CoreProperties.CPD_CROSS_RPOJECT) + .defaultValue(CoreProperties.CPD_CROSS_RPOJECT_DEFAULT_VALUE + "") + .name("Cross project duplication detection") + .description("Sonar supports the detection of cross project duplications. Activating this property will slightly increase each Sonar analysis time.") + .qualifiers(Qualifiers.PROJECT, Qualifiers.MODULE) + .global(true) + .category(CoreProperties.CATEGORY_DUPLICATIONS) + .type(PropertyType.BOOLEAN) + .build(), + PropertyDefinition.build(CoreProperties.CPD_SKIP_PROPERTY) + .defaultValue("false") + .name("Skip") + .description("Disable detection of duplications") + .global(false) + .category(CoreProperties.CATEGORY_DUPLICATIONS) + .type(PropertyType.BOOLEAN) + .build(), + PropertyDefinition.build(CoreProperties.CPD_EXCLUSIONS) + .defaultValue("") + .name("Duplication exclusions") + .description("Patterns used to exclude some source files from the duplication detection mechanism. " + + "See the \"Exclusions\" category to know how to use wildcards to specify this property.") + .qualifiers(Qualifiers.PROJECT, Qualifiers.MODULE) + .global(true) + .category(CoreProperties.CATEGORY_DUPLICATIONS) + .multiValues(true) + .build(), + CpdSensor.class, SumDuplicationsDecorator.class, DuplicationDensityDecorator.class, diff --git a/plugins/sonar-cpd-plugin/src/test/java/org/sonar/plugins/cpd/CpdPluginTest.java b/plugins/sonar-cpd-plugin/src/test/java/org/sonar/plugins/cpd/CpdPluginTest.java index a3ec3f05048..5e106a9e081 100644 --- a/plugins/sonar-cpd-plugin/src/test/java/org/sonar/plugins/cpd/CpdPluginTest.java +++ b/plugins/sonar-cpd-plugin/src/test/java/org/sonar/plugins/cpd/CpdPluginTest.java @@ -27,6 +27,6 @@ public class CpdPluginTest { @Test public void getExtensions() { - assertThat(new CpdPlugin().getExtensions()).hasSize(6); + assertThat(new CpdPlugin().getExtensions()).hasSize(9); } } diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ServerClient.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ServerClient.java index c8e47e469dd..07582732ed9 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ServerClient.java +++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ServerClient.java @@ -119,10 +119,12 @@ public class ServerClient implements BatchComponent { } private String getLogin() { - return settings.property(CoreProperties.LOGIN) != null ? settings.property(CoreProperties.LOGIN) : DEFAULT_LOGIN; + String login = settings.property(CoreProperties.LOGIN); + return login != null ? login : DEFAULT_LOGIN; } private String getPassword() { - return settings.property(CoreProperties.PASSWORD) != null ? settings.property(CoreProperties.PASSWORD) : DEFAULT_PASSWORD; + String password = settings.property(CoreProperties.PASSWORD); + return password != null ? password : DEFAULT_PASSWORD; } } diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/config/PropertyDefinition.java b/sonar-plugin-api/src/main/java/org/sonar/api/config/PropertyDefinition.java index df3622c1944..b46f03d919d 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/config/PropertyDefinition.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/config/PropertyDefinition.java @@ -37,19 +37,6 @@ import java.util.List; import static com.google.common.collect.Lists.newArrayList; /** - * Property value can be set in different ways : - * <ul> - * <li>System property</li> - * <li>Maven command-line (-Dfoo=bar)</li> - * <li>Maven pom.xml (element <properties>)</li> - * <li>Maven settings.xml</li> - * <li>Sonar web interface</li> - * </ul> - * <p/> - * Value is accessible in batch extensions via the Configuration object of class <code>org.sonar.api.resources.Project</code> - * (see method <code>getConfiguration()</code>). - * <p/> - * <p><strong>Must be used in <code>org.sonar.api.Plugin</code> classes only.</strong></p> * * @since 3.0 */ @@ -69,6 +56,9 @@ public final class PropertyDefinition implements BatchExtension, ServerExtension private String deprecatedKey; private List<PropertyFieldDefinition> fields; + /** + * @since 3.6 + */ private PropertyDefinition(Builder builder) { this.key = builder.key; this.name = builder.name; @@ -85,18 +75,30 @@ public final class PropertyDefinition implements BatchExtension, ServerExtension this.qualifiers = builder.qualifiers; } + /** + * @since 3.6 + */ public static Builder build(String key) { return new Builder(key); } + /** + * @since 3.6 + */ static PropertyDefinition create(Property annotation) { + List<String> qualifiers = newArrayList(); + if (annotation.project()) { + qualifiers.add(Qualifiers.PROJECT); + } + if (annotation.module()) { + qualifiers.add(Qualifiers.MODULE); + } return PropertyDefinition.build(annotation.key()) .name(annotation.name()) .defaultValue(annotation.defaultValue()) .description(annotation.description()) .global(annotation.global()) - .project(annotation.project()) - .module(annotation.module()) + .qualifiers(qualifiers) .category(annotation.category()) .type(annotation.type()) .options(annotation.options()) @@ -183,20 +185,6 @@ public final class PropertyDefinition implements BatchExtension, ServerExtension } /** - * Is the property displayed in project settings page ? - */ - public boolean project() { - return qualifiers.contains(Qualifiers.PROJECT); - } - - /** - * Is the property displayed in module settings page ? A module is a maven sub-project. - */ - public boolean module() { - return qualifiers.contains(Qualifiers.MODULE); - } - - /** * Qualifiers that can display this property * * @since 3.6 @@ -263,6 +251,9 @@ public final class PropertyDefinition implements BatchExtension, ServerExtension } } + /** + * @since 3.6 + */ public static class Builder { private String key; private String name; @@ -318,21 +309,8 @@ public final class PropertyDefinition implements BatchExtension, ServerExtension return this; } - public Builder project(boolean displayOnProject) { - if (displayOnProject) { - this.qualifiers.add(Qualifiers.PROJECT); - } else { - this.qualifiers.remove(Qualifiers.PROJECT); - } - return this; - } - - public Builder module(boolean displayOnModule) { - if (displayOnModule) { - this.qualifiers.add(Qualifiers.MODULE); - } else { - this.qualifiers.remove(Qualifiers.MODULE); - } + public Builder qualifiers(List<String> qualifiers) { + this.qualifiers.addAll(qualifiers); return this; } diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/config/PropertyDefinitionTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/config/PropertyDefinitionTest.java index b849e2951a5..ea9381e371e 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/config/PropertyDefinitionTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/config/PropertyDefinitionTest.java @@ -75,8 +75,7 @@ public class PropertyDefinitionTest { assertThat(def.description()).isEqualTo("desc"); assertThat(def.type()).isEqualTo(PropertyType.FLOAT); assertThat(def.global()).isFalse(); - assertThat(def.project()).isTrue(); - assertThat(def.module()).isTrue(); + assertThat(def.qualifiers()).containsOnly(Qualifiers.PROJECT, Qualifiers.MODULE); assertThat(def.multiValues()).isTrue(); assertThat(def.propertySetKey()).isEqualTo("set"); assertThat(def.fields()).isEmpty(); @@ -97,8 +96,6 @@ public class PropertyDefinitionTest { assertThat(def.type()).isEqualTo(PropertyType.STRING); assertThat(def.global()).isTrue(); assertThat(def.qualifiers()).isEmpty(); - assertThat(def.project()).isFalse(); - assertThat(def.module()).isFalse(); assertThat(def.multiValues()).isFalse(); assertThat(def.propertySetKey()).isEmpty(); assertThat(def.fields()).isEmpty(); @@ -119,8 +116,7 @@ public class PropertyDefinitionTest { assertThat(def.description()).isEmpty(); assertThat(def.type()).isEqualTo(PropertyType.STRING); assertThat(def.global()).isTrue(); - assertThat(def.project()).isFalse(); - assertThat(def.module()).isFalse(); + assertThat(def.qualifiers()).isEmpty(); assertThat(def.multiValues()).isFalse(); assertThat(def.propertySetKey()).isEmpty(); assertThat(def.fields()).isEmpty(); diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/config/PropertyDefinitionsTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/config/PropertyDefinitionsTest.java index 0837af1bd1a..8b590184818 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/config/PropertyDefinitionsTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/config/PropertyDefinitionsTest.java @@ -93,11 +93,11 @@ public class PropertyDefinitionsTest { @Test public void should_group_by_category() { PropertyDefinitions def = new PropertyDefinitions( - PropertyDefinition.build("global1").name("Global1").category("catGlobal1").global(true).project(false).module(false).build(), - PropertyDefinition.build("global2").name("Global2").category("catGlobal1").global(true).project(false).module(false).build(), - PropertyDefinition.build("global3").name("Global3").category("catGlobal2").global(true).project(false).module(false).build(), - PropertyDefinition.build("project").name("Project").category("catProject").global(false).project(true).module(false).build(), - PropertyDefinition.build("module").name("Module").category("catModule").global(false).project(false).module(true).build(), + PropertyDefinition.build("global1").name("Global1").category("catGlobal1").global(true).build(), + PropertyDefinition.build("global2").name("Global2").category("catGlobal1").global(true).build(), + PropertyDefinition.build("global3").name("Global3").category("catGlobal2").global(true).build(), + PropertyDefinition.build("project").name("Project").category("catProject").global(false).qualifiers(Qualifiers.PROJECT).build(), + PropertyDefinition.build("module").name("Module").category("catModule").global(false).qualifiers(Qualifiers.MODULE).build(), PropertyDefinition.build("view").name("View").category("catView").global(false).qualifiers(Qualifiers.VIEW).build() ); |