|
1 | 1 | package com.fasterxml.jackson.databind.deser.creators;
|
2 | 2 |
|
3 | 3 | import java.math.BigDecimal;
|
4 |
| -import java.util.*; |
| 4 | +import java.util.Collection; |
| 5 | +import java.util.EnumMap; |
| 6 | +import java.util.EnumSet; |
| 7 | +import java.util.HashMap; |
| 8 | +import java.util.List; |
5 | 9 |
|
6 | 10 | import com.fasterxml.jackson.annotation.JsonCreator;
|
7 | 11 | import com.fasterxml.jackson.annotation.JsonGetter;
|
@@ -187,13 +191,33 @@ public String toString() {
|
187 | 191 | }
|
188 | 192 | }
|
189 | 193 |
|
| 194 | + // [databind#3280] |
| 195 | + static enum Enum3280 { |
| 196 | + x("x"), |
| 197 | + y("y"), |
| 198 | + z("z"); |
| 199 | + private final String value; |
| 200 | + Enum3280(String value) { |
| 201 | + this.value = value; |
| 202 | + } |
| 203 | + @JsonCreator |
| 204 | + public static Enum3280 getByValue(@JsonProperty("b") String value) { |
| 205 | + for (Enum3280 e : Enum3280.values()) { |
| 206 | + if (e.value.equals(value)) { |
| 207 | + return e; |
| 208 | + } |
| 209 | + } |
| 210 | + return null; |
| 211 | + } |
| 212 | + } |
| 213 | + |
190 | 214 | /*
|
191 | 215 | /**********************************************************
|
192 | 216 | /* Test methods
|
193 | 217 | /**********************************************************
|
194 | 218 | */
|
195 | 219 |
|
196 |
| - protected final ObjectMapper MAPPER = new ObjectMapper(); |
| 220 | + protected final ObjectMapper MAPPER = newJsonMapper(); |
197 | 221 |
|
198 | 222 | public void testCreatorEnums() throws Exception {
|
199 | 223 | EnumWithCreator value = MAPPER.readValue("\"enumA\"", EnumWithCreator.class);
|
@@ -309,4 +333,15 @@ public void testMultiArgEnumInCollections() throws Exception
|
309 | 333 | assertEquals(Enum929.B, valueList.get(2));
|
310 | 334 | }
|
311 | 335 |
|
| 336 | + // for [databind#3280] |
| 337 | + public void testPropertyCreatorEnum3280() throws Exception |
| 338 | + { |
| 339 | + final ObjectReader r = MAPPER.readerFor(Enum3280.class); |
| 340 | + assertEquals(Enum3280.x, r.readValue("{\"b\":\"x\"}")); |
| 341 | + assertEquals(Enum3280.x, r.readValue("{\"a\":\"1\", \"b\":\"x\"}")); |
| 342 | + assertEquals(Enum3280.y, r.readValue("{\"b\":\"y\", \"a\":{}}")); |
| 343 | + assertEquals(Enum3280.y, r.readValue("{\"b\":\"y\", \"a\":{}}")); |
| 344 | + assertEquals(Enum3280.x, r.readValue("{\"a\":[], \"b\":\"x\"}")); |
| 345 | + assertEquals(Enum3280.x, r.readValue("{\"a\":{}, \"b\":\"x\"}")); |
| 346 | + } |
312 | 347 | }
|
0 commit comments