You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/12/20 07:38:06 UTC

[camel] branch main updated: CAMEL-18659: camel-openapi-java - Add support for nullable defined on model classes via @Schema for openapi v3

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 5f3eab353c2 CAMEL-18659: camel-openapi-java - Add support for nullable defined on model classes via @Schema for openapi v3
5f3eab353c2 is described below

commit 5f3eab353c22e7617b7396b3500cb3b64f967886
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Dec 20 08:37:48 2022 +0100

    CAMEL-18659: camel-openapi-java - Add support for nullable defined on model classes via @Schema for openapi v3
---
 .../java/org/apache/camel/openapi/RestModelConverters.java   |  9 +++++++--
 .../org/apache/camel/openapi/RestOpenApiReaderModelTest.java |  2 ++
 .../src/test/java/org/apache/camel/openapi/User.java         | 12 ++++++++++++
 3 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestModelConverters.java b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestModelConverters.java
index c266a5a1f39..931d0728c33 100644
--- a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestModelConverters.java
+++ b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestModelConverters.java
@@ -33,6 +33,7 @@ import io.apicurio.datamodels.openapi.v2.models.Oas20Schema;
 import io.apicurio.datamodels.openapi.v2.models.Oas20SchemaDefinition;
 import io.apicurio.datamodels.openapi.v3.models.Oas30Discriminator;
 import io.apicurio.datamodels.openapi.v3.models.Oas30Document;
+import io.apicurio.datamodels.openapi.v3.models.Oas30Schema;
 import io.apicurio.datamodels.openapi.v3.models.Oas30Schema.Oas30AnyOfSchema;
 import io.apicurio.datamodels.openapi.v3.models.Oas30Schema.Oas30OneOfSchema;
 import io.apicurio.datamodels.openapi.v3.models.Oas30SchemaDefinition;
@@ -49,8 +50,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * A Camel extended {@link ModelConverters} where we appending vendor extensions to include the java class name of the
- * model classes.
+ * A Camel extended {@link ModelConverters} where we are appending vendor extensions to include the java class name of
+ * the model classes.
  */
 @SuppressWarnings("rawtypes")
 public class RestModelConverters {
@@ -138,6 +139,10 @@ public class RestModelConverters {
                 model.$ref = ref;
             }
         }
+        Boolean nullable = schema.getNullable();
+        if (nullable != null && model instanceof Oas30Schema) {
+            ((Oas30Schema) model).nullable = nullable;
+        }
 
         // xxxOf support
         if (model instanceof Oas30SchemaDefinition && schema instanceof ComposedSchema) {
diff --git a/components/camel-openapi-java/src/test/java/org/apache/camel/openapi/RestOpenApiReaderModelTest.java b/components/camel-openapi-java/src/test/java/org/apache/camel/openapi/RestOpenApiReaderModelTest.java
index 1a60448898e..8d8c07f482c 100644
--- a/components/camel-openapi-java/src/test/java/org/apache/camel/openapi/RestOpenApiReaderModelTest.java
+++ b/components/camel-openapi-java/src/test/java/org/apache/camel/openapi/RestOpenApiReaderModelTest.java
@@ -135,6 +135,8 @@ public class RestOpenApiReaderModelTest extends CamelTestSupport {
         assertTrue(json.contains("\"format\" : \"org.apache.camel.openapi.User\""));
         assertTrue(json.contains("\"type\" : \"string\""));
         assertTrue(json.contains("\"format\" : \"date\""));
+        assertTrue(json.contains("\"nullable\" : true"));
+        assertTrue(json.contains("\"example\" : 44"));
         assertFalse(json.contains("\"enum\""));
         context.stop();
     }
diff --git a/components/camel-openapi-java/src/test/java/org/apache/camel/openapi/User.java b/components/camel-openapi-java/src/test/java/org/apache/camel/openapi/User.java
index 500de639948..5ac5decf935 100644
--- a/components/camel-openapi-java/src/test/java/org/apache/camel/openapi/User.java
+++ b/components/camel-openapi-java/src/test/java/org/apache/camel/openapi/User.java
@@ -16,11 +16,15 @@
  */
 package org.apache.camel.openapi;
 
+import io.swagger.v3.oas.annotations.media.Schema;
+
 public class User {
 
     private int id;
     private String name;
     private boolean alive;
+    @Schema(example = "44", nullable = true)
+    private Long age;
 
     public User() {
     }
@@ -54,4 +58,12 @@ public class User {
     public void setAlive(boolean alive) {
         this.alive = alive;
     }
+
+    public Long getAge() {
+        return age;
+    }
+
+    public void setAge(Long age) {
+        this.age = age;
+    }
 }