From f245695c97dd867171f86a919e4eb4e915e80995 Mon Sep 17 00:00:00 2001 From: Andrew Rouse Date: Tue, 3 Dec 2024 16:07:16 +0000 Subject: [PATCH] Add OpenAPI.jsonSchemaDialect to the model --- .../microprofile/openapi/models/OpenAPI.java | 30 +++++++++++++++++++ .../openapi/models/package-info.java | 2 +- .../openapi/reader/MyOASModelReaderImpl.java | 1 + .../openapi/tck/ModelReaderAppTest.java | 6 ++++ 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/OpenAPI.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/OpenAPI.java index eed5b428..be8929fd 100644 --- a/api/src/main/java/org/eclipse/microprofile/openapi/models/OpenAPI.java +++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/OpenAPI.java @@ -327,6 +327,36 @@ default OpenAPI webhooks(Map webhooks) { */ void removeWebhook(String name); + /** + * Returns the default JSON Schema dialect for schemas in this document. + * + * @return the identifier of the default schema dialect for schemas in this document + * @since 4.1 + */ + String getJsonSchemaDialect(); + + /** + * Sets the default JSON Schema dialect for schemas in this document. + * + * @param jsonSchemaDialect + * the identifier of the default schema dialect for schemas in this document + * @since 4.1 + */ + void setJsonSchemaDialect(String jsonSchemaDialect); + + /** + * Sets the default JSON Schema dialect for schemas in this document. + * + * @param jsonSchemaDialect + * the identifier of the default schema dialect for schemas in this document + * @return the current OpenAPI object + * @since 4.1 + */ + default OpenAPI jsonSchemaDialect(String jsonSchemaDialect) { + setJsonSchemaDialect(jsonSchemaDialect); + return this; + } + /** * Returns the components property from an OpenAPI instance. * diff --git a/api/src/main/java/org/eclipse/microprofile/openapi/models/package-info.java b/api/src/main/java/org/eclipse/microprofile/openapi/models/package-info.java index f29b8077..929acdc4 100644 --- a/api/src/main/java/org/eclipse/microprofile/openapi/models/package-info.java +++ b/api/src/main/java/org/eclipse/microprofile/openapi/models/package-info.java @@ -40,6 +40,6 @@ * */ -@org.osgi.annotation.versioning.Version("2.1") +@org.osgi.annotation.versioning.Version("2.2") @org.osgi.annotation.versioning.ProviderType package org.eclipse.microprofile.openapi.models; \ No newline at end of file diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/reader/MyOASModelReaderImpl.java b/tck/src/main/java/org/eclipse/microprofile/openapi/reader/MyOASModelReaderImpl.java index e94c0a7a..e26833ed 100644 --- a/tck/src/main/java/org/eclipse/microprofile/openapi/reader/MyOASModelReaderImpl.java +++ b/tck/src/main/java/org/eclipse/microprofile/openapi/reader/MyOASModelReaderImpl.java @@ -308,6 +308,7 @@ public OpenAPI buildModel() { .externalDocs(OASFactory.createObject(ExternalDocumentation.class) .description("instructions for how to deploy this app") .url("https://github.com/microservices-api/oas3-airlines/blob/master/README.md")) + .jsonSchemaDialect("https://json-schema.org/draft/2020-12/schema") .addWebhook("bookingEvent", OASFactory.createPathItem() .PUT(OASFactory.createOperation() .summary("Notifies that a booking has been created") diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/tck/ModelReaderAppTest.java b/tck/src/main/java/org/eclipse/microprofile/openapi/tck/ModelReaderAppTest.java index 5d421f6f..a890c605 100644 --- a/tck/src/main/java/org/eclipse/microprofile/openapi/tck/ModelReaderAppTest.java +++ b/tck/src/main/java/org/eclipse/microprofile/openapi/tck/ModelReaderAppTest.java @@ -427,4 +427,10 @@ public void testRequestBodyInOperations(String type) { vr.body("paths.'/zepplins'.delete.requestBody.content", notNullValue()); } + + @Test(dataProvider = "formatProvider") + public void testSchemaDialect(String type) { + ValidatableResponse vr = callEndpoint(type); + vr.body("jsonSchemaDialect", equalTo("https://json-schema.org/draft/2020-12/schema")); + } }