Skip to content

Method: DurationDeserializer()

1: package cz.cvut.kbss.jsonld.deserialization.datetime;
2:
3: import cz.cvut.kbss.jsonld.deserialization.DeserializationContext;
4: import cz.cvut.kbss.jsonld.deserialization.ValueDeserializer;
5: import cz.cvut.kbss.jsonld.exception.JsonLdDeserializationException;
6:
7: import java.time.Duration;
8: import java.util.Map;
9:
10: import static cz.cvut.kbss.jsonld.deserialization.datetime.OffsetDateTimeDeserializer.getLiteralValue;
11:
12: /**
13: * Deserializes JSON values to {@link Duration}.
14: * <p>
15: * The value is expected to be an ISO 8601-formatted string.
16: */
17: public class DurationDeserializer implements ValueDeserializer<Duration> {
18:
19: @Override
20: public Duration deserialize(Map<?, ?> jsonNode, DeserializationContext<Duration> ctx) {
21: final Object value = getLiteralValue(jsonNode);
22: try {
23: return Duration.parse(value.toString());
24: } catch (RuntimeException e) {
25: throw new JsonLdDeserializationException("Unable to deserialize duration.", e);
26: }
27: }
28: }