From 42584847f51abbb9da6b034a55d105f07c24894a Mon Sep 17 00:00:00 2001 From: BYUN Sangpil Date: Thu, 13 Oct 2016 00:58:52 +0900 Subject: [PATCH] Fix #1407 - Use the test pattern as 'yyy.MM.dd'. because `java.sql.Date` `toString` method returns a "yyyy-MM-dd" format. --- .../jackson/databind/ser/std/SqlDateSerializer.java | 6 +++++- .../jackson/databind/ser/DateSerializationTest.java | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/SqlDateSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/SqlDateSerializer.java index 90bd3f4aa2..ad065dd6e1 100644 --- a/src/main/java/com/fasterxml/jackson/databind/ser/std/SqlDateSerializer.java +++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/SqlDateSerializer.java @@ -29,9 +29,13 @@ protected SqlDateSerializer(Boolean useTimestamp) { super(java.sql.Date.class, useTimestamp, null); } + protected SqlDateSerializer(Boolean useTimestamp, DateFormat customFormat) { + super(java.sql.Date.class, useTimestamp, customFormat); + } + @Override public SqlDateSerializer withFormat(Boolean timestamp, DateFormat customFormat) { - return new SqlDateSerializer(timestamp); + return new SqlDateSerializer(timestamp, customFormat); } @Override diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/DateSerializationTest.java b/src/test/java/com/fasterxml/jackson/databind/ser/DateSerializationTest.java index d368882561..41842ff36f 100644 --- a/src/test/java/com/fasterxml/jackson/databind/ser/DateSerializationTest.java +++ b/src/test/java/com/fasterxml/jackson/databind/ser/DateSerializationTest.java @@ -37,6 +37,12 @@ static class SqlDateAsNumberBean { public SqlDateAsNumberBean(long l) { date = new java.sql.Date(l); } } + static class SqlDateAsStringBean { + @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy.MM.dd") + public java.sql.Date date; + public SqlDateAsStringBean(long l) { date = new java.sql.Date(l); } + } + static class DateAsStringBean { @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd") public Date date; @@ -245,6 +251,10 @@ public void testDateWithJsonFormat() throws Exception // and with default (ISO8601) format (databind#1109) json = mapper.writeValueAsString(new DateAsDefaultStringBean(0L)); assertEquals("{\"date\":\"1970-01-01T00:00:00.000+0000\"}", json); + + // and with sqlDate format with pattern [Issue#1407] + json = mapper.writeValueAsString(new SqlDateAsStringBean(0L)); + assertEquals("{\"date\":\"1970.01.01\"}", json); } /**