package com.fasterxml.jackson.datatype.joda.deser;
import java.io.IOException;
import com.fasterxml.jackson.datatype.joda.cfg.FormatConfig;
import com.fasterxml.jackson.datatype.joda.cfg.JacksonJodaDateFormat;
import org.joda.time.YearMonth;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.DeserializationContext;
A Jackson deserializer for Joda YearMonth objects.
Expects a string value compatible with YearMonth's parse operation.
/**
* A Jackson deserializer for Joda YearMonth objects.
* <p>
* Expects a string value compatible with YearMonth's parse operation.
*/
public class YearMonthDeserializer extends JodaDateDeserializerBase<YearMonth>
{
private static final long serialVersionUID = 1L;
public YearMonthDeserializer() {
this(FormatConfig.DEFAULT_YEAR_MONTH_FORMAT);
}
public YearMonthDeserializer(JacksonJodaDateFormat format) {
super(YearMonth.class, format);
}
@Override
public JodaDateDeserializerBase<?> withFormat(JacksonJodaDateFormat format) {
return new YearMonthDeserializer(format);
}
@Override
public YearMonth 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 null;
}
return YearMonth.parse(str, _format.createParser(ctxt));
}
return (YearMonth) ctxt.handleUnexpectedToken(handledType(), p.getCurrentToken(), p,
"expected JSON String");
}
}