From f1ec64e4d7832e102c1d610c9c3da01cb83e5b4c Mon Sep 17 00:00:00 2001 From: Stephane Gamard Date: Mon, 19 May 2014 17:05:50 +0200 Subject: [PATCH] SONAR-5007 - Updated JSWritter for null entries from *Doc objects --- .../org/sonar/api/utils/text/JsonWriter.java | 11 +++++++++++ .../java/org/sonar/server/rule2/Rule.java | 1 + .../org/sonar/server/rule2/RuleService.java | 1 + .../sonar/server/rule2/ws/SearchAction.java | 19 ++++++++++--------- 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/utils/text/JsonWriter.java b/sonar-plugin-api/src/main/java/org/sonar/api/utils/text/JsonWriter.java index 5450a63e22a..6387ecc42f0 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/utils/text/JsonWriter.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/utils/text/JsonWriter.java @@ -324,6 +324,17 @@ public class JsonWriter { return name(name).value(value); } + /** + * @throws org.sonar.api.utils.text.WriterException on any failure + */ + public JsonWriter prop(String name, @Nullable Object value) { + if(value != null) { + return name(name).value(value.toString()); + } else { + return this; + } + } + /** * @throws org.sonar.api.utils.text.WriterException on any failure */ diff --git a/sonar-server/src/main/java/org/sonar/server/rule2/Rule.java b/sonar-server/src/main/java/org/sonar/server/rule2/Rule.java index 2582e03c57b..0da3048e839 100644 --- a/sonar-server/src/main/java/org/sonar/server/rule2/Rule.java +++ b/sonar-server/src/main/java/org/sonar/server/rule2/Rule.java @@ -75,6 +75,7 @@ public interface Rule { @CheckForNull DebtRemediationFunction debtRemediationFunction(); + Date createdAt(); Date updatedAt(); diff --git a/sonar-server/src/main/java/org/sonar/server/rule2/RuleService.java b/sonar-server/src/main/java/org/sonar/server/rule2/RuleService.java index 220a985e0b6..3a939593d3c 100644 --- a/sonar-server/src/main/java/org/sonar/server/rule2/RuleService.java +++ b/sonar-server/src/main/java/org/sonar/server/rule2/RuleService.java @@ -105,6 +105,7 @@ public class RuleService implements ServerComponent { } public void setTags(RuleKey ruleKey, Set tags) { + checkAdminPermission(UserSession.get()); DbSession dbSession = db.openSession(false); 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 57229830ab0..92644eff915 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 @@ -22,6 +22,7 @@ package org.sonar.server.rule2.ws; import com.google.common.base.Function; import com.google.common.collect.Collections2; import com.google.common.io.Resources; +import com.google.gson.Gson; import org.sonar.api.rule.RuleStatus; import org.sonar.api.rule.Severity; import org.sonar.api.server.ws.Request; @@ -217,6 +218,8 @@ public class SearchAction implements RequestHandler { json.prop(PARAM_PAGE, request.mandatoryParamAsInt(PARAM_PAGE)); json.prop(PARAM_PAGE_SIZE, request.mandatoryParamAsInt(PARAM_PAGE_SIZE)); } + + private void writeRules(RuleResult result, JsonWriter json) { json.name("rules").beginArray(); @@ -230,18 +233,16 @@ public class SearchAction implements RequestHandler { .prop("lang", rule.language()) .prop("name", rule.name()) .prop("htmlDesc", rule.htmlDescription()) - .prop("status", rule.status().toString()) + .prop("status", rule.status()) .prop("template", rule.template()) .prop("internalKey", rule.internalKey()) .prop("severity", rule.severity()) .prop("markdownNote", rule.markdownNote()) .prop("noteLogin", rule.noteLogin()) .name("tags").beginArray().values(rule.tags()).endArray() - .name("sysTags").beginArray().values(rule.systemTags()).endArray(); - if(rule.debtSubCharacteristicKey() != null && !rule.debtSubCharacteristicKey().isEmpty()){ - json - .prop("debtSubCharacteristicKey", rule.debtSubCharacteristicKey()); - } + .name("sysTags").beginArray().values(rule.systemTags()).endArray() + .prop("debtSubCharacteristicKey", rule.debtSubCharacteristicKey()); + if(rule.debtRemediationFunction() != null){ json .prop("debtRemediationFunctionType", rule.debtRemediationFunction().type().name()) @@ -266,11 +267,11 @@ public class SearchAction implements RequestHandler { for (ActiveRule activeRule : result.getActiveRules().get(rule.key().toString())) { json .beginObject() - .prop("key",activeRule.key().toString()) - .prop("inherit", activeRule.inheritance().name()) + .prop("key",activeRule.key()) + .prop("inherit", activeRule.inheritance()) .prop("severity", activeRule.severity()); if(activeRule.parentKey() != null){ - json.prop("parent",activeRule.parentKey().toString()); + json.prop("parent",activeRule.parentKey()); } json -- 2.39.5