From a8e8acead739034bb4f4bcae3592a765291a381e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bresson?= Date: Thu, 26 Jul 2018 11:00:45 +0200 Subject: [PATCH 1/6] [java] add useNullForUnknownEnumValue option (#633) --- bin/java-petstore-jersey1.sh | 2 +- bin/java-petstore-jersey2.json | 5 ++++- docs/migration-guide.adoc | 11 +++++++++++ .../codegen/languages/AbstractJavaCodegen.java | 11 +++++++++++ .../src/main/resources/Java/modelEnum.mustache | 2 +- .../src/main/resources/Java/modelInnerEnum.mustache | 2 +- .../main/resources/JavaInflector/enumClass.mustache | 2 +- .../resources/JavaInflector/enumOuterClass.mustache | 2 +- .../resources/JavaJaxRS/cxf-cdi/enumClass.mustache | 2 +- .../main/resources/JavaJaxRS/cxf/enumClass.mustache | 2 +- .../resources/JavaJaxRS/cxf/enumOuterClass.mustache | 2 +- .../src/main/resources/JavaJaxRS/enumClass.mustache | 2 +- .../main/resources/JavaJaxRS/enumOuterClass.mustache | 2 +- .../src/main/resources/JavaJaxRS/modelEnum.mustache | 2 +- .../main/resources/JavaJaxRS/spec/enumClass.mustache | 2 +- .../resources/JavaJaxRS/spec/enumOuterClass.mustache | 2 +- .../resources/JavaPlayFramework/enumClass.mustache | 2 +- .../JavaPlayFramework/enumOuterClass.mustache | 2 +- .../src/main/resources/JavaSpring/enumClass.mustache | 2 +- .../main/resources/JavaSpring/enumOuterClass.mustache | 2 +- .../resources/JavaVertXServer/enumOuterClass.mustache | 2 +- .../src/main/resources/MSF4J/enumClass.mustache | 2 +- .../src/main/resources/MSF4J/enumOuterClass.mustache | 2 +- .../src/main/resources/java-pkmst/enumClass.mustache | 2 +- .../main/resources/java-pkmst/enumOuterClass.mustache | 2 +- .../main/resources/undertow/enumOuterClass.mustache | 2 +- .../codegen/java/AbstractJavaCodegenTest.java | 5 +++++ .../org/openapitools/client/model/EnumArrays.java | 4 ++-- .../java/org/openapitools/client/model/EnumClass.java | 2 +- .../java/org/openapitools/client/model/EnumTest.java | 8 ++++---- .../java/org/openapitools/client/model/MapTest.java | 2 +- .../java/org/openapitools/client/model/Order.java | 2 +- .../java/org/openapitools/client/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/EnumArrays.java | 4 ++-- .../java/org/openapitools/client/model/EnumClass.java | 2 +- .../java/org/openapitools/client/model/EnumTest.java | 8 ++++---- .../java/org/openapitools/client/model/MapTest.java | 2 +- .../java/org/openapitools/client/model/Order.java | 2 +- .../java/org/openapitools/client/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/EnumArrays.java | 4 ++-- .../java/org/openapitools/client/model/EnumClass.java | 2 +- .../java/org/openapitools/client/model/EnumTest.java | 8 ++++---- .../java/org/openapitools/client/model/MapTest.java | 2 +- .../java/org/openapitools/client/model/Order.java | 2 +- .../java/org/openapitools/client/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/EnumArrays.java | 4 ++-- .../java/org/openapitools/client/model/EnumClass.java | 2 +- .../java/org/openapitools/client/model/EnumTest.java | 8 ++++---- .../java/org/openapitools/client/model/MapTest.java | 2 +- .../java/org/openapitools/client/model/Order.java | 2 +- .../java/org/openapitools/client/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/EnumArrays.java | 4 ++-- .../java/org/openapitools/client/model/EnumClass.java | 2 +- .../java/org/openapitools/client/model/EnumTest.java | 8 ++++---- .../java/org/openapitools/client/model/MapTest.java | 2 +- .../java/org/openapitools/client/model/Order.java | 2 +- .../java/org/openapitools/client/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/EnumArrays.java | 4 ++-- .../java/org/openapitools/client/model/EnumClass.java | 2 +- .../java/org/openapitools/client/model/EnumTest.java | 8 ++++---- .../java/org/openapitools/client/model/MapTest.java | 2 +- .../java/org/openapitools/client/model/Order.java | 2 +- .../java/org/openapitools/client/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/EnumArrays.java | 4 ++-- .../java/org/openapitools/client/model/EnumClass.java | 2 +- .../java/org/openapitools/client/model/EnumTest.java | 8 ++++---- .../java/org/openapitools/client/model/MapTest.java | 2 +- .../java/org/openapitools/client/model/Order.java | 2 +- .../java/org/openapitools/client/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/EnumArrays.java | 4 ++-- .../java/org/openapitools/client/model/EnumClass.java | 2 +- .../java/org/openapitools/client/model/EnumTest.java | 8 ++++---- .../java/org/openapitools/client/model/MapTest.java | 2 +- .../java/org/openapitools/client/model/Order.java | 2 +- .../java/org/openapitools/client/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/EnumArrays.java | 4 ++-- .../java/org/openapitools/client/model/EnumClass.java | 2 +- .../java/org/openapitools/client/model/EnumTest.java | 8 ++++---- .../java/org/openapitools/client/model/MapTest.java | 2 +- .../java/org/openapitools/client/model/Order.java | 2 +- .../java/org/openapitools/client/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/EnumArrays.java | 4 ++-- .../java/org/openapitools/client/model/EnumClass.java | 2 +- .../java/org/openapitools/client/model/EnumTest.java | 8 ++++---- .../java/org/openapitools/client/model/MapTest.java | 2 +- .../java/org/openapitools/client/model/Order.java | 2 +- .../java/org/openapitools/client/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/EnumArrays.java | 4 ++-- .../java/org/openapitools/client/model/EnumClass.java | 2 +- .../java/org/openapitools/client/model/EnumTest.java | 8 ++++---- .../java/org/openapitools/client/model/MapTest.java | 2 +- .../java/org/openapitools/client/model/Order.java | 2 +- .../java/org/openapitools/client/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/EnumArrays.java | 4 ++-- .../java/org/openapitools/client/model/EnumClass.java | 2 +- .../java/org/openapitools/client/model/EnumTest.java | 8 ++++---- .../java/org/openapitools/client/model/MapTest.java | 2 +- .../java/org/openapitools/client/model/Order.java | 2 +- .../java/org/openapitools/client/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/EnumArrays.java | 4 ++-- .../java/org/openapitools/client/model/EnumClass.java | 2 +- .../java/org/openapitools/client/model/EnumTest.java | 8 ++++---- .../java/org/openapitools/client/model/MapTest.java | 2 +- .../java/org/openapitools/client/model/Order.java | 2 +- .../java/org/openapitools/client/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/EnumArrays.java | 4 ++-- .../java/org/openapitools/client/model/EnumClass.java | 2 +- .../java/org/openapitools/client/model/EnumTest.java | 8 ++++---- .../java/org/openapitools/client/model/MapTest.java | 2 +- .../java/org/openapitools/client/model/Order.java | 2 +- .../java/org/openapitools/client/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/EnumArrays.java | 4 ++-- .../java/org/openapitools/client/model/EnumClass.java | 2 +- .../java/org/openapitools/client/model/EnumTest.java | 8 ++++---- .../java/org/openapitools/client/model/MapTest.java | 2 +- .../java/org/openapitools/client/model/Order.java | 2 +- .../java/org/openapitools/client/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/EnumArrays.java | 4 ++-- .../java/org/openapitools/client/model/EnumClass.java | 2 +- .../java/org/openapitools/client/model/EnumTest.java | 8 ++++---- .../java/org/openapitools/client/model/MapTest.java | 2 +- .../java/org/openapitools/client/model/Order.java | 2 +- .../java/org/openapitools/client/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/EnumArrays.java | 4 ++-- .../java/org/openapitools/client/model/EnumClass.java | 2 +- .../java/org/openapitools/client/model/EnumTest.java | 8 ++++---- .../java/org/openapitools/client/model/MapTest.java | 2 +- .../java/org/openapitools/client/model/Order.java | 2 +- .../java/org/openapitools/client/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/client/model/Pet.java | 2 +- .../src/main/java/org/openapitools/model/Order.java | 2 +- .../src/main/java/org/openapitools/model/Pet.java | 2 +- .../src/main/java/org/openapitools/model/Order.java | 2 +- .../src/main/java/org/openapitools/model/Pet.java | 2 +- .../src/gen/java/org/openapitools/model/Order.java | 2 +- .../src/gen/java/org/openapitools/model/Pet.java | 2 +- .../src/gen/java/org/openapitools/model/Order.java | 2 +- .../src/gen/java/org/openapitools/model/Pet.java | 2 +- .../src/gen/java/org/openapitools/model/Order.java | 2 +- .../src/gen/java/org/openapitools/model/Pet.java | 2 +- .../gen/java/org/openapitools/model/EnumArrays.java | 4 ++-- .../gen/java/org/openapitools/model/EnumClass.java | 2 +- .../src/gen/java/org/openapitools/model/EnumTest.java | 8 ++++---- .../src/gen/java/org/openapitools/model/MapTest.java | 2 +- .../src/gen/java/org/openapitools/model/Order.java | 2 +- .../gen/java/org/openapitools/model/OuterEnum.java | 2 +- .../src/gen/java/org/openapitools/model/Pet.java | 2 +- .../gen/java/org/openapitools/model/EnumArrays.java | 4 ++-- .../gen/java/org/openapitools/model/EnumClass.java | 2 +- .../src/gen/java/org/openapitools/model/EnumTest.java | 8 ++++---- .../src/gen/java/org/openapitools/model/MapTest.java | 2 +- .../src/gen/java/org/openapitools/model/Order.java | 2 +- .../gen/java/org/openapitools/model/OuterEnum.java | 2 +- .../src/gen/java/org/openapitools/model/Pet.java | 2 +- .../gen/java/org/openapitools/model/EnumArrays.java | 4 ++-- .../gen/java/org/openapitools/model/EnumClass.java | 2 +- .../src/gen/java/org/openapitools/model/EnumTest.java | 8 ++++---- .../src/gen/java/org/openapitools/model/MapTest.java | 2 +- .../src/gen/java/org/openapitools/model/Order.java | 2 +- .../gen/java/org/openapitools/model/OuterEnum.java | 2 +- .../src/gen/java/org/openapitools/model/Pet.java | 2 +- .../gen/java/org/openapitools/model/EnumArrays.java | 4 ++-- .../gen/java/org/openapitools/model/EnumClass.java | 2 +- .../src/gen/java/org/openapitools/model/EnumTest.java | 8 ++++---- .../src/gen/java/org/openapitools/model/MapTest.java | 2 +- .../src/gen/java/org/openapitools/model/Order.java | 2 +- .../gen/java/org/openapitools/model/OuterEnum.java | 2 +- .../src/gen/java/org/openapitools/model/Pet.java | 2 +- .../gen/java/org/openapitools/model/EnumArrays.java | 4 ++-- .../gen/java/org/openapitools/model/EnumClass.java | 2 +- .../src/gen/java/org/openapitools/model/EnumTest.java | 8 ++++---- .../src/gen/java/org/openapitools/model/MapTest.java | 2 +- .../src/gen/java/org/openapitools/model/Order.java | 2 +- .../gen/java/org/openapitools/model/OuterEnum.java | 2 +- .../src/gen/java/org/openapitools/model/Pet.java | 2 +- .../gen/java/org/openapitools/model/EnumArrays.java | 4 ++-- .../gen/java/org/openapitools/model/EnumClass.java | 2 +- .../src/gen/java/org/openapitools/model/EnumTest.java | 8 ++++---- .../src/gen/java/org/openapitools/model/MapTest.java | 2 +- .../src/gen/java/org/openapitools/model/Order.java | 2 +- .../gen/java/org/openapitools/model/OuterEnum.java | 2 +- .../src/gen/java/org/openapitools/model/Pet.java | 2 +- .../gen/java/org/openapitools/model/EnumArrays.java | 4 ++-- .../gen/java/org/openapitools/model/EnumClass.java | 2 +- .../src/gen/java/org/openapitools/model/EnumTest.java | 8 ++++---- .../src/gen/java/org/openapitools/model/MapTest.java | 2 +- .../src/gen/java/org/openapitools/model/Order.java | 2 +- .../gen/java/org/openapitools/model/OuterEnum.java | 2 +- .../src/gen/java/org/openapitools/model/Pet.java | 2 +- .../gen/java/org/openapitools/model/EnumArrays.java | 4 ++-- .../gen/java/org/openapitools/model/EnumClass.java | 2 +- .../src/gen/java/org/openapitools/model/EnumTest.java | 8 ++++---- .../src/gen/java/org/openapitools/model/MapTest.java | 2 +- .../src/gen/java/org/openapitools/model/Order.java | 2 +- .../gen/java/org/openapitools/model/OuterEnum.java | 2 +- .../src/gen/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/EnumArrays.java | 4 ++-- .../main/java/org/openapitools/model/EnumClass.java | 2 +- .../main/java/org/openapitools/model/EnumTest.java | 8 ++++---- .../src/main/java/org/openapitools/model/MapTest.java | 2 +- .../src/main/java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/OuterEnum.java | 2 +- .../src/main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/EnumArrays.java | 4 ++-- .../main/java/org/openapitools/model/EnumClass.java | 2 +- .../main/java/org/openapitools/model/EnumTest.java | 8 ++++---- .../src/main/java/org/openapitools/model/MapTest.java | 2 +- .../src/main/java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/OuterEnum.java | 2 +- .../src/main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/EnumArrays.java | 4 ++-- .../main/java/org/openapitools/model/EnumClass.java | 2 +- .../main/java/org/openapitools/model/EnumTest.java | 8 ++++---- .../src/main/java/org/openapitools/model/MapTest.java | 2 +- .../src/main/java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/OuterEnum.java | 2 +- .../src/main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/EnumArrays.java | 4 ++-- .../main/java/org/openapitools/model/EnumClass.java | 2 +- .../main/java/org/openapitools/model/EnumTest.java | 8 ++++---- .../src/main/java/org/openapitools/model/MapTest.java | 2 +- .../src/main/java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/OuterEnum.java | 2 +- .../src/main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/EnumArrays.java | 4 ++-- .../main/java/org/openapitools/model/EnumClass.java | 2 +- .../main/java/org/openapitools/model/EnumTest.java | 8 ++++---- .../src/main/java/org/openapitools/model/MapTest.java | 2 +- .../src/main/java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/OuterEnum.java | 2 +- .../src/main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/EnumArrays.java | 4 ++-- .../main/java/org/openapitools/model/EnumClass.java | 2 +- .../main/java/org/openapitools/model/EnumTest.java | 8 ++++---- .../src/main/java/org/openapitools/model/MapTest.java | 2 +- .../src/main/java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/OuterEnum.java | 2 +- .../src/main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/EnumArrays.java | 4 ++-- .../main/java/org/openapitools/model/EnumClass.java | 2 +- .../main/java/org/openapitools/model/EnumTest.java | 8 ++++---- .../src/main/java/org/openapitools/model/MapTest.java | 2 +- .../src/main/java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/OuterEnum.java | 2 +- .../src/main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/EnumArrays.java | 4 ++-- .../main/java/org/openapitools/model/EnumClass.java | 2 +- .../main/java/org/openapitools/model/EnumTest.java | 8 ++++---- .../src/main/java/org/openapitools/model/MapTest.java | 2 +- .../src/main/java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/OuterEnum.java | 2 +- .../src/main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/EnumArrays.java | 4 ++-- .../main/java/org/openapitools/model/EnumClass.java | 2 +- .../main/java/org/openapitools/model/EnumTest.java | 8 ++++---- .../src/main/java/org/openapitools/model/MapTest.java | 2 +- .../src/main/java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/OuterEnum.java | 2 +- .../src/main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/EnumArrays.java | 4 ++-- .../main/java/org/openapitools/model/EnumClass.java | 2 +- .../main/java/org/openapitools/model/EnumTest.java | 8 ++++---- .../src/main/java/org/openapitools/model/MapTest.java | 2 +- .../src/main/java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/OuterEnum.java | 2 +- .../src/main/java/org/openapitools/model/Pet.java | 2 +- 282 files changed, 449 insertions(+), 419 deletions(-) diff --git a/bin/java-petstore-jersey1.sh b/bin/java-petstore-jersey1.sh index caa69adfaf..8c67057d04 100755 --- a/bin/java-petstore-jersey1.sh +++ b/bin/java-petstore-jersey1.sh @@ -27,7 +27,7 @@ fi # if you've executed sbt assembly previously it will use that instead. export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" -ags="generate --artifact-id petstore-java-client-jersey1 -t modules/openapi-generator/src/main/resources/Java -i modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -g java -o samples/client/petstore/java/jersey1 -DhideGenerationTimestamp=true --library=jersey1 $@" +ags="generate --artifact-id petstore-java-client-jersey1 -t modules/openapi-generator/src/main/resources/Java -i modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -g java -o samples/client/petstore/java/jersey1 -DhideGenerationTimestamp=true --library=jersey1 --additional-properties useNullForUnknownEnumValue=true $@" echo "Removing files and folders under samples/client/petstore/java/jersey1/src/main" rm -rf samples/client/petstore/java/jersey1/src/main diff --git a/bin/java-petstore-jersey2.json b/bin/java-petstore-jersey2.json index 79ed4cbc2e..e5d741be32 100644 --- a/bin/java-petstore-jersey2.json +++ b/bin/java-petstore-jersey2.json @@ -1,4 +1,7 @@ { "library": "jersey2", - "artifactId": "petstore-jersey2" + "artifactId": "petstore-jersey2", + "additionalProperties" : { + "useNullForUnknownEnumValue" : true + } } diff --git a/docs/migration-guide.adoc b/docs/migration-guide.adoc index 0ea6754fab..3745556cc9 100644 --- a/docs/migration-guide.adoc +++ b/docs/migration-guide.adoc @@ -25,6 +25,17 @@ For the templates, this is not an API change, because the same values are availa If you have your own `Codegen` class (to support your own generator for example) then you might get some compile error due to the change. +==== Java + +Schema with enum values are mapped to java enum in the generated code. +In previous version, when an unknown value was deserialized, the value was set to `null`. + +With `3.2.0` a new option is introduced: `useNullForUnknownEnumValue`. + +* When set to `false` (default value), an Exception (`IllegalArgumentException`) is thrown when the value not available in the enum. +* When set to `true`, unknown values are mapped to `null` as it was the case in previous versions. + + === From 3.0.x to 3.1.0 Version `3.1.0` is the first minor version of OpenAPI-Generator, in comparison to `3.0.3` it contains some breaking changes, but with the possibility to fallback to the old behavior. diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java index 3f7d014a3c..557f238a0f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java @@ -65,6 +65,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code public static final String DISABLE_HTML_ESCAPING = "disableHtmlEscaping"; public static final String BOOLEAN_GETTER_PREFIX = "booleanGetterPrefix"; public static final String BOOLEAN_GETTER_PREFIX_DEFAULT = "get"; + public static final String USE_NULL_FOR_UNKNOWN_ENUM_VALUE = "useNullForUnknownEnumValue"; protected String dateLibrary = "threetenbp"; protected boolean supportAsync = false; @@ -99,6 +100,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code protected boolean supportJava6= false; protected boolean disableHtmlEscaping = false; protected String booleanGetterPrefix = BOOLEAN_GETTER_PREFIX_DEFAULT; + protected boolean useNullForUnknownEnumValue = false; public AbstractJavaCodegen() { super(); @@ -213,6 +215,11 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code } additionalProperties.put(BOOLEAN_GETTER_PREFIX, booleanGetterPrefix); + if (additionalProperties.containsKey(USE_NULL_FOR_UNKNOWN_ENUM_VALUE)) { + this.setUseNullForUnknownEnumValue(Boolean.valueOf(additionalProperties.get(USE_NULL_FOR_UNKNOWN_ENUM_VALUE).toString())); + } + additionalProperties.put(USE_NULL_FOR_UNKNOWN_ENUM_VALUE, useNullForUnknownEnumValue); + if (additionalProperties.containsKey(CodegenConstants.INVOKER_PACKAGE)) { this.setInvokerPackage((String) additionalProperties.get(CodegenConstants.INVOKER_PACKAGE)); } else if (additionalProperties.containsKey(CodegenConstants.API_PACKAGE)) { @@ -1254,6 +1261,10 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code this.booleanGetterPrefix = booleanGetterPrefix; } + public void setUseNullForUnknownEnumValue(boolean useNullForUnknownEnumValue) { + this.useNullForUnknownEnumValue = useNullForUnknownEnumValue; + } + @Override public String escapeQuotationMark(String input) { // remove " to avoid code injection diff --git a/modules/openapi-generator/src/main/resources/Java/modelEnum.mustache b/modules/openapi-generator/src/main/resources/Java/modelEnum.mustache index 209d310172..6dd5334b77 100644 --- a/modules/openapi-generator/src/main/resources/Java/modelEnum.mustache +++ b/modules/openapi-generator/src/main/resources/Java/modelEnum.mustache @@ -48,7 +48,7 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} } {{#gson}} diff --git a/modules/openapi-generator/src/main/resources/Java/modelInnerEnum.mustache b/modules/openapi-generator/src/main/resources/Java/modelInnerEnum.mustache index bcd6908950..aef0f27b89 100644 --- a/modules/openapi-generator/src/main/resources/Java/modelInnerEnum.mustache +++ b/modules/openapi-generator/src/main/resources/Java/modelInnerEnum.mustache @@ -39,7 +39,7 @@ return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} } {{#gson}} diff --git a/modules/openapi-generator/src/main/resources/JavaInflector/enumClass.mustache b/modules/openapi-generator/src/main/resources/JavaInflector/enumClass.mustache index e0520b6e72..2f36ba0b6c 100644 --- a/modules/openapi-generator/src/main/resources/JavaInflector/enumClass.mustache +++ b/modules/openapi-generator/src/main/resources/JavaInflector/enumClass.mustache @@ -39,6 +39,6 @@ return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} } } diff --git a/modules/openapi-generator/src/main/resources/JavaInflector/enumOuterClass.mustache b/modules/openapi-generator/src/main/resources/JavaInflector/enumOuterClass.mustache index 76c2cbf5a7..0808ffda73 100644 --- a/modules/openapi-generator/src/main/resources/JavaInflector/enumOuterClass.mustache +++ b/modules/openapi-generator/src/main/resources/JavaInflector/enumOuterClass.mustache @@ -37,6 +37,6 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} } } diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/enumClass.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/enumClass.mustache index 186291240b..f4299da7e1 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/enumClass.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf-cdi/enumClass.mustache @@ -28,6 +28,6 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + v + "'");{{/useNullForUnknownEnumValue}} } } diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/enumClass.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/enumClass.mustache index 4778fc7a59..5bdcf238a2 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/enumClass.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/enumClass.mustache @@ -28,6 +28,6 @@ public enum {{datatypeWithEnum}} { return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + v + "'");{{/useNullForUnknownEnumValue}} } } diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/enumOuterClass.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/enumOuterClass.mustache index 5e456c6574..df2c728739 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/enumOuterClass.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/cxf/enumOuterClass.mustache @@ -42,7 +42,7 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} } } diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/enumClass.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/enumClass.mustache index 46d9588755..0844462dfa 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/enumClass.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/enumClass.mustache @@ -39,6 +39,6 @@ return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} } } diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/enumOuterClass.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/enumOuterClass.mustache index 6de036b74e..ee12f1cbb7 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/enumOuterClass.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/enumOuterClass.mustache @@ -37,6 +37,6 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} } } diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/modelEnum.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/modelEnum.mustache index 76ba2495d4..1063f334a5 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/modelEnum.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/modelEnum.mustache @@ -37,7 +37,7 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} } {{/jackson}} } diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/enumClass.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/enumClass.mustache index 1132ef55d9..a04c056310 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/enumClass.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/enumClass.mustache @@ -28,6 +28,6 @@ public enum {{datatypeWithEnum}} { return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + v + "'");{{/useNullForUnknownEnumValue}} } } diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/enumOuterClass.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/enumOuterClass.mustache index 29c83c9ac0..fa95693cb9 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/enumOuterClass.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/enumOuterClass.mustache @@ -38,6 +38,6 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} } } diff --git a/modules/openapi-generator/src/main/resources/JavaPlayFramework/enumClass.mustache b/modules/openapi-generator/src/main/resources/JavaPlayFramework/enumClass.mustache index 412d6121d1..8f13d84726 100644 --- a/modules/openapi-generator/src/main/resources/JavaPlayFramework/enumClass.mustache +++ b/modules/openapi-generator/src/main/resources/JavaPlayFramework/enumClass.mustache @@ -39,6 +39,6 @@ return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} } } diff --git a/modules/openapi-generator/src/main/resources/JavaPlayFramework/enumOuterClass.mustache b/modules/openapi-generator/src/main/resources/JavaPlayFramework/enumOuterClass.mustache index 4bd1206fd5..af0d27601a 100644 --- a/modules/openapi-generator/src/main/resources/JavaPlayFramework/enumOuterClass.mustache +++ b/modules/openapi-generator/src/main/resources/JavaPlayFramework/enumOuterClass.mustache @@ -37,6 +37,6 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} } } diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/enumClass.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/enumClass.mustache index e0520b6e72..2f36ba0b6c 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/enumClass.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/enumClass.mustache @@ -39,6 +39,6 @@ return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} } } diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/enumOuterClass.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/enumOuterClass.mustache index 76c2cbf5a7..0808ffda73 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/enumOuterClass.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/enumOuterClass.mustache @@ -37,6 +37,6 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} } } diff --git a/modules/openapi-generator/src/main/resources/JavaVertXServer/enumOuterClass.mustache b/modules/openapi-generator/src/main/resources/JavaVertXServer/enumOuterClass.mustache index 2308e8773d..fe5059e9a4 100644 --- a/modules/openapi-generator/src/main/resources/JavaVertXServer/enumOuterClass.mustache +++ b/modules/openapi-generator/src/main/resources/JavaVertXServer/enumOuterClass.mustache @@ -31,6 +31,6 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} } } \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/MSF4J/enumClass.mustache b/modules/openapi-generator/src/main/resources/MSF4J/enumClass.mustache index e0520b6e72..2f36ba0b6c 100644 --- a/modules/openapi-generator/src/main/resources/MSF4J/enumClass.mustache +++ b/modules/openapi-generator/src/main/resources/MSF4J/enumClass.mustache @@ -39,6 +39,6 @@ return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} } } diff --git a/modules/openapi-generator/src/main/resources/MSF4J/enumOuterClass.mustache b/modules/openapi-generator/src/main/resources/MSF4J/enumOuterClass.mustache index 76c2cbf5a7..0808ffda73 100644 --- a/modules/openapi-generator/src/main/resources/MSF4J/enumOuterClass.mustache +++ b/modules/openapi-generator/src/main/resources/MSF4J/enumOuterClass.mustache @@ -37,6 +37,6 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} } } diff --git a/modules/openapi-generator/src/main/resources/java-pkmst/enumClass.mustache b/modules/openapi-generator/src/main/resources/java-pkmst/enumClass.mustache index e0520b6e72..2f36ba0b6c 100644 --- a/modules/openapi-generator/src/main/resources/java-pkmst/enumClass.mustache +++ b/modules/openapi-generator/src/main/resources/java-pkmst/enumClass.mustache @@ -39,6 +39,6 @@ return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} } } diff --git a/modules/openapi-generator/src/main/resources/java-pkmst/enumOuterClass.mustache b/modules/openapi-generator/src/main/resources/java-pkmst/enumOuterClass.mustache index 76c2cbf5a7..0808ffda73 100644 --- a/modules/openapi-generator/src/main/resources/java-pkmst/enumOuterClass.mustache +++ b/modules/openapi-generator/src/main/resources/java-pkmst/enumOuterClass.mustache @@ -37,6 +37,6 @@ public enum {{#datatypeWithEnum}}{{{.}}}{{/datatypeWithEnum}}{{^datatypeWithEnum return b; } } - return null; + {{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} } } diff --git a/modules/openapi-generator/src/main/resources/undertow/enumOuterClass.mustache b/modules/openapi-generator/src/main/resources/undertow/enumOuterClass.mustache index aca7bd48c1..3b43067c97 100644 --- a/modules/openapi-generator/src/main/resources/undertow/enumOuterClass.mustache +++ b/modules/openapi-generator/src/main/resources/undertow/enumOuterClass.mustache @@ -37,6 +37,6 @@ if (String.valueOf(b.value).equals(text)) { return b; } } -return null; +{{#useNullForUnknownEnumValue}}return null;{{/useNullForUnknownEnumValue}}{{^useNullForUnknownEnumValue}}throw new IllegalArgumentException("Unexpected value '" + text + "'");{{/useNullForUnknownEnumValue}} } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java index 63f655e856..be90e87253 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java @@ -98,6 +98,7 @@ public class AbstractJavaCodegenTest { Assert.assertEquals(codegen.getInvokerPackage(), "org.openapitools"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.INVOKER_PACKAGE), "org.openapitools"); Assert.assertEquals(codegen.additionalProperties().get(AbstractJavaCodegen.BOOLEAN_GETTER_PREFIX), "get"); + Assert.assertEquals(codegen.additionalProperties().get(AbstractJavaCodegen.USE_NULL_FOR_UNKNOWN_ENUM_VALUE), Boolean.FALSE); } @Test @@ -108,6 +109,7 @@ public class AbstractJavaCodegenTest { codegen.setApiPackage("xyz.yyyyy.zzzzzzz.api"); codegen.setInvokerPackage("xyz.yyyyy.zzzzzzz.invoker"); codegen.setBooleanGetterPrefix("is"); + codegen.setUseNullForUnknownEnumValue(true); codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE); @@ -119,6 +121,7 @@ public class AbstractJavaCodegenTest { Assert.assertEquals(codegen.getInvokerPackage(), "xyz.yyyyy.zzzzzzz.invoker"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.INVOKER_PACKAGE), "xyz.yyyyy.zzzzzzz.invoker"); Assert.assertEquals(codegen.additionalProperties().get(AbstractJavaCodegen.BOOLEAN_GETTER_PREFIX), "is"); + Assert.assertEquals(codegen.additionalProperties().get(AbstractJavaCodegen.USE_NULL_FOR_UNKNOWN_ENUM_VALUE), Boolean.TRUE); } @Test @@ -129,6 +132,7 @@ public class AbstractJavaCodegenTest { codegen.additionalProperties().put(CodegenConstants.API_PACKAGE, "xyz.yyyyy.api.oooooo"); codegen.additionalProperties().put(CodegenConstants.INVOKER_PACKAGE, "xyz.yyyyy.invoker.oooooo"); codegen.additionalProperties().put(AbstractJavaCodegen.BOOLEAN_GETTER_PREFIX, "getBoolean"); + codegen.additionalProperties().put(AbstractJavaCodegen.USE_NULL_FOR_UNKNOWN_ENUM_VALUE, "true"); codegen.processOpts(); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); @@ -140,6 +144,7 @@ public class AbstractJavaCodegenTest { Assert.assertEquals(codegen.getInvokerPackage(), "xyz.yyyyy.invoker.oooooo"); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.INVOKER_PACKAGE), "xyz.yyyyy.invoker.oooooo"); Assert.assertEquals(codegen.additionalProperties().get(AbstractJavaCodegen.BOOLEAN_GETTER_PREFIX), "getBoolean"); + Assert.assertEquals(codegen.additionalProperties().get(AbstractJavaCodegen.USE_NULL_FOR_UNKNOWN_ENUM_VALUE), Boolean.TRUE); } @Test diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumArrays.java index 6ffd4ef8cc..3b1b51c26a 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -59,7 +59,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -97,7 +97,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumClass.java index db980ee19e..444bb0f3c4 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumClass.java @@ -53,7 +53,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumTest.java index a690465dc5..122f370cef 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/EnumTest.java @@ -60,7 +60,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -100,7 +100,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -138,7 +138,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -176,7 +176,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/MapTest.java index 4dedd32ad7..f67fb22c45 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/MapTest.java @@ -64,7 +64,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Order.java index f3596acafc..cff13953de 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Order.java @@ -72,7 +72,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/OuterEnum.java index 1758841744..f2906d1c36 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -53,7 +53,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Pet.java index e4fdef9535..183260074e 100644 --- a/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/feign/src/main/java/org/openapitools/client/model/Pet.java @@ -78,7 +78,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/EnumArrays.java index 6ffd4ef8cc..3b1b51c26a 100644 --- a/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -59,7 +59,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -97,7 +97,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/EnumClass.java index db980ee19e..444bb0f3c4 100644 --- a/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/EnumClass.java @@ -53,7 +53,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/EnumTest.java index a690465dc5..122f370cef 100644 --- a/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/EnumTest.java @@ -60,7 +60,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -100,7 +100,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -138,7 +138,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -176,7 +176,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/MapTest.java index 4dedd32ad7..f67fb22c45 100644 --- a/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/MapTest.java @@ -64,7 +64,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/Order.java index 1a0a913400..351e8ad268 100644 --- a/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/Order.java @@ -72,7 +72,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/OuterEnum.java index 1758841744..f2906d1c36 100644 --- a/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -53,7 +53,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/Pet.java index e4fdef9535..183260074e 100644 --- a/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/google-api-client/src/main/java/org/openapitools/client/model/Pet.java @@ -78,7 +78,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/EnumArrays.java index a169c26b00..1caf492f5a 100644 --- a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -59,7 +59,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -97,7 +97,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/EnumClass.java index db980ee19e..444bb0f3c4 100644 --- a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/EnumClass.java @@ -53,7 +53,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/EnumTest.java index a690465dc5..122f370cef 100644 --- a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/EnumTest.java @@ -60,7 +60,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -100,7 +100,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -138,7 +138,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -176,7 +176,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/MapTest.java index be06407788..8e9c0d6cb1 100644 --- a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/MapTest.java @@ -64,7 +64,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/Order.java index 4d145211c5..ced7021768 100644 --- a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/Order.java @@ -72,7 +72,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/OuterEnum.java index 1758841744..f2906d1c36 100644 --- a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -53,7 +53,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/Pet.java index 4228693045..0c495abb42 100644 --- a/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/jersey2-java8/src/main/java/org/openapitools/client/model/Pet.java @@ -78,7 +78,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/EnumArrays.java index 05df76be8b..7bef802a4c 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -63,7 +63,7 @@ public class EnumArrays implements Parcelable { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -114,7 +114,7 @@ public class EnumArrays implements Parcelable { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/EnumClass.java index d69041725e..f1d17a64c6 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/EnumClass.java @@ -58,7 +58,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/EnumTest.java index be2e29700e..b5fe8a5bb2 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/EnumTest.java @@ -64,7 +64,7 @@ public class EnumTest implements Parcelable { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -117,7 +117,7 @@ public class EnumTest implements Parcelable { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -168,7 +168,7 @@ public class EnumTest implements Parcelable { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -219,7 +219,7 @@ public class EnumTest implements Parcelable { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/MapTest.java index 7d30658043..102741c9c4 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/MapTest.java @@ -69,7 +69,7 @@ public class MapTest implements Parcelable { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/Order.java index 3fdd5cef1b..17a157d035 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/Order.java @@ -80,7 +80,7 @@ public class Order implements Parcelable { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/OuterEnum.java index ac4e7b2327..2c88f0af4d 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -58,7 +58,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/Pet.java index 068d55117d..e3b325b4bc 100644 --- a/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/okhttp-gson-parcelableModel/src/main/java/org/openapitools/client/model/Pet.java @@ -87,7 +87,7 @@ public class Pet implements Parcelable { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/EnumArrays.java index e191238750..c2f60d7998 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -61,7 +61,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -112,7 +112,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/EnumClass.java index c9eca9b240..bff1744e82 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/EnumClass.java @@ -56,7 +56,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/EnumTest.java index 4205836fa8..a2319a67a7 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/EnumTest.java @@ -62,7 +62,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -115,7 +115,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -166,7 +166,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -217,7 +217,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/MapTest.java index 8de793aede..8f4186f986 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/MapTest.java @@ -67,7 +67,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/Order.java index 3dbd196102..3a679d5d79 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/Order.java @@ -78,7 +78,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/OuterEnum.java index c48653c17a..7ee2905d08 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -56,7 +56,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/Pet.java index 4a7d067f01..82dd8b088a 100644 --- a/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/Pet.java @@ -85,7 +85,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/EnumArrays.java index e191238750..c2f60d7998 100644 --- a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -61,7 +61,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -112,7 +112,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/EnumClass.java index c9eca9b240..bff1744e82 100644 --- a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/EnumClass.java @@ -56,7 +56,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/EnumTest.java index 4205836fa8..a2319a67a7 100644 --- a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/EnumTest.java @@ -62,7 +62,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -115,7 +115,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -166,7 +166,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -217,7 +217,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/MapTest.java index 8de793aede..8f4186f986 100644 --- a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/MapTest.java @@ -67,7 +67,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/Order.java index 1b39885d8e..c1ccf03f8f 100644 --- a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/Order.java @@ -78,7 +78,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/OuterEnum.java index c48653c17a..7ee2905d08 100644 --- a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -56,7 +56,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/Pet.java index 4a7d067f01..82dd8b088a 100644 --- a/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/rest-assured/src/main/java/org/openapitools/client/model/Pet.java @@ -85,7 +85,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/EnumArrays.java index 6ffd4ef8cc..3b1b51c26a 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -59,7 +59,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -97,7 +97,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/EnumClass.java index db980ee19e..444bb0f3c4 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/EnumClass.java @@ -53,7 +53,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/EnumTest.java index a690465dc5..122f370cef 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/EnumTest.java @@ -60,7 +60,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -100,7 +100,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -138,7 +138,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -176,7 +176,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/MapTest.java index 4dedd32ad7..f67fb22c45 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/MapTest.java @@ -64,7 +64,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/Order.java index 1a0a913400..351e8ad268 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/Order.java @@ -72,7 +72,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/OuterEnum.java index 1758841744..f2906d1c36 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -53,7 +53,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/Pet.java index e4fdef9535..183260074e 100644 --- a/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/resteasy/src/main/java/org/openapitools/client/model/Pet.java @@ -78,7 +78,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumArrays.java index 994fe77773..93a48f86bb 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -64,7 +64,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -104,7 +104,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumClass.java index e730d3ed40..b7c180d2a9 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumClass.java @@ -55,7 +55,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumTest.java index d8837b78b7..2bd71e85a0 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/EnumTest.java @@ -65,7 +65,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -107,7 +107,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -147,7 +147,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -187,7 +187,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/MapTest.java index d142e7ea62..4bb1ec28f8 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/MapTest.java @@ -73,7 +73,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/Order.java index f288a6066f..a71b7b09bc 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/Order.java @@ -85,7 +85,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/OuterEnum.java index 37f0fb57d5..c1a6426796 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -55,7 +55,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/Pet.java index 567cc4dd6d..b6b70a02a2 100644 --- a/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/resttemplate-withXml/src/main/java/org/openapitools/client/model/Pet.java @@ -103,7 +103,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/EnumArrays.java index 6ffd4ef8cc..3b1b51c26a 100644 --- a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -59,7 +59,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -97,7 +97,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/EnumClass.java index db980ee19e..444bb0f3c4 100644 --- a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/EnumClass.java @@ -53,7 +53,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/EnumTest.java index a690465dc5..122f370cef 100644 --- a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/EnumTest.java @@ -60,7 +60,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -100,7 +100,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -138,7 +138,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -176,7 +176,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/MapTest.java index 4dedd32ad7..f67fb22c45 100644 --- a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/MapTest.java @@ -64,7 +64,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/Order.java index 1a0a913400..351e8ad268 100644 --- a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/Order.java @@ -72,7 +72,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/OuterEnum.java index 1758841744..f2906d1c36 100644 --- a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -53,7 +53,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/Pet.java index e4fdef9535..183260074e 100644 --- a/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/resttemplate/src/main/java/org/openapitools/client/model/Pet.java @@ -78,7 +78,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/EnumArrays.java index e191238750..c2f60d7998 100644 --- a/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -61,7 +61,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -112,7 +112,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/EnumClass.java index c9eca9b240..bff1744e82 100644 --- a/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/EnumClass.java @@ -56,7 +56,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/EnumTest.java index 4205836fa8..a2319a67a7 100644 --- a/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/EnumTest.java @@ -62,7 +62,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -115,7 +115,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -166,7 +166,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -217,7 +217,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/MapTest.java index 8de793aede..8f4186f986 100644 --- a/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/MapTest.java @@ -67,7 +67,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/Order.java index 1478247ad5..f599921ddd 100644 --- a/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/Order.java @@ -78,7 +78,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/OuterEnum.java index c48653c17a..7ee2905d08 100644 --- a/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -56,7 +56,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/Pet.java index 4a7d067f01..82dd8b088a 100644 --- a/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/retrofit/src/main/java/org/openapitools/client/model/Pet.java @@ -85,7 +85,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/EnumArrays.java index 7a00feb558..32a694a4de 100644 --- a/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -61,7 +61,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -99,7 +99,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/EnumClass.java index 669d1fd7ac..5ba02415fc 100644 --- a/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/EnumClass.java @@ -55,7 +55,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/EnumTest.java index ed40968e0d..2d835a86ed 100644 --- a/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/EnumTest.java @@ -62,7 +62,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -102,7 +102,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -140,7 +140,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -178,7 +178,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/MapTest.java index a0facaa95d..aca072ecc7 100644 --- a/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/MapTest.java @@ -66,7 +66,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/Order.java index 43e88363cd..969db46026 100644 --- a/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/Order.java @@ -74,7 +74,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/OuterEnum.java index 51eb9a3e35..7a9fbfc01f 100644 --- a/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -55,7 +55,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/Pet.java index e75b5a8f7c..eda15f833c 100644 --- a/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/retrofit2-play24/src/main/java/org/openapitools/client/model/Pet.java @@ -80,7 +80,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/EnumArrays.java index 7a00feb558..32a694a4de 100644 --- a/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -61,7 +61,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -99,7 +99,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/EnumClass.java index 669d1fd7ac..5ba02415fc 100644 --- a/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/EnumClass.java @@ -55,7 +55,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/EnumTest.java index ed40968e0d..2d835a86ed 100644 --- a/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/EnumTest.java @@ -62,7 +62,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -102,7 +102,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -140,7 +140,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -178,7 +178,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/MapTest.java index a0facaa95d..aca072ecc7 100644 --- a/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/MapTest.java @@ -66,7 +66,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/Order.java index 5ca5a3d8b3..e109aaa7cb 100644 --- a/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/Order.java @@ -74,7 +74,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/OuterEnum.java index 51eb9a3e35..7a9fbfc01f 100644 --- a/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -55,7 +55,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/Pet.java index e75b5a8f7c..eda15f833c 100644 --- a/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/retrofit2-play25/src/main/java/org/openapitools/client/model/Pet.java @@ -80,7 +80,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/EnumArrays.java index e191238750..c2f60d7998 100644 --- a/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -61,7 +61,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -112,7 +112,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/EnumClass.java index c9eca9b240..bff1744e82 100644 --- a/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/EnumClass.java @@ -56,7 +56,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/EnumTest.java index 4205836fa8..a2319a67a7 100644 --- a/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/EnumTest.java @@ -62,7 +62,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -115,7 +115,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -166,7 +166,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -217,7 +217,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/MapTest.java index 8de793aede..8f4186f986 100644 --- a/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/MapTest.java @@ -67,7 +67,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/Order.java index 3dbd196102..3a679d5d79 100644 --- a/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/Order.java @@ -78,7 +78,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/OuterEnum.java index c48653c17a..7ee2905d08 100644 --- a/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -56,7 +56,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/Pet.java index 4a7d067f01..82dd8b088a 100644 --- a/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/retrofit2/src/main/java/org/openapitools/client/model/Pet.java @@ -85,7 +85,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/EnumArrays.java index e191238750..c2f60d7998 100644 --- a/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -61,7 +61,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -112,7 +112,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/EnumClass.java index c9eca9b240..bff1744e82 100644 --- a/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/EnumClass.java @@ -56,7 +56,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/EnumTest.java index 4205836fa8..a2319a67a7 100644 --- a/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/EnumTest.java @@ -62,7 +62,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -115,7 +115,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -166,7 +166,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -217,7 +217,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/MapTest.java index 8de793aede..8f4186f986 100644 --- a/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/MapTest.java @@ -67,7 +67,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/Order.java index 3dbd196102..3a679d5d79 100644 --- a/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/Order.java @@ -78,7 +78,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/OuterEnum.java index c48653c17a..7ee2905d08 100644 --- a/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -56,7 +56,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/Pet.java index 4a7d067f01..82dd8b088a 100644 --- a/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/retrofit2rx/src/main/java/org/openapitools/client/model/Pet.java @@ -85,7 +85,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/EnumArrays.java index e191238750..c2f60d7998 100644 --- a/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -61,7 +61,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -112,7 +112,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/EnumClass.java index c9eca9b240..bff1744e82 100644 --- a/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/EnumClass.java @@ -56,7 +56,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/EnumTest.java index 4205836fa8..a2319a67a7 100644 --- a/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/EnumTest.java @@ -62,7 +62,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -115,7 +115,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -166,7 +166,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { @@ -217,7 +217,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/MapTest.java index 8de793aede..8f4186f986 100644 --- a/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/MapTest.java @@ -67,7 +67,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/Order.java index 3dbd196102..3a679d5d79 100644 --- a/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/Order.java @@ -78,7 +78,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/OuterEnum.java index c48653c17a..7ee2905d08 100644 --- a/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -56,7 +56,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/Pet.java index 4a7d067f01..82dd8b088a 100644 --- a/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/retrofit2rx2/src/main/java/org/openapitools/client/model/Pet.java @@ -85,7 +85,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } public static class Adapter extends TypeAdapter { diff --git a/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/EnumArrays.java index a169c26b00..1caf492f5a 100644 --- a/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -59,7 +59,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -97,7 +97,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/EnumClass.java index db980ee19e..444bb0f3c4 100644 --- a/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/EnumClass.java @@ -53,7 +53,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/EnumTest.java index a690465dc5..122f370cef 100644 --- a/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/EnumTest.java @@ -60,7 +60,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -100,7 +100,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -138,7 +138,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -176,7 +176,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/MapTest.java index be06407788..8e9c0d6cb1 100644 --- a/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/MapTest.java @@ -64,7 +64,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/Order.java index 1a0a913400..351e8ad268 100644 --- a/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/Order.java @@ -72,7 +72,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/OuterEnum.java index 1758841744..f2906d1c36 100644 --- a/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -53,7 +53,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/Pet.java index 4228693045..0c495abb42 100644 --- a/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/vertx/src/main/java/org/openapitools/client/model/Pet.java @@ -78,7 +78,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/EnumArrays.java index a169c26b00..1caf492f5a 100644 --- a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/EnumArrays.java +++ b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/EnumArrays.java @@ -59,7 +59,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -97,7 +97,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/EnumClass.java index db980ee19e..444bb0f3c4 100644 --- a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/EnumClass.java +++ b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/EnumClass.java @@ -53,7 +53,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/EnumTest.java index a690465dc5..122f370cef 100644 --- a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/EnumTest.java +++ b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/EnumTest.java @@ -60,7 +60,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -100,7 +100,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -138,7 +138,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -176,7 +176,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/MapTest.java index be06407788..8e9c0d6cb1 100644 --- a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/MapTest.java +++ b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/MapTest.java @@ -64,7 +64,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/Order.java b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/Order.java index 4d145211c5..ced7021768 100644 --- a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/Order.java +++ b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/Order.java @@ -72,7 +72,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/OuterEnum.java b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/OuterEnum.java index 1758841744..f2906d1c36 100644 --- a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/OuterEnum.java +++ b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/OuterEnum.java @@ -53,7 +53,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/Pet.java index 4228693045..0c495abb42 100644 --- a/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/petstore/java/webclient/src/main/java/org/openapitools/client/model/Pet.java @@ -78,7 +78,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/model/Order.java b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/model/Order.java index c12cabfba0..c47ad26e06 100644 --- a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/model/Order.java +++ b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/model/Order.java @@ -57,7 +57,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/model/Pet.java b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/model/Pet.java index fb839cd9fc..b57bc59b49 100644 --- a/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/model/Pet.java +++ b/samples/client/petstore/spring-cloud/src/main/java/org/openapitools/model/Pet.java @@ -65,7 +65,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/model/Order.java b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/model/Order.java index c12cabfba0..c47ad26e06 100644 --- a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/model/Order.java +++ b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/model/Order.java @@ -57,7 +57,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/model/Pet.java b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/model/Pet.java index fb839cd9fc..b57bc59b49 100644 --- a/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/model/Pet.java +++ b/samples/client/petstore/spring-stubs/src/main/java/org/openapitools/model/Pet.java @@ -65,7 +65,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs-cxf-annotated-base-path/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs-cxf-annotated-base-path/src/gen/java/org/openapitools/model/Order.java index 7673bfca6d..e6983066f1 100644 --- a/samples/server/petstore/jaxrs-cxf-annotated-base-path/src/gen/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/jaxrs-cxf-annotated-base-path/src/gen/java/org/openapitools/model/Order.java @@ -61,7 +61,7 @@ public enum StatusEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-cxf-annotated-base-path/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs-cxf-annotated-base-path/src/gen/java/org/openapitools/model/Pet.java index 79cb88423b..2341695a97 100644 --- a/samples/server/petstore/jaxrs-cxf-annotated-base-path/src/gen/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/jaxrs-cxf-annotated-base-path/src/gen/java/org/openapitools/model/Pet.java @@ -69,7 +69,7 @@ public enum StatusEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Order.java index b02344c25f..03145d6e64 100644 --- a/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Order.java @@ -55,7 +55,7 @@ public enum StatusEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Pet.java index 406b5b8107..f65ff69697 100644 --- a/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/jaxrs-cxf-cdi/src/gen/java/org/openapitools/model/Pet.java @@ -61,7 +61,7 @@ public enum StatusEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-cxf-non-spring-app/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs-cxf-non-spring-app/src/gen/java/org/openapitools/model/Order.java index 7673bfca6d..e6983066f1 100644 --- a/samples/server/petstore/jaxrs-cxf-non-spring-app/src/gen/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/jaxrs-cxf-non-spring-app/src/gen/java/org/openapitools/model/Order.java @@ -61,7 +61,7 @@ public enum StatusEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-cxf-non-spring-app/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs-cxf-non-spring-app/src/gen/java/org/openapitools/model/Pet.java index 79cb88423b..2341695a97 100644 --- a/samples/server/petstore/jaxrs-cxf-non-spring-app/src/gen/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/jaxrs-cxf-non-spring-app/src/gen/java/org/openapitools/model/Pet.java @@ -69,7 +69,7 @@ public enum StatusEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumArrays.java index b449c1555a..3897a2465d 100644 --- a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumArrays.java @@ -45,7 +45,7 @@ public enum JustSymbolEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } @@ -80,7 +80,7 @@ public enum ArrayEnumEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumClass.java b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumClass.java index 2893c9d03d..bc4c742b12 100644 --- a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumClass.java +++ b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumClass.java @@ -36,7 +36,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumTest.java index 8c55ecb817..653aa6d322 100644 --- a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/EnumTest.java @@ -44,7 +44,7 @@ public enum EnumStringEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } @@ -79,7 +79,7 @@ public enum EnumStringRequiredEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } @@ -114,7 +114,7 @@ public enum EnumIntegerEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } @@ -149,7 +149,7 @@ public enum EnumNumberEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/MapTest.java index 50e018a503..2a726dc538 100644 --- a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/MapTest.java @@ -51,7 +51,7 @@ public enum InnerEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/Order.java index 4edea02c48..90d771bd78 100644 --- a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/Order.java @@ -56,7 +56,7 @@ public enum StatusEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/OuterEnum.java b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/OuterEnum.java index bf50025193..331eab9acf 100644 --- a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/OuterEnum.java +++ b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/OuterEnum.java @@ -36,7 +36,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/Pet.java index 456fe12ca1..2dfa5ef531 100644 --- a/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/jaxrs-cxf/src/gen/java/org/openapitools/model/Pet.java @@ -64,7 +64,7 @@ public enum StatusEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/EnumArrays.java index 82a0792206..4a709992b8 100644 --- a/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/EnumArrays.java @@ -56,7 +56,7 @@ public class EnumArrays implements Serializable { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -90,7 +90,7 @@ public class EnumArrays implements Serializable { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/EnumClass.java b/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/EnumClass.java index b529df392f..83dcddfcec 100644 --- a/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/EnumClass.java +++ b/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/EnumClass.java @@ -49,7 +49,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/EnumTest.java index 0c5e803e4b..c38bfc4a03 100644 --- a/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/EnumTest.java @@ -57,7 +57,7 @@ public class EnumTest implements Serializable { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -93,7 +93,7 @@ public class EnumTest implements Serializable { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -127,7 +127,7 @@ public class EnumTest implements Serializable { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -161,7 +161,7 @@ public class EnumTest implements Serializable { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/MapTest.java index 1863dcb233..0251adcbad 100644 --- a/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/MapTest.java @@ -61,7 +61,7 @@ public class MapTest implements Serializable { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/Order.java index 05640882d9..0bdc587ef7 100644 --- a/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/Order.java @@ -69,7 +69,7 @@ public class Order implements Serializable { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/OuterEnum.java b/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/OuterEnum.java index b11585eb80..9c005ba7a8 100644 --- a/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/OuterEnum.java +++ b/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/OuterEnum.java @@ -49,7 +49,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/Pet.java index c6ac678956..69db3d88c3 100644 --- a/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/jaxrs-datelib-j8/src/gen/java/org/openapitools/model/Pet.java @@ -75,7 +75,7 @@ public class Pet implements Serializable { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumArrays.java index c0b057dfac..ea37d085b2 100644 --- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumArrays.java @@ -43,7 +43,7 @@ public enum JustSymbolEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } @@ -77,7 +77,7 @@ public enum ArrayEnumEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumClass.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumClass.java index fe5d360ab5..8572c270a4 100644 --- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumClass.java +++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumClass.java @@ -38,7 +38,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumTest.java index f60a39f4b8..bb19b184b6 100644 --- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/EnumTest.java @@ -42,7 +42,7 @@ public enum EnumStringEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } @@ -76,7 +76,7 @@ public enum EnumStringRequiredEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } @@ -110,7 +110,7 @@ public enum EnumIntegerEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } @@ -144,7 +144,7 @@ public enum EnumNumberEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/MapTest.java index 77bc760d80..4a7bd06f76 100644 --- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/MapTest.java @@ -46,7 +46,7 @@ public enum InnerEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Order.java index c5bbb3450d..9838d803cb 100644 --- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Order.java @@ -46,7 +46,7 @@ public enum StatusEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/OuterEnum.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/OuterEnum.java index 8fab87f63b..af1536c79b 100644 --- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/OuterEnum.java +++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/OuterEnum.java @@ -38,7 +38,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Pet.java index 92d17319e7..a1660ad22e 100644 --- a/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/jaxrs-spec-interface/src/gen/java/org/openapitools/model/Pet.java @@ -50,7 +50,7 @@ public enum StatusEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumArrays.java index c0b057dfac..ea37d085b2 100644 --- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumArrays.java @@ -43,7 +43,7 @@ public enum JustSymbolEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } @@ -77,7 +77,7 @@ public enum ArrayEnumEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumClass.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumClass.java index fe5d360ab5..8572c270a4 100644 --- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumClass.java +++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumClass.java @@ -38,7 +38,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumTest.java index f60a39f4b8..bb19b184b6 100644 --- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/EnumTest.java @@ -42,7 +42,7 @@ public enum EnumStringEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } @@ -76,7 +76,7 @@ public enum EnumStringRequiredEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } @@ -110,7 +110,7 @@ public enum EnumIntegerEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } @@ -144,7 +144,7 @@ public enum EnumNumberEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/MapTest.java index 77bc760d80..4a7bd06f76 100644 --- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/MapTest.java @@ -46,7 +46,7 @@ public enum InnerEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Order.java index c5bbb3450d..9838d803cb 100644 --- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Order.java @@ -46,7 +46,7 @@ public enum StatusEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/OuterEnum.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/OuterEnum.java index 8fab87f63b..af1536c79b 100644 --- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/OuterEnum.java +++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/OuterEnum.java @@ -38,7 +38,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Pet.java index 92d17319e7..a1660ad22e 100644 --- a/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/jaxrs-spec/src/gen/java/org/openapitools/model/Pet.java @@ -50,7 +50,7 @@ public enum StatusEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + v + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/EnumArrays.java index 16eebc4d86..89a470a683 100644 --- a/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/EnumArrays.java @@ -55,7 +55,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -89,7 +89,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/EnumClass.java b/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/EnumClass.java index ae772952c9..509355f8f9 100644 --- a/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/EnumClass.java +++ b/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/EnumClass.java @@ -48,7 +48,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/EnumTest.java index 0ec0c2e564..33024eb0f8 100644 --- a/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/EnumTest.java @@ -56,7 +56,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -92,7 +92,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -126,7 +126,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -160,7 +160,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/MapTest.java index b39cf01198..51c1e69cce 100644 --- a/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/MapTest.java @@ -60,7 +60,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/Order.java index 15b9148b03..1a278c1813 100644 --- a/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/Order.java @@ -68,7 +68,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/OuterEnum.java b/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/OuterEnum.java index 9458a38525..b7517f3e9e 100644 --- a/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/OuterEnum.java +++ b/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/OuterEnum.java @@ -48,7 +48,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/Pet.java index 0bd7438b68..ac94a0d478 100644 --- a/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/jaxrs/jersey1-useTags/src/gen/java/org/openapitools/model/Pet.java @@ -74,7 +74,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/EnumArrays.java index 16eebc4d86..89a470a683 100644 --- a/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/EnumArrays.java @@ -55,7 +55,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -89,7 +89,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/EnumClass.java b/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/EnumClass.java index ae772952c9..509355f8f9 100644 --- a/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/EnumClass.java +++ b/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/EnumClass.java @@ -48,7 +48,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/EnumTest.java index 0ec0c2e564..33024eb0f8 100644 --- a/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/EnumTest.java @@ -56,7 +56,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -92,7 +92,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -126,7 +126,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -160,7 +160,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/MapTest.java index b39cf01198..51c1e69cce 100644 --- a/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/MapTest.java @@ -60,7 +60,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/Order.java index 15b9148b03..1a278c1813 100644 --- a/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/Order.java @@ -68,7 +68,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/OuterEnum.java b/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/OuterEnum.java index 9458a38525..b7517f3e9e 100644 --- a/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/OuterEnum.java +++ b/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/OuterEnum.java @@ -48,7 +48,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/Pet.java index 0bd7438b68..ac94a0d478 100644 --- a/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/jaxrs/jersey1/src/gen/java/org/openapitools/model/Pet.java @@ -74,7 +74,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/EnumArrays.java index 16eebc4d86..89a470a683 100644 --- a/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/EnumArrays.java @@ -55,7 +55,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -89,7 +89,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/EnumClass.java b/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/EnumClass.java index ae772952c9..509355f8f9 100644 --- a/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/EnumClass.java +++ b/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/EnumClass.java @@ -48,7 +48,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/EnumTest.java index 0ec0c2e564..33024eb0f8 100644 --- a/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/EnumTest.java @@ -56,7 +56,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -92,7 +92,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -126,7 +126,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -160,7 +160,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/MapTest.java index b39cf01198..51c1e69cce 100644 --- a/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/MapTest.java @@ -60,7 +60,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/Order.java index 15b9148b03..1a278c1813 100644 --- a/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/Order.java @@ -68,7 +68,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/OuterEnum.java b/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/OuterEnum.java index 9458a38525..b7517f3e9e 100644 --- a/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/OuterEnum.java +++ b/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/OuterEnum.java @@ -48,7 +48,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/Pet.java index 0bd7438b68..ac94a0d478 100644 --- a/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/jaxrs/jersey2-useTags/src/gen/java/org/openapitools/model/Pet.java @@ -74,7 +74,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/EnumArrays.java index 16eebc4d86..89a470a683 100644 --- a/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/EnumArrays.java @@ -55,7 +55,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -89,7 +89,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/EnumClass.java b/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/EnumClass.java index ae772952c9..509355f8f9 100644 --- a/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/EnumClass.java +++ b/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/EnumClass.java @@ -48,7 +48,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/EnumTest.java index 0ec0c2e564..33024eb0f8 100644 --- a/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/EnumTest.java @@ -56,7 +56,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -92,7 +92,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -126,7 +126,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -160,7 +160,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/MapTest.java b/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/MapTest.java index b39cf01198..51c1e69cce 100644 --- a/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/MapTest.java @@ -60,7 +60,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/Order.java b/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/Order.java index 15b9148b03..1a278c1813 100644 --- a/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/Order.java @@ -68,7 +68,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/OuterEnum.java b/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/OuterEnum.java index 9458a38525..b7517f3e9e 100644 --- a/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/OuterEnum.java +++ b/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/OuterEnum.java @@ -48,7 +48,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/Pet.java b/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/Pet.java index 0bd7438b68..ac94a0d478 100644 --- a/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/jaxrs/jersey2/src/gen/java/org/openapitools/model/Pet.java @@ -74,7 +74,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/EnumArrays.java index a9d9a60471..7c15608894 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/EnumArrays.java @@ -43,7 +43,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -77,7 +77,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/EnumClass.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/EnumClass.java index 910622c1c5..e51d076b16 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/EnumClass.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/EnumClass.java @@ -37,7 +37,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/EnumTest.java index 420acd5cb8..26a8bce4e7 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/EnumTest.java @@ -44,7 +44,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -80,7 +80,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -114,7 +114,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -148,7 +148,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/MapTest.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/MapTest.java index 818a51978c..a6acaa59d1 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/MapTest.java @@ -49,7 +49,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/Order.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/Order.java index 73965ace4f..946ce8f756 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/Order.java @@ -56,7 +56,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/OuterEnum.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/OuterEnum.java index 53b65edb28..fc24b77695 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/OuterEnum.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/OuterEnum.java @@ -37,7 +37,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/Pet.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/Pet.java index 19151accaf..502146abef 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/org/openapitools/model/Pet.java @@ -64,7 +64,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/EnumArrays.java index a9d9a60471..7c15608894 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/EnumArrays.java @@ -43,7 +43,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -77,7 +77,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/EnumClass.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/EnumClass.java index 910622c1c5..e51d076b16 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/EnumClass.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/EnumClass.java @@ -37,7 +37,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/EnumTest.java index 420acd5cb8..26a8bce4e7 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/EnumTest.java @@ -44,7 +44,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -80,7 +80,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -114,7 +114,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -148,7 +148,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/MapTest.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/MapTest.java index 818a51978c..a6acaa59d1 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/MapTest.java @@ -49,7 +49,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/Order.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/Order.java index 8e137b8fc3..bb7ade1065 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/Order.java @@ -56,7 +56,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/OuterEnum.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/OuterEnum.java index 53b65edb28..fc24b77695 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/OuterEnum.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/OuterEnum.java @@ -37,7 +37,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/Pet.java b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/Pet.java index 19151accaf..502146abef 100644 --- a/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/spring-mvc-j8-localdatetime/src/main/java/org/openapitools/model/Pet.java @@ -64,7 +64,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/EnumArrays.java index 6c16c5f8e5..562664bc71 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/EnumArrays.java @@ -43,7 +43,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -77,7 +77,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/EnumClass.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/EnumClass.java index 910622c1c5..e51d076b16 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/EnumClass.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/EnumClass.java @@ -37,7 +37,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/EnumTest.java index 420acd5cb8..26a8bce4e7 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/EnumTest.java @@ -44,7 +44,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -80,7 +80,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -114,7 +114,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -148,7 +148,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/MapTest.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/MapTest.java index 8bd49e4840..67a3bfdd86 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/MapTest.java @@ -49,7 +49,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/Order.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/Order.java index 902623c544..810b3a6739 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/Order.java @@ -56,7 +56,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/OuterEnum.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/OuterEnum.java index 53b65edb28..fc24b77695 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/OuterEnum.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/OuterEnum.java @@ -37,7 +37,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/Pet.java b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/Pet.java index 498db141c1..9c4f5d894c 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/spring-mvc/src/main/java/org/openapitools/model/Pet.java @@ -64,7 +64,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/EnumArrays.java index 6c16c5f8e5..562664bc71 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/EnumArrays.java @@ -43,7 +43,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -77,7 +77,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/EnumClass.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/EnumClass.java index 910622c1c5..e51d076b16 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/EnumClass.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/EnumClass.java @@ -37,7 +37,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/EnumTest.java index 420acd5cb8..26a8bce4e7 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/EnumTest.java @@ -44,7 +44,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -80,7 +80,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -114,7 +114,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -148,7 +148,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/MapTest.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/MapTest.java index 8bd49e4840..67a3bfdd86 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/MapTest.java @@ -49,7 +49,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/Order.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/Order.java index 902623c544..810b3a6739 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/Order.java @@ -56,7 +56,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/OuterEnum.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/OuterEnum.java index 53b65edb28..fc24b77695 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/OuterEnum.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/OuterEnum.java @@ -37,7 +37,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/Pet.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/Pet.java index 498db141c1..9c4f5d894c 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/org/openapitools/model/Pet.java @@ -64,7 +64,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/EnumArrays.java index a9d9a60471..7c15608894 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/EnumArrays.java @@ -43,7 +43,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -77,7 +77,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/EnumClass.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/EnumClass.java index 910622c1c5..e51d076b16 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/EnumClass.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/EnumClass.java @@ -37,7 +37,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/EnumTest.java index 420acd5cb8..26a8bce4e7 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/EnumTest.java @@ -44,7 +44,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -80,7 +80,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -114,7 +114,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -148,7 +148,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/MapTest.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/MapTest.java index 818a51978c..a6acaa59d1 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/MapTest.java @@ -49,7 +49,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/Order.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/Order.java index 73965ace4f..946ce8f756 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/Order.java @@ -56,7 +56,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/OuterEnum.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/OuterEnum.java index 53b65edb28..fc24b77695 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/OuterEnum.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/OuterEnum.java @@ -37,7 +37,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/Pet.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/Pet.java index 19151accaf..502146abef 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/org/openapitools/model/Pet.java @@ -64,7 +64,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/EnumArrays.java index 6c16c5f8e5..562664bc71 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/EnumArrays.java @@ -43,7 +43,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -77,7 +77,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/EnumClass.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/EnumClass.java index 910622c1c5..e51d076b16 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/EnumClass.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/EnumClass.java @@ -37,7 +37,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/EnumTest.java index 420acd5cb8..26a8bce4e7 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/EnumTest.java @@ -44,7 +44,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -80,7 +80,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -114,7 +114,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -148,7 +148,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/MapTest.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/MapTest.java index 8bd49e4840..67a3bfdd86 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/MapTest.java @@ -49,7 +49,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/Order.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/Order.java index 902623c544..810b3a6739 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/Order.java @@ -56,7 +56,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/OuterEnum.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/OuterEnum.java index 53b65edb28..fc24b77695 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/OuterEnum.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/OuterEnum.java @@ -37,7 +37,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/Pet.java b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/Pet.java index 498db141c1..9c4f5d894c 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/org/openapitools/model/Pet.java @@ -64,7 +64,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/EnumArrays.java index a9d9a60471..7c15608894 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/EnumArrays.java @@ -43,7 +43,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -77,7 +77,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/EnumClass.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/EnumClass.java index 910622c1c5..e51d076b16 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/EnumClass.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/EnumClass.java @@ -37,7 +37,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/EnumTest.java index 420acd5cb8..26a8bce4e7 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/EnumTest.java @@ -44,7 +44,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -80,7 +80,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -114,7 +114,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -148,7 +148,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/MapTest.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/MapTest.java index 818a51978c..a6acaa59d1 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/MapTest.java @@ -49,7 +49,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/Order.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/Order.java index 73965ace4f..946ce8f756 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/Order.java @@ -56,7 +56,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/OuterEnum.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/OuterEnum.java index 53b65edb28..fc24b77695 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/OuterEnum.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/OuterEnum.java @@ -37,7 +37,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/Pet.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/Pet.java index 19151accaf..502146abef 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/org/openapitools/model/Pet.java @@ -64,7 +64,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/EnumArrays.java index a9d9a60471..7c15608894 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/EnumArrays.java @@ -43,7 +43,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -77,7 +77,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/EnumClass.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/EnumClass.java index 910622c1c5..e51d076b16 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/EnumClass.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/EnumClass.java @@ -37,7 +37,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/EnumTest.java index 420acd5cb8..26a8bce4e7 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/EnumTest.java @@ -44,7 +44,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -80,7 +80,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -114,7 +114,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -148,7 +148,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/MapTest.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/MapTest.java index 818a51978c..a6acaa59d1 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/MapTest.java @@ -49,7 +49,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/Order.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/Order.java index 73965ace4f..946ce8f756 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/Order.java @@ -56,7 +56,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/OuterEnum.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/OuterEnum.java index 53b65edb28..fc24b77695 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/OuterEnum.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/OuterEnum.java @@ -37,7 +37,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/Pet.java b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/Pet.java index 19151accaf..502146abef 100644 --- a/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/springboot-reactive/src/main/java/org/openapitools/model/Pet.java @@ -64,7 +64,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/EnumArrays.java index a9d9a60471..7c15608894 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/EnumArrays.java @@ -43,7 +43,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -77,7 +77,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/EnumClass.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/EnumClass.java index 910622c1c5..e51d076b16 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/EnumClass.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/EnumClass.java @@ -37,7 +37,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/EnumTest.java index 420acd5cb8..26a8bce4e7 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/EnumTest.java @@ -44,7 +44,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -80,7 +80,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -114,7 +114,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -148,7 +148,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/MapTest.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/MapTest.java index 818a51978c..a6acaa59d1 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/MapTest.java @@ -49,7 +49,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/Order.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/Order.java index 73965ace4f..946ce8f756 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/Order.java @@ -56,7 +56,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/OuterEnum.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/OuterEnum.java index 53b65edb28..fc24b77695 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/OuterEnum.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/OuterEnum.java @@ -37,7 +37,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/Pet.java b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/Pet.java index 19151accaf..502146abef 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/org/openapitools/model/Pet.java @@ -64,7 +64,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/model/EnumArrays.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/model/EnumArrays.java index a9d9a60471..7c15608894 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/model/EnumArrays.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/model/EnumArrays.java @@ -43,7 +43,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -77,7 +77,7 @@ public class EnumArrays { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/model/EnumClass.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/model/EnumClass.java index 910622c1c5..e51d076b16 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/model/EnumClass.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/model/EnumClass.java @@ -37,7 +37,7 @@ public enum EnumClass { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/model/EnumTest.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/model/EnumTest.java index 420acd5cb8..26a8bce4e7 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/model/EnumTest.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/model/EnumTest.java @@ -44,7 +44,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -80,7 +80,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -114,7 +114,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } @@ -148,7 +148,7 @@ public class EnumTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/model/MapTest.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/model/MapTest.java index 818a51978c..a6acaa59d1 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/model/MapTest.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/model/MapTest.java @@ -49,7 +49,7 @@ public class MapTest { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/model/Order.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/model/Order.java index 73965ace4f..946ce8f756 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/model/Order.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/model/Order.java @@ -56,7 +56,7 @@ public class Order { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/model/OuterEnum.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/model/OuterEnum.java index 53b65edb28..fc24b77695 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/model/OuterEnum.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/model/OuterEnum.java @@ -37,7 +37,7 @@ public enum OuterEnum { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } diff --git a/samples/server/petstore/springboot/src/main/java/org/openapitools/model/Pet.java b/samples/server/petstore/springboot/src/main/java/org/openapitools/model/Pet.java index 19151accaf..502146abef 100644 --- a/samples/server/petstore/springboot/src/main/java/org/openapitools/model/Pet.java +++ b/samples/server/petstore/springboot/src/main/java/org/openapitools/model/Pet.java @@ -64,7 +64,7 @@ public class Pet { return b; } } - return null; + throw new IllegalArgumentException("Unexpected value '" + text + "'"); } } From 77df3d67708d3c8faff3ba7796cd8ff2baf211d3 Mon Sep 17 00:00:00 2001 From: Jim Schubert Date: Thu, 26 Jul 2018 05:36:08 -0400 Subject: [PATCH 2/6] Validate spec on generation by default (#251) * Validate spec on generation by default Adds a validation parameter to CodegenConfigurator, and passes through options from CLI, Maven Plugin and Gradle Plugin to that property. Default is to validate the spec during generation. If spec has errors, we will output errors as well as warnings to the user. Option can be disabled by passing false to validateSpec (Maven/Gradle) or --validate-spec (CLI). * Prepare version 3.1.1-SNAPSHOT * fix version * Use last prod version for the sample * Update README.md Fix * [cli] Option parser does not support true/false for boolean options --- .../openapitools/codegen/cmd/ConfigHelp.java | 2 +- .../openapitools/codegen/cmd/Generate.java | 9 ++ .../README.adoc | 5 + .../samples/local-spec/README.md | 1 + .../samples/local-spec/build.gradle | 13 ++ .../gradle/plugin/OpenApiGeneratorPlugin.kt | 1 + .../OpenApiGeneratorGenerateExtension.kt | 11 ++ .../gradle/plugin/tasks/GenerateTask.kt | 14 +- .../src/test/kotlin/GenerateTaskDslTest.kt | 2 +- .../openapi-generator-maven-plugin/README.md | 7 +- .../examples/java-client.xml | 2 +- .../examples/non-java-invalid-spec.xml | 34 +++++ .../examples/non-java.xml | 2 +- .../examples/petstore-v3.0-invalid.yaml | 103 ++++++++++++++ .../codegen/plugin/CodeGenMojo.java | 8 ++ .../codegen/SpecValidationException.java | 133 ++++++++++++++++++ .../codegen/config/CodegenConfigurator.java | 59 +++++++- 17 files changed, 391 insertions(+), 15 deletions(-) create mode 100644 modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml create mode 100644 modules/openapi-generator-maven-plugin/examples/petstore-v3.0-invalid.yaml create mode 100644 modules/openapi-generator/src/main/java/org/openapitools/codegen/SpecValidationException.java diff --git a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java index ba6c86466a..b6c4f9b89b 100644 --- a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java +++ b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java @@ -72,4 +72,4 @@ public class ConfigHelp implements Runnable { System.exit(1); } } -} \ No newline at end of file +} diff --git a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Generate.java b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Generate.java index 7382a6d559..8c4db2af9e 100644 --- a/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Generate.java +++ b/modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/Generate.java @@ -194,6 +194,11 @@ public class Generate implements Runnable { description = CodegenConstants.REMOVE_OPERATION_ID_PREFIX_DESC) private Boolean removeOperationIdPrefix; + @Option(name = {"--skip-validate-spec"}, + title = "skip spec validation", + description = "Skips the default behavior of validating an input specification.") + private Boolean skipValidateSpec; + @Override public void run() { @@ -207,6 +212,10 @@ public class Generate implements Runnable { } // now override with any specified parameters + if (skipValidateSpec != null) { + configurator.setValidateSpec(false); + } + if (verbose != null) { configurator.setVerbose(verbose); } diff --git a/modules/openapi-generator-gradle-plugin/README.adoc b/modules/openapi-generator-gradle-plugin/README.adoc index e3752a5a62..b379a9f613 100644 --- a/modules/openapi-generator-gradle-plugin/README.adoc +++ b/modules/openapi-generator-gradle-plugin/README.adoc @@ -59,6 +59,11 @@ The gradle plugin is not currently published to https://plugins.gradle.org/m2/. |false |The verbosity of generation +|validateSpec +|Boolean +|true +|Whether or not we should validate the input spec before generation. Invalid specs result in an error. + |generatorName |String |None diff --git a/modules/openapi-generator-gradle-plugin/samples/local-spec/README.md b/modules/openapi-generator-gradle-plugin/samples/local-spec/README.md index 2f6b2a5168..b3d5dfc4f0 100644 --- a/modules/openapi-generator-gradle-plugin/samples/local-spec/README.md +++ b/modules/openapi-generator-gradle-plugin/samples/local-spec/README.md @@ -11,6 +11,7 @@ gradle openApiGenerate gradle openApiMeta gradle openApiValidate gradle buildGoSdk +gradle generateGoWithInvalidSpec ``` The samples can be tested against other versions of the plugin using the `openApiGeneratorVersion` property. For example: diff --git a/modules/openapi-generator-gradle-plugin/samples/local-spec/build.gradle b/modules/openapi-generator-gradle-plugin/samples/local-spec/build.gradle index 4a79c8e6f9..e9a5bb42e0 100644 --- a/modules/openapi-generator-gradle-plugin/samples/local-spec/build.gradle +++ b/modules/openapi-generator-gradle-plugin/samples/local-spec/build.gradle @@ -54,3 +54,16 @@ task buildGoSdk(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTas dateLibrary: "threetenp" ] } + +task generateGoWithInvalidSpec(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask){ + validateSpec = true + generatorName = "go" + inputSpec = "$rootDir/petstore-v3.0-invalid.yaml".toString() + additionalProperties = [ + packageName: "petstore" + ] + outputDir = "$buildDir/go".toString() + configOptions = [ + dateLibrary: "threetenp" + ] +} diff --git a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt index dda1bfc231..b4a2089c11 100644 --- a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt +++ b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/OpenApiGeneratorPlugin.kt @@ -80,6 +80,7 @@ class OpenApiGeneratorPlugin : Plugin { description = "Generate code via Open API Tools Generator for Open API 2.0 or 3.x specification documents." verbose.set(generate.verbose) + validateSpec.set(generate.validateSpec) generatorName.set(generate.generatorName) outputDir.set(generate.outputDir) inputSpec.set(generate.inputSpec) diff --git a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt index a62efd0bc5..fa7726542c 100644 --- a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt +++ b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt @@ -32,6 +32,11 @@ open class OpenApiGeneratorGenerateExtension(project: Project) { */ val verbose = project.objects.property() + /** + * Whether or not an input specification should be validated upon generation. + */ + val validateSpec = project.objects.property() + /** * The name of the generator which will handle codegen. (see "openApiGenerators" task) */ @@ -262,6 +267,11 @@ open class OpenApiGeneratorGenerateExtension(project: Project) { val configOptions = project.objects.property>() init { + applyDefaults() + } + + @Suppress("MemberVisibilityCanBePrivate") + fun applyDefaults(){ releaseNote.set("Minor update") modelNamePrefix.set("") modelNameSuffix.set("") @@ -271,5 +281,6 @@ open class OpenApiGeneratorGenerateExtension(project: Project) { generateApiDocumentation.set(true) withXml.set(false) configOptions.set(mapOf()) + validateSpec.set(true) } } \ No newline at end of file diff --git a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt index dbe0424dbc..db901f021c 100644 --- a/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt +++ b/modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt @@ -28,7 +28,6 @@ import org.gradle.kotlin.dsl.property import org.openapitools.codegen.CodegenConstants import org.openapitools.codegen.DefaultGenerator import org.openapitools.codegen.config.CodegenConfigurator -import org.openapitools.codegen.config.CodegenConfiguratorUtils.* /** @@ -48,6 +47,12 @@ open class GenerateTask : DefaultTask() { @get:Internal val verbose = project.objects.property() + /** + * Whether or not an input specification should be validated upon generation. + */ + @get:Internal + val validateSpec = project.objects.property() + /** * The name of the generator which will handle codegen. (see "openApiGenerators" task) */ @@ -382,6 +387,10 @@ open class GenerateTask : DefaultTask() { configurator.isVerbose = value } + validateSpec.ifNotEmpty { value -> + configurator.isValidateSpec = value + } + skipOverwrite.ifNotEmpty { value -> configurator.isSkipOverwrite = value ?: false } @@ -528,8 +537,7 @@ open class GenerateTask : DefaultTask() { out.println("Successfully generated code to ${configurator.outputDir}") } catch (e: RuntimeException) { - logger.error(e.message) - throw GradleException("Code generation failed.") + throw GradleException("Code generation failed.", e) } } finally { originalEnvironmentVariables.forEach { entry -> diff --git a/modules/openapi-generator-gradle-plugin/src/test/kotlin/GenerateTaskDslTest.kt b/modules/openapi-generator-gradle-plugin/src/test/kotlin/GenerateTaskDslTest.kt index fe84a903bd..c2a6e02442 100644 --- a/modules/openapi-generator-gradle-plugin/src/test/kotlin/GenerateTaskDslTest.kt +++ b/modules/openapi-generator-gradle-plugin/src/test/kotlin/GenerateTaskDslTest.kt @@ -31,7 +31,7 @@ class GenerateTaskDslTest : TestBase() { fun `openApiGenerate should create an expected file structure from DSL config`() { // Arrange val projectFiles = mapOf( - "spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0-invalid.yaml") + "spec.yaml" to javaClass.classLoader.getResourceAsStream("specs/petstore-v3.0.yaml") ) withProject(defaultBuildGradle, projectFiles) diff --git a/modules/openapi-generator-maven-plugin/README.md b/modules/openapi-generator-maven-plugin/README.md index af7ec01fb8..2a541850bc 100644 --- a/modules/openapi-generator-maven-plugin/README.md +++ b/modules/openapi-generator-maven-plugin/README.md @@ -38,6 +38,7 @@ mvn clean compile ### General Configuration parameters - `inputSpec` - OpenAPI Spec file path +- `validateSpec` - Whether or not to validate the input spec prior to generation. Invalid specifications will result in an error. - `language` - target generation language (deprecated, replaced by `generatorName` as values here don't represent only 'language' any longer) - `generatorName` - target generator name - `output` - target output path (default is `${project.build.directory}/generated-sources/swagger`) @@ -102,4 +103,8 @@ Specifying a custom generator is a bit different. It doesn't support the classpa ### Sample configuration -- Please see [an example configuration](examples) for using the plugin +Please see [an example configuration](examples) for using the plugin. To run these examples, explicitly pass the file to maven. Example: + +```bash +mvn -f non-java.xml compile +``` diff --git a/modules/openapi-generator-maven-plugin/examples/java-client.xml b/modules/openapi-generator-maven-plugin/examples/java-client.xml index b538b3545e..475f9cfa66 100644 --- a/modules/openapi-generator-maven-plugin/examples/java-client.xml +++ b/modules/openapi-generator-maven-plugin/examples/java-client.xml @@ -12,7 +12,7 @@ org.openapitools openapi-generator-maven-plugin - 3.0.1-SNAPSHOT + 3.1.1-SNAPSHOT diff --git a/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml b/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml new file mode 100644 index 0000000000..31da5677d9 --- /dev/null +++ b/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml @@ -0,0 +1,34 @@ + + 4.0.0 + org.openapitools + sample-project + jar + 1.0-SNAPSHOT + sample-project + http://maven.apache.org + + + + + org.openapitools + openapi-generator-maven-plugin + 3.1.1-SNAPSHOT + + + + generate + + + false + petstore-v3.0-invalid.yaml + aspnetcore + + optionalProjectFile=true + + + + + + + + diff --git a/modules/openapi-generator-maven-plugin/examples/non-java.xml b/modules/openapi-generator-maven-plugin/examples/non-java.xml index 2210a3b686..8592217bdc 100644 --- a/modules/openapi-generator-maven-plugin/examples/non-java.xml +++ b/modules/openapi-generator-maven-plugin/examples/non-java.xml @@ -12,7 +12,7 @@ org.openapitools openapi-generator-maven-plugin - 3.0.1-SNAPSHOT + 3.1.1-SNAPSHOT diff --git a/modules/openapi-generator-maven-plugin/examples/petstore-v3.0-invalid.yaml b/modules/openapi-generator-maven-plugin/examples/petstore-v3.0-invalid.yaml new file mode 100644 index 0000000000..0f5c6fc298 --- /dev/null +++ b/modules/openapi-generator-maven-plugin/examples/petstore-v3.0-invalid.yaml @@ -0,0 +1,103 @@ +openapi: "3.0.0" +servers: + - url: http://petstore.swagger.io/v1 +paths: + /pets: + get: + summary: List all pets + operationId: listPets + tags: + - pets + parameters: + - name: limit + in: query + description: How many items to return at one time (max 100) + required: false + schema: + type: integer + format: int32 + responses: + '200': + description: A paged array of pets + headers: + x-next: + description: A link to the next page of responses + schema: + type: string + content: + application/json: + schema: + $ref: "#/components/schemas/Pets" + default: + description: unexpected error + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + post: + summary: Create a pet + tags: + - pets + responses: + '201': + description: Null response + default: + description: unexpected error + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + /pets/{petId}: + get: + summary: Info for a specific pet + operationId: showPetById + tags: + - pets + parameters: + - name: petId + in: path + required: true + description: The id of the pet to retrieve + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: "#/components/schemas/Pets" + default: + description: unexpected error + content: + application/json: + schema: + $ref: "#/components/schemas/Error" +components: + schemas: + Pet: + required: + - id + - name + properties: + id: + type: integer + format: int64 + name: + type: string + tag: + type: string + Pets: + type: array + items: + $ref: "#/components/schemas/Pet" + Error: + required: + - code + - message + properties: + code: + type: integer + format: int32 + message: + type: string diff --git a/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java b/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java index 178caa6275..ffc4c84330 100644 --- a/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java +++ b/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java @@ -60,6 +60,9 @@ public class CodeGenMojo extends AbstractMojo { private static final Logger LOGGER = LoggerFactory.getLogger(CodeGenMojo.class); + @Parameter(name="validateSpec", required = false, defaultValue = "true") + private Boolean validateSpec; + @Parameter(name = "verbose", required = false, defaultValue = "false") private boolean verbose; @@ -348,6 +351,11 @@ public class CodeGenMojo extends AbstractMojo { configurator.setVerbose(verbose); + // now override with any specified parameters + if (validateSpec != null) { + configurator.setValidateSpec(validateSpec); + } + if (skipOverwrite != null) { configurator.setSkipOverwrite(skipOverwrite); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/SpecValidationException.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/SpecValidationException.java new file mode 100644 index 0000000000..1578918ba8 --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/SpecValidationException.java @@ -0,0 +1,133 @@ +package org.openapitools.codegen; + +import java.util.Set; + +public class SpecValidationException extends RuntimeException { + + private Set errors; + private Set warnings; + + /** + * Constructs a new runtime exception with {@code null} as its + * detail message. The cause is not initialized, and may subsequently be + * initialized by a call to {@link #initCause}. + */ + public SpecValidationException() { + } + + /** + * Constructs a new runtime exception with the specified detail message. + * The cause is not initialized, and may subsequently be initialized by a + * call to {@link #initCause}. + * + * @param message the detail message. The detail message is saved for + * later retrieval by the {@link #getMessage()} method. + */ + public SpecValidationException(String message) { + super(message); + } + + /** + * Constructs a new runtime exception with the specified detail message and + * cause.

Note that the detail message associated with + * {@code cause} is not automatically incorporated in + * this runtime exception's detail message. + * + * @param message the detail message (which is saved for later retrieval + * by the {@link #getMessage()} method). + * @param cause the cause (which is saved for later retrieval by the + * {@link #getCause()} method). (A null value is + * permitted, and indicates that the cause is nonexistent or + * unknown.) + * @since 1.4 + */ + public SpecValidationException(String message, Throwable cause) { + super(message, cause); + } + + /** + * Constructs a new runtime exception with the specified cause and a + * detail message of (cause==null ? null : cause.toString()) + * (which typically contains the class and detail message of + * cause). This constructor is useful for runtime exceptions + * that are little more than wrappers for other throwables. + * + * @param cause the cause (which is saved for later retrieval by the + * {@link #getCause()} method). (A null value is + * permitted, and indicates that the cause is nonexistent or + * unknown.) + * @since 1.4 + */ + public SpecValidationException(Throwable cause) { + super(cause); + } + + /** + * Constructs a new runtime exception with the specified detail + * message, cause, suppression enabled or disabled, and writable + * stack trace enabled or disabled. + * + * @param message the detail message. + * @param cause the cause. (A {@code null} value is permitted, + * and indicates that the cause is nonexistent or unknown.) + * @param enableSuppression whether or not suppression is enabled + * or disabled + * @param writableStackTrace whether or not the stack trace should + * be writable + * @since 1.7 + */ + public SpecValidationException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } + + public Set getErrors() { + return errors; + } + + public Set getWarnings() { + return warnings; + } + + public void setErrors(Set errors) { + this.errors = errors; + } + + public void setWarnings(Set warnings) { + this.warnings = warnings; + } + + /** + * Returns the detail message string of this throwable. + * + * @return the detail message string of this {@code Throwable} instance + * (which may be {@code null}). + */ + @Override + public String getMessage() { + int errorCount = 0; + if (errors != null) { + errorCount = errors.size(); + } + int warningCount = 0; + if (warnings != null) { + warningCount = warnings.size(); + } + + StringBuilder sb = new StringBuilder(); + sb.append(System.lineSeparator()) + .append("Errors: ") + .append(System.lineSeparator()); + errors.forEach(msg -> + sb.append("\t-").append(msg).append(System.lineSeparator()) + ); + + if (!warnings.isEmpty()) { + sb.append("Warnings: ").append(System.lineSeparator()); + warnings.forEach(msg -> + sb.append("\t-").append(msg).append(System.lineSeparator()) + ); + } + return super.getMessage() + " | " + + "Error count: " + errorCount + ", Warning count: " + warningCount + sb.toString(); + } +} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java index db72abdf88..96492e5251 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfigurator.java @@ -19,12 +19,8 @@ package org.openapitools.codegen.config; import com.fasterxml.jackson.annotation.JsonAnyGetter; import com.fasterxml.jackson.annotation.JsonAnySetter; -import org.openapitools.codegen.CliOption; -import org.openapitools.codegen.ClientOptInput; -import org.openapitools.codegen.ClientOpts; -import org.openapitools.codegen.CodegenConfig; -import org.openapitools.codegen.CodegenConfigLoader; -import org.openapitools.codegen.CodegenConstants; +import io.swagger.v3.oas.models.OpenAPI; +import org.openapitools.codegen.*; import org.openapitools.codegen.auth.AuthParser; import io.swagger.parser.OpenAPIParser; import io.swagger.v3.core.util.Json; @@ -33,6 +29,7 @@ import io.swagger.v3.parser.core.models.ParseOptions; import io.swagger.v3.parser.core.models.SwaggerParseResult; import org.apache.commons.lang3.Validate; import org.openapitools.codegen.languages.*; +import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -80,6 +77,7 @@ public class CodegenConfigurator implements Serializable { private boolean verbose; private boolean skipOverwrite; private boolean removeOperationIdPrefix; + private boolean validateSpec; private String templateDir; private String auth; private String apiPackage; @@ -108,6 +106,7 @@ public class CodegenConfigurator implements Serializable { private final Map dynamicProperties = new HashMap(); //the map that holds the JsonAnySetter/JsonAnyGetter values public CodegenConfigurator() { + this.validateSpec = true; this.setOutputDir("."); } @@ -211,6 +210,15 @@ public class CodegenConfigurator implements Serializable { return this; } + public boolean isValidateSpec() { + return validateSpec; + } + + public CodegenConfigurator setValidateSpec(final boolean validateSpec) { + this.validateSpec = validateSpec; + return this; + } + public boolean isSkipOverwrite() { return skipOverwrite; } @@ -514,8 +522,45 @@ public class CodegenConfigurator implements Serializable { options.setResolve(true); options.setFlatten(true); SwaggerParseResult result = new OpenAPIParser().readLocation(inputSpec, authorizationValues, options); + + Set validationMessages = new HashSet<>(result.getMessages()); + OpenAPI specification = result.getOpenAPI(); + + // NOTE: We will only expose errors+warnings if there are already errors in the spec. + if (validationMessages.size() > 0) { + Set warnings = new HashSet<>(); + if (specification != null) { + List unusedModels = ModelUtils.getUnusedSchemas(specification); + if (unusedModels != null) unusedModels.forEach(name -> warnings.add("Unused model: " + name)); + } + + if (this.isValidateSpec()) { + SpecValidationException ex = new SpecValidationException("Specification has failed validation."); + ex.setErrors(validationMessages); + ex.setWarnings(warnings); + throw ex; + } else { + StringBuilder sb = new StringBuilder(); + sb.append("There were issues with the specification, but validation has been explicitly disabled."); + sb.append(System.lineSeparator()); + + sb.append("Errors: ").append(System.lineSeparator()); + validationMessages.forEach(msg -> + sb.append("\t-").append(msg).append(System.lineSeparator()) + ); + + if (!warnings.isEmpty()) { + sb.append("Warnings: ").append(System.lineSeparator()); + warnings.forEach(msg -> + sb.append("\t-").append(msg).append(System.lineSeparator()) + ); + } + LOGGER.warn(sb.toString()); + } + } + input.opts(new ClientOpts()) - .openAPI(result.getOpenAPI()); + .openAPI(specification); return input; } From 65bad61abb675c175b2e9f90d222531281429137 Mon Sep 17 00:00:00 2001 From: sunn <33183834+etherealjoy@users.noreply.github.com> Date: Thu, 26 Jul 2018 12:30:13 +0200 Subject: [PATCH 3/6] [Qt5 Server] Add Support for Qt5 server using QHttpEngine (#322) * Initial wiring to get the QHttpEngine Server running for Qt5 server * Add wiring for build environment * Add current generated files * Update README.md * Solved Build for Docker and Host Wired up main TODO : Route API call to handlers * Wire up routes * Wiring up routes update * Convert Path to QHttpEngine format * Rename some files * Extract query Parameters and path parameters * Removed pri file, Qt can read CMakeLists.txt * Initial support of deserialization * Adding initial support for response serialization * Setup simple signal handler to quite the server with Ctrl+C in a container and on the host * Remove unneeded function * Add executable permission to script and move from Debian to Alpine for Dockerfile * Add stringValue of missing types * Unify toJson'xxx' APIs the same way like setValue * Rework to remove all pointer usages, pass by const references, simplify model, add emit signals to default handlers --- bin/cpp-qt5-server-petstore.sh | 32 ++ .../languages/CppQt5ServerCodegen.java | 478 ++++++++++++++++++ .../org.openapitools.codegen.CodegenConfig | 1 + .../cpp-qt5-server/CMakeLists.txt.mustache | 16 + .../cpp-qt5-server/Dockerfile.mustache | 29 ++ .../cpp-qt5-server/LICENSE.txt.mustache | 11 + .../cpp-qt5-server/Makefile.mustache | 29 ++ .../cpp-qt5-server/README.md.mustache | 93 ++++ .../cpp-qt5-server/apihandler.cpp.mustache | 38 ++ .../cpp-qt5-server/apihandler.h.mustache | 33 ++ .../cpp-qt5-server/apirequest.cpp.mustache | 124 +++++ .../cpp-qt5-server/apirequest.h.mustache | 53 ++ .../cpp-qt5-server/apirouter.cpp.mustache | 94 ++++ .../cpp-qt5-server/apirouter.h.mustache | 55 ++ .../cpp-qt5-server/helpers-body.mustache | 282 +++++++++++ .../cpp-qt5-server/helpers-header.mustache | 144 ++++++ .../cpp-qt5-server/licenseInfo.mustache | 11 + .../cpp-qt5-server/main.cpp.mustache | 88 ++++ .../cpp-qt5-server/model-body.mustache | 118 +++++ .../cpp-qt5-server/model-header.mustache | 58 +++ .../resources/cpp-qt5-server/object.mustache | 47 ++ .../src-CMakeLists.txt.mustache | 48 ++ .../cpp-qt5-server/server/CMakeLists.txt | 16 + .../petstore/cpp-qt5-server/server/Dockerfile | 29 ++ .../cpp-qt5-server/server/LICENSE.txt | 11 + .../petstore/cpp-qt5-server/server/Makefile | 29 ++ .../petstore/cpp-qt5-server/server/README.MD | 89 ++++ .../cpp-qt5-server/server/src/CMakeLists.txt | 48 ++ .../server/src/handlers/OAIPetApiHandler.cpp | 111 ++++ .../server/src/handlers/OAIPetApiHandler.h | 49 ++ .../src/handlers/OAIStoreApiHandler.cpp | 69 +++ .../server/src/handlers/OAIStoreApiHandler.h | 44 ++ .../server/src/handlers/OAIUserApiHandler.cpp | 107 ++++ .../server/src/handlers/OAIUserApiHandler.h | 48 ++ .../server/src/handlers/OAIapirouter.cpp | 295 +++++++++++ .../server/src/handlers/OAIapirouter.h | 66 +++ .../cpp-qt5-server/server/src/main.cpp | 99 ++++ .../server/src/models/OAIApiResponse.cpp | 130 +++++ .../server/src/models/OAIApiResponse.h | 68 +++ .../server/src/models/OAICategory.cpp | 112 ++++ .../server/src/models/OAICategory.h | 62 +++ .../server/src/models/OAIHelpers.cpp | 289 +++++++++++ .../server/src/models/OAIHelpers.h | 151 ++++++ .../server/src/models/OAIObject.h | 54 ++ .../server/src/models/OAIOrder.cpp | 184 +++++++ .../server/src/models/OAIOrder.h | 87 ++++ .../server/src/models/OAIPet.cpp | 186 +++++++ .../cpp-qt5-server/server/src/models/OAIPet.h | 89 ++++ .../server/src/models/OAITag.cpp | 112 ++++ .../cpp-qt5-server/server/src/models/OAITag.h | 62 +++ .../server/src/models/OAIUser.cpp | 220 ++++++++ .../server/src/models/OAIUser.h | 98 ++++ .../server/src/requests/OAIPetApiRequest.cpp | 304 +++++++++++ .../server/src/requests/OAIPetApiRequest.h | 90 ++++ .../src/requests/OAIStoreApiRequest.cpp | 167 ++++++ .../server/src/requests/OAIStoreApiRequest.h | 73 +++ .../server/src/requests/OAIUserApiRequest.cpp | 315 ++++++++++++ .../server/src/requests/OAIUserApiRequest.h | 89 ++++ 58 files changed, 5934 insertions(+) create mode 100755 bin/cpp-qt5-server-petstore.sh create mode 100644 modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ServerCodegen.java create mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-server/CMakeLists.txt.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-server/Dockerfile.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-server/LICENSE.txt.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-server/Makefile.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-server/README.md.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-server/apihandler.cpp.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-server/apihandler.h.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-server/apirequest.cpp.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-server/apirequest.h.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-server/apirouter.cpp.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-server/apirouter.h.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-server/helpers-body.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-server/helpers-header.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-server/licenseInfo.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-server/main.cpp.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-server/model-body.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-server/model-header.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-server/object.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-qt5-server/src-CMakeLists.txt.mustache create mode 100644 samples/server/petstore/cpp-qt5-server/server/CMakeLists.txt create mode 100644 samples/server/petstore/cpp-qt5-server/server/Dockerfile create mode 100644 samples/server/petstore/cpp-qt5-server/server/LICENSE.txt create mode 100644 samples/server/petstore/cpp-qt5-server/server/Makefile create mode 100644 samples/server/petstore/cpp-qt5-server/server/README.MD create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/CMakeLists.txt create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIPetApiHandler.cpp create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIPetApiHandler.h create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIStoreApiHandler.cpp create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIStoreApiHandler.h create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIUserApiHandler.cpp create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIUserApiHandler.h create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIapirouter.cpp create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIapirouter.h create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/main.cpp create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/models/OAIApiResponse.cpp create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/models/OAIApiResponse.h create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/models/OAICategory.cpp create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/models/OAICategory.h create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/models/OAIHelpers.cpp create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/models/OAIHelpers.h create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/models/OAIObject.h create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/models/OAIOrder.cpp create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/models/OAIOrder.h create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/models/OAIPet.cpp create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/models/OAIPet.h create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/models/OAITag.cpp create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/models/OAITag.h create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/models/OAIUser.cpp create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/models/OAIUser.h create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/requests/OAIPetApiRequest.cpp create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/requests/OAIPetApiRequest.h create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/requests/OAIStoreApiRequest.cpp create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/requests/OAIStoreApiRequest.h create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/requests/OAIUserApiRequest.cpp create mode 100644 samples/server/petstore/cpp-qt5-server/server/src/requests/OAIUserApiRequest.h diff --git a/bin/cpp-qt5-server-petstore.sh b/bin/cpp-qt5-server-petstore.sh new file mode 100755 index 0000000000..5a367c70ce --- /dev/null +++ b/bin/cpp-qt5-server-petstore.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +SCRIPT="$0" +echo "# START SCRIPT: $SCRIPT" + +while [ -h "$SCRIPT" ] ; do + ls=`ls -ld "$SCRIPT"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + SCRIPT="$link" + else + SCRIPT=`dirname "$SCRIPT"`/"$link" + fi +done + +if [ ! -d "${APP_DIR}" ]; then + APP_DIR=`dirname "$SCRIPT"`/.. + APP_DIR=`cd "${APP_DIR}"; pwd` +fi + +executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar" + +if [ ! -f "$executable" ] +then + mvn -B clean package +fi + +# if you've executed sbt assembly previously it will use that instead. +export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties" +ags="generate -t modules/openapi-generator/src/main/resources/cpp-qt5-server -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g cpp-qt5-server -o samples/server/petstore/cpp-qt5-server $@" + +java $JAVA_OPTS -jar $executable $ags diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ServerCodegen.java new file mode 100644 index 0000000000..7d2be8a678 --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ServerCodegen.java @@ -0,0 +1,478 @@ +/* + * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech) + * Copyright 2018 SmartBear Software + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openapitools.codegen.languages; + +import org.apache.commons.lang3.StringUtils; +import org.openapitools.codegen.*; +import org.openapitools.codegen.utils.ModelUtils; + +import io.swagger.v3.oas.models.media.*; +import io.swagger.v3.parser.util.SchemaTypeUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public class CppQt5ServerCodegen extends AbstractCppCodegen implements CodegenConfig { + private static final Logger LOGGER = LoggerFactory.getLogger(CppQt5ServerCodegen.class); + + public static final String CPP_NAMESPACE = "cppNamespace"; + public static final String CPP_NAMESPACE_DESC = "C++ namespace (convention: name::space::for::api)."; + + protected final String PREFIX = "OAI"; + protected final String SRC_DIR = "/src"; + protected final String MODEL_DIR = "/src/models"; + protected final String APIHANDLER_DIR = "/src/handlers"; + protected final String APIREQUEST_DIR = "/src/requests"; + protected Set foundationClasses = new HashSet(); + // source folder where to write the files + protected String sourceFolder = "server"; + protected String apiVersion = "1.0.0"; + protected Map namespaces = new HashMap(); + protected Set systemIncludes = new HashSet(); + protected String cppNamespace = "OpenAPI"; + + public CppQt5ServerCodegen() { + super(); + + // set the output folder here + outputFolder = "generated-code/cpp-qt5-server"; + + // set modelNamePrefix as default for QT5CPP + if (StringUtils.isEmpty(modelNamePrefix)) { + modelNamePrefix = PREFIX; + } + + /* + * Models. You can write model files using the modelTemplateFiles map. + * if you want to create one template for file, you can do so here. + * for multiple files for model, just put another entry in the `modelTemplateFiles` with + * a different extension + */ + modelTemplateFiles.put( + "model-header.mustache", + ".h"); + + modelTemplateFiles.put( + "model-body.mustache", + ".cpp"); + + /* + * Api classes. You can write classes for each Api file with the apiTemplateFiles map. + * as with models, add multiple entries with different extensions for multiple files per + * class + */ + apiTemplateFiles.put( + "apihandler.h.mustache", // the template to use + ".h"); // the extension for each file to write + + apiTemplateFiles.put( + "apihandler.cpp.mustache", // the template to use + ".cpp"); // the extension for each file to write + + apiTemplateFiles.put( + "apirequest.h.mustache", // the template to use + ".h"); // the extension for each file to write + + apiTemplateFiles.put( + "apirequest.cpp.mustache", // the template to use + ".cpp"); // the extension for each file to write + + /* + * Template Location. This is the location which templates will be read from. The generator + * will use the resource stream to attempt to read the templates. + */ + embeddedTemplateDir = templateDir = "cpp-qt5-server"; + + // CLI options + addOption(CPP_NAMESPACE, CPP_NAMESPACE_DESC, this.cppNamespace); + + /* + * Additional Properties. These values can be passed to the templates and + * are available in models, apis, and supporting files + */ + additionalProperties.put("apiVersion", apiVersion); + additionalProperties().put("prefix", PREFIX); + + // Write defaults namespace in properties so that it can be accessible in templates. + // At this point command line has not been parsed so if value is given + // in command line it will superseed this content + additionalProperties.put("cppNamespace", cppNamespace); + + /* + * Language Specific Primitives. These types will not trigger imports by + * the client generator + */ + languageSpecificPrimitives = new HashSet( + Arrays.asList( + "bool", + "qint32", + "qint64", + "float", + "double") + ); + + supportingFiles.add(new SupportingFile("helpers-header.mustache", sourceFolder + MODEL_DIR, PREFIX + "Helpers.h")); + supportingFiles.add(new SupportingFile("helpers-body.mustache", sourceFolder + MODEL_DIR, PREFIX + "Helpers.cpp")); + supportingFiles.add(new SupportingFile("object.mustache", sourceFolder + MODEL_DIR, PREFIX + "Object.h")); + supportingFiles.add(new SupportingFile("apirouter.h.mustache", sourceFolder + APIHANDLER_DIR, PREFIX + "ApiRouter.h")); + supportingFiles.add(new SupportingFile("apirouter.cpp.mustache", sourceFolder + APIHANDLER_DIR, PREFIX + "ApiRouter.cpp")); + + + supportingFiles.add(new SupportingFile("main.cpp.mustache", sourceFolder + SRC_DIR, "main.cpp")); + supportingFiles.add(new SupportingFile("src-CMakeLists.txt.mustache", sourceFolder + SRC_DIR, "CMakeLists.txt")); + supportingFiles.add(new SupportingFile("README.md.mustache", sourceFolder, "README.MD")); + supportingFiles.add(new SupportingFile("Makefile.mustache", sourceFolder, "Makefile")); + supportingFiles.add(new SupportingFile("CMakeLists.txt.mustache", sourceFolder, "CMakeLists.txt")); + supportingFiles.add(new SupportingFile("Dockerfile.mustache", sourceFolder, "Dockerfile")); + supportingFiles.add(new SupportingFile("LICENSE.txt.mustache", sourceFolder, "LICENSE.txt")); + + super.typeMapping = new HashMap(); + + typeMapping.put("date", "QDate"); + typeMapping.put("DateTime", "QDateTime"); + typeMapping.put("string", "QString"); + typeMapping.put("integer", "qint32"); + typeMapping.put("long", "qint64"); + typeMapping.put("boolean", "bool"); + typeMapping.put("array", "QList"); + typeMapping.put("map", "QMap"); + typeMapping.put("object", PREFIX + "Object"); + // mapped as "file" type for OAS 3.0 + typeMapping.put("ByteArray", "QByteArray"); + // UUID support - possible enhancement : use QUuid instead of QString. + // beware though that Serialisation/deserialisation of QUuid does not + // come out of the box and will need to be sorted out (at least imply + // modifications on multiple templates) + typeMapping.put("UUID", "QString"); + typeMapping.put("file", "QIODevice"); + typeMapping.put("binary", "QIODevice"); + importMapping = new HashMap(); + namespaces = new HashMap(); + + foundationClasses.add("QString"); + + systemIncludes.add("QString"); + systemIncludes.add("QList"); + systemIncludes.add("QMap"); + systemIncludes.add("QDate"); + systemIncludes.add("QDateTime"); + systemIncludes.add("QByteArray"); + systemIncludes.add("QIODevice"); + } + + @Override + public void processOpts() { + super.processOpts(); + + if (additionalProperties.containsKey("cppNamespace")) { + cppNamespace = (String) additionalProperties.get("cppNamespace"); + } + + additionalProperties.put("cppNamespaceDeclarations", cppNamespace.split("\\::")); + if (additionalProperties.containsKey("modelNamePrefix")) { + supportingFiles.clear(); + supportingFiles.add(new SupportingFile("helpers-header.mustache", sourceFolder + MODEL_DIR, modelNamePrefix + "Helpers.h")); + supportingFiles.add(new SupportingFile("helpers-body.mustache", sourceFolder + MODEL_DIR, modelNamePrefix + "Helpers.cpp")); + supportingFiles.add(new SupportingFile("object.mustache", sourceFolder + MODEL_DIR, modelNamePrefix + "Object.h")); + supportingFiles.add(new SupportingFile("apirouter.h.mustache", sourceFolder + APIHANDLER_DIR, modelNamePrefix + "ApiRouter.h")); + supportingFiles.add(new SupportingFile("apirouter.cpp.mustache", sourceFolder + APIHANDLER_DIR, modelNamePrefix + "ApiRouter.cpp")); + + supportingFiles.add(new SupportingFile("main.cpp.mustache", sourceFolder + SRC_DIR, "main.cpp")); + supportingFiles.add(new SupportingFile("src-CMakeLists.txt.mustache", sourceFolder + SRC_DIR, "CMakeLists.txt")); + supportingFiles.add(new SupportingFile("README.md.mustache", sourceFolder, "README.MD")); + supportingFiles.add(new SupportingFile("Makefile.mustache", sourceFolder, "Makefile")); + supportingFiles.add(new SupportingFile("CMakeLists.txt.mustache", sourceFolder, "CMakeLists.txt")); + supportingFiles.add(new SupportingFile("Dockerfile.mustache", sourceFolder, "Dockerfile")); + supportingFiles.add(new SupportingFile("LICENSE.txt.mustache", sourceFolder, "LICENSE.txt")); + + typeMapping.put("object", modelNamePrefix + "Object"); + additionalProperties().put("prefix", modelNamePrefix); + } + } + + /** + * Configures the type of generator. + * + * @return the CodegenType for this generator + * @see org.openapitools.codegen.CodegenType + */ + @Override + public CodegenType getTag() { + return CodegenType.SERVER; + } + + /** + * Configures a friendly name for the generator. This will be used by the generator + * to select the library with the -g flag. + * + * @return the friendly name for the generator + */ + @Override + public String getName() { + return "cpp-qt5-server"; + } + + /** + * Returns human-friendly help for the generator. Provide the consumer with help + * tips, parameters here + * + * @return A string value for the help message + */ + @Override + public String getHelp() { + return "Generates a Qt5 C++ Server using the QHTTPEngine HTTP Library."; + } + + @Override + public String toModelImport(String name) { + if( name.isEmpty() ) { + return null; + } + + if (namespaces.containsKey(name)) { + return "using " + namespaces.get(name) + ";"; + } else if (systemIncludes.contains(name)) { + return "#include <" + name + ">"; + } + + String folder = modelPackage().replace("::", File.separator); + if (!folder.isEmpty()) + folder += File.separator; + + return "#include \"" + folder + name + ".h\""; + } + + /** + * Escapes a reserved word as defined in the `reservedWords` array. Handle escaping + * those terms here. This logic is only called if a variable matches the reserved words + * + * @return the escaped term + */ + @Override + public String escapeReservedWord(String name) { + if (this.reservedWordsMappings().containsKey(name)) { + return this.reservedWordsMappings().get(name); + } + return "_" + name; + } + + /** + * Location to write model files. You can use the modelPackage() as defined when the class is + * instantiated + */ + @Override + public String modelFileFolder() { + return outputFolder + "/" + sourceFolder + MODEL_DIR + "/" + modelPackage().replace("::", File.separator); + } + + /** + * Location to write api files. You can use the apiPackage() as defined when the class is + * instantiated + */ + @Override + public String apiFileFolder() { + return outputFolder + "/" + sourceFolder + APIHANDLER_DIR + "/" + apiPackage().replace("::", File.separator); + } + + private String requestFileFolder() { + return outputFolder + "/" + sourceFolder + APIREQUEST_DIR + "/" + apiPackage().replace("::", File.separator); + } + + @Override + public String toModelFilename(String name) { + return modelNamePrefix + initialCaps(name); + } + + @Override + public String apiFilename(String templateName, String tag) { + String result = super.apiFilename(templateName, tag); + + if (templateName.contains("apirequest")) { + result = result.replace("ApiHandler", "ApiRequest"); + result = result.replace(apiFileFolder(), requestFileFolder()); + } + return result; + } + + @Override + public String toApiFilename(String name) { + return modelNamePrefix + initialCaps(name) + "ApiHandler"; + } + + /** + * Optional - type declaration. This is a String which is used by the templates to instantiate your + * types. There is typically special handling for different property types + * + * @return a string value used as the `dataType` field for model templates, `returnType` for api templates + */ + @Override + public String getTypeDeclaration(Schema p) { + String openAPIType = getSchemaType(p); + + if (ModelUtils.isArraySchema(p)) { + ArraySchema ap = (ArraySchema) p; + Schema inner = ap.getItems(); + return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">"; + } else if (ModelUtils.isMapSchema(p)) { + Schema inner = (Schema) p.getAdditionalProperties(); + return getSchemaType(p) + ""; + } else if (ModelUtils.isBinarySchema(p)) { + return getSchemaType(p) + "*"; + } else if (ModelUtils.isFileSchema(p)) { + return getSchemaType(p) + "*"; + } + if (foundationClasses.contains(openAPIType)) { + return openAPIType; + } else if (languageSpecificPrimitives.contains(openAPIType)) { + return toModelName(openAPIType); + } else { + return openAPIType; + } + } + + @Override + public String toDefaultValue(Schema p) { + if (ModelUtils.isBooleanSchema(p)) { + return "false"; + } else if (ModelUtils.isDateSchema(p)) { + return "NULL"; + } else if (ModelUtils.isDateTimeSchema(p)) { + return "NULL"; + } else if (ModelUtils.isNumberSchema(p)) { + if (SchemaTypeUtil.FLOAT_FORMAT.equals(p.getFormat())) { + return "0.0f"; + } + return "0.0"; + } else if (ModelUtils.isIntegerSchema(p)) { + if (SchemaTypeUtil.INTEGER64_FORMAT.equals(p.getFormat())) { + return "0L"; + } + return "0"; + } else if (ModelUtils.isMapSchema(p)) { + Schema inner = (Schema) p.getAdditionalProperties(); + return "QMap()"; + } else if (ModelUtils.isArraySchema(p)) { + ArraySchema ap = (ArraySchema) p; + Schema inner = ap.getItems(); + return "QList<" + getTypeDeclaration(inner) + ">()"; + } else if (ModelUtils.isStringSchema(p)) { + return "QString(\"\")"; + } else if (!StringUtils.isEmpty(p.get$ref())) { + return toModelName(ModelUtils.getSimpleRef(p.get$ref())) + "()"; + } + return "NULL"; + } + + /** + * Optional - OpenAPI type conversion. This is used to map OpenAPI types in a `Schema` into + * either language specific types via `typeMapping` or into complex models if there is not a mapping. + * + * @return a string value of the type or complex model for this property + */ + @Override + public String getSchemaType(Schema p) { + String openAPIType = super.getSchemaType(p); + + String type = null; + if (typeMapping.containsKey(openAPIType)) { + type = typeMapping.get(openAPIType); + if (languageSpecificPrimitives.contains(type)) { + return toModelName(type); + } + if (foundationClasses.contains(type)) { + return type; + } + } else { + type = openAPIType; + } + return toModelName(type); + } + + @Override + public String toModelName(String type) { + if (type == null) { + LOGGER.warn("Model name can't be null. Defaul to 'UnknownModel'."); + type = "UnknownModel"; + } + + if (typeMapping.keySet().contains(type) || + typeMapping.values().contains(type) || + importMapping.values().contains(type) || + defaultIncludes.contains(type) || + languageSpecificPrimitives.contains(type)) { + return type; + } else { + return modelNamePrefix + Character.toUpperCase(type.charAt(0)) + type.substring(1); + } + } + + @Override + public String toVarName(String name) { + // sanitize name + String varName = name; + varName = sanitizeName(name); + + // if it's all uppper case, convert to lower case + if (varName.matches("^[A-Z_]*$")) { + varName = varName.toLowerCase(); + } + + // camelize (lower first character) the variable name + // petId => pet_id + varName = underscore(varName); + + // for reserved word or word starting with number, append _ + if (isReservedWord(varName) || varName.matches("^\\d.*")) { + varName = escapeReservedWord(varName); + } + + return varName; + } + + @Override + public String toParamName(String name) { + return toVarName(name); + } + + @Override + public String toApiName(String type) { + return modelNamePrefix + Character.toUpperCase(type.charAt(0)) + type.substring(1) + "Api"; + } + + @Override + public String escapeQuotationMark(String input) { + // remove " to avoid code injection + return input.replace("\"", ""); + } + + @Override + public String escapeUnsafeCharacters(String input) { + return input.replace("*/", "*_/").replace("/*", "/_*"); + } + + @Override + public String getTypeDeclaration(String str) { + return str; + } +} diff --git a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig index 8080c37050..370e454024 100644 --- a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig +++ b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig @@ -8,6 +8,7 @@ org.openapitools.codegen.languages.BashClientCodegen org.openapitools.codegen.languages.ClojureClientCodegen org.openapitools.codegen.languages.ConfluenceWikiCodegen org.openapitools.codegen.languages.CppQt5ClientCodegen +org.openapitools.codegen.languages.CppQt5ServerCodegen org.openapitools.codegen.languages.CppPistacheServerCodegen org.openapitools.codegen.languages.CppRestbedServerCodegen org.openapitools.codegen.languages.CppRestSdkClientCodegen diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-server/CMakeLists.txt.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-server/CMakeLists.txt.mustache new file mode 100644 index 0000000000..1df138241d --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-server/CMakeLists.txt.mustache @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.2 FATAL_ERROR) +project(cpp-qt5-server) + +include(ExternalProject) + +set(EXTERNAL_INSTALL_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/external) + +ExternalProject_Add(QHTTPENGINE + GIT_REPOSITORY https://github.com/etherealjoy/qhttpengine.git + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_LOCATION} +) + +include_directories(${EXTERNAL_INSTALL_LOCATION}/include) +link_directories(${EXTERNAL_INSTALL_LOCATION}/lib) + +add_subdirectory(src) diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-server/Dockerfile.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-server/Dockerfile.mustache new file mode 100644 index 0000000000..b339548297 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-server/Dockerfile.mustache @@ -0,0 +1,29 @@ +FROM alpine:latest AS build + +RUN apk add --update \ + cmake \ + alpine-sdk \ + openssl \ + qt5-qtbase-dev \ + qt5-qttools-dev + +WORKDIR /usr/server +ADD ./src ./src +ADD ./CMakeLists.txt ./ +RUN mkdir -p ./build +WORKDIR /usr/server/build +RUN cmake -DNODEBUG:STRING="ON" .. +RUN make + +FROM alpine:latest AS runtime +RUN apk add --update \ + libgcc \ + libstdc++ \ + qt5-qtbase \ + openssl + +WORKDIR /usr/server +COPY --from=build /usr/server/build/src/cpp-qt5-server ./build/src/ +COPY --from=build /usr/server/external/ ./external +EXPOSE 8080/tcp +ENTRYPOINT ["/usr/server/build/src/cpp-qt5-server"] \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-server/LICENSE.txt.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-server/LICENSE.txt.mustache new file mode 100644 index 0000000000..04938f840c --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-server/LICENSE.txt.mustache @@ -0,0 +1,11 @@ +QHttpEngine + +The MIT License (MIT) + +Copyright (c) 2015 Nathan Osman + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-server/Makefile.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-server/Makefile.mustache new file mode 100644 index 0000000000..6df9ff3275 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-server/Makefile.mustache @@ -0,0 +1,29 @@ +BUILD_DIR=build +DIST_DIR=. +ECHO=echo +CMAKE=cmake +RM=rm +MKDIR_P = mkdir -p +CD=cd + +default: all + +checkdir: +ifeq "$(wildcard $(BUILD_DIR) )" "" + @$(ECHO) "Build Directory not existing, creating..." + @${MKDIR_P} ${BUILD_DIR} +endif + +cmakestep: checkdir + $(CD) $(BUILD_DIR) && $(CMAKE) ../${DIST_DIR} + +all: cmakestep + $(MAKE) -j8 -C $(BUILD_DIR) all + +install: all + $(MAKE) -C $(BUILD_DIR) install + +clean: + $(RM) -rf $(BUILD_DIR)/* + +.PHONY: clean install diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-server/README.md.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-server/README.md.mustache new file mode 100644 index 0000000000..45f2f72467 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-server/README.md.mustache @@ -0,0 +1,93 @@ +## Qt5 HTTP Server based on the Qhttpengine +This server was generated by the [openapi-generator] +(https://openapi-generator.tech) project. +By using the [OpenAPI-Spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate a server stub. +- + +To see how to make this your own, look here: + +[README]((https://openapi-generator.tech)) + +- API version: {{appVersion}}{{^hideGenerationTimestamp}} +- Build date: {{generatedDate}}{{/hideGenerationTimestamp}} +{{#infoUrl}} +For more information, please visit [{{{infoUrl}}}]({{{infoUrl}}}) +{{/infoUrl}} + +## QHTTPEngine + +[![Build Status](https://travis-ci.org/nitroshare/qhttpengine.svg?branch=master)](https://travis-ci.org/nitroshare/qhttpengine) +[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](http://opensource.org/licenses/MIT) + +Simple set of classes for developing HTTP server applications in Qt. + +### Documentation + +To learn more about building and using the library, please visit this page: + +https://ci.quickmediasolutions.com/job/qhttpengine-documentation/doxygen/ + + +### Viewing the code +You can view the code using an editor like Microsoft Visual Studio Code or you can +Use QtCreator and browse for the root CMakeLists.txt and load it as a project + +### Build with make +Install the tools [Linux/Debian] +``` +sudo apt install cmake build-essential libssl-dev qtbase5-dev qtbase5-dev-tools git curl +``` + +To build, go to the `server` folder +``` +make +``` + +To run the server +``` +./build/src/cpp-qt5-server & +``` +#### Invoke an API +``` +curl -X GET http://localhost:8080/v2/store/inventory +curl -X POST http://localhost:8080/v2/store/order -H "Content-Type: application/json" -d "{ \"id\": 22, \"petId\": 1541, \"quantity\": 5, \"shipDate\": \"2018-06-16T18:31:43.870Z\", \"status\": \"placed\", \"complete\": \"true\" }" +curl -X GET http://localhost:8080/v2/pet/findByStatus +curl -X GET http://localhost:8080/v2/store/inventory +``` + +### Run and build with docker +Building with docker multistage +If you dont have docker install [here](https://docs.docker.com/install) +Add yourself to the docker group + +``` +docker build --network=host -t cpp-qt5-server . +``` +Running with docker +``` +docker run --rm -it --name=server-container cpp-qt5-server +``` + +#### Invoking an API +Mind the IP here +``` +curl -X GET http://172.17.0.2:8080/v2/store/inventory +curl -X POST http://172.17.0.2:8080/v2/store/order -H "Content-Type: application/json" -d "{ \"id\": 22, \"petId\": 1541, \"quantity\": 5, \"shipDate\": \"2018-06-16T18:31:43.870Z\", \"status\": \"placed\", \"complete\": \"true\" }" +``` + +use this command to get the container IP +``` +docker inspect server-container | grep "IPAddress" +``` +To exit from the command line +``` +Ctrl + p + q +``` +To stop container +``` +docker stop +``` +or to terminate and quit +``` +Ctrl+C +``` diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-server/apihandler.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-server/apihandler.cpp.mustache new file mode 100644 index 0000000000..02db7c77dc --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-server/apihandler.cpp.mustache @@ -0,0 +1,38 @@ +{{>licenseInfo}} +#include +#include +#include +#include +#include + +#include "{{classname}}Handler.h" +#include "{{classname}}Request.h" + +{{#cppNamespaceDeclarations}} +namespace {{this}} { +{{/cppNamespaceDeclarations}} + +{{classname}}Handler::{{classname}}Handler(){ + +} + +{{classname}}Handler::~{{classname}}Handler(){ + +} + +{{#operations}}{{#operation}}void {{classname}}Handler::{{nickname}}({{#allParams}}{{{dataType}}}{{#isBodyParam}}{{/isBodyParam}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) { + {{#allParams}} + Q_UNUSED({{paramName}}); + {{/allParams}} + auto reqObj = qobject_cast<{{classname}}Request*>(sender()); + if( reqObj != nullptr ) + { + {{#returnType}}{{{returnType}}} res;{{/returnType}} + reqObj->{{nickname}}Response({{#returnType}}res{{/returnType}}); + } +} +{{/operation}}{{/operations}} + +{{#cppNamespaceDeclarations}} +} +{{/cppNamespaceDeclarations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-server/apihandler.h.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-server/apihandler.h.mustache new file mode 100644 index 0000000000..e37a99bd7b --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-server/apihandler.h.mustache @@ -0,0 +1,33 @@ +{{>licenseInfo}} +#ifndef _{{prefix}}_{{classname}}Handler_H_ +#define _{{prefix}}_{{classname}}Handler_H_ + +#include + +{{#imports}}{{{import}}} +{{/imports}} + +{{#cppNamespaceDeclarations}} +namespace {{this}} { +{{/cppNamespaceDeclarations}} + +class {{classname}}Handler : public QObject +{ + Q_OBJECT + +public: + {{classname}}Handler(); + virtual ~{{classname}}Handler(); + + +public slots: + {{#operations}}{{#operation}}virtual void {{nickname}}({{#allParams}}{{{dataType}}}{{#isBodyParam}}{{/isBodyParam}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}); + {{/operation}}{{/operations}} + +}; + +{{#cppNamespaceDeclarations}} +} +{{/cppNamespaceDeclarations}} + +#endif // _{{prefix}}_{{classname}}Handler_H_ diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-server/apirequest.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-server/apirequest.cpp.mustache new file mode 100644 index 0000000000..e9430f5b25 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-server/apirequest.cpp.mustache @@ -0,0 +1,124 @@ +{{>licenseInfo}} +#include +#include +#include +#include +#include + +#include "{{prefix}}Helpers.h" +#include "{{classname}}Request.h" + +{{#cppNamespaceDeclarations}} +namespace {{this}} { +{{/cppNamespaceDeclarations}} + +{{classname}}Request::{{classname}}Request(QHttpEngine::Socket *s, {{classname}}Handler* hdl) : QObject(s), socket(s), handler(hdl) { +} + +{{classname}}Request::~{{classname}}Request(){ + disconnect(this, nullptr, nullptr, nullptr); + qDebug() << "{{classname}}Request::~{{classname}}Request()"; +} + +QMap +{{classname}}Request::getDefaultHeaders(){ + return defaultHeaders; +} + +QHttpEngine::Socket* {{classname}}Request::getRawSocket(){ + return socket; +} + +{{#operations}}{{#operation}} +void {{classname}}Request::{{nickname}}Request({{#hasPathParams}}{{#pathParams}}QString {{{paramName}}}str{{/pathParams}}{{/hasPathParams}}){ + qDebug() << "{{{basePathWithoutHost}}}{{{path}}}"; + connect(this, &{{classname}}Request::{{nickname}}, handler, &{{classname}}Handler::{{nickname}}); + + {{#queryParams}}{{queryParam}} + {{{dataType}}} {{paramName}}; + if(socket->queryString().keys().contains("{{paramName}}")){ + fromStringValue(socket->queryString().value{{#isListContainer}}s{{/isListContainer}}("{{paramName}}"), {{paramName}}); + } + {{queryParam}}{{/queryParams}} + {{#pathParams}} + {{{dataType}}} {{paramName}}; + fromStringValue({{paramName}}str, {{paramName}}); + {{/pathParams}}{{#headerParams}} + {{{dataType}}} {{paramName}}; + if(socket->headers().keys().contains("{{paramName}}")){ + fromStringValue(socket->queryString().value("{{paramName}}"), {{paramName}}); + } + {{/headerParams}}{{#formParams}} + {{{dataType}}} {{paramName}};{{/formParams}}{{#bodyParams}} {{#bodyParam}} + {{#isListContainer}} + QJsonDocument doc; + {{{dataType}}} {{paramName}}; + if(socket->readJson(doc)){ + QJsonArray jsonArray = doc.array(); + foreach(QJsonValue obj, jsonArray) { + {{items.baseType}} o; + ::{{cppNamespace}}::fromJsonValue(o, obj); + {{paramName}}.append(o); + } + } + {{/isListContainer}} + {{^isListContainer}} + {{^isMapContainer}} + {{#isPrimitive}} + {{{dataType}}} {{paramName}}; + ::{{cppNamespace}}::fromStringValue((QString(socket->readAll()), {{paramName}}); + {{/isPrimitive}} + {{/isMapContainer}} + {{#isMapContainer}} + QJsonDocument doc; + socket->readJson(doc); + QJsonObject obj = doc.object(); + {{{dataType}}} {{paramName}}; + foreach(QString key, obj.keys()) { + {{baseType}} val; + ::{{cppNamespace}}::fromJsonValue(val, obj[key]); + {{paramName}}.insert(key, val); + } + {{/isMapContainer}} + {{^isMapContainer}} + {{^isPrimitive}} + QJsonDocument doc; + socket->readJson(doc); + QJsonObject obj = doc.object(); + {{{dataType}}} {{paramName}}; + ::{{cppNamespace}}::fromJsonValue({{paramName}}, obj); + {{/isPrimitive}} + {{/isMapContainer}} + {{/isListContainer}} + {{/bodyParam}}{{/bodyParams}} + + emit {{nickname}}({{#allParams}}{{#isBodyParam}}{{/isBodyParam}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}); +} + +{{/operation}}{{/operations}} + +{{#operations}}{{#operation}}void {{classname}}Request::{{nickname}}Response({{#returnType}}{{{returnType}}} res{{/returnType}}){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +{{/operation}}{{/operations}} + +{{#operations}}{{#operation}}void {{classname}}Request::{{nickname}}Error({{#returnType}}{{{returnType}}} res, {{/returnType}}QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +{{/operation}}{{/operations}} + + + +{{#cppNamespaceDeclarations}} +} +{{/cppNamespaceDeclarations}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-server/apirequest.h.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-server/apirequest.h.mustache new file mode 100644 index 0000000000..994f68350c --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-server/apirequest.h.mustache @@ -0,0 +1,53 @@ +{{>licenseInfo}} +#ifndef _{{prefix}}_{{classname}}Request_H_ +#define _{{prefix}}_{{classname}}Request_H_ + +#include +#include +#include +#include + +#include +{{#imports}}{{{import}}} +{{/imports}} +#include "{{classname}}Handler.h" + +{{#cppNamespaceDeclarations}} +namespace {{this}} { +{{/cppNamespaceDeclarations}} + +class {{classname}}Request : public QObject +{ + Q_OBJECT + +public: + {{classname}}Request(QHttpEngine::Socket *s, {{classname}}Handler* handler); + virtual ~{{classname}}Request(); + + {{#operations}}{{#operation}}void {{nickname}}Request({{#hasPathParams}}{{#pathParams}}QString {{{paramName}}}{{/pathParams}}{{/hasPathParams}}); + {{/operation}}{{/operations}} + + {{#operations}}{{#operation}}void {{nickname}}Response({{#returnType}}{{{returnType}}} res{{/returnType}}); + {{/operation}}{{/operations}} + + {{#operations}}{{#operation}}void {{nickname}}Error({{#returnType}}{{{returnType}}} res, {{/returnType}}QNetworkReply::NetworkError error_type, QString& error_str); + {{/operation}}{{/operations}} + + QMap getDefaultHeaders(); + QHttpEngine::Socket* getRawSocket(); + +signals: + {{#operations}}{{#operation}}void {{nickname}}({{#allParams}}{{{dataType}}} {{paramName}}{{#hasMore}}, {{/hasMore}}{{/allParams}}); + {{/operation}}{{/operations}} + +private: + QMap defaultHeaders; + QHttpEngine::Socket *socket; + {{classname}}Handler *handler; +}; + +{{#cppNamespaceDeclarations}} +} +{{/cppNamespaceDeclarations}} + +#endif // _{{prefix}}_{{classname}}Request_H_ diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-server/apirouter.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-server/apirouter.cpp.mustache new file mode 100644 index 0000000000..e789b68a2b --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-server/apirouter.cpp.mustache @@ -0,0 +1,94 @@ +{{>licenseInfo}} +#include +#include +#include +#include +#include + +#include "{{prefix}}ApiRouter.h" +{{#apiInfo}}{{#apis}}{{#operations}}#include "{{classname}}Request.h" +{{/operations}}{{/apis}}{{/apiInfo}} + +{{#cppNamespaceDeclarations}} +namespace {{this}} { +{{/cppNamespaceDeclarations}} + +inline QHttpEngine::Socket::Method toQHttpEngineMethod(QString method){ + + if( method == QString("OPTIONS")) + return QHttpEngine::Socket::Method::OPTIONS; + if( method == QString("GET")) + return QHttpEngine::Socket::Method::GET; + if( method == QString("HEAD")) + return QHttpEngine::Socket::Method::HEAD; + if( method == QString("POST")) + return QHttpEngine::Socket::Method::POST; + if( method == QString("PUT")) + return QHttpEngine::Socket::Method::PUT; + if( method == QString("DELETE")) + return QHttpEngine::Socket::Method::DELETE; + if( method == QString("TRACE")) + return QHttpEngine::Socket::Method::TRACE; + if( method == QString("CONNECT")) + return QHttpEngine::Socket::Method::CONNECT; + + return static_cast(-1); +} + +ApiRouter::ApiRouter() { + {{#apiInfo}}{{#apis}}{{classname}}ApiHandler = new {{classname}}Handler(); + {{/apis}}{{/apiInfo}} +} + +ApiRouter::~ApiRouter(){ + qDebug() << "~ApiRouter()"; + {{#apiInfo}}{{#apis}}delete {{classname}}ApiHandler; + {{/apis}}{{/apiInfo}} +} + +void ApiRouter::setUpRoutes() { + {{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}{{^pathParams}} + Routes.insert("{{{basePathWithoutHost}}}{{{path}}}",[this](QHttpEngine::Socket *socket) { + if(toQHttpEngineMethod("{{httpMethod}}") == socket->method()){ + auto reqObj = new {{classname}}Request(socket, {{classname}}ApiHandler); + reqObj->{{nickname}}Request(); + } + });{{/pathParams}}{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} +} + +void ApiRouter::processRequest(QHttpEngine::Socket *socket){ + if (Routes.contains(socket->path())) { + auto itr = Routes.find(socket->path()); + while (itr != Routes.end() && itr.key() == socket->path()) { + itr.value().operator()(socket); + ++itr; + } + } else + { {{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}{{#pathParams}} + { + QString completePath("{{{basePathWithoutHost}}}{{{path}}}"); + QString {{paramName}}PathParam("{"); + {{paramName}}PathParam.append("{{baseName}}").append("}"); + completePath.replace("/", "\\/"); // replace '/' with '\/' for regex + completePath.replace({{paramName}}PathParam, "([^\\/]*?)"); // match anything but '/'' + completePath.append("$"); // End of string + QRegularExpression re(completePath, QRegularExpression::CaseInsensitiveOption); + QRegularExpressionMatch match = re.match(socket->path()); + if ((toQHttpEngineMethod("{{httpMethod}}") == socket->method()) && match.hasMatch() ) { + QString pathparam = match.captured(1); + auto reqObj = new {{classname}}Request(socket, {{classname}}ApiHandler); + reqObj->{{nickname}}Request({{#hasPathParams}}{{#pathParams}}pathparam{{/pathParams}}{{/hasPathParams}});; + return; + } + }{{/pathParams}}{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} + } + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } + return; +} +{{#cppNamespaceDeclarations}} +} +{{/cppNamespaceDeclarations}} diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-server/apirouter.h.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-server/apirouter.h.mustache new file mode 100644 index 0000000000..a55da19cc4 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-server/apirouter.h.mustache @@ -0,0 +1,55 @@ +{{>licenseInfo}} +#ifndef {{prefix}}_APIROUTER_H +#define {{prefix}}_APIROUTER_H + +#include +#include +#include +#include +#include + +#include +#include +#include + +{{#apiInfo}}{{#apis}}{{#operations}}#include "{{classname}}Handler.h" +{{/operations}}{{/apis}}{{/apiInfo}} + +{{#cppNamespaceDeclarations}} +namespace {{this}} { +{{/cppNamespaceDeclarations}} + +class RequestHandler : public QHttpEngine::QObjectHandler +{ + Q_OBJECT +signals: + void requestReceived(QHttpEngine::Socket *socket); + +protected: + virtual void process(QHttpEngine::Socket *socket, const QString &path){ + Q_UNUSED(path); + emit requestReceived(socket); + } +}; + +class ApiRouter : public QObject +{ + Q_OBJECT +public: + ApiRouter(); + virtual ~ApiRouter(); + + void setUpRoutes(); + void processRequest(QHttpEngine::Socket *socket); +private: + QMultiMap> Routes; + {{#apiInfo}}{{#apis}} + {{classname}}Handler *{{classname}}ApiHandler;{{/apis}}{{/apiInfo}} +}; + + +{{#cppNamespaceDeclarations}} +} +{{/cppNamespaceDeclarations}} + +#endif // {{prefix}}_APIROUTER_H \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-server/helpers-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-server/helpers-body.mustache new file mode 100644 index 0000000000..afd728b78c --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-server/helpers-body.mustache @@ -0,0 +1,282 @@ +{{>licenseInfo}} +#include +#include "{{prefix}}Helpers.h" +#include "{{prefix}}Object.h" + +{{#cppNamespaceDeclarations}} +namespace {{this}} { +{{/cppNamespaceDeclarations}} + + +QString +toStringValue(const QString &value) { + return value; +} + +QString +toStringValue(const QDateTime &value){ + // ISO 8601 + return value.toString("yyyy-MM-ddTHH:mm:ss[Z|[+|-]HH:mm]"); +} + +QString +toStringValue(const QByteArray &value){ + return QString(value); +} + +QString +toStringValue(const QDate &value){ + // ISO 8601 + return value.toString(Qt::DateFormat::ISODate); +} + +QString +toStringValue(const qint32 &value) { + return QString::number(value); +} + +QString +toStringValue(const qint64 &value) { + return QString::number(value); +} + +QString +toStringValue(const bool &value) { + return QString(value ? "true" : "false"); +} + +QString +toStringValue(const float &value){ + return QString::number(value); +} + +QString +toStringValue(const double &value){ + return QString::number(value); +} + +QJsonValue +toJsonValue(const QString &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const QDateTime &value){ + return QJsonValue(value.toString(Qt::ISODate)); +} + +QJsonValue +toJsonValue(const QByteArray &value){ + return QJsonValue(QString(value.toBase64())); +} + +QJsonValue +toJsonValue(const QDate &value){ + return QJsonValue(value.toString(Qt::ISODate)); +} + +QJsonValue +toJsonValue(const qint32 &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const qint64 &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const bool &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const float &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const double &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const {{prefix}}Object &value){ + return value.asJsonObject(); +} + +bool +fromStringValue(const QString &inStr, QString &value){ + value.clear(); + value.append(inStr); + return !inStr.isEmpty(); +} + +bool +fromStringValue(const QString &inStr, QDateTime &value){ + if(inStr.isEmpty()){ + return false; + } + else{ + auto dateTime = QDateTime::fromString(inStr, "yyyy-MM-ddTHH:mm:ss[Z|[+|-]HH:mm]"); + if(dateTime.isValid()){ + value.setDate(dateTime.date()); + value.setTime(dateTime.time()); + } + else{ + qDebug() << "DateTime is invalid"; + } + return dateTime.isValid(); + } +} + +bool +fromStringValue(const QString &inStr, QByteArray &value){ + if(inStr.isEmpty()){ + return false; + } + else{ + value.clear(); + value.append(inStr.toUtf8()); + return value.count() > 0; + } +} + +bool +fromStringValue(const QString &inStr, QDate &value){ + if(inStr.isEmpty()){ + return false; + } + else{ + auto date = QDate::fromString(inStr, Qt::DateFormat::ISODate); + if(date.isValid()){ + value.setDate(date.year(), date.month(), date.day()); + } + else{ + qDebug() << "Date is invalid"; + } + return date.isValid(); + } +} + +bool +fromStringValue(const QString &inStr, qint32 &value){ + bool ok = false; + value = QVariant(inStr).toInt(&ok); + return ok; +} + +bool +fromStringValue(const QString &inStr, qint64 &value){ + bool ok = false; + value = QVariant(inStr).toLongLong(&ok); + return ok; +} + +bool +fromStringValue(const QString &inStr, bool &value){ + value = QVariant(inStr).toBool(); + return ((inStr == "true") || (inStr == "false")); +} + +bool +fromStringValue(const QString &inStr, float &value){ + bool ok = false; + value = QVariant(inStr).toFloat(&ok); + return ok; +} + +bool +fromStringValue(const QString &inStr, double &value){ + bool ok = false; + value = QVariant(inStr).toDouble(&ok); + return ok; +} + +void +fromJsonValue(QString &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + if(jval.isString()){ + value = jval.toString(); + } else if(jval.isBool()) { + value = jval.toBool() ? "true" : "false"; + } else if(jval.isDouble()){ + value = QString::number(jval.toDouble()); + } + } + +} + +void +fromJsonValue(QDateTime &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = QDateTime::fromString(jval.toString(), Qt::ISODate); + } + +} + +void +fromJsonValue(QByteArray &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = QByteArray::fromBase64(QByteArray::fromStdString(jval.toString().toStdString())); + } + +} + +void +fromJsonValue(QDate &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = QDate::fromString(jval.toString(), Qt::ISODate); + } + +} + +void +fromJsonValue(qint32 &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = jval.toInt(); + } + +} + +void +fromJsonValue(qint64 &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = jval.toVariant().toLongLong(); + } + +} + +void +fromJsonValue(bool &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = jval.toBool(); + } + +} + +void +fromJsonValue(float &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = static_cast(jval.toDouble()); + } +} + +void +fromJsonValue(double &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = jval.toDouble(); + } + +} + +void +fromJsonValue({{prefix}}Object &value, const QJsonValue &jval){ + if(jval.isObject()){ + value.fromJsonObject(jval.toObject()); + } +} + +{{#cppNamespaceDeclarations}} +} +{{/cppNamespaceDeclarations}} diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-server/helpers-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-server/helpers-header.mustache new file mode 100644 index 0000000000..92f0b96c17 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-server/helpers-header.mustache @@ -0,0 +1,144 @@ +{{>licenseInfo}} +#ifndef {{prefix}}_HELPERS_H +#define {{prefix}}_HELPERS_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "{{prefix}}Object.h" + +{{#cppNamespaceDeclarations}} +namespace {{this}} { +{{/cppNamespaceDeclarations}} + + QString toStringValue(const QString &value); + QString toStringValue(const QDateTime &value); + QString toStringValue(const QByteArray &value); + QString toStringValue(const QDate &value); + QString toStringValue(const qint32 &value); + QString toStringValue(const qint64 &value); + QString toStringValue(const bool &value); + QString toStringValue(const float &value); + QString toStringValue(const double &value); + + template + QList toStringValue(const QList &val) { + QList strArray; + for(auto item : val) { + strArray.append(toStringValue(item)); + } + return strArray; + } + + template + QMap toStringValue(const QMap &val) { + QMap strMap; + for(auto itemkey : val.keys()) { + strMap.insert(itemkey, toStringValue(val.value(itemkey))); + } + return strMap; + } + + QJsonValue toJsonValue(const QString &value); + QJsonValue toJsonValue(const QDateTime &value); + QJsonValue toJsonValue(const QByteArray &value); + QJsonValue toJsonValue(const QDate &value); + QJsonValue toJsonValue(const qint32 &value); + QJsonValue toJsonValue(const qint64 &value); + QJsonValue toJsonValue(const bool &value); + QJsonValue toJsonValue(const float &value); + QJsonValue toJsonValue(const double &value); + QJsonValue toJsonValue(const {{prefix}}Object &value); + + template + QJsonValue toJsonValue(const QList &val) { + QJsonArray jArray; + for(auto item : val) { + jArray.append(toJsonValue(item)); + } + return jArray; + } + + template + QJsonValue toJsonValue(const QMap &val) { + QJsonObject jObject; + for(auto itemkey : val.keys()) { + jObject.insert(itemkey, toJsonValue(val.value(itemkey))); + } + return jObject; + } + + bool fromStringValue(const QString &inStr, QString &value); + bool fromStringValue(const QString &inStr, QDateTime &value); + bool fromStringValue(const QString &inStr, QByteArray &value); + bool fromStringValue(const QString &inStr, QDate &value); + bool fromStringValue(const QString &inStr, qint32 &value); + bool fromStringValue(const QString &inStr, qint64 &value); + bool fromStringValue(const QString &inStr, bool &value); + bool fromStringValue(const QString &inStr, float &value); + bool fromStringValue(const QString &inStr, double &value); + + template + void fromStringValue(const QList &inStr, QList &val) { + for(auto item: inStr){ + T itemVal; + fromStringValue(item, itemVal); + val.push_back(itemVal); + } + } + + template + void fromStringValue(const QMap &inStr, QMap &val) { + for(auto itemkey : inStr.keys()){ + T itemVal; + fromStringValue(inStr.value(itemkey), itemVal); + val.insert(itemkey, itemVal); + } + } + + void fromJsonValue(QString &value, const QJsonValue &jval); + void fromJsonValue(QDateTime &value, const QJsonValue &jval); + void fromJsonValue(QByteArray &value, const QJsonValue &jval); + void fromJsonValue(QDate &value, const QJsonValue &jval); + void fromJsonValue(qint32 &value, const QJsonValue &jval); + void fromJsonValue(qint64 &value, const QJsonValue &jval); + void fromJsonValue(bool &value, const QJsonValue &jval); + void fromJsonValue(float &value, const QJsonValue &jval); + void fromJsonValue(double &value, const QJsonValue &jval); + void fromJsonValue({{prefix}}Object &value, const QJsonValue &jval); + + template + void fromJsonValue(QList &val, const QJsonValue &jval) { + if(jval.isArray()){ + for(const QJsonValue &jitem : jval.toArray()){ + T item; + fromJsonValue(item, jitem); + val.push_back(item); + } + } + } + + template + void fromJsonValue(QMap &val, const QJsonValue &jval) { + auto varmap = jval.toObject().toVariantMap(); + if(varmap.count() > 0){ + for(auto itemkey : varmap.keys() ){ + T itemVal; + fromJsonValue(itemVal, QJsonValue::fromVariant(varmap.value(itemkey))); + val.insert(itemkey, val); + } + } + return; + } + +{{#cppNamespaceDeclarations}} +} +{{/cppNamespaceDeclarations}} + +#endif // {{prefix}}_HELPERS_H diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-server/licenseInfo.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-server/licenseInfo.mustache new file mode 100644 index 0000000000..469fb03940 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-server/licenseInfo.mustache @@ -0,0 +1,11 @@ +/** + * {{{appName}}} + * {{{appDescription}}} + * + * {{#version}}OpenAPI spec version: {{{version}}}{{/version}} + * {{#infoEmail}}Contact: {{{infoEmail}}}{{/infoEmail}} + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-server/main.cpp.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-server/main.cpp.mustache new file mode 100644 index 0000000000..f95bbcffec --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-server/main.cpp.mustache @@ -0,0 +1,88 @@ +{{>licenseInfo}} + +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef __linux__ +#include +#include +#endif +#include +#include "{{prefix}}ApiRouter.h" + +#ifdef __linux__ +void catchUnixSignals(QList quitSignals) { + auto handler = [](int sig) -> void { + // blocking and not aysnc-signal-safe func are valid + qDebug() << "\nquit the application by signal " << sig; + QCoreApplication::quit(); + }; + + sigset_t blocking_mask; + sigemptyset(&blocking_mask); + for (auto sig : quitSignals) + sigaddset(&blocking_mask, sig); + + struct sigaction sa; + sa.sa_handler = handler; + sa.sa_mask = blocking_mask; + sa.sa_flags = 0; + + for (auto sig : quitSignals) + sigaction(sig, &sa, nullptr); +} +#endif + +int main(int argc, char * argv[]) +{ + QCoreApplication a(argc, argv); +#ifdef __linux__ + QList sigs({SIGQUIT, SIGINT, SIGTERM, SIGHUP}); + catchUnixSignals(sigs); +#endif + // Build the command-line options + QCommandLineParser parser; + QCommandLineOption addressOption( + QStringList() << "a" << "address", + "address to bind to", + "address", + "0.0.0.0" + ); + parser.addOption(addressOption); + QCommandLineOption portOption( + QStringList() << "p" << "port", + "port to listen on", + "port", + "8080" + ); + parser.addOption(portOption); + parser.addHelpOption(); + + // Parse the options that were provided + parser.process(a); + + // Obtain the values + QHostAddress address = QHostAddress(parser.value(addressOption)); + quint16 port = static_cast(parser.value(portOption).toInt()); + + QSharedPointer<{{cppNamespace}}::RequestHandler> handler(new {{cppNamespace}}::RequestHandler()); + {{cppNamespace}}::ApiRouter router; + QObject::connect(handler.data(), &{{cppNamespace}}::RequestHandler::requestReceived, [&](QHttpEngine::Socket *socket) { + router.processRequest(socket); + }); + + QHttpEngine::Server server(handler.data()); + qDebug() << "Serving on " << address.toString() << ":" << port; + // Attempt to listen on the specified port + if (!server.listen(address, port)) { + qCritical("Unable to listen on the specified port."); + return 1; + } + + return a.exec(); +} diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-server/model-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-server/model-body.mustache new file mode 100644 index 0000000000..6ba6d398b0 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-server/model-body.mustache @@ -0,0 +1,118 @@ +{{>licenseInfo}} +{{#models}}{{#model}} +#include "{{classname}}.h" + +#include "{{prefix}}Helpers.h" + +#include +#include +#include +#include + +{{#cppNamespaceDeclarations}} +namespace {{this}} { +{{/cppNamespaceDeclarations}} + +{{classname}}::{{classname}}(QString json) { + this->fromJson(json); +} + +{{classname}}::{{classname}}() { + this->init(); +} + +{{classname}}::~{{classname}}() { + +} + +void +{{classname}}::init() { + {{#vars}} + m_{{name}}_isSet = false; + {{/vars}} +} + +void +{{classname}}::fromJson(QString jsonString) { + QByteArray array (jsonString.toStdString().c_str()); + QJsonDocument doc = QJsonDocument::fromJson(array); + QJsonObject jsonObject = doc.object(); + this->fromJsonObject(jsonObject); +} + +void +{{classname}}::fromJsonObject(QJsonObject json) { + {{#vars}} + {{^isContainer}}::{{cppNamespace}}::fromJsonValue({{name}}, json[QString("{{baseName}}")]);{{/isContainer}} + {{#isContainer}}{{^items.isContainer}}::{{cppNamespace}}::fromJsonValue({{name}}, json[QString("{{baseName}}")]);{{/items.isContainer}}{{#items.isContainer}}{{#isListContainer}} + if(json["{{baseName}}"].isArray()){ + auto arr = json["{{baseName}}"].toArray(); + for (const QJsonValue & jval : arr) { + {{items.baseType}} item; + {{name}}.push_back(::{{cppNamespace}}::fromJsonValue(item, jval)); + } + }{{/isListContainer}}{{#isMapContainer}} + if(json["{{baseName}}"].isObject()){ + auto varmap = json["{{baseName}}"].toObject().toVariantMap(); + if(varmap.count() > 0){ + for(auto val : varmap.keys()){ + {{items.baseType}} item; + auto jval = QJsonValue::fromVariant(varmap.value(val)); + {{name}}.insert({{name}}.end(), val, ::{{cppNamespace}}::fromJsonValue(item, jval)); + } + } + }{{/isMapContainer}}{{/items.isContainer}}{{/isContainer}} + {{/vars}} +} + +QString +{{classname}}::asJson () const { + QJsonObject obj = this->asJsonObject(); + QJsonDocument doc(obj); + QByteArray bytes = doc.toJson(); + return QString(bytes); +} + +QJsonObject +{{classname}}::asJsonObject() const { + QJsonObject obj; + {{#vars}} + {{^isContainer}}{{#complexType}}{{^isString}}{{^isDateTime}}{{^isByteArray}}{{^isDate}}if({{name}}.isSet()){{/isDate}}{{/isByteArray}}{{/isDateTime}}{{/isString}}{{/complexType}}{{^complexType}}if(m_{{name}}_isSet){{/complexType}}{{#isString}}if(m_{{name}}_isSet){{/isString}}{{#isDateTime}}if(m_{{name}}_isSet){{/isDateTime}}{{#isByteArray}}if(m_{{name}}_isSet){{/isByteArray}}{{#isDate}}if(m_{{name}}_isSet){{/isDate}}{ + obj.insert(QString("{{baseName}}"), ::{{cppNamespace}}::toJsonValue({{name}})); + }{{/isContainer}}{{#isContainer}} + if({{name}}.size() > 0){ + {{^items.isContainer}}obj.insert(QString("{{baseName}}"), ::{{cppNamespace}}::toJsonValue({{name}}));{{/items.isContainer}}{{#items.isContainer}} + obj.insert(QString("{{baseName}}"), toJsonValue({{name}}));{{/items.isContainer}} + } {{/isContainer}} + {{/vars}} + return obj; +} + +{{#vars}} +{{{dataType}}} +{{classname}}::{{getter}}() { + return {{name}}; +} +void +{{classname}}::{{setter}}(const {{{dataType}}} &{{name}}) { + this->{{name}} = {{name}}; + this->m_{{name}}_isSet = true; +} + +{{/vars}} + +bool +{{classname}}::isSet() const { + bool isObjectUpdated = false; + do{ {{#vars}} + {{#isContainer}}if({{name}}.size() > 0){{/isContainer}}{{^isContainer}}{{#complexType}}{{^isString}}{{^isDateTime}}{{^isByteArray}}{{^isDate}}if({{name}}.isSet()){{/isDate}}{{/isByteArray}}{{/isDateTime}}{{/isString}}{{/complexType}}{{^complexType}}if(m_{{name}}_isSet){{/complexType}}{{#isString}}if(m_{{name}}_isSet){{/isString}}{{#isDateTime}}if(m_{{name}}_isSet){{/isDateTime}}{{#isByteArray}}if(m_{{name}}_isSet){{/isByteArray}}{{#isDate}}if(m_{{name}}_isSet){{/isDate}}{{/isContainer}}{ isObjectUpdated = true; break;} + {{/vars}}}while(false); + return isObjectUpdated; +} + +{{#cppNamespaceDeclarations}} +} +{{/cppNamespaceDeclarations}} + +{{/model}} +{{/models}} diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-server/model-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-server/model-header.mustache new file mode 100644 index 0000000000..8050d281ec --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-server/model-header.mustache @@ -0,0 +1,58 @@ +{{>licenseInfo}} +{{#models}}{{#model}}/* + * {{classname}}.h + * + * {{description}} + */ + +#ifndef {{classname}}_H_ +#define {{classname}}_H_ + +#include + +{{/model}}{{/models}} +{{#imports}}{{{import}}} +{{/imports}} + +#include "{{prefix}}Object.h" + +{{#models}} +{{#model}} +{{#cppNamespaceDeclarations}} +namespace {{this}} { +{{/cppNamespaceDeclarations}} + +class {{classname}}: public {{prefix}}Object { +public: + {{classname}}(); + {{classname}}(QString json); + ~{{classname}}() override; + void init(); + + QString asJson () const override; + QJsonObject asJsonObject() const override; + void fromJsonObject(QJsonObject json) override; + void fromJson(QString jsonString) override; + + {{#vars}} + {{{dataType}}} {{getter}}(); + void {{setter}}(const {{{dataType}}} &{{name}}); + + {{/vars}} + virtual bool isSet() const override; + +private: + {{#vars}} + {{{dataType}}} {{name}}; + bool m_{{name}}_isSet; + + {{/vars}} +}; + +{{#cppNamespaceDeclarations}} +} +{{/cppNamespaceDeclarations}} + +#endif /* {{classname}}_H_ */ +{{/model}} +{{/models}} diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-server/object.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-server/object.mustache new file mode 100644 index 0000000000..a3ed43c95f --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-server/object.mustache @@ -0,0 +1,47 @@ +{{>licenseInfo}} +#ifndef _{{prefix}}_OBJECT_H_ +#define _{{prefix}}_OBJECT_H_ + +#include +#include + +{{#cppNamespaceDeclarations}} +namespace {{this}} { +{{/cppNamespaceDeclarations}} + +class {{prefix}}Object { + public: + virtual ~{{prefix}}Object(){ + + } + + virtual QJsonObject asJsonObject() const { + return jObj; + } + + virtual QString asJson() const { + QJsonDocument doc(jObj); + return doc.toJson(QJsonDocument::Compact); + } + + virtual void fromJson(QString jsonString) { + QJsonDocument doc = QJsonDocument::fromJson(jsonString.toUtf8()); + jObj = doc.object(); + } + + virtual void fromJsonObject(QJsonObject json) { + jObj = json; + } + + virtual bool isSet() const { + return false; + } +private : + QJsonObject jObj; +}; + +{{#cppNamespaceDeclarations}} +} +{{/cppNamespaceDeclarations}} + +#endif /* _{{prefix}}_OBJECT_H_ */ diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-server/src-CMakeLists.txt.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-server/src-CMakeLists.txt.mustache new file mode 100644 index 0000000000..9faf5db60e --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-server/src-CMakeLists.txt.mustache @@ -0,0 +1,48 @@ +cmake_minimum_required(VERSION 3.2 FATAL_ERROR) + +set(CMAKE_VERBOSE_MAKEFILE ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) +set(CMAKE_AUTOMOC ON) + +OPTION(NODEBUG "Deactivate No debugging option" "OFF") + +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wall -Wno-unused-variable") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -std=c++14 -Wall -Wno-unused-variable") + +if(${NODEBUG} STREQUAL "OFF") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pg -g3") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg -g3") +else (${NODEBUG} STREQUAL "OFF") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s -O3") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s -O3") +endif(${NODEBUG} STREQUAL "OFF") + +find_package(Qt5Core REQUIRED) +find_package(Qt5Network REQUIRED) + +file(GLOB SRCS + ${CMAKE_CURRENT_SOURCE_DIR}/models/*.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/handlers/*.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/requests/*.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp +) + +include_directories( + ${Qt5Core_INCLUDE_DIRS} + ${Qt5Network_INCLUDE_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/models + ${CMAKE_CURRENT_SOURCE_DIR}/handlers + ${CMAKE_CURRENT_SOURCE_DIR}/requests +) + +link_directories( + ${CMAKE_PREFIX_PATH}/lib +) + +add_executable(${PROJECT_NAME} ${SRCS}) +add_dependencies(${PROJECT_NAME} QHTTPENGINE) +target_link_libraries(${PROJECT_NAME} Qt5Core Qt5Network ssl crypto qhttpengine) +set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) +set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) + +install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) diff --git a/samples/server/petstore/cpp-qt5-server/server/CMakeLists.txt b/samples/server/petstore/cpp-qt5-server/server/CMakeLists.txt new file mode 100644 index 0000000000..1df138241d --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.2 FATAL_ERROR) +project(cpp-qt5-server) + +include(ExternalProject) + +set(EXTERNAL_INSTALL_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/external) + +ExternalProject_Add(QHTTPENGINE + GIT_REPOSITORY https://github.com/etherealjoy/qhttpengine.git + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_LOCATION} +) + +include_directories(${EXTERNAL_INSTALL_LOCATION}/include) +link_directories(${EXTERNAL_INSTALL_LOCATION}/lib) + +add_subdirectory(src) diff --git a/samples/server/petstore/cpp-qt5-server/server/Dockerfile b/samples/server/petstore/cpp-qt5-server/server/Dockerfile new file mode 100644 index 0000000000..b339548297 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/Dockerfile @@ -0,0 +1,29 @@ +FROM alpine:latest AS build + +RUN apk add --update \ + cmake \ + alpine-sdk \ + openssl \ + qt5-qtbase-dev \ + qt5-qttools-dev + +WORKDIR /usr/server +ADD ./src ./src +ADD ./CMakeLists.txt ./ +RUN mkdir -p ./build +WORKDIR /usr/server/build +RUN cmake -DNODEBUG:STRING="ON" .. +RUN make + +FROM alpine:latest AS runtime +RUN apk add --update \ + libgcc \ + libstdc++ \ + qt5-qtbase \ + openssl + +WORKDIR /usr/server +COPY --from=build /usr/server/build/src/cpp-qt5-server ./build/src/ +COPY --from=build /usr/server/external/ ./external +EXPOSE 8080/tcp +ENTRYPOINT ["/usr/server/build/src/cpp-qt5-server"] \ No newline at end of file diff --git a/samples/server/petstore/cpp-qt5-server/server/LICENSE.txt b/samples/server/petstore/cpp-qt5-server/server/LICENSE.txt new file mode 100644 index 0000000000..04938f840c --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/LICENSE.txt @@ -0,0 +1,11 @@ +QHttpEngine + +The MIT License (MIT) + +Copyright (c) 2015 Nathan Osman + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/samples/server/petstore/cpp-qt5-server/server/Makefile b/samples/server/petstore/cpp-qt5-server/server/Makefile new file mode 100644 index 0000000000..6df9ff3275 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/Makefile @@ -0,0 +1,29 @@ +BUILD_DIR=build +DIST_DIR=. +ECHO=echo +CMAKE=cmake +RM=rm +MKDIR_P = mkdir -p +CD=cd + +default: all + +checkdir: +ifeq "$(wildcard $(BUILD_DIR) )" "" + @$(ECHO) "Build Directory not existing, creating..." + @${MKDIR_P} ${BUILD_DIR} +endif + +cmakestep: checkdir + $(CD) $(BUILD_DIR) && $(CMAKE) ../${DIST_DIR} + +all: cmakestep + $(MAKE) -j8 -C $(BUILD_DIR) all + +install: all + $(MAKE) -C $(BUILD_DIR) install + +clean: + $(RM) -rf $(BUILD_DIR)/* + +.PHONY: clean install diff --git a/samples/server/petstore/cpp-qt5-server/server/README.MD b/samples/server/petstore/cpp-qt5-server/server/README.MD new file mode 100644 index 0000000000..d354460c63 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/README.MD @@ -0,0 +1,89 @@ +## Qt5 HTTP Server based on the Qhttpengine +This server was generated by the [openapi-generator] +(https://openapi-generator.tech) project. +By using the [OpenAPI-Spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate a server stub. +- + +To see how to make this your own, look here: + +[README]((https://openapi-generator.tech)) + +- API version: 1.0.0 + +## QHTTPEngine + +[![Build Status](https://travis-ci.org/nitroshare/qhttpengine.svg?branch=master)](https://travis-ci.org/nitroshare/qhttpengine) +[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](http://opensource.org/licenses/MIT) + +Simple set of classes for developing HTTP server applications in Qt. + +### Documentation + +To learn more about building and using the library, please visit this page: + +https://ci.quickmediasolutions.com/job/qhttpengine-documentation/doxygen/ + + +### Viewing the code +You can view the code using an editor like Microsoft Visual Studio Code or you can +Use QtCreator and browse for the root CMakeLists.txt and load it as a project + +### Build with make +Install the tools [Linux/Debian] +``` +sudo apt install cmake build-essential libssl-dev qtbase5-dev qtbase5-dev-tools git curl +``` + +To build, go to the `server` folder +``` +make +``` + +To run the server +``` +./build/src/cpp-qt5-server & +``` +#### Invoke an API +``` +curl -X GET http://localhost:8080/v2/store/inventory +curl -X POST http://localhost:8080/v2/store/order -H "Content-Type: application/json" -d "{ \"id\": 22, \"petId\": 1541, \"quantity\": 5, \"shipDate\": \"2018-06-16T18:31:43.870Z\", \"status\": \"placed\", \"complete\": \"true\" }" +curl -X GET http://localhost:8080/v2/pet/findByStatus +curl -X GET http://localhost:8080/v2/store/inventory +``` + +### Run and build with docker +Building with docker multistage +If you dont have docker install [here](https://docs.docker.com/install) +Add yourself to the docker group + +``` +docker build --network=host -t cpp-qt5-server . +``` +Running with docker +``` +docker run --rm -it --name=server-container cpp-qt5-server +``` + +#### Invoking an API +Mind the IP here +``` +curl -X GET http://172.17.0.2:8080/v2/store/inventory +curl -X POST http://172.17.0.2:8080/v2/store/order -H "Content-Type: application/json" -d "{ \"id\": 22, \"petId\": 1541, \"quantity\": 5, \"shipDate\": \"2018-06-16T18:31:43.870Z\", \"status\": \"placed\", \"complete\": \"true\" }" +``` + +use this command to get the container IP +``` +docker inspect server-container | grep "IPAddress" +``` +To exit from the command line +``` +Ctrl + p + q +``` +To stop container +``` +docker stop +``` +or to terminate and quit +``` +Ctrl+C +``` diff --git a/samples/server/petstore/cpp-qt5-server/server/src/CMakeLists.txt b/samples/server/petstore/cpp-qt5-server/server/src/CMakeLists.txt new file mode 100644 index 0000000000..9faf5db60e --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/CMakeLists.txt @@ -0,0 +1,48 @@ +cmake_minimum_required(VERSION 3.2 FATAL_ERROR) + +set(CMAKE_VERBOSE_MAKEFILE ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) +set(CMAKE_AUTOMOC ON) + +OPTION(NODEBUG "Deactivate No debugging option" "OFF") + +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wall -Wno-unused-variable") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -std=c++14 -Wall -Wno-unused-variable") + +if(${NODEBUG} STREQUAL "OFF") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pg -g3") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg -g3") +else (${NODEBUG} STREQUAL "OFF") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s -O3") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s -O3") +endif(${NODEBUG} STREQUAL "OFF") + +find_package(Qt5Core REQUIRED) +find_package(Qt5Network REQUIRED) + +file(GLOB SRCS + ${CMAKE_CURRENT_SOURCE_DIR}/models/*.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/handlers/*.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/requests/*.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp +) + +include_directories( + ${Qt5Core_INCLUDE_DIRS} + ${Qt5Network_INCLUDE_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/models + ${CMAKE_CURRENT_SOURCE_DIR}/handlers + ${CMAKE_CURRENT_SOURCE_DIR}/requests +) + +link_directories( + ${CMAKE_PREFIX_PATH}/lib +) + +add_executable(${PROJECT_NAME} ${SRCS}) +add_dependencies(${PROJECT_NAME} QHTTPENGINE) +target_link_libraries(${PROJECT_NAME} Qt5Core Qt5Network ssl crypto qhttpengine) +set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) +set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) + +install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) diff --git a/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIPetApiHandler.cpp b/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIPetApiHandler.cpp new file mode 100644 index 0000000000..f19019fc68 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIPetApiHandler.cpp @@ -0,0 +1,111 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +#include +#include +#include +#include +#include + +#include "OAIPetApiHandler.h" +#include "OAIPetApiRequest.h" + +namespace OpenAPI { + +OAIPetApiHandler::OAIPetApiHandler(){ + +} + +OAIPetApiHandler::~OAIPetApiHandler(){ + +} + +void OAIPetApiHandler::addPet(OAIPet oai_pet) { + Q_UNUSED(oai_pet); + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + + reqObj->addPetResponse(); + } +} +void OAIPetApiHandler::deletePet(qint64 pet_id, QString api_key) { + Q_UNUSED(pet_id); + Q_UNUSED(api_key); + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + + reqObj->deletePetResponse(); + } +} +void OAIPetApiHandler::findPetsByStatus(QList status) { + Q_UNUSED(status); + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + QList res; + reqObj->findPetsByStatusResponse(res); + } +} +void OAIPetApiHandler::findPetsByTags(QList tags) { + Q_UNUSED(tags); + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + QList res; + reqObj->findPetsByTagsResponse(res); + } +} +void OAIPetApiHandler::getPetById(qint64 pet_id) { + Q_UNUSED(pet_id); + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + OAIPet res; + reqObj->getPetByIdResponse(res); + } +} +void OAIPetApiHandler::updatePet(OAIPet oai_pet) { + Q_UNUSED(oai_pet); + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + + reqObj->updatePetResponse(); + } +} +void OAIPetApiHandler::updatePetWithForm(qint64 pet_id, QString name, QString status) { + Q_UNUSED(pet_id); + Q_UNUSED(name); + Q_UNUSED(status); + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + + reqObj->updatePetWithFormResponse(); + } +} +void OAIPetApiHandler::uploadFile(qint64 pet_id, QString additional_metadata, QIODevice* file) { + Q_UNUSED(pet_id); + Q_UNUSED(additional_metadata); + Q_UNUSED(file); + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + OAIApiResponse res; + reqObj->uploadFileResponse(res); + } +} + + +} diff --git a/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIPetApiHandler.h b/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIPetApiHandler.h new file mode 100644 index 0000000000..95d08bb89b --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIPetApiHandler.h @@ -0,0 +1,49 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +#ifndef _OAI_OAIPetApiHandler_H_ +#define _OAI_OAIPetApiHandler_H_ + +#include + +#include "OAIApiResponse.h" +#include "OAIPet.h" +#include +#include + +namespace OpenAPI { + +class OAIPetApiHandler : public QObject +{ + Q_OBJECT + +public: + OAIPetApiHandler(); + virtual ~OAIPetApiHandler(); + + +public slots: + virtual void addPet(OAIPet oai_pet); + virtual void deletePet(qint64 pet_id, QString api_key); + virtual void findPetsByStatus(QList status); + virtual void findPetsByTags(QList tags); + virtual void getPetById(qint64 pet_id); + virtual void updatePet(OAIPet oai_pet); + virtual void updatePetWithForm(qint64 pet_id, QString name, QString status); + virtual void uploadFile(qint64 pet_id, QString additional_metadata, QIODevice* file); + + +}; + +} + +#endif // _OAI_OAIPetApiHandler_H_ diff --git a/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIStoreApiHandler.cpp b/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIStoreApiHandler.cpp new file mode 100644 index 0000000000..f3acb44a0b --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIStoreApiHandler.cpp @@ -0,0 +1,69 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +#include +#include +#include +#include +#include + +#include "OAIStoreApiHandler.h" +#include "OAIStoreApiRequest.h" + +namespace OpenAPI { + +OAIStoreApiHandler::OAIStoreApiHandler(){ + +} + +OAIStoreApiHandler::~OAIStoreApiHandler(){ + +} + +void OAIStoreApiHandler::deleteOrder(QString order_id) { + Q_UNUSED(order_id); + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + + reqObj->deleteOrderResponse(); + } +} +void OAIStoreApiHandler::getInventory() { + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + QMap res; + reqObj->getInventoryResponse(res); + } +} +void OAIStoreApiHandler::getOrderById(qint64 order_id) { + Q_UNUSED(order_id); + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + OAIOrder res; + reqObj->getOrderByIdResponse(res); + } +} +void OAIStoreApiHandler::placeOrder(OAIOrder oai_order) { + Q_UNUSED(oai_order); + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + OAIOrder res; + reqObj->placeOrderResponse(res); + } +} + + +} diff --git a/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIStoreApiHandler.h b/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIStoreApiHandler.h new file mode 100644 index 0000000000..c0b1d3814d --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIStoreApiHandler.h @@ -0,0 +1,44 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +#ifndef _OAI_OAIStoreApiHandler_H_ +#define _OAI_OAIStoreApiHandler_H_ + +#include + +#include "OAIOrder.h" +#include +#include + +namespace OpenAPI { + +class OAIStoreApiHandler : public QObject +{ + Q_OBJECT + +public: + OAIStoreApiHandler(); + virtual ~OAIStoreApiHandler(); + + +public slots: + virtual void deleteOrder(QString order_id); + virtual void getInventory(); + virtual void getOrderById(qint64 order_id); + virtual void placeOrder(OAIOrder oai_order); + + +}; + +} + +#endif // _OAI_OAIStoreApiHandler_H_ diff --git a/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIUserApiHandler.cpp b/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIUserApiHandler.cpp new file mode 100644 index 0000000000..dca89c729b --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIUserApiHandler.cpp @@ -0,0 +1,107 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +#include +#include +#include +#include +#include + +#include "OAIUserApiHandler.h" +#include "OAIUserApiRequest.h" + +namespace OpenAPI { + +OAIUserApiHandler::OAIUserApiHandler(){ + +} + +OAIUserApiHandler::~OAIUserApiHandler(){ + +} + +void OAIUserApiHandler::createUser(OAIUser oai_user) { + Q_UNUSED(oai_user); + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + + reqObj->createUserResponse(); + } +} +void OAIUserApiHandler::createUsersWithArrayInput(QList oai_user) { + Q_UNUSED(oai_user); + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + + reqObj->createUsersWithArrayInputResponse(); + } +} +void OAIUserApiHandler::createUsersWithListInput(QList oai_user) { + Q_UNUSED(oai_user); + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + + reqObj->createUsersWithListInputResponse(); + } +} +void OAIUserApiHandler::deleteUser(QString username) { + Q_UNUSED(username); + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + + reqObj->deleteUserResponse(); + } +} +void OAIUserApiHandler::getUserByName(QString username) { + Q_UNUSED(username); + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + OAIUser res; + reqObj->getUserByNameResponse(res); + } +} +void OAIUserApiHandler::loginUser(QString username, QString password) { + Q_UNUSED(username); + Q_UNUSED(password); + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + QString res; + reqObj->loginUserResponse(res); + } +} +void OAIUserApiHandler::logoutUser() { + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + + reqObj->logoutUserResponse(); + } +} +void OAIUserApiHandler::updateUser(QString username, OAIUser oai_user) { + Q_UNUSED(username); + Q_UNUSED(oai_user); + auto reqObj = qobject_cast(sender()); + if( reqObj != nullptr ) + { + + reqObj->updateUserResponse(); + } +} + + +} diff --git a/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIUserApiHandler.h b/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIUserApiHandler.h new file mode 100644 index 0000000000..2f43980d87 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIUserApiHandler.h @@ -0,0 +1,48 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +#ifndef _OAI_OAIUserApiHandler_H_ +#define _OAI_OAIUserApiHandler_H_ + +#include + +#include "OAIUser.h" +#include +#include + +namespace OpenAPI { + +class OAIUserApiHandler : public QObject +{ + Q_OBJECT + +public: + OAIUserApiHandler(); + virtual ~OAIUserApiHandler(); + + +public slots: + virtual void createUser(OAIUser oai_user); + virtual void createUsersWithArrayInput(QList oai_user); + virtual void createUsersWithListInput(QList oai_user); + virtual void deleteUser(QString username); + virtual void getUserByName(QString username); + virtual void loginUser(QString username, QString password); + virtual void logoutUser(); + virtual void updateUser(QString username, OAIUser oai_user); + + +}; + +} + +#endif // _OAI_OAIUserApiHandler_H_ diff --git a/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIapirouter.cpp b/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIapirouter.cpp new file mode 100644 index 0000000000..2625861ec4 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIapirouter.cpp @@ -0,0 +1,295 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +#include +#include +#include +#include +#include + +#include "OAIApiRouter.h" +#include "OAIPetApiRequest.h" +#include "OAIStoreApiRequest.h" +#include "OAIUserApiRequest.h" + + +namespace OpenAPI { + +inline QHttpEngine::Socket::Method toQHttpEngineMethod(QString method){ + + if( method == QString("OPTIONS")) + return QHttpEngine::Socket::Method::OPTIONS; + if( method == QString("GET")) + return QHttpEngine::Socket::Method::GET; + if( method == QString("HEAD")) + return QHttpEngine::Socket::Method::HEAD; + if( method == QString("POST")) + return QHttpEngine::Socket::Method::POST; + if( method == QString("PUT")) + return QHttpEngine::Socket::Method::PUT; + if( method == QString("DELETE")) + return QHttpEngine::Socket::Method::DELETE; + if( method == QString("TRACE")) + return QHttpEngine::Socket::Method::TRACE; + if( method == QString("CONNECT")) + return QHttpEngine::Socket::Method::CONNECT; + + return static_cast(-1); +} + +ApiRouter::ApiRouter() { + OAIPetApiApiHandler = new OAIPetApiHandler(); + OAIStoreApiApiHandler = new OAIStoreApiHandler(); + OAIUserApiApiHandler = new OAIUserApiHandler(); + +} + +ApiRouter::~ApiRouter(){ + qDebug() << "~ApiRouter()"; + delete OAIPetApiApiHandler; + delete OAIStoreApiApiHandler; + delete OAIUserApiApiHandler; + +} + +void ApiRouter::setUpRoutes() { + + Routes.insert("/v2/pet",[this](QHttpEngine::Socket *socket) { + if(toQHttpEngineMethod("POST") == socket->method()){ + auto reqObj = new OAIPetApiRequest(socket, OAIPetApiApiHandler); + reqObj->addPetRequest(); + } + }); + Routes.insert("/v2/pet/findByStatus",[this](QHttpEngine::Socket *socket) { + if(toQHttpEngineMethod("GET") == socket->method()){ + auto reqObj = new OAIPetApiRequest(socket, OAIPetApiApiHandler); + reqObj->findPetsByStatusRequest(); + } + }); + Routes.insert("/v2/pet/findByTags",[this](QHttpEngine::Socket *socket) { + if(toQHttpEngineMethod("GET") == socket->method()){ + auto reqObj = new OAIPetApiRequest(socket, OAIPetApiApiHandler); + reqObj->findPetsByTagsRequest(); + } + }); + Routes.insert("/v2/pet",[this](QHttpEngine::Socket *socket) { + if(toQHttpEngineMethod("PUT") == socket->method()){ + auto reqObj = new OAIPetApiRequest(socket, OAIPetApiApiHandler); + reqObj->updatePetRequest(); + } + }); + Routes.insert("/v2/store/inventory",[this](QHttpEngine::Socket *socket) { + if(toQHttpEngineMethod("GET") == socket->method()){ + auto reqObj = new OAIStoreApiRequest(socket, OAIStoreApiApiHandler); + reqObj->getInventoryRequest(); + } + }); + Routes.insert("/v2/store/order",[this](QHttpEngine::Socket *socket) { + if(toQHttpEngineMethod("POST") == socket->method()){ + auto reqObj = new OAIStoreApiRequest(socket, OAIStoreApiApiHandler); + reqObj->placeOrderRequest(); + } + }); + Routes.insert("/v2/user",[this](QHttpEngine::Socket *socket) { + if(toQHttpEngineMethod("POST") == socket->method()){ + auto reqObj = new OAIUserApiRequest(socket, OAIUserApiApiHandler); + reqObj->createUserRequest(); + } + }); + Routes.insert("/v2/user/createWithArray",[this](QHttpEngine::Socket *socket) { + if(toQHttpEngineMethod("POST") == socket->method()){ + auto reqObj = new OAIUserApiRequest(socket, OAIUserApiApiHandler); + reqObj->createUsersWithArrayInputRequest(); + } + }); + Routes.insert("/v2/user/createWithList",[this](QHttpEngine::Socket *socket) { + if(toQHttpEngineMethod("POST") == socket->method()){ + auto reqObj = new OAIUserApiRequest(socket, OAIUserApiApiHandler); + reqObj->createUsersWithListInputRequest(); + } + }); + Routes.insert("/v2/user/login",[this](QHttpEngine::Socket *socket) { + if(toQHttpEngineMethod("GET") == socket->method()){ + auto reqObj = new OAIUserApiRequest(socket, OAIUserApiApiHandler); + reqObj->loginUserRequest(); + } + }); + Routes.insert("/v2/user/logout",[this](QHttpEngine::Socket *socket) { + if(toQHttpEngineMethod("GET") == socket->method()){ + auto reqObj = new OAIUserApiRequest(socket, OAIUserApiApiHandler); + reqObj->logoutUserRequest(); + } + }); +} + +void ApiRouter::processRequest(QHttpEngine::Socket *socket){ + if (Routes.contains(socket->path())) { + auto itr = Routes.find(socket->path()); + while (itr != Routes.end() && itr.key() == socket->path()) { + itr.value().operator()(socket); + ++itr; + } + } else + { + { + QString completePath("/v2/pet/{petId}"); + QString pet_idPathParam("{"); + pet_idPathParam.append("petId").append("}"); + completePath.replace("/", "\\/"); // replace '/' with '\/' for regex + completePath.replace(pet_idPathParam, "([^\\/]*?)"); // match anything but '/'' + completePath.append("$"); // End of string + QRegularExpression re(completePath, QRegularExpression::CaseInsensitiveOption); + QRegularExpressionMatch match = re.match(socket->path()); + if ((toQHttpEngineMethod("DELETE") == socket->method()) && match.hasMatch() ) { + QString pathparam = match.captured(1); + auto reqObj = new OAIPetApiRequest(socket, OAIPetApiApiHandler); + reqObj->deletePetRequest(pathparam);; + return; + } + } + { + QString completePath("/v2/pet/{petId}"); + QString pet_idPathParam("{"); + pet_idPathParam.append("petId").append("}"); + completePath.replace("/", "\\/"); // replace '/' with '\/' for regex + completePath.replace(pet_idPathParam, "([^\\/]*?)"); // match anything but '/'' + completePath.append("$"); // End of string + QRegularExpression re(completePath, QRegularExpression::CaseInsensitiveOption); + QRegularExpressionMatch match = re.match(socket->path()); + if ((toQHttpEngineMethod("GET") == socket->method()) && match.hasMatch() ) { + QString pathparam = match.captured(1); + auto reqObj = new OAIPetApiRequest(socket, OAIPetApiApiHandler); + reqObj->getPetByIdRequest(pathparam);; + return; + } + } + { + QString completePath("/v2/pet/{petId}"); + QString pet_idPathParam("{"); + pet_idPathParam.append("petId").append("}"); + completePath.replace("/", "\\/"); // replace '/' with '\/' for regex + completePath.replace(pet_idPathParam, "([^\\/]*?)"); // match anything but '/'' + completePath.append("$"); // End of string + QRegularExpression re(completePath, QRegularExpression::CaseInsensitiveOption); + QRegularExpressionMatch match = re.match(socket->path()); + if ((toQHttpEngineMethod("POST") == socket->method()) && match.hasMatch() ) { + QString pathparam = match.captured(1); + auto reqObj = new OAIPetApiRequest(socket, OAIPetApiApiHandler); + reqObj->updatePetWithFormRequest(pathparam);; + return; + } + } + { + QString completePath("/v2/pet/{petId}/uploadImage"); + QString pet_idPathParam("{"); + pet_idPathParam.append("petId").append("}"); + completePath.replace("/", "\\/"); // replace '/' with '\/' for regex + completePath.replace(pet_idPathParam, "([^\\/]*?)"); // match anything but '/'' + completePath.append("$"); // End of string + QRegularExpression re(completePath, QRegularExpression::CaseInsensitiveOption); + QRegularExpressionMatch match = re.match(socket->path()); + if ((toQHttpEngineMethod("POST") == socket->method()) && match.hasMatch() ) { + QString pathparam = match.captured(1); + auto reqObj = new OAIPetApiRequest(socket, OAIPetApiApiHandler); + reqObj->uploadFileRequest(pathparam);; + return; + } + } + { + QString completePath("/v2/store/order/{orderId}"); + QString order_idPathParam("{"); + order_idPathParam.append("orderId").append("}"); + completePath.replace("/", "\\/"); // replace '/' with '\/' for regex + completePath.replace(order_idPathParam, "([^\\/]*?)"); // match anything but '/'' + completePath.append("$"); // End of string + QRegularExpression re(completePath, QRegularExpression::CaseInsensitiveOption); + QRegularExpressionMatch match = re.match(socket->path()); + if ((toQHttpEngineMethod("DELETE") == socket->method()) && match.hasMatch() ) { + QString pathparam = match.captured(1); + auto reqObj = new OAIStoreApiRequest(socket, OAIStoreApiApiHandler); + reqObj->deleteOrderRequest(pathparam);; + return; + } + } + { + QString completePath("/v2/store/order/{orderId}"); + QString order_idPathParam("{"); + order_idPathParam.append("orderId").append("}"); + completePath.replace("/", "\\/"); // replace '/' with '\/' for regex + completePath.replace(order_idPathParam, "([^\\/]*?)"); // match anything but '/'' + completePath.append("$"); // End of string + QRegularExpression re(completePath, QRegularExpression::CaseInsensitiveOption); + QRegularExpressionMatch match = re.match(socket->path()); + if ((toQHttpEngineMethod("GET") == socket->method()) && match.hasMatch() ) { + QString pathparam = match.captured(1); + auto reqObj = new OAIStoreApiRequest(socket, OAIStoreApiApiHandler); + reqObj->getOrderByIdRequest(pathparam);; + return; + } + } + { + QString completePath("/v2/user/{username}"); + QString usernamePathParam("{"); + usernamePathParam.append("username").append("}"); + completePath.replace("/", "\\/"); // replace '/' with '\/' for regex + completePath.replace(usernamePathParam, "([^\\/]*?)"); // match anything but '/'' + completePath.append("$"); // End of string + QRegularExpression re(completePath, QRegularExpression::CaseInsensitiveOption); + QRegularExpressionMatch match = re.match(socket->path()); + if ((toQHttpEngineMethod("DELETE") == socket->method()) && match.hasMatch() ) { + QString pathparam = match.captured(1); + auto reqObj = new OAIUserApiRequest(socket, OAIUserApiApiHandler); + reqObj->deleteUserRequest(pathparam);; + return; + } + } + { + QString completePath("/v2/user/{username}"); + QString usernamePathParam("{"); + usernamePathParam.append("username").append("}"); + completePath.replace("/", "\\/"); // replace '/' with '\/' for regex + completePath.replace(usernamePathParam, "([^\\/]*?)"); // match anything but '/'' + completePath.append("$"); // End of string + QRegularExpression re(completePath, QRegularExpression::CaseInsensitiveOption); + QRegularExpressionMatch match = re.match(socket->path()); + if ((toQHttpEngineMethod("GET") == socket->method()) && match.hasMatch() ) { + QString pathparam = match.captured(1); + auto reqObj = new OAIUserApiRequest(socket, OAIUserApiApiHandler); + reqObj->getUserByNameRequest(pathparam);; + return; + } + } + { + QString completePath("/v2/user/{username}"); + QString usernamePathParam("{"); + usernamePathParam.append("username").append("}"); + completePath.replace("/", "\\/"); // replace '/' with '\/' for regex + completePath.replace(usernamePathParam, "([^\\/]*?)"); // match anything but '/'' + completePath.append("$"); // End of string + QRegularExpression re(completePath, QRegularExpression::CaseInsensitiveOption); + QRegularExpressionMatch match = re.match(socket->path()); + if ((toQHttpEngineMethod("PUT") == socket->method()) && match.hasMatch() ) { + QString pathparam = match.captured(1); + auto reqObj = new OAIUserApiRequest(socket, OAIUserApiApiHandler); + reqObj->updateUserRequest(pathparam);; + return; + } + } + } + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } + return; +} +} diff --git a/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIapirouter.h b/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIapirouter.h new file mode 100644 index 0000000000..5f3532b276 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/handlers/OAIapirouter.h @@ -0,0 +1,66 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +#ifndef OAI_APIROUTER_H +#define OAI_APIROUTER_H + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "OAIPetApiHandler.h" +#include "OAIStoreApiHandler.h" +#include "OAIUserApiHandler.h" + + +namespace OpenAPI { + +class RequestHandler : public QHttpEngine::QObjectHandler +{ + Q_OBJECT +signals: + void requestReceived(QHttpEngine::Socket *socket); + +protected: + virtual void process(QHttpEngine::Socket *socket, const QString &path){ + Q_UNUSED(path); + emit requestReceived(socket); + } +}; + +class ApiRouter : public QObject +{ + Q_OBJECT +public: + ApiRouter(); + virtual ~ApiRouter(); + + void setUpRoutes(); + void processRequest(QHttpEngine::Socket *socket); +private: + QMultiMap> Routes; + + OAIPetApiHandler *OAIPetApiApiHandler; + OAIStoreApiHandler *OAIStoreApiApiHandler; + OAIUserApiHandler *OAIUserApiApiHandler; +}; + + +} + +#endif // OAI_APIROUTER_H \ No newline at end of file diff --git a/samples/server/petstore/cpp-qt5-server/server/src/main.cpp b/samples/server/petstore/cpp-qt5-server/server/src/main.cpp new file mode 100644 index 0000000000..daa01fcf21 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/main.cpp @@ -0,0 +1,99 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef __linux__ +#include +#include +#endif +#include +#include "OAIApiRouter.h" + +#ifdef __linux__ +void catchUnixSignals(QList quitSignals) { + auto handler = [](int sig) -> void { + // blocking and not aysnc-signal-safe func are valid + qDebug() << "\nquit the application by signal " << sig; + QCoreApplication::quit(); + }; + + sigset_t blocking_mask; + sigemptyset(&blocking_mask); + for (auto sig : quitSignals) + sigaddset(&blocking_mask, sig); + + struct sigaction sa; + sa.sa_handler = handler; + sa.sa_mask = blocking_mask; + sa.sa_flags = 0; + + for (auto sig : quitSignals) + sigaction(sig, &sa, nullptr); +} +#endif + +int main(int argc, char * argv[]) +{ + QCoreApplication a(argc, argv); +#ifdef __linux__ + QList sigs({SIGQUIT, SIGINT, SIGTERM, SIGHUP}); + catchUnixSignals(sigs); +#endif + // Build the command-line options + QCommandLineParser parser; + QCommandLineOption addressOption( + QStringList() << "a" << "address", + "address to bind to", + "address", + "0.0.0.0" + ); + parser.addOption(addressOption); + QCommandLineOption portOption( + QStringList() << "p" << "port", + "port to listen on", + "port", + "8080" + ); + parser.addOption(portOption); + parser.addHelpOption(); + + // Parse the options that were provided + parser.process(a); + + // Obtain the values + QHostAddress address = QHostAddress(parser.value(addressOption)); + quint16 port = static_cast(parser.value(portOption).toInt()); + + QSharedPointer handler(new OpenAPI::RequestHandler()); + OpenAPI::ApiRouter router; + QObject::connect(handler.data(), &OpenAPI::RequestHandler::requestReceived, [&](QHttpEngine::Socket *socket) { + router.processRequest(socket); + }); + + QHttpEngine::Server server(handler.data()); + qDebug() << "Serving on " << address.toString() << ":" << port; + // Attempt to listen on the specified port + if (!server.listen(address, port)) { + qCritical("Unable to listen on the specified port."); + return 1; + } + + return a.exec(); +} diff --git a/samples/server/petstore/cpp-qt5-server/server/src/models/OAIApiResponse.cpp b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIApiResponse.cpp new file mode 100644 index 0000000000..8a65e8f339 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIApiResponse.cpp @@ -0,0 +1,130 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +#include "OAIApiResponse.h" + +#include "OAIHelpers.h" + +#include +#include +#include +#include + +namespace OpenAPI { + +OAIApiResponse::OAIApiResponse(QString json) { + this->fromJson(json); +} + +OAIApiResponse::OAIApiResponse() { + this->init(); +} + +OAIApiResponse::~OAIApiResponse() { + +} + +void +OAIApiResponse::init() { + m_code_isSet = false; + m_type_isSet = false; + m_message_isSet = false; +} + +void +OAIApiResponse::fromJson(QString jsonString) { + QByteArray array (jsonString.toStdString().c_str()); + QJsonDocument doc = QJsonDocument::fromJson(array); + QJsonObject jsonObject = doc.object(); + this->fromJsonObject(jsonObject); +} + +void +OAIApiResponse::fromJsonObject(QJsonObject json) { + ::OpenAPI::fromJsonValue(code, json[QString("code")]); + + ::OpenAPI::fromJsonValue(type, json[QString("type")]); + + ::OpenAPI::fromJsonValue(message, json[QString("message")]); + +} + +QString +OAIApiResponse::asJson () const { + QJsonObject obj = this->asJsonObject(); + QJsonDocument doc(obj); + QByteArray bytes = doc.toJson(); + return QString(bytes); +} + +QJsonObject +OAIApiResponse::asJsonObject() const { + QJsonObject obj; + if(m_code_isSet){ + obj.insert(QString("code"), ::OpenAPI::toJsonValue(code)); + } + if(m_type_isSet){ + obj.insert(QString("type"), ::OpenAPI::toJsonValue(type)); + } + if(m_message_isSet){ + obj.insert(QString("message"), ::OpenAPI::toJsonValue(message)); + } + return obj; +} + +qint32 +OAIApiResponse::getCode() { + return code; +} +void +OAIApiResponse::setCode(const qint32 &code) { + this->code = code; + this->m_code_isSet = true; +} + +QString +OAIApiResponse::getType() { + return type; +} +void +OAIApiResponse::setType(const QString &type) { + this->type = type; + this->m_type_isSet = true; +} + +QString +OAIApiResponse::getMessage() { + return message; +} +void +OAIApiResponse::setMessage(const QString &message) { + this->message = message; + this->m_message_isSet = true; +} + + +bool +OAIApiResponse::isSet() const { + bool isObjectUpdated = false; + do{ + if(m_code_isSet){ isObjectUpdated = true; break;} + + if(m_type_isSet){ isObjectUpdated = true; break;} + + if(m_message_isSet){ isObjectUpdated = true; break;} + }while(false); + return isObjectUpdated; +} + +} + diff --git a/samples/server/petstore/cpp-qt5-server/server/src/models/OAIApiResponse.h b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIApiResponse.h new file mode 100644 index 0000000000..1fc574e0b3 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIApiResponse.h @@ -0,0 +1,68 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/* + * OAIApiResponse.h + * + * Describes the result of uploading an image resource + */ + +#ifndef OAIApiResponse_H_ +#define OAIApiResponse_H_ + +#include + + +#include + +#include "OAIObject.h" + +namespace OpenAPI { + +class OAIApiResponse: public OAIObject { +public: + OAIApiResponse(); + OAIApiResponse(QString json); + ~OAIApiResponse() override; + void init(); + + QString asJson () const override; + QJsonObject asJsonObject() const override; + void fromJsonObject(QJsonObject json) override; + void fromJson(QString jsonString) override; + + qint32 getCode(); + void setCode(const qint32 &code); + + QString getType(); + void setType(const QString &type); + + QString getMessage(); + void setMessage(const QString &message); + + virtual bool isSet() const override; + +private: + qint32 code; + bool m_code_isSet; + + QString type; + bool m_type_isSet; + + QString message; + bool m_message_isSet; + +}; + +} + +#endif /* OAIApiResponse_H_ */ diff --git a/samples/server/petstore/cpp-qt5-server/server/src/models/OAICategory.cpp b/samples/server/petstore/cpp-qt5-server/server/src/models/OAICategory.cpp new file mode 100644 index 0000000000..65fe716676 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/models/OAICategory.cpp @@ -0,0 +1,112 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +#include "OAICategory.h" + +#include "OAIHelpers.h" + +#include +#include +#include +#include + +namespace OpenAPI { + +OAICategory::OAICategory(QString json) { + this->fromJson(json); +} + +OAICategory::OAICategory() { + this->init(); +} + +OAICategory::~OAICategory() { + +} + +void +OAICategory::init() { + m_id_isSet = false; + m_name_isSet = false; +} + +void +OAICategory::fromJson(QString jsonString) { + QByteArray array (jsonString.toStdString().c_str()); + QJsonDocument doc = QJsonDocument::fromJson(array); + QJsonObject jsonObject = doc.object(); + this->fromJsonObject(jsonObject); +} + +void +OAICategory::fromJsonObject(QJsonObject json) { + ::OpenAPI::fromJsonValue(id, json[QString("id")]); + + ::OpenAPI::fromJsonValue(name, json[QString("name")]); + +} + +QString +OAICategory::asJson () const { + QJsonObject obj = this->asJsonObject(); + QJsonDocument doc(obj); + QByteArray bytes = doc.toJson(); + return QString(bytes); +} + +QJsonObject +OAICategory::asJsonObject() const { + QJsonObject obj; + if(m_id_isSet){ + obj.insert(QString("id"), ::OpenAPI::toJsonValue(id)); + } + if(m_name_isSet){ + obj.insert(QString("name"), ::OpenAPI::toJsonValue(name)); + } + return obj; +} + +qint64 +OAICategory::getId() { + return id; +} +void +OAICategory::setId(const qint64 &id) { + this->id = id; + this->m_id_isSet = true; +} + +QString +OAICategory::getName() { + return name; +} +void +OAICategory::setName(const QString &name) { + this->name = name; + this->m_name_isSet = true; +} + + +bool +OAICategory::isSet() const { + bool isObjectUpdated = false; + do{ + if(m_id_isSet){ isObjectUpdated = true; break;} + + if(m_name_isSet){ isObjectUpdated = true; break;} + }while(false); + return isObjectUpdated; +} + +} + diff --git a/samples/server/petstore/cpp-qt5-server/server/src/models/OAICategory.h b/samples/server/petstore/cpp-qt5-server/server/src/models/OAICategory.h new file mode 100644 index 0000000000..bd84895cf5 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/models/OAICategory.h @@ -0,0 +1,62 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/* + * OAICategory.h + * + * A category for a pet + */ + +#ifndef OAICategory_H_ +#define OAICategory_H_ + +#include + + +#include + +#include "OAIObject.h" + +namespace OpenAPI { + +class OAICategory: public OAIObject { +public: + OAICategory(); + OAICategory(QString json); + ~OAICategory() override; + void init(); + + QString asJson () const override; + QJsonObject asJsonObject() const override; + void fromJsonObject(QJsonObject json) override; + void fromJson(QString jsonString) override; + + qint64 getId(); + void setId(const qint64 &id); + + QString getName(); + void setName(const QString &name); + + virtual bool isSet() const override; + +private: + qint64 id; + bool m_id_isSet; + + QString name; + bool m_name_isSet; + +}; + +} + +#endif /* OAICategory_H_ */ diff --git a/samples/server/petstore/cpp-qt5-server/server/src/models/OAIHelpers.cpp b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIHelpers.cpp new file mode 100644 index 0000000000..4851d67a12 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIHelpers.cpp @@ -0,0 +1,289 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +#include +#include "OAIHelpers.h" +#include "OAIObject.h" + +namespace OpenAPI { + + +QString +toStringValue(const QString &value) { + return value; +} + +QString +toStringValue(const QDateTime &value){ + // ISO 8601 + return value.toString("yyyy-MM-ddTHH:mm:ss[Z|[+|-]HH:mm]"); +} + +QString +toStringValue(const QByteArray &value){ + return QString(value); +} + +QString +toStringValue(const QDate &value){ + // ISO 8601 + return value.toString(Qt::DateFormat::ISODate); +} + +QString +toStringValue(const qint32 &value) { + return QString::number(value); +} + +QString +toStringValue(const qint64 &value) { + return QString::number(value); +} + +QString +toStringValue(const bool &value) { + return QString(value ? "true" : "false"); +} + +QString +toStringValue(const float &value){ + return QString::number(value); +} + +QString +toStringValue(const double &value){ + return QString::number(value); +} + +QJsonValue +toJsonValue(const QString &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const QDateTime &value){ + return QJsonValue(value.toString(Qt::ISODate)); +} + +QJsonValue +toJsonValue(const QByteArray &value){ + return QJsonValue(QString(value.toBase64())); +} + +QJsonValue +toJsonValue(const QDate &value){ + return QJsonValue(value.toString(Qt::ISODate)); +} + +QJsonValue +toJsonValue(const qint32 &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const qint64 &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const bool &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const float &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const double &value){ + return QJsonValue(value); +} + +QJsonValue +toJsonValue(const OAIObject &value){ + return value.asJsonObject(); +} + +bool +fromStringValue(const QString &inStr, QString &value){ + value.clear(); + value.append(inStr); + return !inStr.isEmpty(); +} + +bool +fromStringValue(const QString &inStr, QDateTime &value){ + if(inStr.isEmpty()){ + return false; + } + else{ + auto dateTime = QDateTime::fromString(inStr, "yyyy-MM-ddTHH:mm:ss[Z|[+|-]HH:mm]"); + if(dateTime.isValid()){ + value.setDate(dateTime.date()); + value.setTime(dateTime.time()); + } + else{ + qDebug() << "DateTime is invalid"; + } + return dateTime.isValid(); + } +} + +bool +fromStringValue(const QString &inStr, QByteArray &value){ + if(inStr.isEmpty()){ + return false; + } + else{ + value.clear(); + value.append(inStr.toUtf8()); + return value.count() > 0; + } +} + +bool +fromStringValue(const QString &inStr, QDate &value){ + if(inStr.isEmpty()){ + return false; + } + else{ + auto date = QDate::fromString(inStr, Qt::DateFormat::ISODate); + if(date.isValid()){ + value.setDate(date.year(), date.month(), date.day()); + } + else{ + qDebug() << "Date is invalid"; + } + return date.isValid(); + } +} + +bool +fromStringValue(const QString &inStr, qint32 &value){ + bool ok = false; + value = QVariant(inStr).toInt(&ok); + return ok; +} + +bool +fromStringValue(const QString &inStr, qint64 &value){ + bool ok = false; + value = QVariant(inStr).toLongLong(&ok); + return ok; +} + +bool +fromStringValue(const QString &inStr, bool &value){ + value = QVariant(inStr).toBool(); + return ((inStr == "true") || (inStr == "false")); +} + +bool +fromStringValue(const QString &inStr, float &value){ + bool ok = false; + value = QVariant(inStr).toFloat(&ok); + return ok; +} + +bool +fromStringValue(const QString &inStr, double &value){ + bool ok = false; + value = QVariant(inStr).toDouble(&ok); + return ok; +} + +void +fromJsonValue(QString &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + if(jval.isString()){ + value = jval.toString(); + } else if(jval.isBool()) { + value = jval.toBool() ? "true" : "false"; + } else if(jval.isDouble()){ + value = QString::number(jval.toDouble()); + } + } + +} + +void +fromJsonValue(QDateTime &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = QDateTime::fromString(jval.toString(), Qt::ISODate); + } + +} + +void +fromJsonValue(QByteArray &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = QByteArray::fromBase64(QByteArray::fromStdString(jval.toString().toStdString())); + } + +} + +void +fromJsonValue(QDate &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = QDate::fromString(jval.toString(), Qt::ISODate); + } + +} + +void +fromJsonValue(qint32 &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = jval.toInt(); + } + +} + +void +fromJsonValue(qint64 &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = jval.toVariant().toLongLong(); + } + +} + +void +fromJsonValue(bool &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = jval.toBool(); + } + +} + +void +fromJsonValue(float &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = static_cast(jval.toDouble()); + } +} + +void +fromJsonValue(double &value, const QJsonValue &jval){ + if(!(jval.isUndefined() || jval.isNull())){ + value = jval.toDouble(); + } + +} + +void +fromJsonValue(OAIObject &value, const QJsonValue &jval){ + if(jval.isObject()){ + value.fromJsonObject(jval.toObject()); + } +} + +} diff --git a/samples/server/petstore/cpp-qt5-server/server/src/models/OAIHelpers.h b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIHelpers.h new file mode 100644 index 0000000000..77722b8294 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIHelpers.h @@ -0,0 +1,151 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +#ifndef OAI_HELPERS_H +#define OAI_HELPERS_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "OAIObject.h" + +namespace OpenAPI { + + QString toStringValue(const QString &value); + QString toStringValue(const QDateTime &value); + QString toStringValue(const QByteArray &value); + QString toStringValue(const QDate &value); + QString toStringValue(const qint32 &value); + QString toStringValue(const qint64 &value); + QString toStringValue(const bool &value); + QString toStringValue(const float &value); + QString toStringValue(const double &value); + + template + QList toStringValue(const QList &val) { + QList strArray; + for(auto item : val) { + strArray.append(toStringValue(item)); + } + return strArray; + } + + template + QMap toStringValue(const QMap &val) { + QMap strMap; + for(auto itemkey : val.keys()) { + strMap.insert(itemkey, toStringValue(val.value(itemkey))); + } + return strMap; + } + + QJsonValue toJsonValue(const QString &value); + QJsonValue toJsonValue(const QDateTime &value); + QJsonValue toJsonValue(const QByteArray &value); + QJsonValue toJsonValue(const QDate &value); + QJsonValue toJsonValue(const qint32 &value); + QJsonValue toJsonValue(const qint64 &value); + QJsonValue toJsonValue(const bool &value); + QJsonValue toJsonValue(const float &value); + QJsonValue toJsonValue(const double &value); + QJsonValue toJsonValue(const OAIObject &value); + + template + QJsonValue toJsonValue(const QList &val) { + QJsonArray jArray; + for(auto item : val) { + jArray.append(toJsonValue(item)); + } + return jArray; + } + + template + QJsonValue toJsonValue(const QMap &val) { + QJsonObject jObject; + for(auto itemkey : val.keys()) { + jObject.insert(itemkey, toJsonValue(val.value(itemkey))); + } + return jObject; + } + + bool fromStringValue(const QString &inStr, QString &value); + bool fromStringValue(const QString &inStr, QDateTime &value); + bool fromStringValue(const QString &inStr, QByteArray &value); + bool fromStringValue(const QString &inStr, QDate &value); + bool fromStringValue(const QString &inStr, qint32 &value); + bool fromStringValue(const QString &inStr, qint64 &value); + bool fromStringValue(const QString &inStr, bool &value); + bool fromStringValue(const QString &inStr, float &value); + bool fromStringValue(const QString &inStr, double &value); + + template + void fromStringValue(const QList &inStr, QList &val) { + for(auto item: inStr){ + T itemVal; + fromStringValue(item, itemVal); + val.push_back(itemVal); + } + } + + template + void fromStringValue(const QMap &inStr, QMap &val) { + for(auto itemkey : inStr.keys()){ + T itemVal; + fromStringValue(inStr.value(itemkey), itemVal); + val.insert(itemkey, itemVal); + } + } + + void fromJsonValue(QString &value, const QJsonValue &jval); + void fromJsonValue(QDateTime &value, const QJsonValue &jval); + void fromJsonValue(QByteArray &value, const QJsonValue &jval); + void fromJsonValue(QDate &value, const QJsonValue &jval); + void fromJsonValue(qint32 &value, const QJsonValue &jval); + void fromJsonValue(qint64 &value, const QJsonValue &jval); + void fromJsonValue(bool &value, const QJsonValue &jval); + void fromJsonValue(float &value, const QJsonValue &jval); + void fromJsonValue(double &value, const QJsonValue &jval); + void fromJsonValue(OAIObject &value, const QJsonValue &jval); + + template + void fromJsonValue(QList &val, const QJsonValue &jval) { + if(jval.isArray()){ + for(const QJsonValue &jitem : jval.toArray()){ + T item; + fromJsonValue(item, jitem); + val.push_back(item); + } + } + } + + template + void fromJsonValue(QMap &val, const QJsonValue &jval) { + auto varmap = jval.toObject().toVariantMap(); + if(varmap.count() > 0){ + for(auto itemkey : varmap.keys() ){ + T itemVal; + fromJsonValue(itemVal, QJsonValue::fromVariant(varmap.value(itemkey))); + val.insert(itemkey, val); + } + } + return; + } + +} + +#endif // OAI_HELPERS_H diff --git a/samples/server/petstore/cpp-qt5-server/server/src/models/OAIObject.h b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIObject.h new file mode 100644 index 0000000000..74db802a37 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIObject.h @@ -0,0 +1,54 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +#ifndef _OAI_OBJECT_H_ +#define _OAI_OBJECT_H_ + +#include +#include + +namespace OpenAPI { + +class OAIObject { + public: + virtual ~OAIObject(){ + + } + + virtual QJsonObject asJsonObject() const { + return jObj; + } + + virtual QString asJson() const { + QJsonDocument doc(jObj); + return doc.toJson(QJsonDocument::Compact); + } + + virtual void fromJson(QString jsonString) { + QJsonDocument doc = QJsonDocument::fromJson(jsonString.toUtf8()); + jObj = doc.object(); + } + + virtual void fromJsonObject(QJsonObject json) { + jObj = json; + } + + virtual bool isSet() const { + return false; + } +private : + QJsonObject jObj; +}; + +} + +#endif /* _OAI_OBJECT_H_ */ diff --git a/samples/server/petstore/cpp-qt5-server/server/src/models/OAIOrder.cpp b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIOrder.cpp new file mode 100644 index 0000000000..a022d5e643 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIOrder.cpp @@ -0,0 +1,184 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +#include "OAIOrder.h" + +#include "OAIHelpers.h" + +#include +#include +#include +#include + +namespace OpenAPI { + +OAIOrder::OAIOrder(QString json) { + this->fromJson(json); +} + +OAIOrder::OAIOrder() { + this->init(); +} + +OAIOrder::~OAIOrder() { + +} + +void +OAIOrder::init() { + m_id_isSet = false; + m_pet_id_isSet = false; + m_quantity_isSet = false; + m_ship_date_isSet = false; + m_status_isSet = false; + m_complete_isSet = false; +} + +void +OAIOrder::fromJson(QString jsonString) { + QByteArray array (jsonString.toStdString().c_str()); + QJsonDocument doc = QJsonDocument::fromJson(array); + QJsonObject jsonObject = doc.object(); + this->fromJsonObject(jsonObject); +} + +void +OAIOrder::fromJsonObject(QJsonObject json) { + ::OpenAPI::fromJsonValue(id, json[QString("id")]); + + ::OpenAPI::fromJsonValue(pet_id, json[QString("petId")]); + + ::OpenAPI::fromJsonValue(quantity, json[QString("quantity")]); + + ::OpenAPI::fromJsonValue(ship_date, json[QString("shipDate")]); + + ::OpenAPI::fromJsonValue(status, json[QString("status")]); + + ::OpenAPI::fromJsonValue(complete, json[QString("complete")]); + +} + +QString +OAIOrder::asJson () const { + QJsonObject obj = this->asJsonObject(); + QJsonDocument doc(obj); + QByteArray bytes = doc.toJson(); + return QString(bytes); +} + +QJsonObject +OAIOrder::asJsonObject() const { + QJsonObject obj; + if(m_id_isSet){ + obj.insert(QString("id"), ::OpenAPI::toJsonValue(id)); + } + if(m_pet_id_isSet){ + obj.insert(QString("petId"), ::OpenAPI::toJsonValue(pet_id)); + } + if(m_quantity_isSet){ + obj.insert(QString("quantity"), ::OpenAPI::toJsonValue(quantity)); + } + if(m_ship_date_isSet){ + obj.insert(QString("shipDate"), ::OpenAPI::toJsonValue(ship_date)); + } + if(m_status_isSet){ + obj.insert(QString("status"), ::OpenAPI::toJsonValue(status)); + } + if(m_complete_isSet){ + obj.insert(QString("complete"), ::OpenAPI::toJsonValue(complete)); + } + return obj; +} + +qint64 +OAIOrder::getId() { + return id; +} +void +OAIOrder::setId(const qint64 &id) { + this->id = id; + this->m_id_isSet = true; +} + +qint64 +OAIOrder::getPetId() { + return pet_id; +} +void +OAIOrder::setPetId(const qint64 &pet_id) { + this->pet_id = pet_id; + this->m_pet_id_isSet = true; +} + +qint32 +OAIOrder::getQuantity() { + return quantity; +} +void +OAIOrder::setQuantity(const qint32 &quantity) { + this->quantity = quantity; + this->m_quantity_isSet = true; +} + +QDateTime +OAIOrder::getShipDate() { + return ship_date; +} +void +OAIOrder::setShipDate(const QDateTime &ship_date) { + this->ship_date = ship_date; + this->m_ship_date_isSet = true; +} + +QString +OAIOrder::getStatus() { + return status; +} +void +OAIOrder::setStatus(const QString &status) { + this->status = status; + this->m_status_isSet = true; +} + +bool +OAIOrder::isComplete() { + return complete; +} +void +OAIOrder::setComplete(const bool &complete) { + this->complete = complete; + this->m_complete_isSet = true; +} + + +bool +OAIOrder::isSet() const { + bool isObjectUpdated = false; + do{ + if(m_id_isSet){ isObjectUpdated = true; break;} + + if(m_pet_id_isSet){ isObjectUpdated = true; break;} + + if(m_quantity_isSet){ isObjectUpdated = true; break;} + + if(m_ship_date_isSet){ isObjectUpdated = true; break;} + + if(m_status_isSet){ isObjectUpdated = true; break;} + + if(m_complete_isSet){ isObjectUpdated = true; break;} + }while(false); + return isObjectUpdated; +} + +} + diff --git a/samples/server/petstore/cpp-qt5-server/server/src/models/OAIOrder.h b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIOrder.h new file mode 100644 index 0000000000..6eb1bc9ce6 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIOrder.h @@ -0,0 +1,87 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/* + * OAIOrder.h + * + * An order for a pets from the pet store + */ + +#ifndef OAIOrder_H_ +#define OAIOrder_H_ + +#include + + +#include +#include + +#include "OAIObject.h" + +namespace OpenAPI { + +class OAIOrder: public OAIObject { +public: + OAIOrder(); + OAIOrder(QString json); + ~OAIOrder() override; + void init(); + + QString asJson () const override; + QJsonObject asJsonObject() const override; + void fromJsonObject(QJsonObject json) override; + void fromJson(QString jsonString) override; + + qint64 getId(); + void setId(const qint64 &id); + + qint64 getPetId(); + void setPetId(const qint64 &pet_id); + + qint32 getQuantity(); + void setQuantity(const qint32 &quantity); + + QDateTime getShipDate(); + void setShipDate(const QDateTime &ship_date); + + QString getStatus(); + void setStatus(const QString &status); + + bool isComplete(); + void setComplete(const bool &complete); + + virtual bool isSet() const override; + +private: + qint64 id; + bool m_id_isSet; + + qint64 pet_id; + bool m_pet_id_isSet; + + qint32 quantity; + bool m_quantity_isSet; + + QDateTime ship_date; + bool m_ship_date_isSet; + + QString status; + bool m_status_isSet; + + bool complete; + bool m_complete_isSet; + +}; + +} + +#endif /* OAIOrder_H_ */ diff --git a/samples/server/petstore/cpp-qt5-server/server/src/models/OAIPet.cpp b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIPet.cpp new file mode 100644 index 0000000000..2f36b66a30 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIPet.cpp @@ -0,0 +1,186 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +#include "OAIPet.h" + +#include "OAIHelpers.h" + +#include +#include +#include +#include + +namespace OpenAPI { + +OAIPet::OAIPet(QString json) { + this->fromJson(json); +} + +OAIPet::OAIPet() { + this->init(); +} + +OAIPet::~OAIPet() { + +} + +void +OAIPet::init() { + m_id_isSet = false; + m_category_isSet = false; + m_name_isSet = false; + m_photo_urls_isSet = false; + m_tags_isSet = false; + m_status_isSet = false; +} + +void +OAIPet::fromJson(QString jsonString) { + QByteArray array (jsonString.toStdString().c_str()); + QJsonDocument doc = QJsonDocument::fromJson(array); + QJsonObject jsonObject = doc.object(); + this->fromJsonObject(jsonObject); +} + +void +OAIPet::fromJsonObject(QJsonObject json) { + ::OpenAPI::fromJsonValue(id, json[QString("id")]); + + ::OpenAPI::fromJsonValue(category, json[QString("category")]); + + ::OpenAPI::fromJsonValue(name, json[QString("name")]); + + + ::OpenAPI::fromJsonValue(photo_urls, json[QString("photoUrls")]); + + ::OpenAPI::fromJsonValue(tags, json[QString("tags")]); + ::OpenAPI::fromJsonValue(status, json[QString("status")]); + +} + +QString +OAIPet::asJson () const { + QJsonObject obj = this->asJsonObject(); + QJsonDocument doc(obj); + QByteArray bytes = doc.toJson(); + return QString(bytes); +} + +QJsonObject +OAIPet::asJsonObject() const { + QJsonObject obj; + if(m_id_isSet){ + obj.insert(QString("id"), ::OpenAPI::toJsonValue(id)); + } + if(category.isSet()){ + obj.insert(QString("category"), ::OpenAPI::toJsonValue(category)); + } + if(m_name_isSet){ + obj.insert(QString("name"), ::OpenAPI::toJsonValue(name)); + } + + if(photo_urls.size() > 0){ + obj.insert(QString("photoUrls"), ::OpenAPI::toJsonValue(photo_urls)); + } + + if(tags.size() > 0){ + obj.insert(QString("tags"), ::OpenAPI::toJsonValue(tags)); + } + if(m_status_isSet){ + obj.insert(QString("status"), ::OpenAPI::toJsonValue(status)); + } + return obj; +} + +qint64 +OAIPet::getId() { + return id; +} +void +OAIPet::setId(const qint64 &id) { + this->id = id; + this->m_id_isSet = true; +} + +OAICategory +OAIPet::getCategory() { + return category; +} +void +OAIPet::setCategory(const OAICategory &category) { + this->category = category; + this->m_category_isSet = true; +} + +QString +OAIPet::getName() { + return name; +} +void +OAIPet::setName(const QString &name) { + this->name = name; + this->m_name_isSet = true; +} + +QList +OAIPet::getPhotoUrls() { + return photo_urls; +} +void +OAIPet::setPhotoUrls(const QList &photo_urls) { + this->photo_urls = photo_urls; + this->m_photo_urls_isSet = true; +} + +QList +OAIPet::getTags() { + return tags; +} +void +OAIPet::setTags(const QList &tags) { + this->tags = tags; + this->m_tags_isSet = true; +} + +QString +OAIPet::getStatus() { + return status; +} +void +OAIPet::setStatus(const QString &status) { + this->status = status; + this->m_status_isSet = true; +} + + +bool +OAIPet::isSet() const { + bool isObjectUpdated = false; + do{ + if(m_id_isSet){ isObjectUpdated = true; break;} + + if(category.isSet()){ isObjectUpdated = true; break;} + + if(m_name_isSet){ isObjectUpdated = true; break;} + + if(photo_urls.size() > 0){ isObjectUpdated = true; break;} + + if(tags.size() > 0){ isObjectUpdated = true; break;} + + if(m_status_isSet){ isObjectUpdated = true; break;} + }while(false); + return isObjectUpdated; +} + +} + diff --git a/samples/server/petstore/cpp-qt5-server/server/src/models/OAIPet.h b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIPet.h new file mode 100644 index 0000000000..b301f02c47 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIPet.h @@ -0,0 +1,89 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/* + * OAIPet.h + * + * A pet for sale in the pet store + */ + +#ifndef OAIPet_H_ +#define OAIPet_H_ + +#include + + +#include "OAICategory.h" +#include "OAITag.h" +#include +#include + +#include "OAIObject.h" + +namespace OpenAPI { + +class OAIPet: public OAIObject { +public: + OAIPet(); + OAIPet(QString json); + ~OAIPet() override; + void init(); + + QString asJson () const override; + QJsonObject asJsonObject() const override; + void fromJsonObject(QJsonObject json) override; + void fromJson(QString jsonString) override; + + qint64 getId(); + void setId(const qint64 &id); + + OAICategory getCategory(); + void setCategory(const OAICategory &category); + + QString getName(); + void setName(const QString &name); + + QList getPhotoUrls(); + void setPhotoUrls(const QList &photo_urls); + + QList getTags(); + void setTags(const QList &tags); + + QString getStatus(); + void setStatus(const QString &status); + + virtual bool isSet() const override; + +private: + qint64 id; + bool m_id_isSet; + + OAICategory category; + bool m_category_isSet; + + QString name; + bool m_name_isSet; + + QList photo_urls; + bool m_photo_urls_isSet; + + QList tags; + bool m_tags_isSet; + + QString status; + bool m_status_isSet; + +}; + +} + +#endif /* OAIPet_H_ */ diff --git a/samples/server/petstore/cpp-qt5-server/server/src/models/OAITag.cpp b/samples/server/petstore/cpp-qt5-server/server/src/models/OAITag.cpp new file mode 100644 index 0000000000..05343cb5e7 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/models/OAITag.cpp @@ -0,0 +1,112 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +#include "OAITag.h" + +#include "OAIHelpers.h" + +#include +#include +#include +#include + +namespace OpenAPI { + +OAITag::OAITag(QString json) { + this->fromJson(json); +} + +OAITag::OAITag() { + this->init(); +} + +OAITag::~OAITag() { + +} + +void +OAITag::init() { + m_id_isSet = false; + m_name_isSet = false; +} + +void +OAITag::fromJson(QString jsonString) { + QByteArray array (jsonString.toStdString().c_str()); + QJsonDocument doc = QJsonDocument::fromJson(array); + QJsonObject jsonObject = doc.object(); + this->fromJsonObject(jsonObject); +} + +void +OAITag::fromJsonObject(QJsonObject json) { + ::OpenAPI::fromJsonValue(id, json[QString("id")]); + + ::OpenAPI::fromJsonValue(name, json[QString("name")]); + +} + +QString +OAITag::asJson () const { + QJsonObject obj = this->asJsonObject(); + QJsonDocument doc(obj); + QByteArray bytes = doc.toJson(); + return QString(bytes); +} + +QJsonObject +OAITag::asJsonObject() const { + QJsonObject obj; + if(m_id_isSet){ + obj.insert(QString("id"), ::OpenAPI::toJsonValue(id)); + } + if(m_name_isSet){ + obj.insert(QString("name"), ::OpenAPI::toJsonValue(name)); + } + return obj; +} + +qint64 +OAITag::getId() { + return id; +} +void +OAITag::setId(const qint64 &id) { + this->id = id; + this->m_id_isSet = true; +} + +QString +OAITag::getName() { + return name; +} +void +OAITag::setName(const QString &name) { + this->name = name; + this->m_name_isSet = true; +} + + +bool +OAITag::isSet() const { + bool isObjectUpdated = false; + do{ + if(m_id_isSet){ isObjectUpdated = true; break;} + + if(m_name_isSet){ isObjectUpdated = true; break;} + }while(false); + return isObjectUpdated; +} + +} + diff --git a/samples/server/petstore/cpp-qt5-server/server/src/models/OAITag.h b/samples/server/petstore/cpp-qt5-server/server/src/models/OAITag.h new file mode 100644 index 0000000000..7e8dace76c --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/models/OAITag.h @@ -0,0 +1,62 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/* + * OAITag.h + * + * A tag for a pet + */ + +#ifndef OAITag_H_ +#define OAITag_H_ + +#include + + +#include + +#include "OAIObject.h" + +namespace OpenAPI { + +class OAITag: public OAIObject { +public: + OAITag(); + OAITag(QString json); + ~OAITag() override; + void init(); + + QString asJson () const override; + QJsonObject asJsonObject() const override; + void fromJsonObject(QJsonObject json) override; + void fromJson(QString jsonString) override; + + qint64 getId(); + void setId(const qint64 &id); + + QString getName(); + void setName(const QString &name); + + virtual bool isSet() const override; + +private: + qint64 id; + bool m_id_isSet; + + QString name; + bool m_name_isSet; + +}; + +} + +#endif /* OAITag_H_ */ diff --git a/samples/server/petstore/cpp-qt5-server/server/src/models/OAIUser.cpp b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIUser.cpp new file mode 100644 index 0000000000..3a904b343c --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIUser.cpp @@ -0,0 +1,220 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +#include "OAIUser.h" + +#include "OAIHelpers.h" + +#include +#include +#include +#include + +namespace OpenAPI { + +OAIUser::OAIUser(QString json) { + this->fromJson(json); +} + +OAIUser::OAIUser() { + this->init(); +} + +OAIUser::~OAIUser() { + +} + +void +OAIUser::init() { + m_id_isSet = false; + m_username_isSet = false; + m_first_name_isSet = false; + m_last_name_isSet = false; + m_email_isSet = false; + m_password_isSet = false; + m_phone_isSet = false; + m_user_status_isSet = false; +} + +void +OAIUser::fromJson(QString jsonString) { + QByteArray array (jsonString.toStdString().c_str()); + QJsonDocument doc = QJsonDocument::fromJson(array); + QJsonObject jsonObject = doc.object(); + this->fromJsonObject(jsonObject); +} + +void +OAIUser::fromJsonObject(QJsonObject json) { + ::OpenAPI::fromJsonValue(id, json[QString("id")]); + + ::OpenAPI::fromJsonValue(username, json[QString("username")]); + + ::OpenAPI::fromJsonValue(first_name, json[QString("firstName")]); + + ::OpenAPI::fromJsonValue(last_name, json[QString("lastName")]); + + ::OpenAPI::fromJsonValue(email, json[QString("email")]); + + ::OpenAPI::fromJsonValue(password, json[QString("password")]); + + ::OpenAPI::fromJsonValue(phone, json[QString("phone")]); + + ::OpenAPI::fromJsonValue(user_status, json[QString("userStatus")]); + +} + +QString +OAIUser::asJson () const { + QJsonObject obj = this->asJsonObject(); + QJsonDocument doc(obj); + QByteArray bytes = doc.toJson(); + return QString(bytes); +} + +QJsonObject +OAIUser::asJsonObject() const { + QJsonObject obj; + if(m_id_isSet){ + obj.insert(QString("id"), ::OpenAPI::toJsonValue(id)); + } + if(m_username_isSet){ + obj.insert(QString("username"), ::OpenAPI::toJsonValue(username)); + } + if(m_first_name_isSet){ + obj.insert(QString("firstName"), ::OpenAPI::toJsonValue(first_name)); + } + if(m_last_name_isSet){ + obj.insert(QString("lastName"), ::OpenAPI::toJsonValue(last_name)); + } + if(m_email_isSet){ + obj.insert(QString("email"), ::OpenAPI::toJsonValue(email)); + } + if(m_password_isSet){ + obj.insert(QString("password"), ::OpenAPI::toJsonValue(password)); + } + if(m_phone_isSet){ + obj.insert(QString("phone"), ::OpenAPI::toJsonValue(phone)); + } + if(m_user_status_isSet){ + obj.insert(QString("userStatus"), ::OpenAPI::toJsonValue(user_status)); + } + return obj; +} + +qint64 +OAIUser::getId() { + return id; +} +void +OAIUser::setId(const qint64 &id) { + this->id = id; + this->m_id_isSet = true; +} + +QString +OAIUser::getUsername() { + return username; +} +void +OAIUser::setUsername(const QString &username) { + this->username = username; + this->m_username_isSet = true; +} + +QString +OAIUser::getFirstName() { + return first_name; +} +void +OAIUser::setFirstName(const QString &first_name) { + this->first_name = first_name; + this->m_first_name_isSet = true; +} + +QString +OAIUser::getLastName() { + return last_name; +} +void +OAIUser::setLastName(const QString &last_name) { + this->last_name = last_name; + this->m_last_name_isSet = true; +} + +QString +OAIUser::getEmail() { + return email; +} +void +OAIUser::setEmail(const QString &email) { + this->email = email; + this->m_email_isSet = true; +} + +QString +OAIUser::getPassword() { + return password; +} +void +OAIUser::setPassword(const QString &password) { + this->password = password; + this->m_password_isSet = true; +} + +QString +OAIUser::getPhone() { + return phone; +} +void +OAIUser::setPhone(const QString &phone) { + this->phone = phone; + this->m_phone_isSet = true; +} + +qint32 +OAIUser::getUserStatus() { + return user_status; +} +void +OAIUser::setUserStatus(const qint32 &user_status) { + this->user_status = user_status; + this->m_user_status_isSet = true; +} + + +bool +OAIUser::isSet() const { + bool isObjectUpdated = false; + do{ + if(m_id_isSet){ isObjectUpdated = true; break;} + + if(m_username_isSet){ isObjectUpdated = true; break;} + + if(m_first_name_isSet){ isObjectUpdated = true; break;} + + if(m_last_name_isSet){ isObjectUpdated = true; break;} + + if(m_email_isSet){ isObjectUpdated = true; break;} + + if(m_password_isSet){ isObjectUpdated = true; break;} + + if(m_phone_isSet){ isObjectUpdated = true; break;} + + if(m_user_status_isSet){ isObjectUpdated = true; break;} + }while(false); + return isObjectUpdated; +} + +} + diff --git a/samples/server/petstore/cpp-qt5-server/server/src/models/OAIUser.h b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIUser.h new file mode 100644 index 0000000000..495cd88fa7 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/models/OAIUser.h @@ -0,0 +1,98 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/* + * OAIUser.h + * + * A User who is purchasing from the pet store + */ + +#ifndef OAIUser_H_ +#define OAIUser_H_ + +#include + + +#include + +#include "OAIObject.h" + +namespace OpenAPI { + +class OAIUser: public OAIObject { +public: + OAIUser(); + OAIUser(QString json); + ~OAIUser() override; + void init(); + + QString asJson () const override; + QJsonObject asJsonObject() const override; + void fromJsonObject(QJsonObject json) override; + void fromJson(QString jsonString) override; + + qint64 getId(); + void setId(const qint64 &id); + + QString getUsername(); + void setUsername(const QString &username); + + QString getFirstName(); + void setFirstName(const QString &first_name); + + QString getLastName(); + void setLastName(const QString &last_name); + + QString getEmail(); + void setEmail(const QString &email); + + QString getPassword(); + void setPassword(const QString &password); + + QString getPhone(); + void setPhone(const QString &phone); + + qint32 getUserStatus(); + void setUserStatus(const qint32 &user_status); + + virtual bool isSet() const override; + +private: + qint64 id; + bool m_id_isSet; + + QString username; + bool m_username_isSet; + + QString first_name; + bool m_first_name_isSet; + + QString last_name; + bool m_last_name_isSet; + + QString email; + bool m_email_isSet; + + QString password; + bool m_password_isSet; + + QString phone; + bool m_phone_isSet; + + qint32 user_status; + bool m_user_status_isSet; + +}; + +} + +#endif /* OAIUser_H_ */ diff --git a/samples/server/petstore/cpp-qt5-server/server/src/requests/OAIPetApiRequest.cpp b/samples/server/petstore/cpp-qt5-server/server/src/requests/OAIPetApiRequest.cpp new file mode 100644 index 0000000000..8f619d3351 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/requests/OAIPetApiRequest.cpp @@ -0,0 +1,304 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +#include +#include +#include +#include +#include + +#include "OAIHelpers.h" +#include "OAIPetApiRequest.h" + +namespace OpenAPI { + +OAIPetApiRequest::OAIPetApiRequest(QHttpEngine::Socket *s, OAIPetApiHandler* hdl) : QObject(s), socket(s), handler(hdl) { +} + +OAIPetApiRequest::~OAIPetApiRequest(){ + disconnect(this, nullptr, nullptr, nullptr); + qDebug() << "OAIPetApiRequest::~OAIPetApiRequest()"; +} + +QMap +OAIPetApiRequest::getDefaultHeaders(){ + return defaultHeaders; +} + +QHttpEngine::Socket* OAIPetApiRequest::getRawSocket(){ + return socket; +} + + +void OAIPetApiRequest::addPetRequest(){ + qDebug() << "/v2/pet"; + connect(this, &OAIPetApiRequest::addPet, handler, &OAIPetApiHandler::addPet); + + + + QJsonDocument doc; + socket->readJson(doc); + QJsonObject obj = doc.object(); + OAIPet oai_pet; + ::OpenAPI::fromJsonValue(oai_pet, obj); + + + emit addPet( oai_pet); +} + + +void OAIPetApiRequest::deletePetRequest(QString pet_idstr){ + qDebug() << "/v2/pet/{petId}"; + connect(this, &OAIPetApiRequest::deletePet, handler, &OAIPetApiHandler::deletePet); + + + qint64 pet_id; + fromStringValue(pet_idstr, pet_id); + + QString api_key; + if(socket->headers().keys().contains("api_key")){ + fromStringValue(socket->queryString().value("api_key"), api_key); + } + + + emit deletePet( pet_id, api_key); +} + + +void OAIPetApiRequest::findPetsByStatusRequest(){ + qDebug() << "/v2/pet/findByStatus"; + connect(this, &OAIPetApiRequest::findPetsByStatus, handler, &OAIPetApiHandler::findPetsByStatus); + + + QList status; + if(socket->queryString().keys().contains("status")){ + fromStringValue(socket->queryString().values("status"), status); + } + + + + emit findPetsByStatus( status); +} + + +void OAIPetApiRequest::findPetsByTagsRequest(){ + qDebug() << "/v2/pet/findByTags"; + connect(this, &OAIPetApiRequest::findPetsByTags, handler, &OAIPetApiHandler::findPetsByTags); + + + QList tags; + if(socket->queryString().keys().contains("tags")){ + fromStringValue(socket->queryString().values("tags"), tags); + } + + + + emit findPetsByTags( tags); +} + + +void OAIPetApiRequest::getPetByIdRequest(QString pet_idstr){ + qDebug() << "/v2/pet/{petId}"; + connect(this, &OAIPetApiRequest::getPetById, handler, &OAIPetApiHandler::getPetById); + + + qint64 pet_id; + fromStringValue(pet_idstr, pet_id); + + + emit getPetById( pet_id); +} + + +void OAIPetApiRequest::updatePetRequest(){ + qDebug() << "/v2/pet"; + connect(this, &OAIPetApiRequest::updatePet, handler, &OAIPetApiHandler::updatePet); + + + + QJsonDocument doc; + socket->readJson(doc); + QJsonObject obj = doc.object(); + OAIPet oai_pet; + ::OpenAPI::fromJsonValue(oai_pet, obj); + + + emit updatePet( oai_pet); +} + + +void OAIPetApiRequest::updatePetWithFormRequest(QString pet_idstr){ + qDebug() << "/v2/pet/{petId}"; + connect(this, &OAIPetApiRequest::updatePetWithForm, handler, &OAIPetApiHandler::updatePetWithForm); + + + qint64 pet_id; + fromStringValue(pet_idstr, pet_id); + + QString name; + QString status; + + emit updatePetWithForm( pet_id, name, status); +} + + +void OAIPetApiRequest::uploadFileRequest(QString pet_idstr){ + qDebug() << "/v2/pet/{petId}/uploadImage"; + connect(this, &OAIPetApiRequest::uploadFile, handler, &OAIPetApiHandler::uploadFile); + + + qint64 pet_id; + fromStringValue(pet_idstr, pet_id); + + QString additional_metadata; + QIODevice* file; + + emit uploadFile( pet_id, additional_metadata, file); +} + + + +void OAIPetApiRequest::addPetResponse(){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIPetApiRequest::deletePetResponse(){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIPetApiRequest::findPetsByStatusResponse(QList res){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIPetApiRequest::findPetsByTagsResponse(QList res){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIPetApiRequest::getPetByIdResponse(OAIPet res){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIPetApiRequest::updatePetResponse(){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIPetApiRequest::updatePetWithFormResponse(){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIPetApiRequest::uploadFileResponse(OAIApiResponse res){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} + + +void OAIPetApiRequest::addPetError(QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIPetApiRequest::deletePetError(QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIPetApiRequest::findPetsByStatusError(QList res, QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIPetApiRequest::findPetsByTagsError(QList res, QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIPetApiRequest::getPetByIdError(OAIPet res, QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIPetApiRequest::updatePetError(QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIPetApiRequest::updatePetWithFormError(QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIPetApiRequest::uploadFileError(OAIApiResponse res, QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} + + + + +} diff --git a/samples/server/petstore/cpp-qt5-server/server/src/requests/OAIPetApiRequest.h b/samples/server/petstore/cpp-qt5-server/server/src/requests/OAIPetApiRequest.h new file mode 100644 index 0000000000..1d1b0032b8 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/requests/OAIPetApiRequest.h @@ -0,0 +1,90 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +#ifndef _OAI_OAIPetApiRequest_H_ +#define _OAI_OAIPetApiRequest_H_ + +#include +#include +#include +#include + +#include +#include "OAIApiResponse.h" +#include "OAIPet.h" +#include +#include +#include "OAIPetApiHandler.h" + +namespace OpenAPI { + +class OAIPetApiRequest : public QObject +{ + Q_OBJECT + +public: + OAIPetApiRequest(QHttpEngine::Socket *s, OAIPetApiHandler* handler); + virtual ~OAIPetApiRequest(); + + void addPetRequest(); + void deletePetRequest(QString pet_id); + void findPetsByStatusRequest(); + void findPetsByTagsRequest(); + void getPetByIdRequest(QString pet_id); + void updatePetRequest(); + void updatePetWithFormRequest(QString pet_id); + void uploadFileRequest(QString pet_id); + + + void addPetResponse(); + void deletePetResponse(); + void findPetsByStatusResponse(QList res); + void findPetsByTagsResponse(QList res); + void getPetByIdResponse(OAIPet res); + void updatePetResponse(); + void updatePetWithFormResponse(); + void uploadFileResponse(OAIApiResponse res); + + + void addPetError(QNetworkReply::NetworkError error_type, QString& error_str); + void deletePetError(QNetworkReply::NetworkError error_type, QString& error_str); + void findPetsByStatusError(QList res, QNetworkReply::NetworkError error_type, QString& error_str); + void findPetsByTagsError(QList res, QNetworkReply::NetworkError error_type, QString& error_str); + void getPetByIdError(OAIPet res, QNetworkReply::NetworkError error_type, QString& error_str); + void updatePetError(QNetworkReply::NetworkError error_type, QString& error_str); + void updatePetWithFormError(QNetworkReply::NetworkError error_type, QString& error_str); + void uploadFileError(OAIApiResponse res, QNetworkReply::NetworkError error_type, QString& error_str); + + + QMap getDefaultHeaders(); + QHttpEngine::Socket* getRawSocket(); + +signals: + void addPet(OAIPet oai_pet); + void deletePet(qint64 pet_id, QString api_key); + void findPetsByStatus(QList status); + void findPetsByTags(QList tags); + void getPetById(qint64 pet_id); + void updatePet(OAIPet oai_pet); + void updatePetWithForm(qint64 pet_id, QString name, QString status); + void uploadFile(qint64 pet_id, QString additional_metadata, QIODevice* file); + + +private: + QMap defaultHeaders; + QHttpEngine::Socket *socket; + OAIPetApiHandler *handler; +}; + +} + +#endif // _OAI_OAIPetApiRequest_H_ diff --git a/samples/server/petstore/cpp-qt5-server/server/src/requests/OAIStoreApiRequest.cpp b/samples/server/petstore/cpp-qt5-server/server/src/requests/OAIStoreApiRequest.cpp new file mode 100644 index 0000000000..85a5f678d8 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/requests/OAIStoreApiRequest.cpp @@ -0,0 +1,167 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +#include +#include +#include +#include +#include + +#include "OAIHelpers.h" +#include "OAIStoreApiRequest.h" + +namespace OpenAPI { + +OAIStoreApiRequest::OAIStoreApiRequest(QHttpEngine::Socket *s, OAIStoreApiHandler* hdl) : QObject(s), socket(s), handler(hdl) { +} + +OAIStoreApiRequest::~OAIStoreApiRequest(){ + disconnect(this, nullptr, nullptr, nullptr); + qDebug() << "OAIStoreApiRequest::~OAIStoreApiRequest()"; +} + +QMap +OAIStoreApiRequest::getDefaultHeaders(){ + return defaultHeaders; +} + +QHttpEngine::Socket* OAIStoreApiRequest::getRawSocket(){ + return socket; +} + + +void OAIStoreApiRequest::deleteOrderRequest(QString order_idstr){ + qDebug() << "/v2/store/order/{orderId}"; + connect(this, &OAIStoreApiRequest::deleteOrder, handler, &OAIStoreApiHandler::deleteOrder); + + + QString order_id; + fromStringValue(order_idstr, order_id); + + + emit deleteOrder( order_id); +} + + +void OAIStoreApiRequest::getInventoryRequest(){ + qDebug() << "/v2/store/inventory"; + connect(this, &OAIStoreApiRequest::getInventory, handler, &OAIStoreApiHandler::getInventory); + + + + + emit getInventory(); +} + + +void OAIStoreApiRequest::getOrderByIdRequest(QString order_idstr){ + qDebug() << "/v2/store/order/{orderId}"; + connect(this, &OAIStoreApiRequest::getOrderById, handler, &OAIStoreApiHandler::getOrderById); + + + qint64 order_id; + fromStringValue(order_idstr, order_id); + + + emit getOrderById( order_id); +} + + +void OAIStoreApiRequest::placeOrderRequest(){ + qDebug() << "/v2/store/order"; + connect(this, &OAIStoreApiRequest::placeOrder, handler, &OAIStoreApiHandler::placeOrder); + + + + QJsonDocument doc; + socket->readJson(doc); + QJsonObject obj = doc.object(); + OAIOrder oai_order; + ::OpenAPI::fromJsonValue(oai_order, obj); + + + emit placeOrder( oai_order); +} + + + +void OAIStoreApiRequest::deleteOrderResponse(){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIStoreApiRequest::getInventoryResponse(QMap res){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIStoreApiRequest::getOrderByIdResponse(OAIOrder res){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIStoreApiRequest::placeOrderResponse(OAIOrder res){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} + + +void OAIStoreApiRequest::deleteOrderError(QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIStoreApiRequest::getInventoryError(QMap res, QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIStoreApiRequest::getOrderByIdError(OAIOrder res, QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIStoreApiRequest::placeOrderError(OAIOrder res, QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} + + + + +} diff --git a/samples/server/petstore/cpp-qt5-server/server/src/requests/OAIStoreApiRequest.h b/samples/server/petstore/cpp-qt5-server/server/src/requests/OAIStoreApiRequest.h new file mode 100644 index 0000000000..6157a9a07e --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/requests/OAIStoreApiRequest.h @@ -0,0 +1,73 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +#ifndef _OAI_OAIStoreApiRequest_H_ +#define _OAI_OAIStoreApiRequest_H_ + +#include +#include +#include +#include + +#include +#include "OAIOrder.h" +#include +#include +#include "OAIStoreApiHandler.h" + +namespace OpenAPI { + +class OAIStoreApiRequest : public QObject +{ + Q_OBJECT + +public: + OAIStoreApiRequest(QHttpEngine::Socket *s, OAIStoreApiHandler* handler); + virtual ~OAIStoreApiRequest(); + + void deleteOrderRequest(QString order_id); + void getInventoryRequest(); + void getOrderByIdRequest(QString order_id); + void placeOrderRequest(); + + + void deleteOrderResponse(); + void getInventoryResponse(QMap res); + void getOrderByIdResponse(OAIOrder res); + void placeOrderResponse(OAIOrder res); + + + void deleteOrderError(QNetworkReply::NetworkError error_type, QString& error_str); + void getInventoryError(QMap res, QNetworkReply::NetworkError error_type, QString& error_str); + void getOrderByIdError(OAIOrder res, QNetworkReply::NetworkError error_type, QString& error_str); + void placeOrderError(OAIOrder res, QNetworkReply::NetworkError error_type, QString& error_str); + + + QMap getDefaultHeaders(); + QHttpEngine::Socket* getRawSocket(); + +signals: + void deleteOrder(QString order_id); + void getInventory(); + void getOrderById(qint64 order_id); + void placeOrder(OAIOrder oai_order); + + +private: + QMap defaultHeaders; + QHttpEngine::Socket *socket; + OAIStoreApiHandler *handler; +}; + +} + +#endif // _OAI_OAIStoreApiRequest_H_ diff --git a/samples/server/petstore/cpp-qt5-server/server/src/requests/OAIUserApiRequest.cpp b/samples/server/petstore/cpp-qt5-server/server/src/requests/OAIUserApiRequest.cpp new file mode 100644 index 0000000000..8e6b6c3a36 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/requests/OAIUserApiRequest.cpp @@ -0,0 +1,315 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +#include +#include +#include +#include +#include + +#include "OAIHelpers.h" +#include "OAIUserApiRequest.h" + +namespace OpenAPI { + +OAIUserApiRequest::OAIUserApiRequest(QHttpEngine::Socket *s, OAIUserApiHandler* hdl) : QObject(s), socket(s), handler(hdl) { +} + +OAIUserApiRequest::~OAIUserApiRequest(){ + disconnect(this, nullptr, nullptr, nullptr); + qDebug() << "OAIUserApiRequest::~OAIUserApiRequest()"; +} + +QMap +OAIUserApiRequest::getDefaultHeaders(){ + return defaultHeaders; +} + +QHttpEngine::Socket* OAIUserApiRequest::getRawSocket(){ + return socket; +} + + +void OAIUserApiRequest::createUserRequest(){ + qDebug() << "/v2/user"; + connect(this, &OAIUserApiRequest::createUser, handler, &OAIUserApiHandler::createUser); + + + + QJsonDocument doc; + socket->readJson(doc); + QJsonObject obj = doc.object(); + OAIUser oai_user; + ::OpenAPI::fromJsonValue(oai_user, obj); + + + emit createUser( oai_user); +} + + +void OAIUserApiRequest::createUsersWithArrayInputRequest(){ + qDebug() << "/v2/user/createWithArray"; + connect(this, &OAIUserApiRequest::createUsersWithArrayInput, handler, &OAIUserApiHandler::createUsersWithArrayInput); + + + + QJsonDocument doc; + QList oai_user; + if(socket->readJson(doc)){ + QJsonArray jsonArray = doc.array(); + foreach(QJsonValue obj, jsonArray) { + OAIUser o; + ::OpenAPI::fromJsonValue(o, obj); + oai_user.append(o); + } + } + + + emit createUsersWithArrayInput( oai_user); +} + + +void OAIUserApiRequest::createUsersWithListInputRequest(){ + qDebug() << "/v2/user/createWithList"; + connect(this, &OAIUserApiRequest::createUsersWithListInput, handler, &OAIUserApiHandler::createUsersWithListInput); + + + + QJsonDocument doc; + QList oai_user; + if(socket->readJson(doc)){ + QJsonArray jsonArray = doc.array(); + foreach(QJsonValue obj, jsonArray) { + OAIUser o; + ::OpenAPI::fromJsonValue(o, obj); + oai_user.append(o); + } + } + + + emit createUsersWithListInput( oai_user); +} + + +void OAIUserApiRequest::deleteUserRequest(QString usernamestr){ + qDebug() << "/v2/user/{username}"; + connect(this, &OAIUserApiRequest::deleteUser, handler, &OAIUserApiHandler::deleteUser); + + + QString username; + fromStringValue(usernamestr, username); + + + emit deleteUser( username); +} + + +void OAIUserApiRequest::getUserByNameRequest(QString usernamestr){ + qDebug() << "/v2/user/{username}"; + connect(this, &OAIUserApiRequest::getUserByName, handler, &OAIUserApiHandler::getUserByName); + + + QString username; + fromStringValue(usernamestr, username); + + + emit getUserByName( username); +} + + +void OAIUserApiRequest::loginUserRequest(){ + qDebug() << "/v2/user/login"; + connect(this, &OAIUserApiRequest::loginUser, handler, &OAIUserApiHandler::loginUser); + + + QString username; + if(socket->queryString().keys().contains("username")){ + fromStringValue(socket->queryString().value("username"), username); + } + + QString password; + if(socket->queryString().keys().contains("password")){ + fromStringValue(socket->queryString().value("password"), password); + } + + + + emit loginUser( username, password); +} + + +void OAIUserApiRequest::logoutUserRequest(){ + qDebug() << "/v2/user/logout"; + connect(this, &OAIUserApiRequest::logoutUser, handler, &OAIUserApiHandler::logoutUser); + + + + + emit logoutUser(); +} + + +void OAIUserApiRequest::updateUserRequest(QString usernamestr){ + qDebug() << "/v2/user/{username}"; + connect(this, &OAIUserApiRequest::updateUser, handler, &OAIUserApiHandler::updateUser); + + + QString username; + fromStringValue(usernamestr, username); + + QJsonDocument doc; + socket->readJson(doc); + QJsonObject obj = doc.object(); + OAIUser oai_user; + ::OpenAPI::fromJsonValue(oai_user, obj); + + + emit updateUser( username, oai_user); +} + + + +void OAIUserApiRequest::createUserResponse(){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIUserApiRequest::createUsersWithArrayInputResponse(){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIUserApiRequest::createUsersWithListInputResponse(){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIUserApiRequest::deleteUserResponse(){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIUserApiRequest::getUserByNameResponse(OAIUser res){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIUserApiRequest::loginUserResponse(QString res){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIUserApiRequest::logoutUserResponse(){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIUserApiRequest::updateUserResponse(){ + socket->setStatusCode(QHttpEngine::Socket::OK); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} + + +void OAIUserApiRequest::createUserError(QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIUserApiRequest::createUsersWithArrayInputError(QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIUserApiRequest::createUsersWithListInputError(QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIUserApiRequest::deleteUserError(QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIUserApiRequest::getUserByNameError(OAIUser res, QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIUserApiRequest::loginUserError(QString res, QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIUserApiRequest::logoutUserError(QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} +void OAIUserApiRequest::updateUserError(QNetworkReply::NetworkError error_type, QString& error_str){ + Q_UNUSED(error_type); + Q_UNUSED(error_str); + socket->setStatusCode(QHttpEngine::Socket::NotFound); + if(socket->isOpen()){ + socket->writeHeaders(); + socket->close(); + } +} + + + + +} diff --git a/samples/server/petstore/cpp-qt5-server/server/src/requests/OAIUserApiRequest.h b/samples/server/petstore/cpp-qt5-server/server/src/requests/OAIUserApiRequest.h new file mode 100644 index 0000000000..492b236286 --- /dev/null +++ b/samples/server/petstore/cpp-qt5-server/server/src/requests/OAIUserApiRequest.h @@ -0,0 +1,89 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +#ifndef _OAI_OAIUserApiRequest_H_ +#define _OAI_OAIUserApiRequest_H_ + +#include +#include +#include +#include + +#include +#include "OAIUser.h" +#include +#include +#include "OAIUserApiHandler.h" + +namespace OpenAPI { + +class OAIUserApiRequest : public QObject +{ + Q_OBJECT + +public: + OAIUserApiRequest(QHttpEngine::Socket *s, OAIUserApiHandler* handler); + virtual ~OAIUserApiRequest(); + + void createUserRequest(); + void createUsersWithArrayInputRequest(); + void createUsersWithListInputRequest(); + void deleteUserRequest(QString username); + void getUserByNameRequest(QString username); + void loginUserRequest(); + void logoutUserRequest(); + void updateUserRequest(QString username); + + + void createUserResponse(); + void createUsersWithArrayInputResponse(); + void createUsersWithListInputResponse(); + void deleteUserResponse(); + void getUserByNameResponse(OAIUser res); + void loginUserResponse(QString res); + void logoutUserResponse(); + void updateUserResponse(); + + + void createUserError(QNetworkReply::NetworkError error_type, QString& error_str); + void createUsersWithArrayInputError(QNetworkReply::NetworkError error_type, QString& error_str); + void createUsersWithListInputError(QNetworkReply::NetworkError error_type, QString& error_str); + void deleteUserError(QNetworkReply::NetworkError error_type, QString& error_str); + void getUserByNameError(OAIUser res, QNetworkReply::NetworkError error_type, QString& error_str); + void loginUserError(QString res, QNetworkReply::NetworkError error_type, QString& error_str); + void logoutUserError(QNetworkReply::NetworkError error_type, QString& error_str); + void updateUserError(QNetworkReply::NetworkError error_type, QString& error_str); + + + QMap getDefaultHeaders(); + QHttpEngine::Socket* getRawSocket(); + +signals: + void createUser(OAIUser oai_user); + void createUsersWithArrayInput(QList oai_user); + void createUsersWithListInput(QList oai_user); + void deleteUser(QString username); + void getUserByName(QString username); + void loginUser(QString username, QString password); + void logoutUser(); + void updateUser(QString username, OAIUser oai_user); + + +private: + QMap defaultHeaders; + QHttpEngine::Socket *socket; + OAIUserApiHandler *handler; +}; + +} + +#endif // _OAI_OAIUserApiRequest_H_ From c9b934147ad7bbf0c1871fe69efc93f95faa5572 Mon Sep 17 00:00:00 2001 From: Akihito Nakano Date: Thu, 26 Jul 2018 22:26:01 +0900 Subject: [PATCH 4/6] [PHP] Escape media type (#615) * Move escapeMediaType() to AbstractPhpCodegen * Escape media type * Update samples - bin/php-lumen-petstore-server.sh * Refactoring: remove unused 'import' --- .../codegen/languages/AbstractPhpCodegen.java | 20 +++++++++++++---- .../languages/PhpLumenServerCodegen.java | 3 ++- .../languages/PhpSlimServerCodegen.java | 12 +--------- .../codegen/php/AbstractPhpCodegenTest.java | 22 +++++++++++++++++++ .../php-lumen/lib/app/Http/routes.php | 8 +++---- 5 files changed, 45 insertions(+), 20 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java index 83afd83730..f6b2959fd2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPhpCodegen.java @@ -23,13 +23,9 @@ import org.openapitools.codegen.CodegenConstants; import org.openapitools.codegen.CodegenOperation; import org.openapitools.codegen.CodegenParameter; import org.openapitools.codegen.CodegenProperty; -import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.DefaultCodegen; -import org.openapitools.codegen.SupportingFile; import org.openapitools.codegen.utils.ModelUtils; -import io.swagger.v3.oas.models.OpenAPI; -import io.swagger.v3.oas.models.Operation; import io.swagger.v3.oas.models.media.*; import java.io.File; @@ -702,6 +698,22 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg return super.escapeText(input).trim(); } + public void escapeMediaType(List operationList) { + for (CodegenOperation op : operationList) { + if (!op.hasProduces) { + continue; + } + + List> c = op.produces; + for (Map mediaType : c) { + // "*/*" causes a syntax error + if ("*/*".equals(mediaType.get("mediaType"))) { + mediaType.put("mediaType", "*_/_*"); + } + } + } + } + protected String extractSimpleName(String phpClassName) { if (phpClassName == null) { return null; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLumenServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLumenServerCodegen.java index 233547f186..0a96acef6e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLumenServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpLumenServerCodegen.java @@ -18,7 +18,6 @@ package org.openapitools.codegen.languages; import org.openapitools.codegen.*; -import io.swagger.models.properties.*; import java.util.*; import java.io.File; @@ -133,6 +132,8 @@ public class PhpLumenServerCodegen extends AbstractPhpCodegen { } }); + escapeMediaType(operations); + return objs; } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlimServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlimServerCodegen.java index 514b619b21..e7e49afc7f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlimServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSlimServerCodegen.java @@ -124,17 +124,7 @@ public class PhpSlimServerCodegen extends AbstractPhpCodegen { public Map postProcessOperationsWithModels(Map objs, List allModels) { Map operations = (Map) objs.get("operations"); List operationList = (List) operations.get("operation"); - for (CodegenOperation op : operationList) { - if (op.hasProduces) { - // need to escape */* values because they breakes current mustaches - List> c = op.produces; - for (Map mediaType : c) { - if ("*/*".equals(mediaType.get("mediaType"))) { - mediaType.put("mediaType", "*_/_*"); - } - } - } - } + escapeMediaType(operationList); return objs; } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/AbstractPhpCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/AbstractPhpCodegenTest.java index 3aa56146ae..e1a07d97fd 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/AbstractPhpCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/AbstractPhpCodegenTest.java @@ -17,6 +17,7 @@ package org.openapitools.codegen.php; +import org.openapitools.codegen.CodegenOperation; import org.testng.Assert; import org.testng.annotations.Test; @@ -24,6 +25,9 @@ import org.openapitools.codegen.CodegenConstants; import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.languages.AbstractPhpCodegen; +import java.util.Arrays; +import java.util.HashMap; + public class AbstractPhpCodegenTest { @Test @@ -79,6 +83,24 @@ public class AbstractPhpCodegenTest { Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.INVOKER_PACKAGE), "PHPinvoker"); } + @Test + public void testEscapeMediaType() throws Exception { + HashMap all = new HashMap<>(); + all.put("mediaType", "*/*"); + HashMap applicationJson = new HashMap<>(); + applicationJson.put("mediaType", "application/json"); + + CodegenOperation codegenOperation = new CodegenOperation(); + codegenOperation.hasProduces = true; + codegenOperation.produces = Arrays.asList(all, applicationJson); + + final AbstractPhpCodegen codegen = new P_AbstractPhpCodegen(); + codegen.escapeMediaType(Arrays.asList(codegenOperation)); + + Assert.assertEquals(codegenOperation.produces.get(0).get("mediaType"), "*_/_*"); + Assert.assertEquals(codegenOperation.produces.get(1).get("mediaType"), "application/json"); + } + private static class P_AbstractPhpCodegen extends AbstractPhpCodegen { @Override public CodegenType getTag() { diff --git a/samples/server/petstore/php-lumen/lib/app/Http/routes.php b/samples/server/petstore/php-lumen/lib/app/Http/routes.php index 52945b138f..078941b98b 100644 --- a/samples/server/petstore/php-lumen/lib/app/Http/routes.php +++ b/samples/server/petstore/php-lumen/lib/app/Http/routes.php @@ -81,28 +81,28 @@ $app->get('/v2/fake/jsonFormData', 'FakeApi@testJsonFormData'); * post fakeOuterBooleanSerialize * Summary: * Notes: Test serialization of outer boolean types - * Output-Formats: [*/*] + * Output-Formats: [*_/_*] */ $app->post('/v2/fake/outer/boolean', 'FakeApi@fakeOuterBooleanSerialize'); /** * post fakeOuterCompositeSerialize * Summary: * Notes: Test serialization of object with outer number type - * Output-Formats: [*/*] + * Output-Formats: [*_/_*] */ $app->post('/v2/fake/outer/composite', 'FakeApi@fakeOuterCompositeSerialize'); /** * post fakeOuterNumberSerialize * Summary: * Notes: Test serialization of outer number types - * Output-Formats: [*/*] + * Output-Formats: [*_/_*] */ $app->post('/v2/fake/outer/number', 'FakeApi@fakeOuterNumberSerialize'); /** * post fakeOuterStringSerialize * Summary: * Notes: Test serialization of outer string types - * Output-Formats: [*/*] + * Output-Formats: [*_/_*] */ $app->post('/v2/fake/outer/string', 'FakeApi@fakeOuterStringSerialize'); /** From 1d72edddf6c1656308034efa61cffbdc9b7adb22 Mon Sep 17 00:00:00 2001 From: Benjamin Gill Date: Thu, 26 Jul 2018 14:46:59 +0100 Subject: [PATCH 5/6] Avoid HTML escaping of rust-server output (#645) --- .../main/resources/rust-server/Cargo.mustache | 6 +- .../resources/rust-server/README.mustache | 28 +++--- .../resources/rust-server/client-mod.mustache | 60 ++++++------ .../rust-server/example-client.mustache | 20 ++-- .../rust-server/example-server.mustache | 10 +- .../rust-server/example-server_lib.mustache | 8 +- .../example-server_server.mustache | 12 +-- .../main/resources/rust-server/lib.mustache | 16 +-- .../resources/rust-server/mimetypes.mustache | 12 +-- .../resources/rust-server/models.mustache | 98 +++++++++---------- .../rust-server/server-auth.mustache | 2 +- .../resources/rust-server/server-mod.mustache | 94 +++++++++--------- 12 files changed, 183 insertions(+), 183 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/rust-server/Cargo.mustache b/modules/openapi-generator/src/main/resources/rust-server/Cargo.mustache index 7f3190a4c7..78061ff646 100644 --- a/modules/openapi-generator/src/main/resources/rust-server/Cargo.mustache +++ b/modules/openapi-generator/src/main/resources/rust-server/Cargo.mustache @@ -1,7 +1,7 @@ [package] -name = "{{packageName}}" -version = "{{appVersion}}" -authors = [{{#infoEmail}}"{{infoEmail}}"{{/infoEmail}}] +name = "{{{packageName}}}" +version = "{{{appVersion}}}" +authors = [{{#infoEmail}}"{{{infoEmail}}}"{{/infoEmail}}] {{#appDescription}} description = "{{{appDescription}}}" {{/appDescription}} diff --git a/modules/openapi-generator/src/main/resources/rust-server/README.mustache b/modules/openapi-generator/src/main/resources/rust-server/README.mustache index e65b06491c..1ea03ba209 100644 --- a/modules/openapi-generator/src/main/resources/rust-server/README.mustache +++ b/modules/openapi-generator/src/main/resources/rust-server/README.mustache @@ -1,4 +1,4 @@ -# Rust API for {{packageName}} +# Rust API for {{{packageName}}} {{#appDescription}} {{{appDescription}}} @@ -14,25 +14,25 @@ To see how to make this your own, look here: [README]((https://openapi-generator.tech)) -- API version: {{appVersion}} +- API version: {{{appVersion}}} {{^hideGenerationTimestamp}} -- Build date: {{generatedDate}} +- Build date: {{{generatedDate}}} {{/hideGenerationTimestamp}} {{#infoUrl}} For more information, please visit [{{{infoUrl}}}]({{{infoUrl}}}) {{/infoUrl}} -This autogenerated project defines an API crate `{{packageName}}` which contains: +This autogenerated project defines an API crate `{{{packageName}}}` which contains: * An `Api` trait defining the API in Rust. * Data types representing the underlying data model. * A `Client` type which implements `Api` and issues HTTP requests for each operation. * A router which accepts HTTP requests and invokes the appropriate `Api` method for each operation. -It also contains an example server and client which make use of `{{packageName}}`: -* The example server starts up a web server using the `{{packageName}}` router, +It also contains an example server and client which make use of `{{{packageName}}}`: +* The example server starts up a web server using the `{{{packageName}}}` router, and supplies a trivial implementation of `Api` which returns failure for every operation. * The example client provides a CLI which lets you invoke any single operation on the - `{{packageName}}` client by passing appropriate arguments on the command line. + `{{{packageName}}}` client by passing appropriate arguments on the command line. You can use the example server and client as a basis for your own code. See below for [more detail on implementing a server](#writing-a-server). @@ -63,7 +63,7 @@ cargo run --example server To run a client, follow one of the following simple steps: ```{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}} -cargo run --example client {{operationId}}{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} +cargo run --example client {{{operationId}}}{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} ``` ### HTTPS @@ -82,17 +82,17 @@ This will use the keys/certificates from the examples directory. Note that the s The server example is designed to form the basis for implementing your own server. Simply follow these steps. * Set up a new Rust project, e.g., with `cargo init --bin`. -* Insert `{{packageName}}` into the `members` array under [workspace] in the root `Cargo.toml`, e.g., `members = [ "{{packageName}}" ]`. -* Add `{{packageName}} = {version = "{{appVersion}}", path = "{{packageName}}"}` under `[dependencies]` in the root `Cargo.toml`. -* Copy the `[dependencies]` and `[dev-dependencies]` from `{{packageName}}/Cargo.toml` into the root `Cargo.toml`'s `[dependencies]` section. +* Insert `{{{packageName}}}` into the `members` array under [workspace] in the root `Cargo.toml`, e.g., `members = [ "{{{packageName}}}" ]`. +* Add `{{{packageName}}} = {version = "{{{appVersion}}}", path = "{{{packageName}}}"}` under `[dependencies]` in the root `Cargo.toml`. +* Copy the `[dependencies]` and `[dev-dependencies]` from `{{{packageName}}}/Cargo.toml` into the root `Cargo.toml`'s `[dependencies]` section. * Copy all of the `[dev-dependencies]`, but only the `[dependencies]` that are required by the example server. These should be clearly indicated by comments. * Remove `"optional = true"` from each of these lines if present. Each autogenerated API will contain an implementation stub and main entry point, which should be copied into your project the first time: ``` -cp {{packageName}}/examples/server.rs src/main.rs -cp {{packageName}}/examples/server_lib/mod.rs src/lib.rs -cp {{packageName}}/examples/server_lib/server.rs src/server.rs +cp {{{packageName}}}/examples/server.rs src/main.rs +cp {{{packageName}}}/examples/server_lib/mod.rs src/lib.rs +cp {{{packageName}}}/examples/server_lib/server.rs src/server.rs ``` Now diff --git a/modules/openapi-generator/src/main/resources/rust-server/client-mod.mustache b/modules/openapi-generator/src/main/resources/rust-server/client-mod.mustache index 5326545bf5..21b1b469f8 100644 --- a/modules/openapi-generator/src/main/resources/rust-server/client-mod.mustache +++ b/modules/openapi-generator/src/main/resources/rust-server/client-mod.mustache @@ -39,7 +39,7 @@ use swagger; use swagger::{ApiError, XSpanId, XSpanIdString, Has, AuthData}; use {Api{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}, - {{operationId}}Response{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} + {{{operationId}}}Response{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} }; use models; @@ -237,17 +237,17 @@ impl Api for Client where F: Future + 'static, C: Has {{#hasAuthMethods}}+ Has>{{/hasAuthMethods}}{ {{#apiInfo}}{{#apis}}{{#operations}}{{#operation}} - fn {{#vendorExtensions}}{{operation_id}}{{/vendorExtensions}}(&self{{#allParams}}, param_{{paramName}}: {{^required}}Option<{{/required}}{{#isListContainer}}&{{/isListContainer}}{{{dataType}}}{{^required}}>{{/required}}{{/allParams}}, context: &C) -> Box> { + fn {{#vendorExtensions}}{{{operation_id}}}{{/vendorExtensions}}(&self{{#allParams}}, param_{{{paramName}}}: {{^required}}Option<{{/required}}{{#isListContainer}}&{{/isListContainer}}{{{dataType}}}{{^required}}>{{/required}}{{/allParams}}, context: &C) -> Box> { {{#queryParams}}{{#-first}} // Query parameters -{{/-first}}{{#required}} let query_{{paramName}} = format!("{{baseName}}={{=<% %>=}}{<% paramName %>}<%={{ }}=%>&", {{paramName}}=param_{{paramName}}{{#isListContainer}}.join(","){{/isListContainer}}{{^isListContainer}}.to_string(){{/isListContainer}}); -{{/required}}{{^required}} let query_{{paramName}} = param_{{paramName}}.map_or_else(String::new, |query| format!("{{baseName}}={{=<% %>=}}{<% paramName %>}<%={{ }}=%>&", {{paramName}}=query{{#isListContainer}}.join(","){{/isListContainer}}{{^isListContainer}}.to_string(){{/isListContainer}})); +{{/-first}}{{#required}} let query_{{{paramName}}} = format!("{{{baseName}}}={{=<% %>=}}{<% paramName %>}<%={{ }}=%>&", {{{paramName}}}=param_{{{paramName}}}{{#isListContainer}}.join(","){{/isListContainer}}{{^isListContainer}}.to_string(){{/isListContainer}}); +{{/required}}{{^required}} let query_{{{paramName}}} = param_{{{paramName}}}.map_or_else(String::new, |query| format!("{{{baseName}}}={{=<% %>=}}{<% paramName %>}<%={{ }}=%>&", {{{paramName}}}=query{{#isListContainer}}.join(","){{/isListContainer}}{{^isListContainer}}.to_string(){{/isListContainer}})); {{/required}}{{/queryParams}} let uri = format!( - "{}{{basePathWithoutHost}}{{path}}{{#queryParams}}{{#-first}}?{{/-first}}{{=<% %>=}}{<% paramName %>}<%={{ }}=%>{{/queryParams}}", - self.base_path{{#pathParams}}, {{baseName}}=utf8_percent_encode(¶m_{{paramName}}.to_string(), PATH_SEGMENT_ENCODE_SET){{/pathParams}}{{#queryParams}}, - {{paramName}}=utf8_percent_encode(&query_{{paramName}}, QUERY_ENCODE_SET){{/queryParams}} + "{}{{{basePathWithoutHost}}}{{path}}{{#queryParams}}{{#-first}}?{{/-first}}{{=<% %>=}}{<% paramName %>}<%={{ }}=%>{{/queryParams}}", + self.base_path{{#pathParams}}, {{{baseName}}}=utf8_percent_encode(¶m_{{{paramName}}}.to_string(), PATH_SEGMENT_ENCODE_SET){{/pathParams}}{{#queryParams}}, + {{{paramName}}}=utf8_percent_encode(&query_{{{paramName}}}, QUERY_ENCODE_SET){{/queryParams}} ); let uri = match Uri::from_str(&uri) { @@ -255,30 +255,30 @@ impl Api for Client where Err(err) => return Box::new(futures::done(Err(ApiError(format!("Unable to build URI: {}", err))))), }; - let mut request = hyper::Request::new(hyper::Method::{{#vendorExtensions}}{{HttpMethod}}{{/vendorExtensions}}, uri); + let mut request = hyper::Request::new(hyper::Method::{{#vendorExtensions}}{{{HttpMethod}}}{{/vendorExtensions}}, uri); {{#vendorExtensions}}{{#formParams}}{{#-first}} let params = &[{{/-first}} - ("{{baseName}}", {{#vendorExtensions}}{{#required}}Some({{#isString}}param_{{paramName}}{{/isString}}{{^isString}}format!("{:?}", param_{{paramName}}){{/isString}}){{/required}}{{^required}}{{#isString}}param_{{paramName}}{{/isString}}{{^isString}}param_{{paramName}}.map(|param| format!("{:?}", param)){{/isString}}{{/required}}),{{/vendorExtensions}}{{#-last}} + ("{{{baseName}}}", {{#vendorExtensions}}{{#required}}Some({{#isString}}param_{{{paramName}}}{{/isString}}{{^isString}}format!("{:?}", param_{{{paramName}}}){{/isString}}){{/required}}{{^required}}{{#isString}}param_{{{paramName}}}{{/isString}}{{^isString}}param_{{{paramName}}}.map(|param| format!("{:?}", param)){{/isString}}{{/required}}),{{/vendorExtensions}}{{#-last}} ]; let body = serde_urlencoded::to_string(params).expect("impossible to fail to serialize"); - request.headers_mut().set(ContentType(mimetypes::requests::{{#vendorExtensions}}{{uppercase_operation_id}}{{/vendorExtensions}}.clone())); + request.headers_mut().set(ContentType(mimetypes::requests::{{#vendorExtensions}}{{{uppercase_operation_id}}}{{/vendorExtensions}}.clone())); request.set_body(body.into_bytes());{{/-last}}{{/formParams}}{{/vendorExtensions}}{{#bodyParam}}{{#-first}} // Body parameter -{{/-first}}{{#vendorExtensions}}{{#required}}{{#consumesPlainText}} let body = param_{{paramName}};{{/consumesPlainText}}{{#consumesXml}} -{{^has_namespace}} let body = serde_xml_rs::to_string(¶m_{{paramName}}).expect("impossible to fail to serialize");{{/has_namespace}}{{#has_namespace}} +{{/-first}}{{#vendorExtensions}}{{#required}}{{#consumesPlainText}} let body = param_{{{paramName}}};{{/consumesPlainText}}{{#consumesXml}} +{{^has_namespace}} let body = serde_xml_rs::to_string(¶m_{{{paramName}}}).expect("impossible to fail to serialize");{{/has_namespace}}{{#has_namespace}} let mut namespaces = BTreeMap::new(); // An empty string is used to indicate a global namespace in xmltree. - namespaces.insert("".to_string(), models::namespaces::{{uppercase_data_type}}.clone()); - let body = serde_xml_rs::to_string_with_namespaces(¶m_{{paramName}}, namespaces).expect("impossible to fail to serialize");{{/has_namespace}}{{/consumesXml}}{{#consumesJson}} - let body = serde_json::to_string(¶m_{{paramName}}).expect("impossible to fail to serialize");{{/consumesJson}} -{{/required}}{{^required}}{{#consumesPlainText}} let body = param_{{paramName}}; -{{/consumesPlainText}}{{^consumesPlainText}} let body = param_{{paramName}}.map(|ref body| { + namespaces.insert("".to_string(), models::namespaces::{{{uppercase_data_type}}}.clone()); + let body = serde_xml_rs::to_string_with_namespaces(¶m_{{{paramName}}}, namespaces).expect("impossible to fail to serialize");{{/has_namespace}}{{/consumesXml}}{{#consumesJson}} + let body = serde_json::to_string(¶m_{{{paramName}}}).expect("impossible to fail to serialize");{{/consumesJson}} +{{/required}}{{^required}}{{#consumesPlainText}} let body = param_{{{paramName}}}; +{{/consumesPlainText}}{{^consumesPlainText}} let body = param_{{{paramName}}}.map(|ref body| { {{#consumesXml}} {{^has_namespace}} serde_xml_rs::to_string(body).expect("impossible to fail to serialize"){{/has_namespace}}{{#has_namespace}} let mut namespaces = BTreeMap::new(); // An empty string is used to indicate a global namespace in xmltree. - namespaces.insert("".to_string(), models::namespaces::{{uppercase_data_type}}.clone()); + namespaces.insert("".to_string(), models::namespaces::{{{uppercase_data_type}}}.clone()); serde_xml_rs::to_string_with_namespaces(body, namespaces).expect("impossible to fail to serialize"){{/has_namespace}}{{/consumesXml}}{{#consumesJson}} serde_json::to_string(body).expect("impossible to fail to serialize"){{/consumesJson}} });{{/consumesPlainText}}{{/required}}{{/vendorExtensions}}{{/bodyParam}} @@ -287,7 +287,7 @@ impl Api for Client where {{/required}} request.set_body(body.into_bytes()); {{^required}} }{{/required}} - request.headers_mut().set(ContentType(mimetypes::requests::{{#vendorExtensions}}{{uppercase_operation_id}}{{/vendorExtensions}}.clone())); + request.headers_mut().set(ContentType(mimetypes::requests::{{#vendorExtensions}}{{{uppercase_operation_id}}}{{/vendorExtensions}}.clone())); {{/bodyParam}} request.headers_mut().set(XSpanId((context as &Has).get().0.clone())); {{#authMethods}}{{#isBasic}} (context as &Has>).get().as_ref().map(|auth_data| { @@ -298,10 +298,10 @@ impl Api for Client where } });{{/isBasic}}{{/authMethods}}{{#headerParams}}{{#-first}} // Header parameters -{{/-first}}{{^isMapContainer}} header! { (Request{{vendorExtensions.typeName}}, "{{baseName}}") => {{#isListContainer}}({{{baseType}}})*{{/isListContainer}}{{^isListContainer}}[{{{dataType}}}]{{/isListContainer}} } -{{#required}} request.headers_mut().set(Request{{vendorExtensions.typeName}}(param_{{paramName}}{{#isListContainer}}.clone(){{/isListContainer}})); -{{/required}}{{^required}} param_{{paramName}}.map(|header| request.headers_mut().set(Request{{vendorExtensions.typeName}}(header{{#isListContainer}}.clone(){{/isListContainer}}))); -{{/required}}{{/isMapContainer}}{{#isMapContainer}} let param_{{paramName}}: Option<{{{dataType}}}> = None; +{{/-first}}{{^isMapContainer}} header! { (Request{{vendorExtensions.typeName}}, "{{{baseName}}}") => {{#isListContainer}}({{{baseType}}})*{{/isListContainer}}{{^isListContainer}}[{{{dataType}}}]{{/isListContainer}} } +{{#required}} request.headers_mut().set(Request{{vendorExtensions.typeName}}(param_{{{paramName}}}{{#isListContainer}}.clone(){{/isListContainer}})); +{{/required}}{{^required}} param_{{{paramName}}}.map(|header| request.headers_mut().set(Request{{vendorExtensions.typeName}}(header{{#isListContainer}}.clone(){{/isListContainer}}))); +{{/required}}{{/isMapContainer}}{{#isMapContainer}} let param_{{{paramName}}}: Option<{{{dataType}}}> = None; {{/isMapContainer}}{{/headerParams}} Box::new(self.client_service.call(request) @@ -309,11 +309,11 @@ impl Api for Client where .and_then(|mut response| { match response.status().as_u16() { {{#responses}} - {{code}} => { -{{#headers}} header! { (Response{{nameInCamelCase}}, "{{baseName}}") => [{{{datatype}}}] } - let response_{{name}} = match response.headers().get::() { - Some(response_{{name}}) => response_{{name}}.0.clone(), - None => return Box::new(future::err(ApiError(String::from("Required response header {{baseName}} for response {{code}} was not found.")))) as Box>, + {{{code}}} => { +{{#headers}} header! { (Response{{{nameInCamelCase}}}, "{{{baseName}}}") => [{{{datatype}}}] } + let response_{{{name}}} = match response.headers().get::() { + Some(response_{{{name}}}) => response_{{{name}}}.0.clone(), + None => return Box::new(future::err(ApiError(String::from("Required response header {{{baseName}}} for response {{{code}}} was not found.")))) as Box>, }; {{/headers}} let body = response.body(); @@ -338,11 +338,11 @@ impl Api for Client where {{/producesPlainText}}{{/vendorExtensions}} )) .map(move |body| - {{operationId}}Response::{{#vendorExtensions}}{{x-responseId}}{{/vendorExtensions}}{{^headers}}(body){{/headers}}{{#headers}}{{#-first}}{ body: body, {{/-first}}{{name}}: response_{{name}}{{^-last}}, {{/-last}}{{#-last}} }{{/-last}}{{/headers}} + {{{operationId}}}Response::{{#vendorExtensions}}{{x-responseId}}{{/vendorExtensions}}{{^headers}}(body){{/headers}}{{#headers}}{{#-first}}{ body: body, {{/-first}}{{{name}}}: response_{{{name}}}{{^-last}}, {{/-last}}{{#-last}} }{{/-last}}{{/headers}} ) {{/dataType}}{{^dataType}} future::ok( - {{operationId}}Response::{{#vendorExtensions}}{{x-responseId}}{{/vendorExtensions}}{{#headers}}{{#-first}}{ {{/-first}}{{^-first}}, {{/-first}}{{name}}: response_{{name}}{{#-last}} }{{/-last}}{{/headers}} + {{{operationId}}}Response::{{#vendorExtensions}}{{x-responseId}}{{/vendorExtensions}}{{#headers}}{{#-first}}{ {{/-first}}{{^-first}}, {{/-first}}{{{name}}}: response_{{{name}}}{{#-last}} }{{/-last}}{{/headers}} ) {{/dataType}} ) as Box> diff --git a/modules/openapi-generator/src/main/resources/rust-server/example-client.mustache b/modules/openapi-generator/src/main/resources/rust-server/example-client.mustache index 0620589c60..3872938946 100644 --- a/modules/openapi-generator/src/main/resources/rust-server/example-client.mustache +++ b/modules/openapi-generator/src/main/resources/rust-server/example-client.mustache @@ -1,6 +1,6 @@ #![allow(missing_docs, unused_variables, trivial_casts)] -extern crate {{externCrateName}}; +extern crate {{{externCrateName}}}; #[allow(unused_extern_crates)] extern crate futures; #[allow(unused_extern_crates)] @@ -17,9 +17,9 @@ use swagger::{ContextBuilder, EmptyContext, XSpanIdString, Has, Push, AuthData}; use futures::{Future, future, Stream, stream}; use tokio_core::reactor; #[allow(unused_imports)] -use {{externCrateName}}::{ApiNoContext, ContextWrapperExt, +use {{{externCrateName}}}::{ApiNoContext, ContextWrapperExt, ApiError{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}, - {{operationId}}Response{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} + {{{operationId}}}Response{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} }; use clap::{App, Arg}; @@ -28,7 +28,7 @@ fn main() { .arg(Arg::with_name("operation") .help("Sets the operation to run") .possible_values(&[ -{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}{{#vendorExtensions}}{{^noClientExample}} "{{operationId}}", +{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}{{#vendorExtensions}}{{^noClientExample}} "{{{operationId}}}", {{/noClientExample}}{{/vendorExtensions}}{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}}]) .required(true) .index(1)) @@ -38,12 +38,12 @@ fn main() { .arg(Arg::with_name("host") .long("host") .takes_value(true) - .default_value("{{serverHost}}") + .default_value("{{{serverHost}}}") .help("Hostname to contact")) .arg(Arg::with_name("port") .long("port") .takes_value(true) - .default_value("{{serverPort}}") + .default_value("{{{serverPort}}}") .help("Port to contact")) .get_matches(); @@ -55,11 +55,11 @@ fn main() { matches.value_of("port").unwrap()); let client = if matches.is_present("https") { // Using Simple HTTPS - {{externCrateName}}::Client::try_new_https(core.handle(), &base_url, "examples/ca.pem") + {{{externCrateName}}}::Client::try_new_https(core.handle(), &base_url, "examples/ca.pem") .expect("Failed to create HTTPS client") } else { // Using HTTP - {{externCrateName}}::Client::try_new_http(core.handle(), &base_url) + {{{externCrateName}}}::Client::try_new_http(core.handle(), &base_url) .expect("Failed to create HTTP client") }; @@ -70,8 +70,8 @@ fn main() { match matches.value_of("operation") { {{#apiInfo}}{{#apis}}{{#operations}}{{#operation}} {{#vendorExtensions}}{{#noClientExample}}// Disabled because there's no example. - // {{/noClientExample}}Some("{{operationId}}") => { - {{#noClientExample}}// {{/noClientExample}} let result = core.run(client.{{operation_id}}{{/vendorExtensions}}({{#allParams}}{{^-first}}, {{/-first}}{{#vendorExtensions}}{{{example}}}{{/vendorExtensions}}{{/allParams}})); + // {{/noClientExample}}Some("{{{operationId}}}") => { + {{#noClientExample}}// {{/noClientExample}} let result = core.run(client.{{{operation_id}}}{{/vendorExtensions}}({{#allParams}}{{^-first}}, {{/-first}}{{#vendorExtensions}}{{{example}}}{{/vendorExtensions}}{{/allParams}})); {{#vendorExtensions}}{{#noClientExample}}// {{/noClientExample}}{{/vendorExtensions}} println!("{:?} (X-Span-ID: {:?})", result, (client.context() as &Has).get().clone()); {{#vendorExtensions}}{{#noClientExample}}// {{/noClientExample}}{{/vendorExtensions}} }, {{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} diff --git a/modules/openapi-generator/src/main/resources/rust-server/example-server.mustache b/modules/openapi-generator/src/main/resources/rust-server/example-server.mustache index 0dbc3cacca..6c0f4ce86b 100644 --- a/modules/openapi-generator/src/main/resources/rust-server/example-server.mustache +++ b/modules/openapi-generator/src/main/resources/rust-server/example-server.mustache @@ -1,10 +1,10 @@ -//! Main binary entry point for {{externCrateName}} implementation. +//! Main binary entry point for {{{externCrateName}}} implementation. #![allow(missing_docs)] // Imports required by this file. // extern crate ; -extern crate {{externCrateName}}; +extern crate {{{externCrateName}}}; extern crate swagger; extern crate hyper; extern crate openssl; @@ -14,7 +14,7 @@ extern crate tokio_tls; extern crate clap; // Imports required by server library. -// extern crate {{externCrateName}}; +// extern crate {{{externCrateName}}}; // extern crate swagger; extern crate futures; extern crate chrono; @@ -55,14 +55,14 @@ fn main() { .get_matches(); let service_fn = - {{externCrateName}}::server::auth::NewService::<_, EmptyContext>::new( + {{{externCrateName}}}::server::auth::NewService::<_, EmptyContext>::new( AllowAllAuthenticator::new( server_lib::NewService::new(), "cosmo" ) ); - let addr = "127.0.0.1:{{serverPort}}".parse().expect("Failed to parse bind address"); + let addr = "127.0.0.1:{{{serverPort}}}".parse().expect("Failed to parse bind address"); if matches.is_present("https") { let ssl = ssl().expect("Failed to load SSL keys"); let builder: native_tls::TlsAcceptorBuilder = native_tls::backend::openssl::TlsAcceptorBuilderExt::from_openssl(ssl); diff --git a/modules/openapi-generator/src/main/resources/rust-server/example-server_lib.mustache b/modules/openapi-generator/src/main/resources/rust-server/example-server_lib.mustache index 761d3e6b07..036d1a2911 100644 --- a/modules/openapi-generator/src/main/resources/rust-server/example-server_lib.mustache +++ b/modules/openapi-generator/src/main/resources/rust-server/example-server_lib.mustache @@ -1,4 +1,4 @@ -//! Main library entry point for {{externCrateName}} implementation. +//! Main library entry point for {{{externCrateName}}} implementation. mod server; @@ -11,7 +11,7 @@ use std::io; use std::clone::Clone; use std::marker::PhantomData; use hyper; -use {{externCrateName}}; +use {{{externCrateName}}}; use swagger::{Has, XSpanIdString}; use swagger::auth::Authorization; @@ -29,10 +29,10 @@ impl hyper::server::NewService for NewService where C: Has type Request = (hyper::Request, C); type Response = hyper::Response; type Error = hyper::Error; - type Instance = {{externCrateName}}::server::Service, C>; + type Instance = {{{externCrateName}}}::server::Service, C>; /// Instantiate a new server. fn new_service(&self) -> io::Result { - Ok({{externCrateName}}::server::Service::new(server::Server::new())) + Ok({{{externCrateName}}}::server::Service::new(server::Server::new())) } } diff --git a/modules/openapi-generator/src/main/resources/rust-server/example-server_server.mustache b/modules/openapi-generator/src/main/resources/rust-server/example-server_server.mustache index ec7bfcab48..3245228d9d 100644 --- a/modules/openapi-generator/src/main/resources/rust-server/example-server_server.mustache +++ b/modules/openapi-generator/src/main/resources/rust-server/example-server_server.mustache @@ -1,4 +1,4 @@ -//! Server implementation of {{externCrateName}}. +//! Server implementation of {{{externCrateName}}}. #![allow(unused_imports)] @@ -10,10 +10,10 @@ use std::marker::PhantomData; use swagger; use swagger::{Has, XSpanIdString}; -use {{externCrateName}}::{Api, ApiError{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}, - {{operationId}}Response{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} +use {{{externCrateName}}}::{Api, ApiError{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}, + {{{operationId}}}Response{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} }; -use {{externCrateName}}::models; +use {{{externCrateName}}}::models; #[derive(Copy, Clone)] pub struct Server { @@ -29,9 +29,9 @@ impl Server { impl Api for Server where C: Has{ {{#apiInfo}}{{#apis}}{{#operations}}{{#operation}} {{#summary}} /// {{{summary}}}{{/summary}} - fn {{#vendorExtensions}}{{operation_id}}{{/vendorExtensions}}(&self{{#allParams}}, {{paramName}}: {{^required}}Option<{{/required}}{{#isListContainer}}&{{/isListContainer}}{{{dataType}}}{{^required}}>{{/required}}{{/allParams}}, context: &C) -> Box> { + fn {{#vendorExtensions}}{{{operation_id}}}{{/vendorExtensions}}(&self{{#allParams}}, {{{paramName}}}: {{^required}}Option<{{/required}}{{#isListContainer}}&{{/isListContainer}}{{{dataType}}}{{^required}}>{{/required}}{{/allParams}}, context: &C) -> Box> { let context = context.clone(); - println!("{{#vendorExtensions}}{{operation_id}}{{/vendorExtensions}}({{#allParams}}{{#vendorExtensions}}{{{formatString}}}{{/vendorExtensions}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) - X-Span-ID: {:?}"{{#allParams}}, {{paramName}}{{/allParams}}, context.get().0.clone());{{#allParams}}{{/allParams}} + println!("{{#vendorExtensions}}{{{operation_id}}}{{/vendorExtensions}}({{#allParams}}{{#vendorExtensions}}{{{formatString}}}{{/vendorExtensions}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) - X-Span-ID: {:?}"{{#allParams}}, {{{paramName}}}{{/allParams}}, context.get().0.clone());{{#allParams}}{{/allParams}} Box::new(futures::failed("Generic failure".into())) } {{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} diff --git a/modules/openapi-generator/src/main/resources/rust-server/lib.mustache b/modules/openapi-generator/src/main/resources/rust-server/lib.mustache index 48318f52c6..371962bf6d 100644 --- a/modules/openapi-generator/src/main/resources/rust-server/lib.mustache +++ b/modules/openapi-generator/src/main/resources/rust-server/lib.mustache @@ -32,16 +32,16 @@ mod mimetypes; pub use swagger::{ApiError, ContextWrapper}; -pub const BASE_PATH: &'static str = "{{basePathWithoutHost}}"; -pub const API_VERSION: &'static str = "{{appVersion}}"; +pub const BASE_PATH: &'static str = "{{{basePathWithoutHost}}}"; +pub const API_VERSION: &'static str = "{{{appVersion}}}"; {{#apiInfo}}{{#apis}}{{#operations}}{{#operation}} {{^isResponseFile}} #[derive(Debug, PartialEq)] {{/isResponseFile}} -pub enum {{operationId}}Response { +pub enum {{{operationId}}}Response { {{#responses}} -{{#message}} /// {{message}}{{/message}} +{{#message}} /// {{{message}}}{{/message}} {{#vendorExtensions}}{{{x-responseId}}}{{/vendorExtensions}} {{#dataType}}{{^hasHeaders}}( {{{dataType}}} ) {{/hasHeaders}}{{#hasHeaders}}{{#-first}}{ body: {{{dataType}}}{{/-first}}{{/hasHeaders}}{{/dataType}}{{#dataType}}{{#hasHeaders}}, {{/hasHeaders}}{{/dataType}}{{^dataType}}{{#hasHeaders}} { {{/hasHeaders}}{{/dataType}}{{#headers}}{{^-first}}, {{/-first}}{{{name}}}: {{{datatype}}}{{#-last}} } {{/-last}}{{/headers}}, {{/responses}} } @@ -51,7 +51,7 @@ pub enum {{operationId}}Response { pub trait Api { {{#apiInfo}}{{#apis}}{{#operations}}{{#operation}} {{#summary}} /// {{{summary}}}{{/summary}} - fn {{#vendorExtensions}}{{operation_id}}{{/vendorExtensions}}(&self{{#allParams}}, {{paramName}}: {{^required}}Option<{{/required}}{{#isListContainer}}&{{/isListContainer}}{{{dataType}}}{{^required}}>{{/required}}{{/allParams}}, context: &C) -> Box>; + fn {{#vendorExtensions}}{{{operation_id}}}{{/vendorExtensions}}(&self{{#allParams}}, {{{paramName}}}: {{^required}}Option<{{/required}}{{#isListContainer}}&{{/isListContainer}}{{{dataType}}}{{^required}}>{{/required}}{{/allParams}}, context: &C) -> Box>; {{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} } @@ -59,7 +59,7 @@ pub trait Api { pub trait ApiNoContext { {{#apiInfo}}{{#apis}}{{#operations}}{{#operation}} {{#summary}} /// {{{summary}}}{{/summary}} - fn {{#vendorExtensions}}{{operation_id}}{{/vendorExtensions}}(&self{{#allParams}}, {{paramName}}: {{^required}}Option<{{/required}}{{#isListContainer}}&{{/isListContainer}}{{{dataType}}}{{^required}}>{{/required}}{{/allParams}}) -> Box>; + fn {{#vendorExtensions}}{{{operation_id}}}{{/vendorExtensions}}(&self{{#allParams}}, {{{paramName}}}: {{^required}}Option<{{/required}}{{#isListContainer}}&{{/isListContainer}}{{{dataType}}}{{^required}}>{{/required}}{{/allParams}}) -> Box>; {{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} } @@ -78,8 +78,8 @@ impl<'a, T: Api + Sized, C> ContextWrapperExt<'a, C> for T { impl<'a, T: Api, C> ApiNoContext for ContextWrapper<'a, T, C> { {{#apiInfo}}{{#apis}}{{#operations}}{{#operation}} {{#summary}} /// {{{summary}}}{{/summary}} - fn {{#vendorExtensions}}{{operation_id}}{{/vendorExtensions}}(&self{{#allParams}}, {{paramName}}: {{^required}}Option<{{/required}}{{#isListContainer}}&{{/isListContainer}}{{{dataType}}}{{^required}}>{{/required}}{{/allParams}}) -> Box> { - self.api().{{#vendorExtensions}}{{operation_id}}{{/vendorExtensions}}({{#allParams}}{{paramName}}, {{/allParams}}&self.context()) + fn {{#vendorExtensions}}{{{operation_id}}}{{/vendorExtensions}}(&self{{#allParams}}, {{{paramName}}}: {{^required}}Option<{{/required}}{{#isListContainer}}&{{/isListContainer}}{{{dataType}}}{{^required}}>{{/required}}{{/allParams}}) -> Box> { + self.api().{{#vendorExtensions}}{{{operation_id}}}{{/vendorExtensions}}({{#allParams}}{{{paramName}}}, {{/allParams}}&self.context()) } {{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} } diff --git a/modules/openapi-generator/src/main/resources/rust-server/mimetypes.mustache b/modules/openapi-generator/src/main/resources/rust-server/mimetypes.mustache index eae9743e2d..d0acd71dc0 100644 --- a/modules/openapi-generator/src/main/resources/rust-server/mimetypes.mustache +++ b/modules/openapi-generator/src/main/resources/rust-server/mimetypes.mustache @@ -4,22 +4,22 @@ pub mod responses { use hyper::mime::*; // The macro is called per-operation to beat the recursion limit -{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}{{#responses}}{{#produces}}{{#-first}}{{#dataType}} /// Create Mime objects for the response content types for {{operationId}} +{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}{{#responses}}{{#produces}}{{#-first}}{{#dataType}} /// Create Mime objects for the response content types for {{{operationId}}} lazy_static! { - pub static ref {{#vendorExtensions}}{{uppercase_operation_id}}_{{x-uppercaseResponseId}}{{/vendorExtensions}}: Mime = "{{{mediaType}}}".parse().unwrap(); + pub static ref {{#vendorExtensions}}{{{uppercase_operation_id}}}_{{x-uppercaseResponseId}}{{/vendorExtensions}}: Mime = "{{{mediaType}}}".parse().unwrap(); } {{/dataType}}{{/-first}}{{/produces}}{{/responses}}{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} } pub mod requests { use hyper::mime::*; -{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}{{#bodyParam}} /// Create Mime objects for the request content types for {{operationId}} +{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}{{#bodyParam}} /// Create Mime objects for the request content types for {{{operationId}}} lazy_static! { - pub static ref {{#vendorExtensions}}{{uppercase_operation_id}}{{/vendorExtensions}}: Mime = "{{#consumes}}{{#-first}}{{{mediaType}}}{{/-first}}{{/consumes}}{{^consumes}}application/json{{/consumes}}".parse().unwrap(); + pub static ref {{#vendorExtensions}}{{{uppercase_operation_id}}}{{/vendorExtensions}}: Mime = "{{#consumes}}{{#-first}}{{{mediaType}}}{{/-first}}{{/consumes}}{{^consumes}}application/json{{/consumes}}".parse().unwrap(); } -{{/bodyParam}}{{^bodyParam}}{{#vendorExtensions}}{{#formParams}}{{#-first}} /// Create Mime objects for the request content types for {{operationId}} +{{/bodyParam}}{{^bodyParam}}{{#vendorExtensions}}{{#formParams}}{{#-first}} /// Create Mime objects for the request content types for {{{operationId}}} lazy_static! { - pub static ref {{#vendorExtensions}}{{uppercase_operation_id}}{{/vendorExtensions}}: Mime = "{{#consumes}}{{#-first}}{{{mediaType}}}{{/-first}}{{/consumes}}{{^consumes}}application/x-www-form-urlencoded{{/consumes}}".parse().unwrap(); + pub static ref {{#vendorExtensions}}{{{uppercase_operation_id}}}{{/vendorExtensions}}: Mime = "{{#consumes}}{{#-first}}{{{mediaType}}}{{/-first}}{{/consumes}}{{^consumes}}application/x-www-form-urlencoded{{/consumes}}".parse().unwrap(); } {{/-first}}{{/formParams}}{{/vendorExtensions}}{{/bodyParam}}{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} } diff --git a/modules/openapi-generator/src/main/resources/rust-server/models.mustache b/modules/openapi-generator/src/main/resources/rust-server/models.mustache index 213da2e8cd..5d83eb9bf4 100644 --- a/modules/openapi-generator/src/main/resources/rust-server/models.mustache +++ b/modules/openapi-generator/src/main/resources/rust-server/models.mustache @@ -17,149 +17,149 @@ use swagger; #[allow(non_camel_case_types)] #[repr(C)] #[derive(Debug, Clone, Copy, PartialEq, PartialOrd, Serialize, Deserialize, Eq, Ord)]{{#xmlName}} -#[serde(rename = "{{xmlName}}")]{{/xmlName}} -pub enum {{classname}} { {{#allowableValues}}{{#enumVars}} +#[serde(rename = "{{{xmlName}}}")]{{/xmlName}} +pub enum {{{classname}}} { {{#allowableValues}}{{#enumVars}} #[serde(rename = {{{value}}})] - {{name}},{{/enumVars}}{{/allowableValues}} + {{{name}}},{{/enumVars}}{{/allowableValues}} } -impl ::std::fmt::Display for {{classname}} { +impl ::std::fmt::Display for {{{classname}}} { fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { match *self { {{#allowableValues}}{{#enumVars}} - {{classname}}::{{name}} => write!(f, "{}", {{{value}}}),{{/enumVars}}{{/allowableValues}} + {{{classname}}}::{{{name}}} => write!(f, "{}", {{{value}}}),{{/enumVars}}{{/allowableValues}} } } } -impl ::std::str::FromStr for {{classname}} { +impl ::std::str::FromStr for {{{classname}}} { type Err = (); fn from_str(s: &str) -> Result { match s { -{{#allowableValues}}{{#enumVars}} {{{value}}} => Ok({{classname}}::{{name}}), +{{#allowableValues}}{{#enumVars}} {{{value}}} => Ok({{{classname}}}::{{{name}}}), {{/enumVars}}{{/allowableValues}} _ => Err(()), } } } {{/isEnum}}{{^isEnum}}{{#dataType}}{{! newtype}}#[derive(Debug, Clone, PartialEq, PartialOrd, Serialize, Deserialize)] -{{#xmlName}}#[serde(rename = "{{xmlName}}")]{{/xmlName}} -pub struct {{classname}}({{{dataType}}}); +{{#xmlName}}#[serde(rename = "{{{xmlName}}}")]{{/xmlName}} +pub struct {{{classname}}}({{{dataType}}}); -impl ::std::convert::From<{{dataType}}> for {{classname}} { - fn from(x: {{dataType}}) -> Self { - {{classname}}(x) +impl ::std::convert::From<{{{dataType}}}> for {{{classname}}} { + fn from(x: {{{dataType}}}) -> Self { + {{{classname}}}(x) } } -impl ::std::convert::From<{{classname}}> for {{dataType}} { - fn from(x: {{classname}}) -> Self { +impl ::std::convert::From<{{{classname}}}> for {{{dataType}}} { + fn from(x: {{{classname}}}) -> Self { x.0 } } -impl ::std::ops::Deref for {{classname}} { +impl ::std::ops::Deref for {{{classname}}} { type Target = {{{dataType}}}; fn deref(&self) -> &{{{dataType}}} { &self.0 } } -impl ::std::ops::DerefMut for {{classname}} { +impl ::std::ops::DerefMut for {{{classname}}} { fn deref_mut(&mut self) -> &mut {{{dataType}}} { &mut self.0 } } {{/dataType}}{{^dataType}}{{#arrayModelType}}{{#vendorExtensions}}{{#itemXmlName}}// Utility function for wrapping list elements when serializing xml -fn wrap_in_{{itemXmlName}}(item: &Vec<{{arrayModelType}}>, serializer: S) -> Result +fn wrap_in_{{{itemXmlName}}}(item: &Vec<{{{arrayModelType}}}>, serializer: S) -> Result where S: Serializer, { - serde_xml_rs::wrap_primitives(item, serializer, "{{itemXmlName}}") + serde_xml_rs::wrap_primitives(item, serializer, "{{{itemXmlName}}}") } {{/itemXmlName}}{{/vendorExtensions}}{{! vec}}#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -pub struct {{classname}}(Vec<{{{arrayModelType}}}>); +pub struct {{{classname}}}(Vec<{{{arrayModelType}}}>); -impl ::std::convert::From> for {{classname}} { - fn from(x: Vec<{{arrayModelType}}>) -> Self { - {{classname}}(x) +impl ::std::convert::From> for {{{classname}}} { + fn from(x: Vec<{{{arrayModelType}}}>) -> Self { + {{{classname}}}(x) } } -impl ::std::convert::From<{{classname}}> for Vec<{{arrayModelType}}> { - fn from(x: {{classname}}) -> Self { +impl ::std::convert::From<{{{classname}}}> for Vec<{{{arrayModelType}}}> { + fn from(x: {{{classname}}}) -> Self { x.0 } } -impl ::std::iter::FromIterator<{{arrayModelType}}> for {{classname}} { - fn from_iter>(u: U) -> Self { - {{classname}}(Vec::<{{arrayModelType}}>::from_iter(u)) +impl ::std::iter::FromIterator<{{{arrayModelType}}}> for {{{classname}}} { + fn from_iter>(u: U) -> Self { + {{{classname}}}(Vec::<{{{arrayModelType}}}>::from_iter(u)) } } -impl ::std::iter::IntoIterator for {{classname}} { - type Item = {{arrayModelType}}; - type IntoIter = ::std::vec::IntoIter<{{arrayModelType}}>; +impl ::std::iter::IntoIterator for {{{classname}}} { + type Item = {{{arrayModelType}}}; + type IntoIter = ::std::vec::IntoIter<{{{arrayModelType}}}>; fn into_iter(self) -> Self::IntoIter { self.0.into_iter() } } -impl<'a> ::std::iter::IntoIterator for &'a {{classname}} { - type Item = &'a {{arrayModelType}}; - type IntoIter = ::std::slice::Iter<'a, {{arrayModelType}}>; +impl<'a> ::std::iter::IntoIterator for &'a {{{classname}}} { + type Item = &'a {{{arrayModelType}}}; + type IntoIter = ::std::slice::Iter<'a, {{{arrayModelType}}}>; fn into_iter(self) -> Self::IntoIter { (&self.0).into_iter() } } -impl<'a> ::std::iter::IntoIterator for &'a mut {{classname}} { - type Item = &'a mut {{arrayModelType}}; - type IntoIter = ::std::slice::IterMut<'a, {{arrayModelType}}>; +impl<'a> ::std::iter::IntoIterator for &'a mut {{{classname}}} { + type Item = &'a mut {{{arrayModelType}}}; + type IntoIter = ::std::slice::IterMut<'a, {{{arrayModelType}}}>; fn into_iter(self) -> Self::IntoIter { (&mut self.0).into_iter() } } -impl ::std::ops::Deref for {{classname}} { +impl ::std::ops::Deref for {{{classname}}} { type Target = Vec<{{{arrayModelType}}}>; fn deref(&self) -> &Self::Target { &self.0 } } -impl ::std::ops::DerefMut for {{classname}} { +impl ::std::ops::DerefMut for {{{classname}}} { fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0 } } {{/arrayModelType}}{{^arrayModelType}}{{! general struct}}#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]{{#xmlName}} -#[serde(rename = "{{xmlName}}")]{{/xmlName}} -pub struct {{classname}} { +#[serde(rename = "{{{xmlName}}}")]{{/xmlName}} +pub struct {{{classname}}} { {{#vars}}{{#description}} /// {{{description}}} {{/description}}{{#isEnum}} // Note: inline enums are not fully supported by openapi-generator -{{/isEnum}} #[serde(rename = "{{baseName}}")]{{#vendorExtensions}}{{#itemXmlName}} - #[serde(serialize_with = "wrap_in_{{itemXmlName}}")]{{/itemXmlName}}{{/vendorExtensions}}{{#required}} - pub {{name}}: {{#vendorExtensions}}{{#x-nullable}}swagger::Nullable<{{/x-nullable}}{{/vendorExtensions}}{{{dataType}}}{{#vendorExtensions}}{{#x-nullable}}>{{/x-nullable}}{{/vendorExtensions}}, +{{/isEnum}} #[serde(rename = "{{{baseName}}}")]{{#vendorExtensions}}{{#itemXmlName}} + #[serde(serialize_with = "wrap_in_{{{itemXmlName}}}")]{{/itemXmlName}}{{/vendorExtensions}}{{#required}} + pub {{{name}}}: {{#vendorExtensions}}{{#x-nullable}}swagger::Nullable<{{/x-nullable}}{{/vendorExtensions}}{{{dataType}}}{{#vendorExtensions}}{{#x-nullable}}>{{/x-nullable}}{{/vendorExtensions}}, {{/required}}{{^required}}{{#vendorExtensions}}{{#x-nullable}} #[serde(deserialize_with = "swagger::nullable_format::deserialize_optional_nullable")] #[serde(default = "swagger::nullable_format::default_optional_nullable")] {{/x-nullable}}{{/vendorExtensions}} #[serde(skip_serializing_if="Option::is_none")] - pub {{name}}: Option<{{#vendorExtensions}}{{#x-nullable}}swagger::Nullable<{{/x-nullable}}{{/vendorExtensions}}{{#isListContainer}}Vec<{{#items}}{{{dataType}}}{{/items}}>{{/isListContainer}}{{^isListContainer}}{{{dataType}}}{{/isListContainer}}{{#vendorExtensions}}{{#x-nullable}}>{{/x-nullable}}{{/vendorExtensions}}>, + pub {{{name}}}: Option<{{#vendorExtensions}}{{#x-nullable}}swagger::Nullable<{{/x-nullable}}{{/vendorExtensions}}{{#isListContainer}}Vec<{{#items}}{{{dataType}}}{{/items}}>{{/isListContainer}}{{^isListContainer}}{{{dataType}}}{{/isListContainer}}{{#vendorExtensions}}{{#x-nullable}}>{{/x-nullable}}{{/vendorExtensions}}>, {{/required}} {{/vars}} } -impl {{classname}} { - pub fn new({{#vars}}{{^defaultValue}}{{name}}: {{#vendorExtensions}}{{#x-nullable}}swagger::Nullable<{{/x-nullable}}{{/vendorExtensions}}{{{dataType}}}{{#vendorExtensions}}{{#x-nullable}}>{{/x-nullable}}{{/vendorExtensions}}, {{/defaultValue}}{{/vars}}) -> {{classname}} { - {{classname}} { -{{#vars}} {{name}}: {{#defaultValue}}{{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}{{name}}{{/defaultValue}}, +impl {{{classname}}} { + pub fn new({{#vars}}{{^defaultValue}}{{{name}}}: {{#vendorExtensions}}{{#x-nullable}}swagger::Nullable<{{/x-nullable}}{{/vendorExtensions}}{{{dataType}}}{{#vendorExtensions}}{{#x-nullable}}>{{/x-nullable}}{{/vendorExtensions}}, {{/defaultValue}}{{/vars}}) -> {{{classname}}} { + {{{classname}}} { +{{#vars}} {{{name}}}: {{#defaultValue}}{{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}{{{name}}}{{/defaultValue}}, {{/vars}} } } @@ -168,7 +168,7 @@ impl {{classname}} { //XML namespaces pub mod namespaces { lazy_static!{ - {{#models}}{{#model}}{{#xmlNamespace}}pub static ref {{#vendorExtensions}}{{upperCaseName}}{{/vendorExtensions}}: String = "{{xmlNamespace}}".to_string(); + {{#models}}{{#model}}{{#xmlNamespace}}pub static ref {{#vendorExtensions}}{{{upperCaseName}}}{{/vendorExtensions}}: String = "{{{xmlNamespace}}}".to_string(); {{/xmlNamespace}}{{/model}}{{/models}} } } diff --git a/modules/openapi-generator/src/main/resources/rust-server/server-auth.mustache b/modules/openapi-generator/src/main/resources/rust-server/server-auth.mustache index 24e08ff44d..c58a2adcea 100644 --- a/modules/openapi-generator/src/main/resources/rust-server/server-auth.mustache +++ b/modules/openapi-generator/src/main/resources/rust-server/server-auth.mustache @@ -113,7 +113,7 @@ impl hyper::server::Service for Service {{#isApiKey}} {{#isKeyInHeader}} { - header! { (ApiKey{{-index}}, "{{keyParamName}}") => [String] } + header! { (ApiKey{{-index}}, "{{{keyParamName}}}") => [String] } if let Some(header) = req.headers().get::().cloned() { let auth_data = AuthData::ApiKey(header.0); let context = context.push(Some(auth_data)); diff --git a/modules/openapi-generator/src/main/resources/rust-server/server-mod.mustache b/modules/openapi-generator/src/main/resources/rust-server/server-mod.mustache index 8d20ed82a6..15a3cc23ee 100644 --- a/modules/openapi-generator/src/main/resources/rust-server/server-mod.mustache +++ b/modules/openapi-generator/src/main/resources/rust-server/server-mod.mustache @@ -37,7 +37,7 @@ use swagger::{ApiError, XSpanId, XSpanIdString, Has, RequestParser}; use swagger::auth::Scopes; use {Api{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}, - {{operationId}}Response{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} + {{{operationId}}}Response{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}} }; #[allow(unused_imports)] use models; @@ -52,15 +52,15 @@ mod paths { lazy_static! { pub static ref GLOBAL_REGEX_SET: regex::RegexSet = regex::RegexSet::new(&[ {{#pathSet}} - r"^{{basePathWithoutHost}}{{{pathRegEx}}}"{{^-last}},{{/-last}} + r"^{{{basePathWithoutHost}}}{{{pathRegEx}}}"{{^-last}},{{/-last}} {{/pathSet}} ]).unwrap(); } {{#pathSet}} - pub static ID_{{PATH_ID}}: usize = {{index}}; + pub static ID_{{{PATH_ID}}}: usize = {{{index}}}; {{#hasPathParams}} lazy_static! { - pub static ref REGEX_{{PATH_ID}}: regex::Regex = regex::Regex::new(r"^{{basePathWithoutHost}}{{{pathRegEx}}}").unwrap(); + pub static ref REGEX_{{{PATH_ID}}}: regex::Regex = regex::Regex::new(r"^{{{basePathWithoutHost}}}{{{pathRegEx}}}").unwrap(); } {{/hasPathParams}} {{/pathSet}} @@ -129,7 +129,7 @@ where // Please update both places if changing how this code is autogenerated. match &method { {{#apiInfo}}{{#apis}}{{#operations}}{{#operation}} - // {{operationId}} - {{httpMethod}} {{path}} + // {{{operationId}}} - {{{httpMethod}}} {{{path}}} &hyper::Method::{{vendorExtensions.HttpMethod}} if path.matched(paths::ID_{{vendorExtensions.PATH_ID}}) => { {{#hasAuthMethods}} { @@ -146,7 +146,7 @@ where if let Scopes::Some(ref scopes) = authorization.scopes { let required_scopes: BTreeSet = vec![ {{#scopes}} - "{{scope}}".to_string(), // {{description}} + "{{{scope}}}".to_string(), // {{{description}}} {{/scopes}} ].into_iter().collect(); @@ -170,46 +170,46 @@ where // Path parameters let path = uri.path().to_string(); let path_params = - paths::REGEX_{{PATH_ID}} + paths::REGEX_{{{PATH_ID}}} .captures(&path) .unwrap_or_else(|| - panic!("Path {} matched RE {{PATH_ID}} in set but failed match against \"{}\"", path, paths::REGEX_{{PATH_ID}}.as_str()) + panic!("Path {} matched RE {{{PATH_ID}}} in set but failed match against \"{}\"", path, paths::REGEX_{{{PATH_ID}}}.as_str()) ); {{/hasPathParams}}{{/vendorExtensions}} {{#pathParams}} - let param_{{paramName}} = match percent_encoding::percent_decode(path_params["{{baseName}}"].as_bytes()).decode_utf8() { - Ok(param_{{paramName}}) => match param_{{paramName}}.parse::<{{{dataType}}}>() { - Ok(param_{{paramName}}) => param_{{paramName}}, - Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse path parameter {{baseName}}: {}", e)))), + let param_{{{paramName}}} = match percent_encoding::percent_decode(path_params["{{{baseName}}}"].as_bytes()).decode_utf8() { + Ok(param_{{{paramName}}}) => match param_{{{paramName}}}.parse::<{{{dataType}}}>() { + Ok(param_{{{paramName}}}) => param_{{{paramName}}}, + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse path parameter {{{baseName}}}: {}", e)))), }, - Err(_) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["{{baseName}}"])))) + Err(_) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't percent-decode path parameter as UTF-8: {}", &path_params["{{{baseName}}}"])))) }; {{/pathParams}} {{#headerParams}}{{#-first}} // Header parameters {{/-first}} - header! { (Request{{vendorExtensions.typeName}}, "{{baseName}}") => {{#isListContainer}}({{{baseType}}})*{{/isListContainer}}{{^isListContainer}}[{{{dataType}}}]{{/isListContainer}} } + header! { (Request{{vendorExtensions.typeName}}, "{{{baseName}}}") => {{#isListContainer}}({{{baseType}}})*{{/isListContainer}}{{^isListContainer}}[{{{dataType}}}]{{/isListContainer}} } {{#required}} - let param_{{paramName}} = match headers.get::() { - Some(param_{{paramName}}) => param_{{paramName}}.0.clone(), - None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing or invalid required header {{baseName}}"))), + let param_{{{paramName}}} = match headers.get::() { + Some(param_{{{paramName}}}) => param_{{{paramName}}}.0.clone(), + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing or invalid required header {{{baseName}}}"))), }; {{/required}} {{^required}} - let param_{{paramName}} = headers.get::().map(|header| header.0.clone()); + let param_{{{paramName}}} = headers.get::().map(|header| header.0.clone()); {{/required}}{{/headerParams}} {{#queryParams}}{{#-first}} // Query parameters (note that non-required or collection query parameters will ignore garbage values, rather than causing a 400 response) let query_params = form_urlencoded::parse(uri.query().unwrap_or_default().as_bytes()).collect::>(); {{/-first}} - let param_{{paramName}} = query_params.iter().filter(|e| e.0 == "{{baseName}}").map(|e| e.1.to_owned()) + let param_{{{paramName}}} = query_params.iter().filter(|e| e.0 == "{{{baseName}}}").map(|e| e.1.to_owned()) {{#isListContainer}} - .filter_map(|param_{{paramName}}| param_{{paramName}}.parse::<{{{baseType}}}>().ok()) + .filter_map(|param_{{{paramName}}}| param_{{{paramName}}}.parse::<{{{baseType}}}>().ok()) .collect::>(); {{^required}} - let param_{{paramName}} = if !param_{{paramName}}.is_empty() { - Some(param_{{paramName}}) + let param_{{{paramName}}} = if !param_{{{paramName}}}.is_empty() { + Some(param_{{{paramName}}}) } else { None }; @@ -217,15 +217,15 @@ where {{/isListContainer}}{{^isListContainer}} .nth(0); {{#required}} - let param_{{paramName}} = match param_{{paramName}} { - Some(param_{{paramName}}) => match param_{{paramName}}.parse::<{{{dataType}}}>() { - Ok(param_{{paramName}}) => param_{{paramName}}, - Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse query parameter {{baseName}} - doesn't match schema: {}", e)))), + let param_{{{paramName}}} = match param_{{{paramName}}} { + Some(param_{{{paramName}}}) => match param_{{{paramName}}}.parse::<{{{dataType}}}>() { + Ok(param_{{{paramName}}}) => param_{{{paramName}}}, + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse query parameter {{{baseName}}} - doesn't match schema: {}", e)))), }, - None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required query parameter {{baseName}}"))), + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required query parameter {{{baseName}}}"))), }; {{/required}}{{^required}} - let param_{{paramName}} = param_{{paramName}}.and_then(|param_{{paramName}}| param_{{paramName}}.parse::<{{{baseType}}}>().ok()); + let param_{{{paramName}}} = param_{{{paramName}}}.and_then(|param_{{{paramName}}}| param_{{{paramName}}}.parse::<{{{baseType}}}>().ok()); {{/required}} {{/isListContainer}} {{/queryParams}} @@ -241,7 +241,7 @@ where {{#vendorExtensions}}{{^consumesPlainText}} let mut unused_elements = Vec::new(); {{/consumesPlainText}} - let param_{{paramName}}: Option<{{{dataType}}}> = if !body.is_empty() { + let param_{{{paramName}}}: Option<{{{dataType}}}> = if !body.is_empty() { {{#consumesXml}} let deserializer = &mut serde_xml_rs::de::Deserializer::new_from_reader(&*body); {{/consumesXml}}{{#consumesJson}} @@ -251,26 +251,26 @@ where warn!("Ignoring unknown field in body: {}", path); unused_elements.push(path.to_string()); }) { - Ok(param_{{paramName}}) => param_{{paramName}}, + Ok(param_{{{paramName}}}) => param_{{{paramName}}}, {{#required}} - Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter {{baseName}} - doesn't match schema: {}", e)))), + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter {{{baseName}}} - doesn't match schema: {}", e)))), {{/required}}{{^required}} Err(_) => None, {{/required}} } {{/consumesPlainText}}{{#consumesPlainText}} match String::from_utf8(body.to_vec()) { - Ok(param_{{paramName}}) => Some(param_{{paramName}}), - Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter {{baseName}} - not valid UTF-8: {}", e)))), + Ok(param_{{{paramName}}}) => Some(param_{{{paramName}}}), + Err(e) => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't parse body parameter {{{baseName}}} - not valid UTF-8: {}", e)))), } {{/consumesPlainText}}{{/vendorExtensions}} } else { None }; {{#required}} - let param_{{paramName}} = match param_{{paramName}} { - Some(param_{{paramName}}) => param_{{paramName}}, - None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter {{baseName}}"))), + let param_{{{paramName}}} = match param_{{{paramName}}} { + Some(param_{{{paramName}}}) => param_{{{paramName}}}, + None => return Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body("Missing required body parameter {{{baseName}}}"))), }; {{/required}} {{/-first}}{{/bodyParams}} @@ -280,10 +280,10 @@ where {{#formParams}}{{#-first}} // Form parameters {{/-first}} - let param_{{paramName}} = {{^isContainer}}{{#vendorExtensions}}{{{example}}};{{/vendorExtensions}}{{/isContainer}}{{#isListContainer}}{{#required}}Vec::new();{{/required}}{{^required}}None;{{/required}}{{/isListContainer}}{{#isMapContainer}}None;{{/isMapContainer}} + let param_{{{paramName}}} = {{^isContainer}}{{#vendorExtensions}}{{{example}}};{{/vendorExtensions}}{{/isContainer}}{{#isListContainer}}{{#required}}Vec::new();{{/required}}{{^required}}None;{{/required}}{{/isListContainer}}{{#isMapContainer}}None;{{/isMapContainer}} {{/formParams}} {{/vendorExtensions}}{{/bodyParams}} - Box::new(api_impl.{{#vendorExtensions}}{{operation_id}}{{/vendorExtensions}}({{#allParams}}param_{{paramName}}{{#isListContainer}}.as_ref(){{/isListContainer}}, {{/allParams}}&context) + Box::new(api_impl.{{#vendorExtensions}}{{{operation_id}}}{{/vendorExtensions}}({{#allParams}}param_{{{paramName}}}{{#isListContainer}}.as_ref(){{/isListContainer}}, {{/allParams}}&context) .then(move |result| { let mut response = Response::new(); response.headers_mut().set(XSpanId((&context as &Has).get().0.to_string())); @@ -295,7 +295,7 @@ where match result { Ok(rsp) => match rsp { {{#responses}} - {{operationId}}Response::{{#vendorExtensions}}{{x-responseId}}{{/vendorExtensions}} + {{{operationId}}}Response::{{#vendorExtensions}}{{x-responseId}}{{/vendorExtensions}} {{#dataType}}{{^headers}} (body) {{/headers}}{{#headers}} @@ -303,7 +303,7 @@ where { body, {{/-first}} - {{name}}{{^-last}}, {{/-last}} + {{{name}}}{{^-last}}, {{/-last}} {{#-last}} } {{/-last}} @@ -311,19 +311,19 @@ where {{^dataType}}{{#headers}}{{#-first}} { {{/-first}} - {{name}}{{^-last}}, {{/-last}} + {{{name}}}{{^-last}}, {{/-last}} {{#-last}} } {{/-last}} {{/headers}}{{/dataType}} => { - response.set_status(StatusCode::try_from({{code}}).unwrap()); + response.set_status(StatusCode::try_from({{{code}}}).unwrap()); {{#headers}} - header! { (Response{{nameInCamelCase}}, "{{baseName}}") => [{{{dataType}}}] } - response.headers_mut().set(Response{{nameInCamelCase}}({{name}})); + header! { (Response{{{nameInCamelCase}}}, "{{{baseName}}}") => [{{{dataType}}}] } + response.headers_mut().set(Response{{{nameInCamelCase}}}({{{name}}})); {{/headers}} {{#produces}}{{#-first}}{{#dataType}} - response.headers_mut().set(ContentType(mimetypes::responses::{{#vendorExtensions}}{{uppercase_operation_id}}_{{x-uppercaseResponseId}}{{/vendorExtensions}}.clone())); + response.headers_mut().set(ContentType(mimetypes::responses::{{#vendorExtensions}}{{{uppercase_operation_id}}}_{{x-uppercaseResponseId}}{{/vendorExtensions}}.clone())); {{/dataType}}{{/-first}}{{/produces}} {{#dataType}} {{#vendorExtensions}}{{#producesXml}}{{^has_namespace}} @@ -331,7 +331,7 @@ where {{/has_namespace}}{{#has_namespace}} let mut namespaces = BTreeMap::new(); // An empty string is used to indicate a global namespace in xmltree. - namespaces.insert("".to_string(), models::namespaces::{{uppercase_data_type}}.clone()); + namespaces.insert("".to_string(), models::namespaces::{{{uppercase_data_type}}}.clone()); let body = serde_xml_rs::to_string_with_namespaces(&body, namespaces).expect("impossible to fail to serialize"); {{/has_namespace}}{{/producesXml}}{{#producesJson}} let body = serde_json::to_string(&body).expect("impossible to fail to serialize"); @@ -358,7 +358,7 @@ where {{/vendorExtensions}}{{/bodyParams}} {{#bodyParams}}{{#-first}} }, - Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter {{baseName}}: {}", e)))), + Err(e) => Box::new(future::ok(Response::new().with_status(StatusCode::BadRequest).with_body(format!("Couldn't read body parameter {{{baseName}}}: {}", e)))), } }) ) as Box> From 7624a1ff85f3c66a0b284fcb3efbf31d4282d410 Mon Sep 17 00:00:00 2001 From: Benjamin Gill Date: Thu, 26 Jul 2018 14:57:57 +0100 Subject: [PATCH 6/6] Various enhancements to html2 docsgen (#643) This commit includes the following changes: - Fix docs not generating parameter descriptions, add rust sample. - Add example to doc output. - Add basic scope reporting. - Stringify the JSON "Example" objects for response schemas. - Prettify JSON examples in response schemas. - Parse and present multiline response descriptions. - Add API error details to docsgen. - Add read only markers to read only properties. - Fix up style document indentation. - Add support for `x-shared-errors`, an extension to define common error types that can be shared across a microservice framework. --- .../languages/StaticHtml2Generator.java | 18 + .../main/resources/htmlDocs2/fonts.mustache | 1 + .../main/resources/htmlDocs2/index.mustache | 154 +- .../htmlDocs2/js_jsonschemaview.mustache | 20 +- .../main/resources/htmlDocs2/param.mustache | 4 +- .../main/resources/htmlDocs2/paramB.mustache | 3 +- .../resources/htmlDocs2/sample_rust.mustache | 11 + .../main/resources/htmlDocs2/styles.mustache | 232 ++- samples/html2/.openapi-generator/VERSION | 2 +- samples/html2/index.html | 1752 +++++++++++++---- 10 files changed, 1759 insertions(+), 438 deletions(-) create mode 100644 modules/openapi-generator/src/main/resources/htmlDocs2/fonts.mustache create mode 100644 modules/openapi-generator/src/main/resources/htmlDocs2/sample_rust.mustache diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java index 541044f03d..37fda7e0b9 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/StaticHtml2Generator.java @@ -17,12 +17,14 @@ package org.openapitools.codegen.languages; +import io.swagger.v3.core.util.Json; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.Operation; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.Schema; +import com.fasterxml.jackson.databind.JsonNode; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.CliOption; import org.openapitools.codegen.CodegenConfig; @@ -175,6 +177,22 @@ public class StaticHtml2Generator extends DefaultCodegen implements CodegenConfi additionalProperties.put("jsModuleName", jsModuleName); preparHtmlForGlobalDescription(openAPI); + + Map vendorExtensions = openAPI.getExtensions(); + if (vendorExtensions != null) { + for(Map.Entry vendorExtension: vendorExtensions.entrySet()) { + // Vendor extensions could be Maps (objects). If we wanted to iterate through them in our template files + // without knowing the keys beforehand, the default `toString` method renders them unusable. Instead, we + // convert them to JSON strings now, which means we can easily use them later. + if (vendorExtension.getValue() instanceof Map) { + this.vendorExtensions().put(vendorExtension.getKey(), Json.mapper().convertValue(vendorExtension.getValue(), JsonNode.class)); + } else { + this.vendorExtensions().put(vendorExtension.getKey(), vendorExtension.getValue()); + } + } + } + openAPI.setExtensions(this.vendorExtensions); + } @Override diff --git a/modules/openapi-generator/src/main/resources/htmlDocs2/fonts.mustache b/modules/openapi-generator/src/main/resources/htmlDocs2/fonts.mustache new file mode 100644 index 0000000000..957dd2145f --- /dev/null +++ b/modules/openapi-generator/src/main/resources/htmlDocs2/fonts.mustache @@ -0,0 +1 @@ +@import url('https://fonts.googleapis.com/css?family=Source+Code+Pro'); \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/htmlDocs2/index.mustache b/modules/openapi-generator/src/main/resources/htmlDocs2/index.mustache index 6ce9aa2e34..577ab978d2 100644 --- a/modules/openapi-generator/src/main/resources/htmlDocs2/index.mustache +++ b/modules/openapi-generator/src/main/resources/htmlDocs2/index.mustache @@ -103,20 +103,31 @@ });
@@ -162,7 +173,9 @@
Version: {{{version}}}
{{/version}}
-
{{{appDescription}}}
+
+ {{{appDescription}}} +
@@ -200,6 +213,7 @@
  • PHP
  • Perl
  • Python
  • +
  • Rust
  • @@ -243,8 +257,22 @@
    {{>sample_python}}
    + +
    +
    {{>sample_rust}}
    +
    +

    Scopes

    + + {{#authMethods}}{{#scopes}} + + + + + {{/scopes}}{{/authMethods}} +
    {{scope}}{{description}}
    +

    Parameters

    {{#hasPathParams}} @@ -314,31 +342,77 @@

    Responses

    {{#responses}} -

    Status: {{code}} - {{message}}

    +

    +

    + -
    @@ -1188,8 +1313,37 @@ try: except ApiException as e: print("Exception when calling PetApi->addPet: %s\n" % e)
    + +
    +
    extern crate PetApi;
    +
    +pub fn main() {
    +    let pet = ; // Pet
    +
    +    let mut context = PetApi::Context::default();
    +    let result = client.addPet(pet, &context).wait();
    +    println!("{:?}", result);
    +
    +}
    +
    +
    +

    Scopes

    + + + + + + + + + + + + +
    write:petsmodify pets in your account
    read:petsread your pets
    +

    Parameters

    @@ -1202,8 +1356,7 @@ except ApiException as e: pet * - - +

    Pet object that needs to be added to the store

    + + +
    @@ -1476,8 +1644,38 @@ try: except ApiException as e: print("Exception when calling PetApi->deletePet: %s\n" % e)
    + +
    +
    extern crate PetApi;
    +
    +pub fn main() {
    +    let petId = 789; // Long
    +    let apiKey = apiKey_example; // String
    +
    +    let mut context = PetApi::Context::default();
    +    let result = client.deletePet(petId, apiKey, &context).wait();
    +    println!("{:?}", result);
    +
    +}
    +
    +
    +

    Scopes

    + + + + + + + + + + + + +
    write:petsmodify pets in your account
    read:petsread your pets
    +

    Parameters

    Path parameters
    @@ -1500,8 +1698,8 @@ except ApiException as e: (int64) -
    - Pet id to delete +
    +Pet id to delete
    @@ -1543,14 +1741,28 @@ except ApiException as e:

    Responses

    -

    Status: 400 - Invalid pet value

    +

    +

    + + + +

    @@ -1582,6 +1794,7 @@ except ApiException as e:
  • PHP
  • Perl
  • Python
  • +
  • Rust
  • @@ -1785,8 +1998,37 @@ try: except ApiException as e: print("Exception when calling PetApi->findPetsByStatus: %s\n" % e)
    + +
    +
    extern crate PetApi;
    +
    +pub fn main() {
    +    let status = ; // array[String]
    +
    +    let mut context = PetApi::Context::default();
    +    let result = client.findPetsByStatus(status, &context).wait();
    +    println!("{:?}", result);
    +
    +}
    +
    +
    +

    Scopes

    + + + + + + + + + + + + +
    write:petsmodify pets in your account
    read:petsread your pets
    +

    Parameters

    @@ -1810,8 +2052,8 @@ except ApiException as e: array[String] -
    - Status values that need to be considered for filter +
    +Status values that need to be considered for filter
    @@ -1825,18 +2067,34 @@ except ApiException as e:

    Responses

    -

    Status: 200 - successful operation

    +

    +

    + -
    @@ -2125,8 +2396,37 @@ try: except ApiException as e: print("Exception when calling PetApi->findPetsByTags: %s\n" % e)
    + +
    +
    extern crate PetApi;
    +
    +pub fn main() {
    +    let tags = ; // array[String]
    +
    +    let mut context = PetApi::Context::default();
    +    let result = client.findPetsByTags(tags, &context).wait();
    +    println!("{:?}", result);
    +
    +}
    +
    +
    +

    Scopes

    + + + + + + + + + + + + +
    write:petsmodify pets in your account
    read:petsread your pets
    +

    Parameters

    @@ -2150,8 +2450,8 @@ except ApiException as e: array[String] -
    - Tags to filter by +
    +Tags to filter by
    @@ -2165,18 +2465,34 @@ except ApiException as e:

    Responses

    -

    Status: 200 - successful operation

    +

    +

    + -
    @@ -2479,8 +2808,27 @@ try: except ApiException as e: print("Exception when calling PetApi->getPetById: %s\n" % e)
    + +
    +
    extern crate PetApi;
    +
    +pub fn main() {
    +    let petId = 789; // Long
    +
    +    let mut context = PetApi::Context::default();
    +    let result = client.getPetById(petId, &context).wait();
    +    println!("{:?}", result);
    +
    +}
    +
    +
    +

    Scopes

    + + +
    +

    Parameters

    Path parameters
    @@ -2503,8 +2851,8 @@ except ApiException as e: (int64) -
    - ID of pet to return +
    +ID of pet to return
    @@ -2522,18 +2870,34 @@ except ApiException as e:

    Responses

    -

    Status: 200 - successful operation

    +

    +

    + -
    @@ -3480,8 +3988,39 @@ try: except ApiException as e: print("Exception when calling PetApi->uploadFile: %s\n" % e)
    + +
    +
    extern crate PetApi;
    +
    +pub fn main() {
    +    let petId = 789; // Long
    +    let additionalMetadata = additionalMetadata_example; // String
    +    let file = BINARY_DATA_HERE; // File
    +
    +    let mut context = PetApi::Context::default();
    +    let result = client.uploadFile(petId, additionalMetadata, file, &context).wait();
    +    println!("{:?}", result);
    +
    +}
    +
    +
    +

    Scopes

    + + + + + + + + + + + + +
    write:petsmodify pets in your account
    read:petsread your pets
    +

    Parameters

    Path parameters
    @@ -3504,8 +4043,8 @@ except ApiException as e: (int64) -
    - ID of pet to update +
    +ID of pet to update
    @@ -3537,8 +4076,8 @@ except ApiException as e: String -
    - Additional data to pass to server +
    +Additional data to pass to server
    @@ -3560,8 +4099,8 @@ except ApiException as e: (binary) -
    - file to upload +
    +file to upload
    @@ -3573,18 +4112,34 @@ except ApiException as e:

    Responses

    -

    Status: 200 - successful operation

    +

    +

    + -
    @@ -3821,8 +4375,27 @@ try: except ApiException as e: print("Exception when calling StoreApi->deleteOrder: %s\n" % e)
    + +
    +
    extern crate StoreApi;
    +
    +pub fn main() {
    +    let orderId = orderId_example; // String
    +
    +    let mut context = StoreApi::Context::default();
    +    let result = client.deleteOrder(orderId, &context).wait();
    +    println!("{:?}", result);
    +
    +}
    +
    +
    +

    Scopes

    + + +
    +

    Parameters

    Path parameters
    @@ -3842,8 +4415,8 @@ except ApiException as e: String -
    - ID of the order that needs to be deleted +
    +ID of the order that needs to be deleted
    @@ -3861,22 +4434,50 @@ except ApiException as e:

    Responses

    -

    Status: 400 - Invalid ID supplied

    +

    +

    + + + +
    @@ -4116,8 +4718,26 @@ try: except ApiException as e: print("Exception when calling StoreApi->getInventory: %s\n" % e)
    + +
    +
    extern crate StoreApi;
    +
    +pub fn main() {
    +
    +    let mut context = StoreApi::Context::default();
    +    let result = client.getInventory(&context).wait();
    +    println!("{:?}", result);
    +
    +}
    +
    +
    +

    Scopes

    + + +
    +

    Parameters

    @@ -4126,18 +4746,34 @@ except ApiException as e:

    Responses

    -

    Status: 200 - successful operation

    +

    +

    + -
    @@ -4384,8 +5019,27 @@ try: except ApiException as e: print("Exception when calling StoreApi->getOrderById: %s\n" % e)
    + +
    +
    extern crate StoreApi;
    +
    +pub fn main() {
    +    let orderId = 789; // Long
    +
    +    let mut context = StoreApi::Context::default();
    +    let result = client.getOrderById(orderId, &context).wait();
    +    println!("{:?}", result);
    +
    +}
    +
    +
    +

    Scopes

    + + +
    +

    Parameters

    Path parameters
    @@ -4408,8 +5062,8 @@ except ApiException as e: (int64) -
    - ID of pet that needs to be fetched +
    +ID of pet that needs to be fetched
    @@ -4427,18 +5081,34 @@ except ApiException as e:

    Responses

    -

    Status: 200 - successful operation

    +

    +

    + -
    @@ -5257,8 +6034,27 @@ try: except ApiException as e: print("Exception when calling UserApi->createUsersWithArrayInput: %s\n" % e)
    + +
    +
    extern crate UserApi;
    +
    +pub fn main() {
    +    let user = ; // array[User]
    +
    +    let mut context = UserApi::Context::default();
    +    let result = client.createUsersWithArrayInput(user, &context).wait();
    +    println!("{:?}", result);
    +
    +}
    +
    +
    +

    Scopes

    + + +
    +

    Parameters

    @@ -5271,8 +6067,7 @@ except ApiException as e: user * - - +

    List of user object

    + + +
    @@ -5507,8 +6317,27 @@ try: except ApiException as e: print("Exception when calling UserApi->createUsersWithListInput: %s\n" % e)
    + +
    +
    extern crate UserApi;
    +
    +pub fn main() {
    +    let user = ; // array[User]
    +
    +    let mut context = UserApi::Context::default();
    +    let result = client.createUsersWithListInput(user, &context).wait();
    +    println!("{:?}", result);
    +
    +}
    +
    +
    +

    Scopes

    + + +
    +

    Parameters

    @@ -5521,8 +6350,7 @@ except ApiException as e: user * - - +

    List of user object

    + + +
    @@ -5757,8 +6600,27 @@ try: except ApiException as e: print("Exception when calling UserApi->deleteUser: %s\n" % e)
    + +
    +
    extern crate UserApi;
    +
    +pub fn main() {
    +    let username = username_example; // String
    +
    +    let mut context = UserApi::Context::default();
    +    let result = client.deleteUser(username, &context).wait();
    +    println!("{:?}", result);
    +
    +}
    +
    +
    +

    Scopes

    + + +
    +

    Parameters

    Path parameters
    @@ -5778,8 +6640,8 @@ except ApiException as e: String -
    - The name that needs to be deleted +
    +The name that needs to be deleted
    @@ -5797,22 +6659,50 @@ except ApiException as e:

    Responses

    -

    Status: 400 - Invalid username supplied

    +

    +

    + + + +
    @@ -6020,8 +6911,27 @@ try: except ApiException as e: print("Exception when calling UserApi->getUserByName: %s\n" % e)
    + +
    +
    extern crate UserApi;
    +
    +pub fn main() {
    +    let username = username_example; // String
    +
    +    let mut context = UserApi::Context::default();
    +    let result = client.getUserByName(username, &context).wait();
    +    println!("{:?}", result);
    +
    +}
    +
    +
    +

    Scopes

    + + +
    +

    Parameters

    Path parameters
    @@ -6041,8 +6951,8 @@ except ApiException as e: String -
    - The name that needs to be fetched. Use user1 for testing. +
    +The name that needs to be fetched. Use user1 for testing.
    @@ -6060,18 +6970,34 @@ except ApiException as e:

    Responses

    -

    Status: 200 - successful operation

    +

    +

    + -
    @@ -6922,8 +7957,28 @@ try: except ApiException as e: print("Exception when calling UserApi->updateUser: %s\n" % e)
    + +
    +
    extern crate UserApi;
    +
    +pub fn main() {
    +    let username = username_example; // String
    +    let user = ; // User
    +
    +    let mut context = UserApi::Context::default();
    +    let result = client.updateUser(username, user, &context).wait();
    +    println!("{:?}", result);
    +
    +}
    +
    +
    +

    Scopes

    + + +
    +

    Parameters

    Path parameters
    @@ -6943,8 +7998,8 @@ except ApiException as e: String -
    - name that need to be deleted +
    +name that need to be deleted
    @@ -6966,8 +8021,7 @@ except ApiException as e: user * - - +

    Updated user object

    + + +