From: Jean-Baptiste Lievremont Date: Wed, 8 Jan 2014 09:28:22 +0000 (+0100) Subject: SONAR-4326 Add API to declare "system" tags on plugin side X-Git-Tag: 4.2~785 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=d0b736937c9e4e7affbe173e71ad72256f2e5a57;p=sonarqube.git SONAR-4326 Add API to declare "system" tags on plugin side --- diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/rules/Rule.java b/sonar-plugin-api/src/main/java/org/sonar/api/rules/Rule.java index 2b798b3ddf6..5fb9950a92b 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/rules/Rule.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/rules/Rule.java @@ -35,10 +35,8 @@ import org.sonar.check.Cardinality; import javax.annotation.CheckForNull; import javax.annotation.Nullable; import javax.persistence.*; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Set; + +import java.util.*; @Entity @Table(name = "rules") @@ -126,6 +124,9 @@ public final class Rule { @Column(name = "updated_at", updatable = true, nullable = true) private Date updatedAt; + @Transient + private transient Set tags = Collections.unmodifiableSet(new HashSet()); + /** * @deprecated since 2.3. Use the factory method {@link #create()} */ @@ -279,6 +280,17 @@ public final class Rule { return parameter; } + public Collection getTags() { + return tags; + } + + public Rule setTags(String... tags) { + Set newTags = new HashSet(); + newTags.addAll(Arrays.asList(tags)); + this.tags = Collections.unmodifiableSet(newTags); + return this; + } + /** * @deprecated since 2.5. See http://jira.codehaus.org/browse/SONAR-2007 */ diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/rules/RuleTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/rules/RuleTest.java index 00d11c6ab1d..02717ac6624 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/rules/RuleTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/rules/RuleTest.java @@ -105,4 +105,16 @@ public class RuleTest { return Arrays.asList("te\nst", "te\ns\nt", "te\rst", "te\n\rst", "te\r\nst"); } + @Test + public void should_manage_tags() { + String tag1 = "tag1"; + String tag2 = "tag2"; + String tag3 = "tag3"; + Rule rule = Rule.create(); + + assertThat(rule.getTags()).isEmpty(); + assertThat(rule.setTags(tag1, tag2, tag3).getTags()).containsOnly(tag1, tag2, tag3); + assertThat(rule.setTags(tag1, tag2).getTags()).containsOnly(tag1, tag2); + assertThat(rule.setTags().getTags()).isEmpty(); + } }