Skip to content

Commit 20748cc

Browse files
committed
Add a failing test for #1300
1 parent 7ad860a commit 20748cc

File tree

2 files changed

+59
-8
lines changed

2 files changed

+59
-8
lines changed

src/test/java/com/fasterxml/jackson/databind/module/TestAbstractTypes.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,6 @@
99

1010
public class TestAbstractTypes extends BaseMapTest
1111
{
12-
/*
13-
/**********************************************************
14-
/* Helper classes; simple beans and their handlers
15-
/**********************************************************
16-
*/
17-
1812
static class MyString implements CharSequence
1913
{
2014
protected String value;
@@ -34,10 +28,10 @@ public int length() {
3428
@Override
3529
public CharSequence subSequence(int arg0, int arg1) { return this; }
3630
}
37-
31+
3832
/*
3933
/**********************************************************
40-
/* Unit tests
34+
/* Test methods
4135
/**********************************************************
4236
*/
4337

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.fasterxml.jackson.failing;
2+
3+
import java.io.IOException;
4+
5+
import com.fasterxml.jackson.annotation.*;
6+
7+
import com.fasterxml.jackson.core.*;
8+
9+
import com.fasterxml.jackson.databind.*;
10+
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
11+
import com.fasterxml.jackson.databind.module.SimpleModule;
12+
13+
public class PolymorphicWithCustomDeser1300Test extends BaseMapTest
14+
{
15+
// [databind#1300]
16+
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME,
17+
include = JsonTypeInfo.As.PROPERTY, property = "type")
18+
@JsonSubTypes({
19+
@JsonSubTypes.Type(value = T1.class, name = "T1")
20+
})
21+
interface Type1300 {}
22+
23+
@JsonTypeName("T1")
24+
static class T1 implements Type1300 {
25+
public int v;
26+
}
27+
28+
/*
29+
/**********************************************************
30+
/* Test methods
31+
/**********************************************************
32+
*/
33+
34+
// [databind#1300]
35+
@SuppressWarnings("serial")
36+
public void testDeserForPolymorphicBaseType() throws Exception
37+
{
38+
ObjectMapper mapper = new ObjectMapper();
39+
SimpleModule mod = new SimpleModule("test", Version.unknownVersion());
40+
mod.addDeserializer(Type1300.class,
41+
new StdDeserializer<Type1300>(Type1300.class) {
42+
@Override
43+
public Type1300 deserialize(JsonParser p,
44+
DeserializationContext ctxt) throws IOException
45+
{
46+
T1 result = new T1();
47+
JsonNode n = ctxt.readValue(p, JsonNode.class);
48+
result.v = n.path("value").asInt();
49+
return result;
50+
}
51+
});
52+
Type1300 result = mapper.readValue("{\"value\":3, \"type\":\"bogus\"}", Type1300.class);
53+
assertEquals(T1.class, result.getClass());
54+
assertEquals(3, ((T1) result).v);
55+
}
56+
57+
}

0 commit comments

Comments
 (0)