Skip to content

Commit 386e9f7

Browse files
committed
Merge branch '2.5' into 2.6
Conflicts: release-notes/VERSION src/test/java/com/fasterxml/jackson/databind/ser/DateSerializationTest.java
2 parents 8716072 + 70d961b commit 386e9f7

File tree

5 files changed

+28
-11
lines changed

5 files changed

+28
-11
lines changed

release-notes/VERSION

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ Project: jackson-databind
99
#1052: Don't generate a spurious NullNode after parsing an embedded object
1010
(reported by philipa@github)
1111
#1061: Problem with Object Id and Type Id as Wrapper Object (regression in 2.5.1)
12+
#1073: Add try-catch around `java.sql` type serializers
13+
(suggested by claudemt@github)
1214

1315
2.6.4 (07-Dec-2015)
1416

src/main/java/com/fasterxml/jackson/databind/ser/BasicSerializerFactory.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,7 @@ public abstract class BasicSerializerFactory
8383
// Other discrete non-container types:
8484
// First, Date/Time zoo:
8585
_concrete.put(Calendar.class.getName(), CalendarSerializer.instance);
86-
DateSerializer dateSer = DateSerializer.instance;
87-
_concrete.put(java.util.Date.class.getName(), dateSer);
88-
// note: timestamps are very similar to java.util.Date, thus serialized as such
89-
_concrete.put(java.sql.Timestamp.class.getName(), dateSer);
90-
91-
// leave some of less commonly used ones as lazy, no point in proactive construction
92-
_concreteLazy.put(java.sql.Date.class.getName(), SqlDateSerializer.class);
93-
_concreteLazy.put(java.sql.Time.class.getName(), SqlTimeSerializer.class);
86+
_concrete.put(java.util.Date.class.getName(), DateSerializer.instance);
9487

9588
// And then other standard non-structured JDK types
9689
for (Map.Entry<Class<?>,Object> en : StdJdkSerializers.all()) {

src/main/java/com/fasterxml/jackson/databind/ser/std/SqlTimeSerializer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ public class SqlTimeSerializer
2121
public SqlTimeSerializer() { super(java.sql.Time.class); }
2222

2323
@Override
24-
public void serialize(java.sql.Time value, JsonGenerator jgen, SerializerProvider provider) throws IOException
24+
public void serialize(java.sql.Time value, JsonGenerator g, SerializerProvider provider) throws IOException
2525
{
26-
jgen.writeString(value.toString());
26+
g.writeString(value.toString());
2727
}
2828

2929
@Override

src/main/java/com/fasterxml/jackson/databind/ser/std/StdJdkSerializers.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,19 @@ public static Collection<Map.Entry<Class<?>, Object>> all()
5353
sers.put(Void.class, NullSerializer.instance);
5454
sers.put(Void.TYPE, NullSerializer.instance);
5555

56+
// 09-Jan-2015, tatu: As per [databind#1073], let's try to guard against possibility
57+
// of some environments missing `java.sql.` types
58+
try {
59+
// note: timestamps are very similar to java.util.Date, thus serialized as such
60+
sers.put(java.sql.Timestamp.class, DateSerializer.instance);
61+
62+
// leave some of less commonly used ones as lazy, no point in proactive construction
63+
sers.put(java.sql.Date.class, SqlDateSerializer.class);
64+
sers.put(java.sql.Time.class, SqlTimeSerializer.class);
65+
} catch (NoClassDefFoundError e) {
66+
// nothing much we can do here; could log, but probably not useful for now.
67+
}
68+
5669
return sers.entrySet();
5770
}
5871

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,16 @@ public void testSqlTime() throws IOException
116116
// does use is quite simple:
117117
assertEquals(quote(time.toString()), MAPPER.writeValueAsString(time));
118118
}
119-
119+
120+
public void testSqlTimestamp() throws IOException
121+
{
122+
java.sql.Timestamp input = new java.sql.Timestamp(0L);
123+
// just should produce same output as standard `java.util.Date`:
124+
Date altTnput = new Date(0L);
125+
assertEquals(MAPPER.writeValueAsString(altTnput),
126+
MAPPER.writeValueAsString(input));
127+
}
128+
120129
public void testTimeZone() throws IOException
121130
{
122131
TimeZone input = TimeZone.getTimeZone("PST");

0 commit comments

Comments
 (0)