Add failing test for #2644
diff --git a/src/test/java/com/fasterxml/jackson/failing/JDKNumberDeser2644Test.java b/src/test/java/com/fasterxml/jackson/failing/JDKNumberDeser2644Test.java
new file mode 100644
index 0000000..c358e69
--- /dev/null
+++ b/src/test/java/com/fasterxml/jackson/failing/JDKNumberDeser2644Test.java
@@ -0,0 +1,54 @@
+package com.fasterxml.jackson.failing;
+
+import java.math.BigDecimal;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.databind.*;
+
+public class JDKNumberDeser2644Test extends BaseMapTest
+{
+ // [databind#2644]
+ static class NodeRoot2644 {
+ public String type;
+
+ @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_PROPERTY, property = "type")
+ @JsonSubTypes(value = {
+ @JsonSubTypes.Type(value = NodeParent2644.class, name = "NodeParent")
+ })
+ public Node2644 node;
+ }
+
+ public static class NodeParent2644 extends Node2644 { }
+
+ public static abstract class Node2644 {
+ @JsonProperty("amount")
+ BigDecimal val;
+
+ public BigDecimal getVal() {
+ return val;
+ }
+
+ public void setVal(BigDecimal val) {
+ this.val = val;
+ }
+ }
+
+ // [databind#2644]
+ public void testBigDecimalSubtypes() throws Exception
+ {
+ ObjectMapper mapper = newJsonMapper();
+ mapper.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS);
+ mapper.registerSubtypes(NodeParent2644.class);
+
+ NodeRoot2644 root = mapper.readValue(
+ "{\"type\": \"NodeParent\",\"node\": {\"amount\": 9999999999999999.99} }",
+ NodeRoot2644.class
+ );
+
+ assertEquals(new BigDecimal("9999999999999999.99"), root.node.getVal());
+
+ }
+
+}