diff --git a/datetime/src/main/java/com/fasterxml/jackson/datatype/jsr310/deser/DurationDeserializer.java b/datetime/src/main/java/com/fasterxml/jackson/datatype/jsr310/deser/DurationDeserializer.java index 1940ae10..5a4065d0 100644 --- a/datetime/src/main/java/com/fasterxml/jackson/datatype/jsr310/deser/DurationDeserializer.java +++ b/datetime/src/main/java/com/fasterxml/jackson/datatype/jsr310/deser/DurationDeserializer.java @@ -70,6 +70,11 @@ protected DurationDeserializer(DurationDeserializer base, Boolean leniency) { super(base, leniency); } + protected DurationDeserializer(DurationDeserializer base, DurationPattern durationPattern) { + super(base, base._isLenient); + _durationPattern = durationPattern; + } + @Override protected DurationDeserializer withLeniency(Boolean leniency) { return new DurationDeserializer(this, leniency); @@ -89,18 +94,16 @@ public JsonDeserializer createContextual(DeserializationContext ctxt, } } if (format.hasPattern()) { - this._durationPattern = DurationPattern.from(format.getPattern()) - .orElse(null); - } else { - this._durationPattern = null; + deser = DurationPattern.from(format.getPattern()) + .map(deser::withPattern) + .orElse(deser); } } return deser; } private DurationDeserializer withPattern(DurationPattern pattern) { - this._durationPattern = pattern; - return this; + return new DurationDeserializer(this, pattern); } @Override