JavaSqlDateDeserializer.java

package tools.jackson.databind.ext.sql;

import java.text.DateFormat;
import java.util.Date;

import tools.jackson.core.JacksonException;
import tools.jackson.core.JsonParser;
import tools.jackson.databind.DeserializationContext;
import tools.jackson.databind.deser.jdk.DateBasedDeserializer;

/**
 * Compared to plain old {@link java.util.Date}, SQL version is easier
 * to deal with: mostly because it is more limited.
 */
public class JavaSqlDateDeserializer
    extends DateBasedDeserializer<java.sql.Date>
{
    public final static JavaSqlDateDeserializer instance = new JavaSqlDateDeserializer();

    public JavaSqlDateDeserializer() { super(java.sql.Date.class); }
    public JavaSqlDateDeserializer(JavaSqlDateDeserializer src, DateFormat df, String formatString) {
        super(src, df, formatString);
    }

    @Override
    protected JavaSqlDateDeserializer withDateFormat(DateFormat df, String formatString) {
        return new JavaSqlDateDeserializer(this, df, formatString);
    }

    @Override // since 2.12
    public Object getEmptyValue(DeserializationContext ctxt) {
        return new java.sql.Date(0L);
    }

    @Override
    public java.sql.Date deserialize(JsonParser p, DeserializationContext ctxt) throws JacksonException {
        Date d = _parseDate(p, ctxt);
        return (d == null) ? null : new java.sql.Date(d.getTime());
    }
}