|
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;
|
@@ -185,13 +189,33 @@ public String toString() {
|
185 | 189 | }
|
186 | 190 | }
|
187 | 191 |
|
| 192 | + // [databind#3280] |
| 193 | + static enum Enum3280 { |
| 194 | + x("x"), |
| 195 | + y("y"), |
| 196 | + z("z"); |
| 197 | + private final String value; |
| 198 | + Enum3280(String value) { |
| 199 | + this.value = value; |
| 200 | + } |
| 201 | + @JsonCreator |
| 202 | + public static Enum3280 getByValue(@JsonProperty("b") String value) { |
| 203 | + for (Enum3280 e : Enum3280.values()) { |
| 204 | + if (e.value.equals(value)) { |
| 205 | + return e; |
| 206 | + } |
| 207 | + } |
| 208 | + return null; |
| 209 | + } |
| 210 | + } |
| 211 | + |
188 | 212 | /*
|
189 | 213 | /**********************************************************
|
190 | 214 | /* Test methods
|
191 | 215 | /**********************************************************
|
192 | 216 | */
|
193 | 217 |
|
194 |
| - protected final ObjectMapper MAPPER = new ObjectMapper(); |
| 218 | + protected final ObjectMapper MAPPER = newJsonMapper(); |
195 | 219 |
|
196 | 220 | public void testCreatorEnums() throws Exception {
|
197 | 221 | EnumWithCreator value = MAPPER.readValue("\"enumA\"", EnumWithCreator.class);
|
@@ -307,4 +331,15 @@ public void testMultiArgEnumInCollections() throws Exception
|
307 | 331 | assertEquals(Enum929.B, valueList.get(2));
|
308 | 332 | }
|
309 | 333 |
|
| 334 | + // for [databind#3280] |
| 335 | + public void testPropertyCreatorEnum3280() throws Exception |
| 336 | + { |
| 337 | + final ObjectReader r = MAPPER.readerFor(Enum3280.class); |
| 338 | + assertEquals(Enum3280.x, r.readValue("{\"b\":\"x\"}")); |
| 339 | + assertEquals(Enum3280.x, r.readValue("{\"a\":\"1\", \"b\":\"x\"}")); |
| 340 | + assertEquals(Enum3280.y, r.readValue("{\"b\":\"y\", \"a\":{}}")); |
| 341 | + assertEquals(Enum3280.y, r.readValue("{\"b\":\"y\", \"a\":{}}")); |
| 342 | + assertEquals(Enum3280.x, r.readValue("{\"a\":[], \"b\":\"x\"}")); |
| 343 | + assertEquals(Enum3280.x, r.readValue("{\"a\":{}, \"b\":\"x\"}")); |
| 344 | + } |
310 | 345 | }
|
0 commit comments