* Add @JsonIgnore annotationmaster
@@ -17,7 +17,7 @@ package com.alibaba.csp.sentinel.dashboard.datasource.entity.rule; | |||
import com.alibaba.csp.sentinel.slots.block.authority.AuthorityRule; | |||
import com.alibaba.csp.sentinel.util.AssertUtil; | |||
import com.alibaba.fastjson.annotation.JSONField; | |||
import com.fasterxml.jackson.annotation.JsonIgnore; | |||
/** | |||
@@ -26,7 +26,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore; | |||
*/ | |||
public class AuthorityRuleEntity extends AbstractRuleEntity<AuthorityRule> { | |||
public AuthorityRuleEntity() {} | |||
public AuthorityRuleEntity() { | |||
} | |||
public AuthorityRuleEntity(AuthorityRule authorityRule) { | |||
AssertUtil.notNull(authorityRule, "Authority rule should not be null"); | |||
@@ -42,16 +43,19 @@ public class AuthorityRuleEntity extends AbstractRuleEntity<AuthorityRule> { | |||
} | |||
@JsonIgnore | |||
@JSONField(serialize = false) | |||
public String getLimitApp() { | |||
return rule.getLimitApp(); | |||
} | |||
@JsonIgnore | |||
@JSONField(serialize = false) | |||
public String getResource() { | |||
return rule.getResource(); | |||
} | |||
@JsonIgnore | |||
@JSONField(serialize = false) | |||
public int getStrategy() { | |||
return rule.getStrategy(); | |||
} | |||
@@ -15,22 +15,23 @@ | |||
*/ | |||
package com.alibaba.csp.sentinel.dashboard.datasource.entity.rule; | |||
import java.util.List; | |||
import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowClusterConfig; | |||
import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowItem; | |||
import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowRule; | |||
import com.alibaba.csp.sentinel.util.AssertUtil; | |||
import com.alibaba.fastjson.annotation.JSONField; | |||
import com.fasterxml.jackson.annotation.JsonIgnore; | |||
import java.util.List; | |||
/** | |||
* @author Eric Zhao | |||
* @since 0.2.1 | |||
*/ | |||
public class ParamFlowRuleEntity extends AbstractRuleEntity<ParamFlowRule> { | |||
public ParamFlowRuleEntity() {} | |||
public ParamFlowRuleEntity() { | |||
} | |||
public ParamFlowRuleEntity(ParamFlowRule rule) { | |||
AssertUtil.notNull(rule, "Authority rule should not be null"); | |||
@@ -46,61 +47,73 @@ public class ParamFlowRuleEntity extends AbstractRuleEntity<ParamFlowRule> { | |||
} | |||
@JsonIgnore | |||
@JSONField(serialize = false) | |||
public String getLimitApp() { | |||
return rule.getLimitApp(); | |||
} | |||
@JsonIgnore | |||
@JSONField(serialize = false) | |||
public String getResource() { | |||
return rule.getResource(); | |||
} | |||
@JsonIgnore | |||
@JSONField(serialize = false) | |||
public int getGrade() { | |||
return rule.getGrade(); | |||
} | |||
@JsonIgnore | |||
@JSONField(serialize = false) | |||
public Integer getParamIdx() { | |||
return rule.getParamIdx(); | |||
} | |||
@JsonIgnore | |||
@JSONField(serialize = false) | |||
public double getCount() { | |||
return rule.getCount(); | |||
} | |||
@JsonIgnore | |||
@JSONField(serialize = false) | |||
public List<ParamFlowItem> getParamFlowItemList() { | |||
return rule.getParamFlowItemList(); | |||
} | |||
@JsonIgnore | |||
@JSONField(serialize = false) | |||
public int getControlBehavior() { | |||
return rule.getControlBehavior(); | |||
} | |||
@JsonIgnore | |||
@JSONField(serialize = false) | |||
public int getMaxQueueingTimeMs() { | |||
return rule.getMaxQueueingTimeMs(); | |||
} | |||
@JsonIgnore | |||
@JSONField(serialize = false) | |||
public int getBurstCount() { | |||
return rule.getBurstCount(); | |||
} | |||
@JsonIgnore | |||
@JSONField(serialize = false) | |||
public long getDurationInSec() { | |||
return rule.getDurationInSec(); | |||
} | |||
@JsonIgnore | |||
@JSONField(serialize = false) | |||
public boolean isClusterMode() { | |||
return rule.isClusterMode(); | |||
} | |||
@JsonIgnore | |||
@JSONField(serialize = false) | |||
public ParamFlowClusterConfig getClusterConfig() { | |||
return rule.getClusterConfig(); | |||
} | |||
@@ -0,0 +1,60 @@ | |||
/* | |||
* Copyright 1999-2018 Alibaba Group Holding Ltd. | |||
* | |||
* Licensed under the Apache License, Version 2.0 (the "License"); | |||
* you may not use this file except in compliance with the License. | |||
* You may obtain a copy of the License at | |||
* | |||
* http://www.apache.org/licenses/LICENSE-2.0 | |||
* | |||
* Unless required by applicable law or agreed to in writing, software | |||
* distributed under the License is distributed on an "AS IS" BASIS, | |||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
* See the License for the specific language governing permissions and | |||
* limitations under the License. | |||
*/ | |||
package com.alibaba.csp.sentinel.dashboard.datasource.entity; | |||
import com.alibaba.csp.sentinel.dashboard.datasource.entity.rule.AuthorityRuleEntity; | |||
import com.alibaba.csp.sentinel.dashboard.datasource.entity.rule.ParamFlowRuleEntity; | |||
import com.alibaba.csp.sentinel.slots.block.authority.AuthorityRule; | |||
import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowClusterConfig; | |||
import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowRule; | |||
import com.alibaba.fastjson.JSON; | |||
import org.junit.Assert; | |||
import org.junit.Test; | |||
/** | |||
* @author lianglin | |||
* @since 1.7.0 | |||
*/ | |||
public class JsonSerializeTest { | |||
@Test | |||
public void authorityRuleJsonSerializeTest() { | |||
AuthorityRuleEntity emptyRule = new AuthorityRuleEntity(); | |||
Assert.assertTrue("{}".equals(JSON.toJSONString(emptyRule))); | |||
AuthorityRuleEntity authorityRule = new AuthorityRuleEntity(); | |||
AuthorityRule rule = new AuthorityRule(); | |||
rule.setStrategy(0).setLimitApp("default").setResource("rs"); | |||
authorityRule.setRule(rule); | |||
Assert.assertTrue("{\"rule\":{\"limitApp\":\"default\",\"resource\":\"rs\",\"strategy\":0}}".equals(JSON.toJSONString(authorityRule))); | |||
} | |||
@Test | |||
public void paramFlowRuleSerializeTest() { | |||
ParamFlowRuleEntity emptyRule = new ParamFlowRuleEntity(); | |||
Assert.assertTrue("{}".equals(JSON.toJSONString(emptyRule))); | |||
ParamFlowRuleEntity paramFlowRule = new ParamFlowRuleEntity(); | |||
ParamFlowRule rule = new ParamFlowRule(); | |||
rule.setClusterConfig(new ParamFlowClusterConfig()); | |||
rule.setResource("rs").setLimitApp("default"); | |||
paramFlowRule.setRule(rule); | |||
Assert.assertTrue("{\"rule\":{\"burstCount\":0,\"clusterConfig\":{\"fallbackToLocalWhenFail\":false,\"sampleCount\":10,\"thresholdType\":0,\"windowIntervalMs\":1000},\"clusterMode\":false,\"controlBehavior\":0,\"count\":0.0,\"durationInSec\":1,\"grade\":1,\"limitApp\":\"default\",\"maxQueueingTimeMs\":0,\"paramFlowItemList\":[],\"resource\":\"rs\"}}" | |||
.equals(JSON.toJSONString(paramFlowRule))); | |||
} | |||
} |