From 88825e398b1d91a0f81a5f29d7b280008d6e84de Mon Sep 17 00:00:00 2001 From: weihu Date: Thu, 7 Jul 2022 21:39:42 +0800 Subject: [PATCH] update json --- .../PolarisRateLimitRuleEndpoint.java | 42 +++++++------------ .../cloud/common/util/JacksonUtils.java | 20 ++++++--- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/endpoint/PolarisRateLimitRuleEndpoint.java b/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/endpoint/PolarisRateLimitRuleEndpoint.java index 28bbae229..cb9c34c45 100644 --- a/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/endpoint/PolarisRateLimitRuleEndpoint.java +++ b/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/endpoint/PolarisRateLimitRuleEndpoint.java @@ -17,23 +17,25 @@ package com.tencent.cloud.polaris.ratelimit.endpoint; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - +import com.google.protobuf.InvalidProtocolBufferException; +import com.google.protobuf.util.JsonFormat; +import com.tencent.cloud.common.util.JacksonUtils; import com.tencent.cloud.polaris.context.ServiceRuleManager; import com.tencent.cloud.polaris.ratelimit.config.PolarisRateLimitProperties; import com.tencent.polaris.client.pb.RateLimitProto; import com.tencent.polaris.client.pb.RoutingProto; import org.apache.commons.lang.StringUtils; - import org.springframework.boot.actuate.endpoint.annotation.Endpoint; import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; import org.springframework.boot.actuate.endpoint.annotation.Selector; import org.springframework.lang.Nullable; import org.springframework.util.CollectionUtils; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * Endpoint of Polaris RateLimit rule. * @@ -73,27 +75,15 @@ public class PolarisRateLimitRuleEndpoint { return rateLimitRule; } + for (RateLimitProto.Rule rule : rateLimit.getRulesList()) { - Map ruleMap = new HashMap<>(); - ruleMap.put("id", rule.getId()); - ruleMap.put("priority", rule.getPriority()); - ruleMap.put("resource", rule.getResource()); - ruleMap.put("type", rule.getType()); - ruleMap.put("labels", rule.getLabelsMap()); - ruleMap.put("amounts", rule.getAmountsList()); - ruleMap.put("action", rule.getAction()); - ruleMap.put("disable", rule.getDisable()); - ruleMap.put("report", rule.getReport()); - ruleMap.put("create_time", rule.getCtime()); - ruleMap.put("modify_time", rule.getMtime()); - ruleMap.put("revision", rule.getRevision()); - ruleMap.put("service_token", rule.getServiceToken()); - ruleMap.put("adjuster", rule.getAdjuster()); - ruleMap.put("regex_combine", rule.getRegexCombine()); - ruleMap.put("amount_mode", rule.getAmountMode()); - ruleMap.put("failover", rule.getFailover()); - ruleMap.put("cluster", rule.getCluster()); - rateLimitRule.add(ruleMap); + String ruleJson = null; + try { + ruleJson = JsonFormat.printer().print(rule); + } catch (InvalidProtocolBufferException e) { + e.printStackTrace(); + } + rateLimitRule.add(JacksonUtils.json2Map(ruleJson)); } return rateLimitRule; } diff --git a/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/util/JacksonUtils.java b/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/util/JacksonUtils.java index 4ed4d2ea1..34f23b338 100644 --- a/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/util/JacksonUtils.java +++ b/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/util/JacksonUtils.java @@ -17,16 +17,17 @@ package com.tencent.cloud.common.util; -import java.util.HashMap; -import java.util.Map; - import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.springframework.util.StringUtils; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + /** * Utils for Jackson. * @@ -37,7 +38,7 @@ public final class JacksonUtils { /** * Object Mapper. */ - public static final ObjectMapper OM = new ObjectMapper(); + public static final ObjectMapper OM = new ObjectMapper().disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); private static final Logger LOG = LoggerFactory.getLogger(JacksonUtils.class); @@ -84,4 +85,13 @@ public final class JacksonUtils { throw new RuntimeException("Json to map failed.", e); } } + + public static Map json2Map(String jsonStr) { + try { + return OM.readValue(jsonStr, Map.class); + } catch (IOException e) { + LOG.error("Json to map failed. check if the format of the json string[{}] is correct.", jsonStr, e); + } + return new HashMap<>(); + } }