|
1 | 1 | package com.fasterxml.jackson.databind.deser.jdk;
|
2 | 2 |
|
3 | 3 | import java.util.EnumMap;
|
| 4 | +import java.util.LinkedHashMap; |
4 | 5 | import java.util.Map;
|
5 | 6 |
|
6 | 7 | import com.fasterxml.jackson.annotation.*;
|
@@ -77,6 +78,22 @@ public Pojo1859(EnumMap<Enum1859, String> v) {
|
77 | 78 | }
|
78 | 79 | }
|
79 | 80 |
|
| 81 | + // [databind#2457] |
| 82 | + enum MyEnum2457 { |
| 83 | + A, |
| 84 | + B() { |
| 85 | + // just to ensure subclass construction |
| 86 | + @Override |
| 87 | + public void foo() { } |
| 88 | + }; |
| 89 | + |
| 90 | + // needed to force subclassing |
| 91 | + public void foo() { } |
| 92 | + |
| 93 | + @Override |
| 94 | + public String toString() { return name() + " as string"; } |
| 95 | + } |
| 96 | + |
80 | 97 | /*
|
81 | 98 | /**********************************************************
|
82 | 99 | /* Test methods, basic
|
@@ -224,4 +241,21 @@ public void testUnknownKeyAsNull() throws Exception
|
224 | 241 | assertEquals(1, value2.size());
|
225 | 242 | assertEquals("value", value2.get(null));
|
226 | 243 | }
|
| 244 | + |
| 245 | + // [databind#2457] |
| 246 | + public void testCustomEnumAsRootMapKey() throws Exception |
| 247 | + { |
| 248 | + final ObjectMapper mapper = newJsonMapper(); |
| 249 | + final Map<MyEnum2457, String> map = new LinkedHashMap<>(); |
| 250 | + map.put(MyEnum2457.A, "1"); |
| 251 | + map.put(MyEnum2457.B, "2"); |
| 252 | + assertEquals(aposToQuotes("{'A':'1','B':'2'}"), |
| 253 | + mapper.writeValueAsString(map)); |
| 254 | + |
| 255 | + // But should be able to override |
| 256 | + assertEquals(aposToQuotes("{'"+MyEnum2457.A.toString()+"':'1','"+MyEnum2457.B.toString()+"':'2'}"), |
| 257 | + mapper.writer() |
| 258 | + .with(SerializationFeature.WRITE_ENUMS_USING_TO_STRING) |
| 259 | + .writeValueAsString(map)); |
| 260 | + } |
227 | 261 | }
|
0 commit comments