| package com.fasterxml.jackson.databind.objectid; |
| |
| import java.util.ArrayList; |
| |
| import com.fasterxml.jackson.annotation.*; |
| import com.fasterxml.jackson.databind.*; |
| |
| @SuppressWarnings("serial") |
| public class ObjectId825BTest extends BaseMapTest |
| { |
| static abstract class AbstractAct extends AbstractEntity { |
| protected java.util.ArrayList<Tr> outTr; |
| |
| public java.util.ArrayList<Tr> getOutTr() { |
| return this.outTr; |
| } |
| public void setOutTr(java.util.ArrayList<Tr> outTr) { |
| this.outTr = outTr; |
| } |
| } |
| |
| static abstract class AbstractCond extends AbstractAct { } |
| |
| static abstract class AbstractData extends AbstractSym { } |
| |
| static abstract class AbstractDec extends AbstractAct { |
| protected java.util.ArrayList<Dec> dec; |
| |
| public java.util.ArrayList<Dec> getDec() { |
| return this.dec; |
| } |
| public void setDec(java.util.ArrayList<Dec> dec) { |
| this.dec = dec; |
| } |
| } |
| |
| @JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="oidString") |
| @JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@class") |
| static abstract class AbstractEntity implements java.io.Serializable { |
| public String oidString; |
| |
| protected AbstractEntity() { } |
| |
| public String getOidString() { |
| return oidString; |
| } |
| |
| public void setOidString(String oidString) { |
| this.oidString = oidString; |
| } |
| } |
| |
| static abstract class AbstractSym extends AbstractEntity { } |
| |
| static class Ch extends AbstractEntity { |
| protected java.util.ArrayList<? extends AbstractAct> act; |
| |
| public java.util.ArrayList<? extends AbstractAct> getAct() { |
| return this.act; |
| } |
| |
| public void setAct(java.util.ArrayList<? extends AbstractAct> act) { |
| this.act = act; |
| } |
| } |
| |
| static class CTC extends AbstractEntity { |
| protected java.util.ArrayList<CTV> var; |
| |
| public CTC() { } |
| |
| public java.util.ArrayList<CTV> getVar() { |
| if (var == null) { |
| var = new ArrayList<CTV>(); |
| } |
| return new ArrayList<CTV>(var); |
| } |
| |
| public void setVar(java.util.ArrayList<CTV> var) { |
| this.var = var; |
| } |
| } |
| |
| static class CTD extends AbstractDec { } |
| |
| static class CTV extends AbstractEntity { |
| protected Ch ch; |
| protected java.util.ArrayList<? extends AbstractData> locV; |
| |
| public Ch getCh() { |
| return this.ch; |
| } |
| |
| public void setCh(Ch ch) { |
| this.ch = ch; |
| } |
| |
| |
| public java.util.ArrayList<? extends AbstractData> getLocV() { |
| return this.locV; |
| } |
| |
| public void setLocV(java.util.ArrayList<? extends AbstractData> locV) { |
| this.locV = locV; |
| } |
| } |
| |
| static class Dec extends AbstractCond { } |
| |
| static class Ti extends AbstractAct { |
| protected AbstractData timer; |
| |
| public AbstractData getTimer() { |
| return this.timer; |
| } |
| |
| public void setTimer(AbstractData timer) { |
| this.timer = timer; |
| } |
| } |
| |
| static class Tr extends AbstractEntity { |
| protected AbstractAct target; |
| |
| public AbstractAct getTarget() { |
| return this.target; |
| } |
| |
| public void setTarget(AbstractAct target) { |
| this.target = target; |
| } |
| } |
| |
| static class V extends AbstractData { |
| private static final long serialVersionUID = 1L; |
| } |
| |
| public void testFull825() throws Exception |
| { |
| final ObjectMapper mapper = new ObjectMapper(); |
| mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.OBJECT_AND_NON_CONCRETE); |
| mapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT); |
| |
| String INPUT = aposToQuotes( |
| "{\n"+ |
| " '@class': '_PKG_CTC',\n"+ |
| " 'var': [{\n"+ |
| " 'ch': {\n"+ |
| " '@class': '_PKG_Ch',\n"+ |
| " 'act': [{\n"+ |
| " '@class': '_PKG_CTD',\n"+ |
| " 'oidString': 'oid1',\n"+ |
| " 'dec': [{\n"+ |
| " '@class': '_PKG_Dec',\n"+ |
| " 'oidString': 'oid2',\n"+ |
| " 'outTr': [{\n"+ |
| " '@class': '_PKG_Tr',\n"+ |
| " 'target': {\n"+ |
| " '@class': '_PKG_Ti',\n"+ |
| " 'oidString': 'oid3',\n"+ |
| " 'timer': 'problemoid',\n"+ |
| " 'outTr': [{\n"+ |
| " '@class': '_PKG_Tr',\n"+ |
| " 'target': {\n"+ |
| " '@class': '_PKG_Ti',\n"+ |
| " 'oidString': 'oid4',\n"+ |
| " 'timer': {\n"+ |
| " '@class': '_PKG_V',\n"+ |
| " 'oidString': 'problemoid'\n"+ |
| " }\n"+ |
| " }\n"+ |
| " }]\n"+ |
| " }\n"+ |
| " }]\n"+ |
| " }]\n"+ |
| " }],\n"+ |
| " 'oidString': 'oid5'\n"+ |
| " },\n"+ |
| " '@class': '_PKG_CTV',\n"+ |
| " 'oidString': 'oid6',\n"+ |
| " 'locV': ['problemoid']\n"+ |
| " }],\n"+ |
| " 'oidString': 'oid7'\n"+ |
| "}\n" |
| ); |
| |
| // also replace package |
| final String newPkg = getClass().getName() + "\\$"; |
| INPUT = INPUT.replaceAll("_PKG_", newPkg); |
| |
| CTC result = mapper.readValue(INPUT, CTC.class); |
| assertNotNull(result); |
| } |
| } |