/src/test/java/com/alibaba/json/bvt/bug/Bug_for_dragoon26.java
https://github.com/alibaba/fastjson · Java · 179 lines · 124 code · 55 blank · 0 comment · 1 complexity · 2a2fbf51952a4a3f8f0389c9472d35d0 MD5 · raw file
- package com.alibaba.json.bvt.bug;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import com.alibaba.fastjson.parser.ParserConfig;
- import junit.framework.TestCase;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.annotation.JSONField;
- import com.alibaba.fastjson.serializer.SerializerFeature;
- public class Bug_for_dragoon26 extends TestCase {
- protected void setUp() throws Exception {
- ParserConfig.global.addAccept("com.alibaba.json.bvt.bug.Bug_for_dragoon26");
- }
- public void test_0() throws Exception {
- MonitorConfigMessage message = new MonitorConfigMessage();
- MonitorConfig config = new MonitorConfig();
- message.setContent(config);
- AlarmReceiver receiver1 = new AlarmReceiver(2001L);
- AlarmReceiver receiver2 = new AlarmReceiver(2002L);
- AlarmReceiver receiver3 = new AlarmReceiver(2003L);
- ArrayList<MonitorItem> items = new ArrayList<MonitorItem>();
- {
- MonitorItem item1 = new MonitorItem();
- item1.setId(1001L);
- MonitorItemAlarmRule rule = new MonitorItemAlarmRule();
- rule.getAlarmReceivers().add(receiver1);
- rule.getAlarmReceivers().add(receiver2);
- item1.getRules().add(rule);
- items.add(item1);
- }
- {
- MonitorItem item = new MonitorItem();
- item.setId(1002L);
- MonitorItemAlarmRule rule = new MonitorItemAlarmRule();
- rule.getAlarmReceivers().add(receiver1);
- rule.getAlarmReceivers().add(receiver3);
- item.getRules().add(rule);
- items.add(item);
- }
- {
-
- MonitorItem item = new MonitorItem();
- item.setId(1003L);
-
- MonitorItemAlarmRule rule = new MonitorItemAlarmRule();
-
- rule.getAlarmReceivers().add(receiver2);
- rule.getAlarmReceivers().add(receiver3);
-
- item.getRules().add(rule);
- items.add(item);
- }
- config.setMonitorItems(items);
- String text = JSON.toJSONString(message, SerializerFeature.WriteClassName);
- System.out.println(JSON.toJSONString(message, SerializerFeature.WriteClassName, SerializerFeature.PrettyFormat));
- MonitorConfigMessage message2 = (MonitorConfigMessage) JSON.parse(text);
- System.out.println(JSON.toJSONString(message2, SerializerFeature.WriteClassName, SerializerFeature.PrettyFormat));
- }
- public static class MonitorConfigMessage {
- private Object content;
- public Object getContent() {
- return content;
- }
- public void setContent(Object content) {
- this.content = content;
- }
- }
- public static class MonitorConfig {
- private Map<Long, MonitorItem> monitorItems = new HashMap<Long, MonitorItem>();
- @JSONField(name = "MonitorItems")
- public Collection<MonitorItem> getMonitorItems() {
- return monitorItems.values();
- }
- @JSONField(name = "MonitorItems")
- public void setMonitorItems(Collection<MonitorItem> items) {
- for (MonitorItem item : items) {
- this.monitorItems.put(item.getId(), item);
- }
- }
- }
- public static class MonitorItem extends MonitorItemBase<MonitorItemAlarmRule> {
- }
- public static class MonitorItemBase <K extends AlarmRuleBase> {
- private Long id;
- private List<K> rules = new ArrayList<K>();
- @JSONField(name = "mid")
- public Long getId() {
- return id;
- }
- @JSONField(name = "mid")
- public void setId(Long id) {
- this.id = id;
- }
- public List<K> getRules() {
- return rules;
- }
- public void setRules(List<K> rules) {
- this.rules = rules;
- }
- }
-
- public static class AlarmRuleBase {
-
- }
- public static class MonitorItemAlarmRule extends AlarmRuleBase {
- private List<AlarmReceiver> alarmReceivers = new ArrayList<AlarmReceiver>();
- public List<AlarmReceiver> getAlarmReceivers() {
- return alarmReceivers;
- }
- public void setAlarmReceivers(List<AlarmReceiver> alarmReceivers) {
- this.alarmReceivers = alarmReceivers;
- }
- }
- public static class AlarmReceiver {
- private Long id;
- public AlarmReceiver(){
- }
- public AlarmReceiver(Long id){
- this.id = id;
- }
- public Long getId() {
- return id;
- }
- public void setId(Long id) {
- this.id = id;
- }
- }
- }