From 7726e32bce9c456e53533149f8be5e4727ad854c Mon Sep 17 00:00:00 2001 From: Stephane Gamard Date: Sat, 10 May 2014 12:00:47 +0200 Subject: [PATCH] Fixed missing tags on Update --- .../org/sonar/core/rule/RuleMapper.xml | 4 +++- .../org/sonar/server/rule2/RegisterRules.java | 22 ++++++------------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/sonar-core/src/main/resources/org/sonar/core/rule/RuleMapper.xml b/sonar-core/src/main/resources/org/sonar/core/rule/RuleMapper.xml index 03f2dbcbefd..b9ec4c7d0ec 100644 --- a/sonar-core/src/main/resources/org/sonar/core/rule/RuleMapper.xml +++ b/sonar-core/src/main/resources/org/sonar/core/rule/RuleMapper.xml @@ -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} diff --git a/sonar-server/src/main/java/org/sonar/server/rule2/RegisterRules.java b/sonar-server/src/main/java/org/sonar/server/rule2/RegisterRules.java index e80e09f8cfa..64aaa428dba 100644 --- a/sonar-server/src/main/java/org/sonar/server/rule2/RegisterRules.java +++ b/sonar-server/src/main/java/org/sonar/server/rule2/RegisterRules.java @@ -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 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; } -- 2.39.5