From ed7d4168d067b08c22c596ba5e98aa1136164306 Mon Sep 17 00:00:00 2001 From: Cowtowncoder Date: Thu, 24 Sep 2015 22:04:41 -0700 Subject: [PATCH] Fix #749 --- release-notes/VERSION | 2 + .../databind/{ser => misc}/TestJSONP.java | 2 +- .../databind/ser/TestEnumSerialization.java | 39 +++++++++++++++++-- 3 files changed, 38 insertions(+), 5 deletions(-) rename src/test/java/com/fasterxml/jackson/databind/{ser => misc}/TestJSONP.java (97%) diff --git a/release-notes/VERSION b/release-notes/VERSION index 928c0c5793..ff3d4446b9 100644 --- a/release-notes/VERSION +++ b/release-notes/VERSION @@ -6,6 +6,8 @@ Project: jackson-databind 2.6.3 (not yet released) +#749: `EnumMap` serialization ignores `SerializationFeature.WRITE_ENUMS_USING_TO_STRING` + (reported by scubasau@github) #938: Regression: `StackOverflowError` with recursive types that contain `Map.Entry` (reported by jloisel@github) #940: Add missing `hashCode()` implementations for `JsonNode` types that did not have them diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestJSONP.java b/src/test/java/com/fasterxml/jackson/databind/misc/TestJSONP.java similarity index 97% rename from src/test/java/com/fasterxml/jackson/databind/ser/TestJSONP.java rename to src/test/java/com/fasterxml/jackson/databind/misc/TestJSONP.java index 62860a7d14..064ed498de 100644 --- a/src/test/java/com/fasterxml/jackson/databind/ser/TestJSONP.java +++ b/src/test/java/com/fasterxml/jackson/databind/misc/TestJSONP.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.databind.ser; +package com.fasterxml.jackson.databind.misc; import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.type.TypeFactory; diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestEnumSerialization.java b/src/test/java/com/fasterxml/jackson/databind/ser/TestEnumSerialization.java index 200db4a417..d2c0e88efd 100644 --- a/src/test/java/com/fasterxml/jackson/databind/ser/TestEnumSerialization.java +++ b/src/test/java/com/fasterxml/jackson/databind/ser/TestEnumSerialization.java @@ -3,11 +3,9 @@ import java.io.*; import java.util.*; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat.Shape; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonValue; + import com.fasterxml.jackson.core.*; import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.annotation.JsonSerialize; @@ -207,6 +205,14 @@ public void serialize(Foo661 value, JsonGenerator jgen, SerializerProvider provi } } } + + protected static enum LC749Enum { + A, B, C; + private LC749Enum() { } + @Override + public String toString() { return name().toLowerCase(); } + } + /* /********************************************************** /* Tests @@ -384,6 +390,31 @@ public void testCustomEnumMapKeySerializer() throws Exception { String json = MAPPER.writeValueAsString(new MyBean661("abc")); assertEquals(aposToQuotes("{'X-FOO':'abc'}"), json); } + + // [databind#749] + + public void testEnumMapSerDefault() throws Exception { + final ObjectMapper mapper = new ObjectMapper(); + EnumMap m = new EnumMap(LC749Enum.class); + m.put(LC749Enum.A, "value"); + assertEquals("{\"A\":\"value\"}", mapper.writeValueAsString(m)); + } + + public void testEnumMapSerDisableToString() throws Exception { + final ObjectMapper mapper = new ObjectMapper(); + ObjectWriter w = mapper.writer().without(SerializationFeature.WRITE_ENUMS_USING_TO_STRING); + EnumMap m = new EnumMap(LC749Enum.class); + m.put(LC749Enum.A, "value"); + assertEquals("{\"A\":\"value\"}", w.writeValueAsString(m)); + } + + public void testEnumMapSerEnableToString() throws Exception { + final ObjectMapper mapper = new ObjectMapper(); + ObjectWriter w = mapper.writer().with(SerializationFeature.WRITE_ENUMS_USING_TO_STRING); + EnumMap m = new EnumMap(LC749Enum.class); + m.put(LC749Enum.A, "value"); + assertEquals("{\"a\":\"value\"}", w.writeValueAsString(m)); + } } // [JACKSON-757], non-inner enum