From ff78a764b5caa8846ec723ac2c45d367906943ed Mon Sep 17 00:00:00 2001 From: Stephane Gamard Date: Wed, 14 May 2014 15:04:09 +0200 Subject: [PATCH] Using key for inheritance of activeRule instead of id --- .../server/qualityprofile/ActiveRule.java | 13 ++++++---- .../qualityprofile/index/ActiveRuleDoc.java | 24 ++++++++++++------- .../index/ActiveRuleNormalizer.java | 19 +++++++++++---- .../persistence/ActiveRuleDao.java | 8 ++++++- .../server/rule2/index/RuleNormalizer.java | 7 +++++- .../sonar/server/rule2/ws/SearchAction.java | 5 ++-- .../sonar/server/search/BaseNormalizer.java | 2 +- 7 files changed, 54 insertions(+), 24 deletions(-) diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRule.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRule.java index e494a06ca38..ef0c306589c 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRule.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/ActiveRule.java @@ -21,19 +21,24 @@ package org.sonar.server.qualityprofile; import org.sonar.core.qualityprofile.db.ActiveRuleKey; +import javax.annotation.CheckForNull; import java.util.Map; public interface ActiveRule { + public enum Inheritance { + NONE, OVERRIDE, INHERIT + } + ActiveRuleKey key(); String severity(); - Boolean override(); - - String inherit(); + Inheritance inheritance(); - String parent(); + @CheckForNull + ActiveRuleKey parentKey(); Map params(); + } diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleDoc.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleDoc.java index fa8a1fc32b7..28ddaf44cc8 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleDoc.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleDoc.java @@ -22,6 +22,7 @@ package org.sonar.server.qualityprofile.index; import org.sonar.core.qualityprofile.db.ActiveRuleKey; import org.sonar.server.qualityprofile.ActiveRule; +import javax.annotation.CheckForNull; import java.util.HashMap; import java.util.Map; @@ -40,24 +41,29 @@ public class ActiveRuleDoc implements ActiveRule { return this.key; } - @Override - public Boolean override() { - return (Boolean) this.fields.get(ActiveRuleNormalizer.ActiveRuleField.OVERRIDE.key()); - } - @Override public String severity() { return (String) this.fields.get(ActiveRuleNormalizer.ActiveRuleField.SEVERITY.key()); } @Override - public String inherit() { - return (String) this.fields.get(ActiveRuleNormalizer.ActiveRuleField.INHERITANCE.key()); + public ActiveRule.Inheritance inheritance() { + String inheritance = (String) this.fields.get(ActiveRuleNormalizer.ActiveRuleField.INHERITANCE.key()); + if(inheritance != null && !inheritance.isEmpty()){ + return Inheritance.valueOf(inheritance); + } else { + return Inheritance.NONE; + } } @Override - public String parent() { - return (String) this.fields.get(ActiveRuleNormalizer.ActiveRuleField.PARENT_ID.key()); + @CheckForNull + public ActiveRuleKey parentKey() { + String data = (String) this.fields.get(ActiveRuleNormalizer.ActiveRuleField.PARENT_KEY.key()); + if(data != null && !data.isEmpty()){ + return ActiveRuleKey.parse(data); + } + return null; } @Override diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java index cacab3ec7fc..2d864a2398b 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleNormalizer.java @@ -34,11 +34,11 @@ import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder; public class ActiveRuleNormalizer extends BaseNormalizer { public static enum ActiveRuleField { - OVERRIDE("override"), + KEY("key"), INHERITANCE("inheritance"), PROFILE_ID("profile"), SEVERITY("severity"), - PARENT_ID("parent"), + PARENT_KEY("parentKey"), PARAMS("params"); private final String key; @@ -126,14 +126,23 @@ public class ActiveRuleNormalizer extends BaseNormalizer { TEMPLATE("template"), UPDATED_AT("updatedAt"), PARAMS("params"), - ACTIVE("active"); + ACTIVE("active"), + DEBT_FUNCTION("debtRemFunction"); private final String key; @@ -117,6 +118,10 @@ public class RuleNormalizer extends BaseNormalizer { indexField(RuleField.LANGUAGE.key(), rule.getLanguage(), document); indexField(RuleField.INTERNAL_KEY.key(), rule.getConfigKey(), document); indexField(RuleField.TEMPLATE.key(), rule.getCardinality() == Cardinality.MULTIPLE, document); + indexField(RuleField.DEBT_FUNCTION.key(), rule.getDefaultRemediationFunction(),document); + + + document.array(RuleField.TAGS.key(), rule.getTags().toArray(new String[rule.getTags().size()])); document.array(RuleField.SYSTEM_TAGS.key(), rule.getSystemTags().toArray(new String[rule.getSystemTags().size()])); diff --git a/sonar-server/src/main/java/org/sonar/server/rule2/ws/SearchAction.java b/sonar-server/src/main/java/org/sonar/server/rule2/ws/SearchAction.java index adedeeda843..4125a220432 100644 --- a/sonar-server/src/main/java/org/sonar/server/rule2/ws/SearchAction.java +++ b/sonar-server/src/main/java/org/sonar/server/rule2/ws/SearchAction.java @@ -242,10 +242,9 @@ public class SearchAction implements RequestHandler { json .beginObject() .prop("key",activeRule.key().toString()) - .prop("inherit", activeRule.inherit()) - .prop("override", activeRule.override()) + .prop("inherit", activeRule.inheritance().name()) .prop("severity", activeRule.severity()) - .prop("parent", activeRule.parent()) + .prop("parent", activeRule.parentKey().toString()) .name("params").beginArray(); for (Map.Entry param : activeRule.params().entrySet()) { json.beginObject() diff --git a/sonar-server/src/main/java/org/sonar/server/search/BaseNormalizer.java b/sonar-server/src/main/java/org/sonar/server/search/BaseNormalizer.java index d1bb3e914ba..fe72e8d11a9 100644 --- a/sonar-server/src/main/java/org/sonar/server/search/BaseNormalizer.java +++ b/sonar-server/src/main/java/org/sonar/server/search/BaseNormalizer.java @@ -33,7 +33,7 @@ public abstract class BaseNormalizer, K extends Serializable> { private static final Logger LOG = LoggerFactory.getLogger(BaseNormalizer.class); - private final DbClient db; + protected final DbClient db; protected BaseNormalizer(DbClient db) { this.db = db; -- 2.39.5