Skip to content

Commit f834d6f

Browse files
committed
Fix #82
1 parent bb45b00 commit f834d6f

File tree

5 files changed

+53
-92
lines changed

5 files changed

+53
-92
lines changed

datetime/src/main/java/com/fasterxml/jackson/datatype/jsr310/JSR310Module.java

Lines changed: 4 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,7 @@
1616

1717
package com.fasterxml.jackson.datatype.jsr310;
1818

19-
import java.time.Duration;
20-
import java.time.Instant;
21-
import java.time.LocalDate;
22-
import java.time.LocalDateTime;
23-
import java.time.LocalTime;
24-
import java.time.MonthDay;
25-
import java.time.OffsetDateTime;
26-
import java.time.OffsetTime;
27-
import java.time.Period;
28-
import java.time.Year;
29-
import java.time.YearMonth;
30-
import java.time.ZoneId;
31-
import java.time.ZoneOffset;
32-
import java.time.ZonedDateTime;
19+
import java.time.*;
3320

3421
import com.fasterxml.jackson.databind.BeanDescription;
3522
import com.fasterxml.jackson.databind.DeserializationConfig;
@@ -52,20 +39,7 @@
5239
import com.fasterxml.jackson.datatype.jsr310.deser.OffsetTimeDeserializer;
5340
import com.fasterxml.jackson.datatype.jsr310.deser.YearDeserializer;
5441
import com.fasterxml.jackson.datatype.jsr310.deser.YearMonthDeserializer;
55-
import com.fasterxml.jackson.datatype.jsr310.deser.key.DurationKeyDeserializer;
56-
import com.fasterxml.jackson.datatype.jsr310.deser.key.InstantKeyDeserializer;
57-
import com.fasterxml.jackson.datatype.jsr310.deser.key.LocalDateKeyDeserializer;
58-
import com.fasterxml.jackson.datatype.jsr310.deser.key.LocalDateTimeKeyDeserializer;
59-
import com.fasterxml.jackson.datatype.jsr310.deser.key.LocalTimeKeyDeserializer;
60-
import com.fasterxml.jackson.datatype.jsr310.deser.key.MonthDayKeyDeserializer;
61-
import com.fasterxml.jackson.datatype.jsr310.deser.key.OffsetDateTimeKeyDeserializer;
62-
import com.fasterxml.jackson.datatype.jsr310.deser.key.OffsetTimeKeyDeserializer;
63-
import com.fasterxml.jackson.datatype.jsr310.deser.key.PeriodKeyDeserializer;
64-
import com.fasterxml.jackson.datatype.jsr310.deser.key.YearKeyDeserializer;
65-
import com.fasterxml.jackson.datatype.jsr310.deser.key.YearMothKeyDeserializer;
66-
import com.fasterxml.jackson.datatype.jsr310.deser.key.ZoneIdKeyDeserializer;
67-
import com.fasterxml.jackson.datatype.jsr310.deser.key.ZoneOffsetKeyDeserializer;
68-
import com.fasterxml.jackson.datatype.jsr310.deser.key.ZonedDateTimeKeyDeserializer;
42+
import com.fasterxml.jackson.datatype.jsr310.deser.key.*;
6943
import com.fasterxml.jackson.datatype.jsr310.ser.DurationSerializer;
7044
import com.fasterxml.jackson.datatype.jsr310.ser.InstantSerializer;
7145
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
@@ -173,7 +147,7 @@ public JSR310Module()
173147
addKeyDeserializer(OffsetTime.class, OffsetTimeKeyDeserializer.INSTANCE);
174148
addKeyDeserializer(Period.class, PeriodKeyDeserializer.INSTANCE);
175149
addKeyDeserializer(Year.class, YearKeyDeserializer.INSTANCE);
176-
addKeyDeserializer(YearMonth.class, YearMothKeyDeserializer.INSTANCE);
150+
addKeyDeserializer(YearMonth.class, YearMonthKeyDeserializer.INSTANCE);
177151
addKeyDeserializer(ZonedDateTime.class, ZonedDateTimeKeyDeserializer.INSTANCE);
178152
addKeyDeserializer(ZoneId.class, ZoneIdKeyDeserializer.INSTANCE);
179153
addKeyDeserializer(ZoneOffset.class, ZoneOffsetKeyDeserializer.INSTANCE);
@@ -225,11 +199,10 @@ public ValueInstantiator findValueInstantiator(DeserializationConfig config,
225199
});
226200
}
227201

