/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

  1. package com.alibaba.json.bvt.bug;
  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import com.alibaba.fastjson.parser.ParserConfig;
  8. import junit.framework.TestCase;
  9. import com.alibaba.fastjson.JSON;
  10. import com.alibaba.fastjson.annotation.JSONField;
  11. import com.alibaba.fastjson.serializer.SerializerFeature;
  12. public class Bug_for_dragoon26 extends TestCase {
  13. protected void setUp() throws Exception {
  14. ParserConfig.global.addAccept("com.alibaba.json.bvt.bug.Bug_for_dragoon26");
  15. }
  16. public void test_0() throws Exception {
  17. MonitorConfigMessage message = new MonitorConfigMessage();
  18. MonitorConfig config = new MonitorConfig();
  19. message.setContent(config);
  20. AlarmReceiver receiver1 = new AlarmReceiver(2001L);
  21. AlarmReceiver receiver2 = new AlarmReceiver(2002L);
  22. AlarmReceiver receiver3 = new AlarmReceiver(2003L);
  23. ArrayList<MonitorItem> items = new ArrayList<MonitorItem>();
  24. {
  25. MonitorItem item1 = new MonitorItem();
  26. item1.setId(1001L);
  27. MonitorItemAlarmRule rule = new MonitorItemAlarmRule();
  28. rule.getAlarmReceivers().add(receiver1);
  29. rule.getAlarmReceivers().add(receiver2);
  30. item1.getRules().add(rule);
  31. items.add(item1);
  32. }
  33. {
  34. MonitorItem item = new MonitorItem();
  35. item.setId(1002L);
  36. MonitorItemAlarmRule rule = new MonitorItemAlarmRule();
  37. rule.getAlarmReceivers().add(receiver1);
  38. rule.getAlarmReceivers().add(receiver3);
  39. item.getRules().add(rule);
  40. items.add(item);
  41. }
  42. {
  43. MonitorItem item = new MonitorItem();
  44. item.setId(1003L);
  45. MonitorItemAlarmRule rule = new MonitorItemAlarmRule();
  46. rule.getAlarmReceivers().add(receiver2);
  47. rule.getAlarmReceivers().add(receiver3);
  48. item.getRules().add(rule);
  49. items.add(item);
  50. }
  51. config.setMonitorItems(items);
  52. String text = JSON.toJSONString(message, SerializerFeature.WriteClassName);
  53. System.out.println(JSON.toJSONString(message, SerializerFeature.WriteClassName, SerializerFeature.PrettyFormat));
  54. MonitorConfigMessage message2 = (MonitorConfigMessage) JSON.parse(text);
  55. System.out.println(JSON.toJSONString(message2, SerializerFeature.WriteClassName, SerializerFeature.PrettyFormat));
  56. }
  57. public static class MonitorConfigMessage {
  58. private Object content;
  59. public Object getContent() {
  60. return content;
  61. }
  62. public void setContent(Object content) {
  63. this.content = content;
  64. }
  65. }
  66. public static class MonitorConfig {
  67. private Map<Long, MonitorItem> monitorItems = new HashMap<Long, MonitorItem>();
  68. @JSONField(name = "MonitorItems")
  69. public Collection<MonitorItem> getMonitorItems() {
  70. return monitorItems.values();
  71. }
  72. @JSONField(name = "MonitorItems")
  73. public void setMonitorItems(Collection<MonitorItem> items) {
  74. for (MonitorItem item : items) {
  75. this.monitorItems.put(item.getId(), item);
  76. }
  77. }
  78. }
  79. public static class MonitorItem extends MonitorItemBase<MonitorItemAlarmRule> {
  80. }
  81. public static class MonitorItemBase <K extends AlarmRuleBase> {
  82. private Long id;
  83. private List<K> rules = new ArrayList<K>();
  84. @JSONField(name = "mid")
  85. public Long getId() {
  86. return id;
  87. }
  88. @JSONField(name = "mid")
  89. public void setId(Long id) {
  90. this.id = id;
  91. }
  92. public List<K> getRules() {
  93. return rules;
  94. }
  95. public void setRules(List<K> rules) {
  96. this.rules = rules;
  97. }
  98. }
  99. public static class AlarmRuleBase {
  100. }
  101. public static class MonitorItemAlarmRule extends AlarmRuleBase {
  102. private List<AlarmReceiver> alarmReceivers = new ArrayList<AlarmReceiver>();
  103. public List<AlarmReceiver> getAlarmReceivers() {
  104. return alarmReceivers;
  105. }
  106. public void setAlarmReceivers(List<AlarmReceiver> alarmReceivers) {
  107. this.alarmReceivers = alarmReceivers;
  108. }
  109. }
  110. public static class AlarmReceiver {
  111. private Long id;
  112. public AlarmReceiver(){
  113. }
  114. public AlarmReceiver(Long id){
  115. this.id = id;
  116. }
  117. public Long getId() {
  118. return id;
  119. }
  120. public void setId(Long id) {
  121. this.id = id;
  122. }
  123. }
  124. }