Skip to content
This repository was archived by the owner on Nov 7, 2019. It is now read-only.

Commit 41562df

Browse files
committed
Merge pull request #34 from CARFAX/master
Allow custom DateTimeFormatters
2 parents 930e4c3 + 27d7080 commit 41562df

15 files changed

+360
-35
lines changed

src/main/java/com/fasterxml/jackson/datatype/jsr310/deser/LocalDateDeserializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ private LocalDateDeserializer() {
4343
this(DateTimeFormatter.ISO_LOCAL_DATE);
4444
}
4545

46-
protected LocalDateDeserializer(DateTimeFormatter dtf) {
46+
public LocalDateDeserializer(DateTimeFormatter dtf) {
4747
super(LocalDate.class, dtf);
4848
}
4949

src/main/java/com/fasterxml/jackson/datatype/jsr310/deser/LocalDateTimeDeserializer.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,13 @@ private LocalDateTimeDeserializer() {
4242
this(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
4343
}
4444

45-
protected LocalDateTimeDeserializer(DateTimeFormatter dtf) {
46-
super(LocalDateTime.class, dtf);
45+
public LocalDateTimeDeserializer(DateTimeFormatter formatter) {
46+
super(LocalDateTime.class, formatter);
4747
}
4848

4949
@Override
50-
protected JsonDeserializer<LocalDateTime> withDateFormat(DateTimeFormatter dtf) {
51-
return new LocalDateTimeDeserializer(dtf);
50+
protected JsonDeserializer<LocalDateTime> withDateFormat(DateTimeFormatter formatter) {
51+
return new LocalDateTimeDeserializer(formatter);
5252
}
5353

5454
@Override

src/main/java/com/fasterxml/jackson/datatype/jsr310/deser/LocalTimeDeserializer.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,13 @@ private LocalTimeDeserializer() {
4242
this(DateTimeFormatter.ISO_LOCAL_TIME);
4343
}
4444

45-
protected LocalTimeDeserializer(DateTimeFormatter dtf) {
46-
super(LocalTime.class, dtf);
45+
public LocalTimeDeserializer(DateTimeFormatter formatter) {
46+
super(LocalTime.class, formatter);
4747
}
4848

4949
@Override
50-
protected JsonDeserializer<LocalTime> withDateFormat(DateTimeFormatter dtf) {
51-
return new LocalTimeDeserializer(dtf);
50+
protected JsonDeserializer<LocalTime> withDateFormat(DateTimeFormatter formatter) {
51+
return new LocalTimeDeserializer(formatter);
5252
}
5353

5454
@Override

src/main/java/com/fasterxml/jackson/datatype/jsr310/deser/YearDeserializer.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import java.io.IOException;
2323
import java.time.Year;
24+
import java.time.format.DateTimeFormatter;
2425

2526
/**
2627
* Deserializer for Java 8 temporal {@link Year}s.
@@ -31,17 +32,25 @@
3132
public class YearDeserializer extends JSR310DeserializerBase<Year>
3233
{
3334
private static final long serialVersionUID = 1L;
34-
35+
private DateTimeFormatter formatter;
3536
public static final YearDeserializer INSTANCE = new YearDeserializer();
3637

3738
private YearDeserializer()
3839
{
3940
super(Year.class);
4041
}
4142

43+
public YearDeserializer(DateTimeFormatter formatter) {
44+
super(Year.class);
45+
this.formatter = formatter;
46+
}
47+
4248
@Override
4349
public Year deserialize(JsonParser parser, DeserializationContext context) throws IOException
4450
{
45-
return Year.of(parser.getValueAsInt());
51+
if (formatter == null) {
52+
return Year.of(parser.getValueAsInt());
53+
}
54+
return Year.parse(parser.getValueAsString(), formatter);
4655
}
4756
}

src/main/java/com/fasterxml/jackson/datatype/jsr310/deser/YearMonthDeserializer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ private YearMonthDeserializer()
4545
this(DateTimeFormatter.ofPattern("uuuu-MM"));
4646
}
4747

48-
protected YearMonthDeserializer(DateTimeFormatter dtf)
48+
public YearMonthDeserializer(DateTimeFormatter formatter)
4949
{
50-
super(YearMonth.class, dtf);
50+
super(YearMonth.class, formatter);
5151
}
5252

5353
@Override

src/main/java/com/fasterxml/jackson/datatype/jsr310/ser/LocalDateSerializer.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ protected LocalDateSerializer(LocalDateSerializer base,
4444
super(base, useTimestamp, dtf);
4545
}
4646

47+
public LocalDateSerializer(DateTimeFormatter formatter) {
48+
super(LocalDate.class, formatter);
49+
}
50+
4751
@Override
4852
protected LocalDateSerializer withFormat(Boolean useTimestamp, DateTimeFormatter dtf) {
4953
return new LocalDateSerializer(this, useTimestamp, dtf);

src/main/java/com/fasterxml/jackson/datatype/jsr310/ser/LocalDateTimeSerializer.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,20 @@ public class LocalDateTimeSerializer extends JSR310FormattedSerializerBase<Local
3838
public static final LocalDateTimeSerializer INSTANCE = new LocalDateTimeSerializer();
3939

4040
protected LocalDateTimeSerializer() {
41-
super(LocalDateTime.class);
41+
this(null);
4242
}
4343

44-
private LocalDateTimeSerializer(LocalDateTimeSerializer base,
45-
Boolean useTimestamp, DateTimeFormatter dtf) {
46-
super(base, useTimestamp, dtf);
44+
public LocalDateTimeSerializer(DateTimeFormatter formatter) {
45+
super(LocalDateTime.class, formatter);
46+
}
47+
48+
private LocalDateTimeSerializer(LocalDateTimeSerializer base, Boolean useTimestamp, DateTimeFormatter formatter) {
49+
super(base, useTimestamp, formatter);
4750
}
4851

4952
@Override
50-
protected JSR310FormattedSerializerBase<LocalDateTime> withFormat(Boolean useTimestamp, DateTimeFormatter dtf) {
51-
return new LocalDateTimeSerializer(this, useTimestamp, dtf);
53+
protected JSR310FormattedSerializerBase<LocalDateTime> withFormat(Boolean useTimestamp, DateTimeFormatter formatter) {
54+
return new LocalDateTimeSerializer(this, useTimestamp, formatter);
5255
}
5356

5457
@Override

src/main/java/com/fasterxml/jackson/datatype/jsr310/ser/LocalTimeSerializer.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,15 @@ public class LocalTimeSerializer extends JSR310FormattedSerializerBase<LocalTime
3838
public static final LocalTimeSerializer INSTANCE = new LocalTimeSerializer();
3939

4040
protected LocalTimeSerializer() {
41-
super(LocalTime.class);
41+
this(null);
4242
}
4343

44-
protected LocalTimeSerializer(LocalTimeSerializer base,
45-
Boolean useTimestamp, DateTimeFormatter dtf) {
46-
super(base, useTimestamp, dtf);
44+
public LocalTimeSerializer(DateTimeFormatter formatter) {
45+
super(LocalTime.class, formatter);
46+
}
47+
48+
protected LocalTimeSerializer(LocalTimeSerializer base, Boolean useTimestamp, DateTimeFormatter formatter) {
49+
super(base, useTimestamp, formatter);
4750
}
4851

4952
@Override

src/main/java/com/fasterxml/jackson/datatype/jsr310/ser/YearMonthSerializer.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,20 @@ public class YearMonthSerializer extends JSR310FormattedSerializerBase<YearMonth
4141
public static final YearMonthSerializer INSTANCE = new YearMonthSerializer();
4242

4343
private YearMonthSerializer() {
44-
super(YearMonth.class);
44+
this(null);
4545
}
4646

47-
private YearMonthSerializer(YearMonthSerializer base,
48-
Boolean useTimestamp, DateTimeFormatter dtf) {
49-
super(base, useTimestamp, dtf);
47+
public YearMonthSerializer(DateTimeFormatter formatter) {
48+
super(YearMonth.class, formatter);
49+
}
50+
51+
private YearMonthSerializer(YearMonthSerializer base, Boolean useTimestamp, DateTimeFormatter formatter) {
52+
super(base, useTimestamp, formatter);
5053
}
5154

5255
@Override
53-
protected YearMonthSerializer withFormat(Boolean useTimestamp, DateTimeFormatter dtf) {
54-
return new YearMonthSerializer(this, useTimestamp, dtf);
56+
protected YearMonthSerializer withFormat(Boolean useTimestamp, DateTimeFormatter formatter) {
57+
return new YearMonthSerializer(this, useTimestamp, formatter);
5558
}
5659

5760
@Override

src/main/java/com/fasterxml/jackson/datatype/jsr310/ser/YearSerializer.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,20 @@ public class YearSerializer extends JSR310FormattedSerializerBase<Year>
4141
public static final YearSerializer INSTANCE = new YearSerializer();
4242

4343
protected YearSerializer() {
44-
super(Year.class);
44+
this(null);
4545
}
4646

47-
protected YearSerializer(YearSerializer base,
48-
Boolean useTimestamp, DateTimeFormatter dtf) {
49-
super(base, useTimestamp, dtf);
47+
public YearSerializer(DateTimeFormatter formatter) {
48+
super(Year.class, formatter);
49+
}
50+
51+
protected YearSerializer(YearSerializer base, Boolean useTimestamp, DateTimeFormatter formatter) {
52+
super(base, useTimestamp, formatter);
5053
}
5154

5255
@Override
53-
protected YearSerializer withFormat(Boolean useTimestamp, DateTimeFormatter dtf) {
54-
return new YearSerializer(this, useTimestamp, dtf);
56+
protected YearSerializer withFormat(Boolean useTimestamp, DateTimeFormatter formatter) {
57+
return new YearSerializer(this, useTimestamp, formatter);
5558
}
5659

5760
@Override

0 commit comments

Comments
 (0)