• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.fasterxml.jackson.databind.objectid;
2 
3 import java.util.ArrayList;
4 
5 import com.fasterxml.jackson.annotation.*;
6 import com.fasterxml.jackson.databind.*;
7 import com.fasterxml.jackson.databind.testutil.NoCheckSubTypeValidator;
8 
9 @SuppressWarnings("serial")
10 public class ObjectId825BTest extends BaseMapTest
11 {
12     static abstract class AbstractAct extends AbstractEntity {
13         protected java.util.ArrayList<Tr> outTr;
14 
getOutTr()15         public java.util.ArrayList<Tr> getOutTr() {
16             return this.outTr;
17         }
setOutTr(java.util.ArrayList<Tr> outTr)18         public void setOutTr(java.util.ArrayList<Tr> outTr) {
19             this.outTr = outTr;
20         }
21     }
22 
23     static abstract class AbstractCond extends AbstractAct { }
24 
25     static abstract class AbstractData extends AbstractSym { }
26 
27     static abstract class AbstractDec extends AbstractAct {
28         protected java.util.ArrayList<Dec> dec;
29 
getDec()30         public java.util.ArrayList<Dec> getDec() {
31             return this.dec;
32         }
setDec(java.util.ArrayList<Dec> dec)33         public void setDec(java.util.ArrayList<Dec> dec) {
34             this.dec = dec;
35         }
36     }
37 
38     @JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="oidString")
39     @JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@class")
40     static abstract class AbstractEntity implements java.io.Serializable {
41         public String oidString;
42 
AbstractEntity()43         protected AbstractEntity() { }
44 
getOidString()45         public String getOidString() {
46             return oidString;
47         }
48 
setOidString(String oidString)49         public void setOidString(String oidString) {
50             this.oidString = oidString;
51         }
52     }
53 
54     static abstract class AbstractSym extends AbstractEntity { }
55 
56     static class Ch extends AbstractEntity {
57         protected java.util.ArrayList<? extends AbstractAct> act;
58 
getAct()59         public java.util.ArrayList<? extends AbstractAct> getAct() {
60             return this.act;
61         }
62 
setAct(java.util.ArrayList<? extends AbstractAct> act)63         public void setAct(java.util.ArrayList<? extends AbstractAct> act) {
64             this.act = act;
65         }
66     }
67 
68     static class CTC extends AbstractEntity {
69         protected java.util.ArrayList<CTV> var;
70 
CTC()71         public CTC() { }
72 
getVar()73         public java.util.ArrayList<CTV> getVar() {
74             if (var == null) {
75                 var = new ArrayList<CTV>();
76             }
77             return new ArrayList<CTV>(var);
78         }
79 
setVar(java.util.ArrayList<CTV> var)80         public void setVar(java.util.ArrayList<CTV> var) {
81             this.var = var;
82         }
83     }
84 
85     static class CTD extends AbstractDec { }
86 
87     static class CTV extends AbstractEntity {
88         protected Ch ch;
89         protected java.util.ArrayList<? extends AbstractData> locV;
90 
getCh()91         public Ch getCh() {
92             return this.ch;
93         }
94 
setCh(Ch ch)95         public void setCh(Ch ch) {
96             this.ch = ch;
97         }
98 
99 
getLocV()100         public java.util.ArrayList<? extends AbstractData> getLocV() {
101             return this.locV;
102         }
103 
setLocV(java.util.ArrayList<? extends AbstractData> locV)104         public void setLocV(java.util.ArrayList<? extends AbstractData> locV) {
105             this.locV = locV;
106         }
107     }
108 
109     static class Dec extends AbstractCond { }
110 
111     static class Ti extends AbstractAct {
112         protected AbstractData timer;
113 
getTimer()114         public AbstractData getTimer() {
115             return this.timer;
116         }
117 
setTimer(AbstractData timer)118         public void setTimer(AbstractData timer) {
119             this.timer = timer;
120         }
121     }
122 
123     static class Tr extends AbstractEntity {
124         protected AbstractAct target;
125 
getTarget()126         public AbstractAct getTarget() {
127             return this.target;
128         }
129 
setTarget(AbstractAct target)130         public void setTarget(AbstractAct target) {
131             this.target = target;
132         }
133     }
134 
135     static class V extends AbstractData {
136         private static final long serialVersionUID = 1L;
137     }
138 
139     /*
140     /*****************************************************
141     /* Test methods
142     /*****************************************************
143      */
144 
testFull825()145     public void testFull825() throws Exception
146     {
147         final ObjectMapper mapper = jsonMapperBuilder()
148                 .activateDefaultTyping(NoCheckSubTypeValidator.instance,
149                         ObjectMapper.DefaultTyping.OBJECT_AND_NON_CONCRETE)
150                 .build();
151 
152         String INPUT = aposToQuotes(
153 "{\n"+
154 "    '@class': '_PKG_CTC',\n"+
155 "     'var': [{\n"+
156 "      'ch': {\n"+
157 "        '@class': '_PKG_Ch',\n"+
158 "         'act': [{\n"+
159 "            '@class': '_PKG_CTD',\n"+
160 "            'oidString': 'oid1',\n"+
161 "            'dec': [{\n"+
162 "              '@class': '_PKG_Dec',\n"+
163 "                'oidString': 'oid2',\n"+
164 "                'outTr': [{\n"+
165 "                  '@class': '_PKG_Tr',\n"+
166 "                  'target': {\n"+
167 "                    '@class': '_PKG_Ti',\n"+
168 "                    'oidString': 'oid3',\n"+
169 "                    'timer': 'problemoid',\n"+
170 "                    'outTr': [{\n"+
171 "                      '@class': '_PKG_Tr',\n"+
172 "                      'target': {\n"+
173 "                        '@class': '_PKG_Ti',\n"+
174 "                        'oidString': 'oid4',\n"+
175 "                        'timer': {\n"+
176 "                          '@class': '_PKG_V',\n"+
177 "                          'oidString': 'problemoid'\n"+
178 "                        }\n"+
179 "                      }\n"+
180 "                    }]\n"+
181 "                  }\n"+
182 "                }]\n"+
183 "              }]\n"+
184 "         }],\n"+
185 "         'oidString': 'oid5'\n"+
186 "      },\n"+
187 "       '@class': '_PKG_CTV',\n"+
188 "       'oidString': 'oid6',\n"+
189 "       'locV': ['problemoid']\n"+
190 "    }],\n"+
191 "     'oidString': 'oid7'\n"+
192 "}\n"
193                 );
194 
195         // also replace package
196         final String newPkg = getClass().getName() + "\\$";
197         INPUT = INPUT.replaceAll("_PKG_", newPkg);
198 
199         CTC result = mapper.readValue(INPUT, CTC.class);
200         assertNotNull(result);
201     }
202 }
203