Skip to content

Commit 96086c7

Browse files
committed
fix DateTimeSchema example serialization by updating type to OffsetDateTime
1 parent bd74d01 commit 96086c7

File tree

7 files changed

+30
-21
lines changed

7 files changed

+30
-21
lines changed

modules/swagger-core/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@
7878
<groupId>com.fasterxml.jackson.dataformat</groupId>
7979
<artifactId>jackson-dataformat-yaml</artifactId>
8080
</dependency>
81+
<dependency>
82+
<groupId>com.fasterxml.jackson.datatype</groupId>
83+
<artifactId>jackson-datatype-jsr310</artifactId>
84+
</dependency>
8185
<dependency>
8286
<groupId>io.swagger.core.v3</groupId>
8387
<artifactId>swagger-annotations</artifactId>

modules/swagger-core/src/main/java/io/swagger/v3/core/jackson/mixin/DateTimeSchemaMixin.java

Lines changed: 0 additions & 9 deletions
This file was deleted.

modules/swagger-core/src/main/java/io/swagger/v3/core/util/ObjectMapperFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@
1313
import com.fasterxml.jackson.databind.ser.BeanSerializerModifier;
1414
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
1515
import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator;
16+
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
1617
import io.swagger.v3.core.jackson.SchemaSerializer;
1718
import io.swagger.v3.core.jackson.mixin.ComponentsMixin;
1819
import io.swagger.v3.core.jackson.mixin.DateSchemaMixin;
19-
import io.swagger.v3.core.jackson.mixin.DateTimeSchemaMixin;
2020
import io.swagger.v3.core.jackson.mixin.ExtensionsMixin;
2121
import io.swagger.v3.core.jackson.mixin.OpenAPIMixin;
2222
import io.swagger.v3.core.jackson.mixin.OperationMixin;
@@ -96,6 +96,7 @@ public JsonSerializer<?> modifySerializer(
9696

9797
Module deserializerModule = new DeserializationModule();
9898
mapper.registerModule(deserializerModule);
99+
mapper.registerModule(new JavaTimeModule());
99100

100101
Map<Class<?>, Class<?>> sourceMixins = new LinkedHashMap<>();
101102

@@ -131,7 +132,6 @@ public JsonSerializer<?> modifySerializer(
131132
sourceMixins.put(XML.class, ExtensionsMixin.class);
132133
sourceMixins.put(Schema.class, ExtensionsMixin.class);
133134
sourceMixins.put(DateSchema.class, DateSchemaMixin.class);
134-
sourceMixins.put(DateTimeSchema.class, DateTimeSchemaMixin.class);
135135

136136
mapper.setMixIns(sourceMixins);
137137
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);

modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/ReaderTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1003,7 +1003,12 @@ public void testTicket2340() {
10031003
"paths:\n" +
10041004
" /test/test:\n" +
10051005
" post:\n" +
1006-
" operationId: getBook\n" +
1006+
" operationId: getAnimal\n" +
1007+
" requestBody:\n" +
1008+
" content:\n" +
1009+
" application/json:\n" +
1010+
" schema:\n" +
1011+
" $ref: '#/components/schemas/Animal'\n" +
10071012
" responses:\n" +
10081013
" default:\n" +
10091014
" description: default response\n" +

modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/resources/Ticket2340Resource.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import com.fasterxml.jackson.annotation.JsonSubTypes;
44
import com.fasterxml.jackson.annotation.JsonTypeInfo;
55
import com.fasterxml.jackson.annotation.JsonTypeName;
6-
import io.swagger.v3.oas.annotations.parameters.RequestBody;
76

7+
import javax.ws.rs.Consumes;
88
import javax.ws.rs.POST;
99
import javax.ws.rs.Path;
1010
import javax.ws.rs.Produces;
@@ -14,9 +14,10 @@
1414
public class Ticket2340Resource {
1515

1616
@Produces({ MediaType.APPLICATION_JSON })
17+
@Consumes({ MediaType.APPLICATION_JSON })
1718
@Path("/test")
1819
@POST
19-
public String getBook(@RequestBody Animal animal) {
20+
public String getAnimal(Animal animal) {
2021
return "ok";
2122
}
2223

modules/swagger-models/src/main/java/io/swagger/v3/oas/models/media/DateTimeSchema.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616

1717
package io.swagger.v3.oas.models.media;
1818

19-
import java.text.SimpleDateFormat;
19+
import java.time.OffsetDateTime;
20+
import java.time.ZoneOffset;
2021
import java.util.Date;
2122
import java.util.List;
2223
import java.util.Objects;
@@ -25,7 +26,7 @@
2526
* DateTimeSchema
2627
*/
2728

28-
public class DateTimeSchema extends Schema<Date> {
29+
public class DateTimeSchema extends Schema<OffsetDateTime> {
2930

3031
public DateTimeSchema() {
3132
super("string", "date-time");
@@ -47,26 +48,28 @@ public DateTimeSchema _default(Date _default) {
4748
}
4849

4950
@Override
50-
protected Date cast(Object value) {
51+
protected OffsetDateTime cast(Object value) {
5152
if (value != null) {
5253
try {
5354
if (value instanceof Date) {
54-
return (Date) value;
55+
return ((Date)value).toInstant().atOffset(ZoneOffset.UTC);
5556
} else if (value instanceof String) {
56-
return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX").parse((String) value);
57+
return OffsetDateTime.parse((String)value);
58+
} else if (value instanceof OffsetDateTime) {
59+
return (OffsetDateTime)value;
5760
}
5861
} catch (Exception e) {
5962
}
6063
}
6164
return null;
6265
}
6366

64-
public DateTimeSchema _enum(List<Date> _enum) {
67+
public DateTimeSchema _enum(List<OffsetDateTime> _enum) {
6568
super.setEnum(_enum);
6669
return this;
6770
}
6871

69-
public DateTimeSchema addEnumItem(Date _enumItem) {
72+
public DateTimeSchema addEnumItem(OffsetDateTime _enumItem) {
7073
super.addEnumItemObject(_enumItem);
7174
return this;
7275
}

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,11 @@
454454
<artifactId>jackson-core</artifactId>
455455
<version>${jackson-version}</version>
456456
</dependency>
457+
<dependency>
458+
<groupId>com.fasterxml.jackson.datatype</groupId>
459+
<artifactId>jackson-datatype-jsr310</artifactId>
460+
<version>${jackson-version}</version>
461+
</dependency>
457462
<dependency>
458463
<groupId>ch.qos.logback</groupId>
459464
<artifactId>logback-classic</artifactId>

0 commit comments

Comments
 (0)