Skip to content

Commit ed7d416

Browse files
committed
Fix #749
1 parent 279e386 commit ed7d416

File tree

3 files changed

+38
-5
lines changed

3 files changed

+38
-5
lines changed

release-notes/VERSION

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ Project: jackson-databind
66

77
2.6.3 (not yet released)
88

9+
#749: `EnumMap` serialization ignores `SerializationFeature.WRITE_ENUMS_USING_TO_STRING`
10+
(reported by scubasau@github)
911
#938: Regression: `StackOverflowError` with recursive types that contain `Map.Entry`
1012
(reported by jloisel@github)
1113
#940: Add missing `hashCode()` implementations for `JsonNode` types that did not have them

src/test/java/com/fasterxml/jackson/databind/ser/TestJSONP.java renamed to src/test/java/com/fasterxml/jackson/databind/misc/TestJSONP.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.fasterxml.jackson.databind.ser;
1+
package com.fasterxml.jackson.databind.misc;
22

33
import com.fasterxml.jackson.databind.*;
44
import com.fasterxml.jackson.databind.type.TypeFactory;

src/test/java/com/fasterxml/jackson/databind/ser/TestEnumSerialization.java

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@
33
import java.io.*;
44
import java.util.*;
55

6-
import com.fasterxml.jackson.annotation.JsonAnyGetter;
7-
import com.fasterxml.jackson.annotation.JsonFormat;
6+
import com.fasterxml.jackson.annotation.*;
87
import com.fasterxml.jackson.annotation.JsonFormat.Shape;
9-
import com.fasterxml.jackson.annotation.JsonProperty;
10-
import com.fasterxml.jackson.annotation.JsonValue;
8+
119
import com.fasterxml.jackson.core.*;
1210
import com.fasterxml.jackson.databind.*;
1311
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -207,6 +205,14 @@ public void serialize(Foo661 value, JsonGenerator jgen, SerializerProvider provi
207205
}
208206
}
209207
}
208+
209+
protected static enum LC749Enum {
210+
A, B, C;
211+
private LC749Enum() { }
212+
@Override
213+
public String toString() { return name().toLowerCase(); }
214+
}
215+
210216
/*
211217
/**********************************************************
212218
/* Tests
@@ -384,6 +390,31 @@ public void testCustomEnumMapKeySerializer() throws Exception {
384390
String json = MAPPER.writeValueAsString(new MyBean661("abc"));
385391
assertEquals(aposToQuotes("{'X-FOO':'abc'}"), json);
386392
}
393+
394+
// [databind#749]
395+
396+
public void testEnumMapSerDefault() throws Exception {
397+
final ObjectMapper mapper = new ObjectMapper();
398+
EnumMap<LC749Enum, String> m = new EnumMap<LC749Enum, String>(LC749Enum.class);
399+
m.put(LC749Enum.A, "value");
400+
assertEquals("{\"A\":\"value\"}", mapper.writeValueAsString(m));
401+
}
402+
403+
public void testEnumMapSerDisableToString() throws Exception {
404+
final ObjectMapper mapper = new ObjectMapper();
405+
ObjectWriter w = mapper.writer().without(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
406+
EnumMap<LC749Enum, String> m = new EnumMap<LC749Enum, String>(LC749Enum.class);
407+
m.put(LC749Enum.A, "value");
408+
assertEquals("{\"A\":\"value\"}", w.writeValueAsString(m));
409+
}
410+
411+
public void testEnumMapSerEnableToString() throws Exception {
412+
final ObjectMapper mapper = new ObjectMapper();
413+
ObjectWriter w = mapper.writer().with(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
414+
EnumMap<LC749Enum, String> m = new EnumMap<LC749Enum, String>(LC749Enum.class);
415+
m.put(LC749Enum.A, "value");
416+
assertEquals("{\"a\":\"value\"}", w.writeValueAsString(m));
417+
}
387418
}
388419

389420
// [JACKSON-757], non-inner enum

0 commit comments

Comments
 (0)