io.prestosql.jdbc.$internal.jackson.datatype.joda.deser.MonthDayDeserializer Maven / Gradle / Ivy
package io.prestosql.jdbc.$internal.jackson.datatype.joda.deser;
import java.io.IOException;
import io.prestosql.jdbc.$internal.jackson.datatype.joda.cfg.FormatConfig;
import io.prestosql.jdbc.$internal.jackson.datatype.joda.cfg.JacksonJodaDateFormat;
import io.prestosql.jdbc.$internal.joda.time.MonthDay;
import io.prestosql.jdbc.$internal.jackson.core.JsonParser;
import io.prestosql.jdbc.$internal.jackson.core.JsonToken;
import io.prestosql.jdbc.$internal.jackson.databind.DeserializationContext;
/**
* A Jackson deserializer for Joda MonthDay objects.
*
* Expects a string value compatible with MonthDay's parse operation.
*/
public class MonthDayDeserializer extends JodaDateDeserializerBase
{
private static final long serialVersionUID = 1L;
public MonthDayDeserializer() {
this(FormatConfig.DEFAULT_MONTH_DAY_FORMAT);
}
public MonthDayDeserializer(JacksonJodaDateFormat format) {
super(MonthDay.class, format);
}
@Override
public JodaDateDeserializerBase withFormat(JacksonJodaDateFormat format) {
return new MonthDayDeserializer(format);
}
@Override
public MonthDay deserialize(final JsonParser p, final DeserializationContext ctxt) throws IOException
{
JsonToken t = p.getCurrentToken();
if (t == JsonToken.VALUE_STRING)
{
String str = p.getText().trim();
if (str.isEmpty()) {
return getNullValue(ctxt);
}
return MonthDay.parse(str, this._format.createParser(ctxt));
}
return (MonthDay) ctxt.handleUnexpectedToken(handledType(), p.getCurrentToken(), p,
"expected JSON String");
}
}