com.fasterxml.jackson.databind.ser.std.SqlDateSerializer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ehcache Show documentation
Show all versions of ehcache Show documentation
Ehcache is an open source, standards-based cache used to boost performance,
offload the database and simplify scalability. Ehcache is robust, proven and full-featured and
this has made it the most widely-used Java-based cache.
package com.fasterxml.jackson.databind.ser.std;
import java.io.IOException;
import java.text.DateFormat;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
/**
* Compared to regular {@link java.util.Date} serialization, we do use String
* representation here. Why? Basically to truncate of time part, since
* that should not be used by plain SQL date.
*/
@JacksonStdImpl
@SuppressWarnings("serial")
public class SqlDateSerializer
extends DateTimeSerializerBase
{
public SqlDateSerializer() {
// 11-Oct-2016, tatu: As per [databind#219] fixed for 2.9; was passing `false` prior
this(null, 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, customFormat);
}
@Override
protected long _timestamp(java.sql.Date value) {
return (value == null) ? 0L : value.getTime();
}
@Override
public void serialize(java.sql.Date value, JsonGenerator g, SerializerProvider provider)
throws IOException
{
if (_asTimestamp(provider)) {
g.writeNumber(_timestamp(value));
return;
}
// Alas, can't just call `_serializeAsString()`....
if (_customFormat == null) {
// 11-Oct-2016, tatu: For backwards-compatibility purposes, we shall just use
// the awful standard JDK serialization via `sqlDate.toString()`... this
// is problematic in multiple ways (including using arbitrary timezone...)
g.writeString(value.toString());
return;
}
_serializeAsString(value, g, provider);
}
}