6
6
import tools .jackson .core .JsonToken ;
7
7
8
8
import tools .jackson .databind .*;
9
+ import tools .jackson .databind .cfg .DateTimeFeature ;
9
10
import tools .jackson .databind .deser .std .DelegatingDeserializer ;
10
11
import tools .jackson .databind .exc .InvalidFormatException ;
11
12
@@ -16,19 +17,23 @@ public OneBasedMonthDeserializer(ValueDeserializer<?> defaultDeserializer) {
16
17
17
18
@ Override
18
19
public Object deserialize (JsonParser parser , DeserializationContext context ) {
19
- JsonToken token = parser .currentToken ();
20
- switch (token ) {
21
- case VALUE_NUMBER_INT :
22
- return _decodeMonth (parser .getIntValue (), parser );
23
- case VALUE_STRING :
24
- String monthSpec = parser .getString ();
25
- int oneBasedMonthNumber = _decodeNumber (monthSpec );
26
- if (oneBasedMonthNumber >= 0 ) {
27
- return _decodeMonth (oneBasedMonthNumber , parser );
28
- }
29
- default :
30
- // Otherwise fall through to default handling
31
- break ;
20
+ final boolean oneBased = context .isEnabled (DateTimeFeature .ONE_BASED_MONTHS );
21
+ if (oneBased ) {
22
+ JsonToken token = parser .currentToken ();
23
+ switch (token ) {
24
+ case VALUE_NUMBER_INT :
25
+ return _decodeMonth (parser .getIntValue (), parser );
26
+ case VALUE_STRING :
27
+ String monthSpec = parser .getString ();
28
+ int oneBasedMonthNumber = _decodeNumber (monthSpec );
29
+ if (oneBasedMonthNumber >= 0 ) {
30
+ return _decodeMonth (oneBasedMonthNumber , parser );
31
+ }
32
+ default :
33
+ // Otherwise fall through to default handling
34
+ break ;
35
+ }
36
+ // fall-through
32
37
}
33
38
return getDelegatee ().deserialize (parser , context );
34
39
}
0 commit comments