Skip to content

Commit 8c36f1c

Browse files
committed
Merge branch 'master' of github.com:FasterXML/jackson-databind
2 parents 9236000 + d180bed commit 8c36f1c

File tree

1 file changed

+52
-3
lines changed

1 file changed

+52
-3
lines changed

src/test/java/com/fasterxml/jackson/databind/struct/JSOGDeserialize622Test.java

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
package com.fasterxml.jackson.databind.struct;
22

3-
import java.io.IOException;
4-
53
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
64
import com.fasterxml.jackson.annotation.JsonProperty;
75
import com.fasterxml.jackson.annotation.JsonTypeInfo;
6+
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
7+
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
88
import com.fasterxml.jackson.annotation.ObjectIdGenerator;
99
import com.fasterxml.jackson.core.JsonParser;
10+
import com.fasterxml.jackson.databind.BaseMapTest;
11+
import com.fasterxml.jackson.databind.DeserializationContext;
12+
import com.fasterxml.jackson.databind.JsonDeserializer;
13+
import com.fasterxml.jackson.databind.JsonNode;
14+
import com.fasterxml.jackson.databind.ObjectMapper;
1015
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
11-
import com.fasterxml.jackson.databind.*;
16+
import java.io.IOException;
1217

1318
/**
1419
* Unit test(s) for [databind#622], supporting non-scalar-Object-ids,
@@ -187,4 +192,48 @@ public void testPolymorphicRoundTrip() throws Exception
187192
assertEquals(123, jsog.foo);
188193
assertSame(jsog, jsog.next);
189194
}
195+
196+
//
197+
// For databind issue #669
198+
//
199+
200+
@JsonIdentityInfo(generator=JSOGGenerator.class)
201+
@JsonTypeInfo(use=Id.CLASS, include= As.PROPERTY, property="@class")
202+
public static class Inner {
203+
public String bar;
204+
205+
public Inner() {}
206+
public Inner(String bar) { this.bar = bar; }
207+
}
208+
209+
public static class SubInner extends Inner {
210+
public String extra;
211+
212+
public SubInner() {}
213+
public SubInner(String bar, String extra) {
214+
super(bar);
215+
this.extra = extra;
216+
}
217+
}
218+
219+
@JsonIdentityInfo(generator=JSOGGenerator.class)
220+
public static class Outer {
221+
public String foo;
222+
public Inner inner1;
223+
public Inner inner2;
224+
}
225+
226+
// polymorphic alternative for [#669]
227+
public void testAlterativePolymorphicRoundTrip() throws Exception
228+
{
229+
Outer outer = new Outer();
230+
outer.foo = "foo";
231+
outer.inner1 = outer.inner2 = new SubInner("bar", "extra");
232+
233+
String jsog = MAPPER.writeValueAsString(outer);
234+
235+
Outer back = MAPPER.readValue(jsog, Outer.class);
236+
237+
assertSame(back.inner1, back.inner2);
238+
}
190239
}

0 commit comments

Comments
 (0)