1 package com.fasterxml.jackson.datatype.jsr310.ser;
2
3 import com.fasterxml.jackson.annotation.JsonFormat;
4 import java.time.OffsetDateTime;
5 import java.time.format.DateTimeFormatter;
6
7 public class OffsetDateTimeSerializer extends InstantSerializerBase<OffsetDateTime>
8 {
9 private static final long serialVersionUID = 1L;
10
11 public static final OffsetDateTimeSerializer INSTANCE = new OffsetDateTimeSerializer();
12
13 protected OffsetDateTimeSerializer() {
14 super(OffsetDateTime.class, dt -> dt.toInstant().toEpochMilli(),
15 OffsetDateTime::toEpochSecond, OffsetDateTime::getNano,
16 DateTimeFormatter.ISO_OFFSET_DATE_TIME);
17 }
18
19 protected OffsetDateTimeSerializer(OffsetDateTimeSerializer base,
20 Boolean useTimestamp, DateTimeFormatter formatter) {
21 this(base, useTimestamp, null, formatter);
22 }
23
24 protected OffsetDateTimeSerializer(OffsetDateTimeSerializer base,
25 Boolean useTimestamp, Boolean useNanoseconds, DateTimeFormatter formatter) {
26 super(base, useTimestamp, useNanoseconds, formatter);
27 }
28
29 @Override
30 protected JSR310FormattedSerializerBase<?> withFormat(Boolean useTimestamp,
31 DateTimeFormatter formatter, JsonFormat.Shape shape)
32 {
33 return new OffsetDateTimeSerializer(this, useTimestamp, formatter);
34 }
35
36 @Override
37 protected JSR310FormattedSerializerBase<?> withFeatures(Boolean writeZoneId, Boolean writeNanoseconds) {
38 return new OffsetDateTimeSerializer(this, _useTimestamp, writeNanoseconds, _formatter);
39 }
40 }
41