Skip to content

Commit 2f4ce13

Browse files
committed
fix!: don't use format "date-time" for LocalDateTime
1 parent db77aa1 commit 2f4ce13

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

jsonschema-generator/src/main/java/com/github/victools/jsonschema/generator/impl/module/SimpleTypeModule.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,15 @@ public static SimpleTypeModule forPrimitiveTypes() {
8484
public static SimpleTypeModule forPrimitiveAndAdditionalTypes() {
8585
SimpleTypeModule module = SimpleTypeModule.forPrimitiveTypes();
8686

87+
/*
88+
* LocalDateTime does not fit the definition of "date-time" (a timestamp with time zone)
89+
* as per RFC3339: https://datatracker.ietf.org/doc/html/rfc3339#section-5.6
90+
* See also: https://json-schema.org/draft/2020-12/draft-bhutton-json-schema-validation-00#rfc.section.7.3.1
91+
*/
92+
module.withStringType(java.time.LocalDateTime.class);
93+
8794
module.withStandardStringType(java.time.LocalDate.class, "date");
88-
Stream.of(java.time.LocalDateTime.class, java.time.ZonedDateTime.class,
89-
java.time.OffsetDateTime.class, java.time.Instant.class,
95+
Stream.of(java.time.ZonedDateTime.class, java.time.OffsetDateTime.class, java.time.Instant.class,
9096
java.util.Date.class, java.util.Calendar.class)
9197
.forEach(javaType -> module.withStandardStringType(javaType, "date-time"));
9298
Stream.of(java.time.LocalTime.class, java.time.OffsetTime.class)

jsonschema-generator/src/test/java/com/github/victools/jsonschema/generator/SchemaGeneratorSimpleTypesTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ static Stream<Arguments> getSimpleTypeCombinations() {
5454
Arguments.of(Float.class, SchemaKeyword.TAG_TYPE_NUMBER, "float", null),
5555
Arguments.of(float.class, SchemaKeyword.TAG_TYPE_NUMBER, "float", null),
5656
Arguments.of(java.time.LocalDate.class, SchemaKeyword.TAG_TYPE_STRING, "date", "date"),
57-
Arguments.of(java.time.LocalDateTime.class, SchemaKeyword.TAG_TYPE_STRING, "date-time", "date-time"),
57+
Arguments.of(java.time.LocalDateTime.class, SchemaKeyword.TAG_TYPE_STRING, null, null),
5858
Arguments.of(java.time.LocalTime.class, SchemaKeyword.TAG_TYPE_STRING, "time", "time"),
5959
Arguments.of(java.time.ZonedDateTime.class, SchemaKeyword.TAG_TYPE_STRING, "date-time", "date-time"),
6060
Arguments.of(java.time.OffsetDateTime.class, SchemaKeyword.TAG_TYPE_STRING, "date-time", "date-time"),

0 commit comments

Comments
 (0)