Skip to content

Commit d274d4f

Browse files
committed
Fix #4896: deserialize enum from ""
1 parent 5b1b9ab commit d274d4f

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

src/main/java/com/fasterxml/jackson/databind/util/CompactStringObjectMap.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@ private final static int findSize(int size)
9696
return result;
9797
}
9898

99-
public Object find(String key) {
99+
public Object find(String key)
100+
{
100101
int slot = key.hashCode() & _hashMask;
101102
int ix = (slot<<1);
102103
Object match = _hashArea[ix];

src/test/java/com/fasterxml/jackson/databind/deser/enums/EnumDeserializationTest.java

+23-1
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,6 @@ public Object deserializeKey(String key, DeserializationContext ctxt) throws IOE
206206
}
207207
}
208208

209-
210209
@JsonDeserialize(using = AnEnumDeserializer.class, keyUsing = AnEnumKeyDeserializer.class)
211210
public enum LanguageCodeMixin {
212211
}
@@ -280,6 +279,18 @@ public static Operation3006 forValue(final String idStr) {
280279
}
281280
}
282281

282+
// [databind#4896]
283+
enum YesOrNoOrEmpty4896 {
284+
@JsonProperty("")
285+
EMPTY,
286+
287+
@JsonProperty("yes")
288+
YES,
289+
290+
@JsonProperty("no")
291+
NO;
292+
}
293+
283294
/*
284295
/**********************************************************
285296
/* Test methods
@@ -810,4 +821,15 @@ public void testEnumFeature_READ_ENUM_KEYS_USING_INDEX_isDisabledByDefault() {
810821
.isEnabled(EnumFeature.READ_ENUM_KEYS_USING_INDEX));
811822
}
812823

824+
// [databind#4896]
825+
@Test
826+
public void testEnumReadFromEmptyString() throws Exception {
827+
// First, regular value
828+
assertEquals(YesOrNoOrEmpty4896.YES,
829+
MAPPER.readerFor(YesOrNoOrEmpty4896.class)
830+
.readValue(q("yes")));
831+
assertEquals(YesOrNoOrEmpty4896.EMPTY,
832+
MAPPER.readerFor(YesOrNoOrEmpty4896.class)
833+
.readValue(q("")));
834+
}
813835
}

0 commit comments

Comments
 (0)