DurationKeyDeserializer.java
package tools.jackson.datatype.joda.deser.key;
import java.io.IOException;
import org.joda.time.Duration;
import tools.jackson.core.JacksonException;
import tools.jackson.databind.DeserializationContext;
public class DurationKeyDeserializer extends JodaKeyDeserializer
{
@Override
protected Object deserialize(String key, DeserializationContext ctxt)
throws JacksonException
{
try {
return PERIOD_FORMAT.parsePeriod(ctxt, key).toStandardDuration();
} catch (IOException e) {
throw _wrapJodaFailure(e);
} catch (IllegalArgumentException | ArithmeticException
| UnsupportedOperationException e) {
// [datatype-joda#195]: do not let raw Joda exception escape;
// `UnsupportedOperationException` for Period with years/months
return ctxt.handleWeirdKey(Duration.class, key,
"Invalid Duration value: %s", e.getMessage());
}
}
}