]> source.dussan.org Git - sonarqube.git/commitdiff
Fixed missing tags on Update
authorStephane Gamard <stephane.gamard@searchbox.com>
Sat, 10 May 2014 10:00:47 +0000 (12:00 +0200)
committerStephane Gamard <stephane.gamard@searchbox.com>
Sat, 10 May 2014 10:00:47 +0000 (12:00 +0200)
sonar-core/src/main/resources/org/sonar/core/rule/RuleMapper.xml
sonar-server/src/main/java/org/sonar/server/rule2/RegisterRules.java

index 03f2dbcbefdfc6694c93f751926d4d5352ad36dc..b9ec4c7d0ec67fa90147d82e63464732a2b4cb7f 100644 (file)
@@ -95,7 +95,9 @@
     remediation_offset=#{remediationOffset},
     default_remediation_offset=#{defaultRemediationOffset},
     effort_to_fix_description=#{effortToFixDescription},
-    updated_at=#{updatedAt}
+    updated_at=#{updatedAt},
+    tags=#{tagsField},
+    system_tags=#{systemTagsField}
     WHERE id=#{id}
   </update>
 
index e80e09f8cfa2d62968dc6aedef5666b6e5a7ebac..64aaa428dbad8c3715ed44b0cba8b4067bff4b17 100644 (file)
@@ -50,6 +50,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import static com.google.common.collect.Lists.newArrayList;
 
@@ -178,7 +179,8 @@ public class RegisterRules implements Startable {
       .setLanguage(ruleDef.repository().language())
       .setName(ruleDef.name())
       .setSeverity(ruleDef.severity())
-      .setStatus(ruleDef.status().name());
+      .setStatus(ruleDef.status().name())
+      .setSystemTags(ruleDef.tags());
 
     return ruleDao.insert(ruleDto, session);
   }
@@ -314,26 +316,16 @@ public class RegisterRules implements Startable {
     boolean changed = false;
 
     //the Rule is not active and dto has tags
-    if (!Rule.STATUS_REMOVED.equals(ruleDef.status())) {
+    if (Rule.STATUS_REMOVED.equals(ruleDef.status())) {
       dto.setSystemTags(Collections.EMPTY_SET);
       dto.setTags(Collections.EMPTY_SET);
       changed = true;
     } else if (!dto.getSystemTags().containsAll(ruleDef.tags())) {
-      dto.getSystemTags().addAll(ruleDef.tags());
+      Set<String> tags = dto.getTags();
+      tags.addAll(ruleDef.tags());
+      dto.setSystemTags(tags);
       changed = true;
     }
-//    //TODO Check that with JUNIT for tag removal
-//    for (String tag : tags) {
-//      // tag previously declared by plugin
-//      if (!ruleDef.tags().contains(tag)) {
-//        // not declared anymore
-//        dto.getSystemTags().remove(tag);
-//        buffer.removeTag(tag, dto.getId());
-//      } else {
-//        dto.getSystemTags().add(tag);
-//        existingSystemTags.add(tag);
-//      }
-//    }
     return changed;
   }