228-
// For
229202
protected AnnotatedMethod _findFactory(AnnotatedClass cls, String name, Class<?>... argTypes)
230203
{
231204
final int argCount = argTypes.length;
232-
for (AnnotatedMethod method : cls.getStaticMethods()) {
205+
for (AnnotatedMethod method : cls.getFactoryMethods()) {
233206
if (!name.equals(method.getName())
234207
|| (method.getParameterCount() != argCount)) {
235208
continue;

datetime/src/main/java/com/fasterxml/jackson/datatype/jsr310/JavaTimeModule.java

Lines changed: 3 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,7 @@
1616

1717
package com.fasterxml.jackson.datatype.jsr310;
1818

19-
import java.time.Duration;
20-
import java.time.Instant;
21-
import java.time.LocalDate;
22-
import java.time.LocalDateTime;
23-
import java.time.LocalTime;
24-
import java.time.MonthDay;
25-
import java.time.OffsetDateTime;
26-
import java.time.OffsetTime;
27-
import java.time.Period;
28-
import java.time.Year;
29-
import java.time.YearMonth;
30-
import java.time.ZoneId;
31-
import java.time.ZoneOffset;
32-
import java.time.ZonedDateTime;
19+
import java.time.*;
3320

3421
import com.fasterxml.jackson.databind.BeanDescription;
3522
import com.fasterxml.jackson.databind.DeserializationConfig;
@@ -52,20 +39,7 @@
5239
import com.fasterxml.jackson.datatype.jsr310.deser.OffsetTimeDeserializer;
5340
import com.fasterxml.jackson.datatype.jsr310.deser.YearDeserializer;
5441
import com.fasterxml.jackson.datatype.jsr310.deser.YearMonthDeserializer;
55-
import com.fasterxml.jackson.datatype.jsr310.deser.key.DurationKeyDeserializer;
56-
import com.fasterxml.jackson.datatype.jsr310.deser.key.InstantKeyDeserializer;
57-
import com.fasterxml.jackson.datatype.jsr310.deser.key.LocalDateKeyDeserializer;
58-
import com.fasterxml.jackson.datatype.jsr310.deser.key.LocalDateTimeKeyDeserializer;
59-
import com.fasterxml.jackson.datatype.jsr310.deser.key.LocalTimeKeyDeserializer;
60-
import com.fasterxml.jackson.datatype.jsr310.deser.key.MonthDayKeyDeserializer;
61-
import com.fasterxml.jackson.datatype.jsr310.deser.key.OffsetDateTimeKeyDeserializer;
62-
import com.fasterxml.jackson.datatype.jsr310.deser.key.OffsetTimeKeyDeserializer;
63-
import com.fasterxml.jackson.datatype.jsr310.deser.key.PeriodKeyDeserializer;
64-
import com.fasterxml.jackson.datatype.jsr310.deser.key.YearKeyDeserializer;
65-
import com.fasterxml.jackson.datatype.jsr310.deser.key.YearMothKeyDeserializer;
66-
import com.fasterxml.jackson.datatype.jsr310.deser.key.ZoneIdKeyDeserializer;
67-
import com.fasterxml.jackson.datatype.jsr310.deser.key.ZoneOffsetKeyDeserializer;
68-
import com.fasterxml.jackson.datatype.jsr310.deser.key.ZonedDateTimeKeyDeserializer;
42+
import com.fasterxml.jackson.datatype.jsr310.deser.key.*;
6943
import com.fasterxml.jackson.datatype.jsr310.ser.DurationSerializer;
7044
import com.fasterxml.jackson.datatype.jsr310.ser.InstantSerializer;
7145
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
@@ -197,7 +171,7 @@ public JavaTimeModule()
197171
addKeyDeserializer(OffsetTime.class, OffsetTimeKeyDeserializer.INSTANCE);
198172
addKeyDeserializer(Period.class, PeriodKeyDeserializer.INSTANCE);
199173
addKeyDeserializer(Year.class, YearKeyDeserializer.INSTANCE);
200-
addKeyDeserializer(YearMonth.class, YearMothKeyDeserializer.INSTANCE);
174+
addKeyDeserializer(YearMonth.class, YearMonthKeyDeserializer.INSTANCE);
201175
addKeyDeserializer(ZonedDateTime.class, ZonedDateTimeKeyDeserializer.INSTANCE);
202176
addKeyDeserializer(ZoneId.class, ZoneIdKeyDeserializer.INSTANCE);
203177
addKeyDeserializer(ZoneOffset.class, ZoneOffsetKeyDeserializer.INSTANCE);
@@ -247,7 +221,6 @@ public ValueInstantiator findValueInstantiator(DeserializationConfig config,
247221
});
248222
}
249223

250-
// For
251224
protected AnnotatedMethod _findFactory(AnnotatedClass cls, String name, Class<?>... argTypes)
252225
{
253226
final int argCount = argTypes.length;
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.fasterxml.jackson.datatype.jsr310.deser.key;
2+
3+
import static java.time.temporal.ChronoField.MONTH_OF_YEAR;
4+
import static java.time.temporal.ChronoField.YEAR;
5+
6+
import java.io.IOException;
7+
import java.time.DateTimeException;
8+
import java.time.YearMonth;
9+
import java.time.format.DateTimeFormatter;
10+
import java.time.format.DateTimeFormatterBuilder;
11+
import java.time.format.SignStyle;
12+
13+
import com.fasterxml.jackson.databind.DeserializationContext;
14+
15+
/**
16+
* @since 2.10 (had a typo previously)
17+
*/
18+
public class YearMonthKeyDeserializer extends Jsr310KeyDeserializer {
19+
public static final YearMonthKeyDeserializer INSTANCE = new YearMonthKeyDeserializer();
20+
21+
// parser copied from YearMonth
22+
private static final DateTimeFormatter FORMATTER = new DateTimeFormatterBuilder()
23+
.appendValue(YEAR, 4, 10, SignStyle.EXCEEDS_PAD)
24+
.appendLiteral('-')
25+
.appendValue(MONTH_OF_YEAR, 2)
26+
.toFormatter();
27+
28+
protected YearMonthKeyDeserializer() { } // only protected for 2.10, to allow sub-class
29+
30+
@Override
31+
protected YearMonth deserialize(String key, DeserializationContext ctxt) throws IOException {
32+
try {
33+
return YearMonth.parse(key, FORMATTER);
34+
} catch (DateTimeException e) {
35+
return _handleDateTimeException(ctxt, YearMonth.class, e, key);
36+
}
37+
}
38+
}
Lines changed: 6 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,14 @@
11
package com.fasterxml.jackson.datatype.jsr310.deser.key;
22

3-
import static java.time.temporal.ChronoField.MONTH_OF_YEAR;
4-
import static java.time.temporal.ChronoField.YEAR;
5-
6-
import java.io.IOException;
7-
import java.time.DateTimeException;
8-
import java.time.YearMonth;
9-
import java.time.format.DateTimeFormatter;
10-
import java.time.format.DateTimeFormatterBuilder;
11-
import java.time.format.SignStyle;
12-
13-
import com.fasterxml.jackson.databind.DeserializationContext;
14-
15-
public class YearMothKeyDeserializer extends Jsr310KeyDeserializer {
16-
3+
/**
4+
* @deprecated Due to typo in class name use {@link YearMonthKeyDeserializer} instead.
5+
*/
6+
@Deprecated // since 2.10
7+
public class YearMothKeyDeserializer extends YearMonthKeyDeserializer {
8+
@SuppressWarnings("hiding")
179
public static final YearMothKeyDeserializer INSTANCE = new YearMothKeyDeserializer();
1810

19-
// parser copied from YearMonth
20-
private static final DateTimeFormatter FORMATTER = new DateTimeFormatterBuilder()
21-
.appendValue(YEAR, 4, 10, SignStyle.EXCEEDS_PAD)
22-
.appendLiteral('-')
23-
.appendValue(MONTH_OF_YEAR, 2)
24-
.toFormatter();
25-
2611
private YearMothKeyDeserializer() {
2712
// singleton
2813
}
29-
30-
@Override
31-
protected YearMonth deserialize(String key, DeserializationContext ctxt) throws IOException {
32-
try {
33-
return YearMonth.parse(key, FORMATTER);
34-
} catch (DateTimeException e) {
35-
return _handleDateTimeException(ctxt, YearMonth.class, e, key);
36-
}
37-
}
3814
}

release-notes/VERSION-2.x

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ Modules:
1010

1111
2.10.0 (not yet released)
1212

13-
#75: Use `SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS` for configuring
13+
#75: (datetime) Use `SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS` for configuring
1414
`Duration` serialization
1515
(suggested by Kezhu W)
16+
#82: (datetime) Typo in YearMothKeyDeserializer class name
1617

1718
2.9.8 (not yet released)
1819

0 commit comments

Comments
 (0)