]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-4326 Add API to declare "system" tags on plugin side
authorJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Wed, 8 Jan 2014 09:28:22 +0000 (10:28 +0100)
committerJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>
Thu, 9 Jan 2014 10:19:27 +0000 (11:19 +0100)
sonar-plugin-api/src/main/java/org/sonar/api/rules/Rule.java
sonar-plugin-api/src/test/java/org/sonar/api/rules/RuleTest.java

index 2b798b3ddf659aa0d70d490db3db9d30db14b082..5fb9950a92bb7d2982f9b38ade7862e9d0d3921f 100644 (file)
@@ -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<String> tags = Collections.unmodifiableSet(new HashSet<String>());
+
   /**
    * @deprecated since 2.3. Use the factory method {@link #create()}
    */
@@ -279,6 +280,17 @@ public final class Rule {
     return parameter;
   }
 
+  public Collection<String> getTags() {
+    return tags;
+  }
+
+  public Rule setTags(String... tags) {
+    Set<String> newTags = new HashSet<String>();
+    newTags.addAll(Arrays.asList(tags));
+    this.tags = Collections.unmodifiableSet(newTags);
+    return this;
+  }
+
   /**
    * @deprecated since 2.5. See http://jira.codehaus.org/browse/SONAR-2007
    */
index 00d11c6ab1d343962c7dae12b0b8c683aea66285..02717ac6624bab49f690633d627d970b90c01b73 100644 (file)
@@ -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();
+  }
 }