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"); } }