aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@gmail.com>2013-04-04 16:38:39 +0200
committerJulien Lancelot <julien.lancelot@gmail.com>2013-04-04 16:38:39 +0200
commit6f2f4aa5db7b4cbd9f88e02badf52bf7066b0cbc (patch)
treea1f31d03678eae96701fb65f512f91755c084578
parent0641857555a146b070edac44cc3608f2d1b15c07 (diff)
downloadsonarqube-6f2f4aa5db7b4cbd9f88e02badf52bf7066b0cbc.tar.gz
sonarqube-6f2f4aa5db7b4cbd9f88e02badf52bf7066b0cbc.zip
Use new PropertyDefinition API in CpdPlugin
-rw-r--r--plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/CpdPlugin.java62
-rw-r--r--plugins/sonar-cpd-plugin/src/test/java/org/sonar/plugins/cpd/CpdPluginTest.java2
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/bootstrap/ServerClient.java6
-rw-r--r--sonar-plugin-api/src/main/java/org/sonar/api/config/PropertyDefinition.java66
-rw-r--r--sonar-plugin-api/src/test/java/org/sonar/api/config/PropertyDefinitionTest.java8
-rw-r--r--sonar-plugin-api/src/test/java/org/sonar/api/config/PropertyDefinitionsTest.java10
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()
);