From aef3b64c96c02b85a021081896040963df63943a Mon Sep 17 00:00:00 2001 From: Jean-Paul Finne Date: Wed, 13 Dec 2023 10:22:31 +0100 Subject: [PATCH 01/27] fix(java): x-discriminator-value should not produce @JsonTypeName --- .../openapitools/codegen/CodegenModel.java | 5 +- .../java/spring/SpringCodegenTest.java | 68 ++++++++++++++++--- .../src/test/resources/bugs/issue_17343.yaml | 46 +++++++++++++ 3 files changed, 107 insertions(+), 12 deletions(-) create mode 100644 modules/openapi-generator/src/test/resources/bugs/issue_17343.yaml diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java index 4c2d8bc5b170..ed5e6fd94536 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java @@ -418,7 +418,7 @@ public CodegenDiscriminator getDiscriminator() { public void setDiscriminator(CodegenDiscriminator discriminator) { this.discriminator = discriminator; - if (discriminator != null && !discriminator.getMappedModels().isEmpty()) { + if (discriminator != null && (!discriminator.getMappedModels().isEmpty() || this.vendorExtensions.containsKey("x-discriminator-value"))) { this.hasDiscriminatorWithNonEmptyMapping = true; } } @@ -435,6 +435,9 @@ public String getDiscriminatorName() { return discriminator == null ? null : discriminator.getPropertyName(); } + public String getDiscriminatorValue() { + return !hasDiscriminatorWithNonEmptyMapping && getIsClassnameSanitized()? name: null; + } public ExternalDocumentation getExternalDocumentation() { return externalDocumentation; } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java index 4095c2104da3..c65e523ac209 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java @@ -45,6 +45,23 @@ import static org.testng.Assert.assertEquals; import static org.testng.Assert.fail; +import com.github.javaparser.ast.NodeList; +import com.github.javaparser.ast.expr.ArrayInitializerExpr; +import com.github.javaparser.ast.expr.ClassExpr; +import com.github.javaparser.ast.expr.MemberValuePair; +import com.github.javaparser.ast.expr.Name; +import com.github.javaparser.ast.expr.NormalAnnotationExpr; +import com.github.javaparser.ast.expr.SingleMemberAnnotationExpr; +import com.github.javaparser.ast.expr.StringLiteralExpr; +import com.github.javaparser.ast.type.ClassOrInterfaceType; +import com.google.common.collect.ImmutableMap; +import io.swagger.parser.OpenAPIParser; +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.Schema; +import io.swagger.v3.oas.models.servers.Server; +import io.swagger.v3.parser.core.models.ParseOptions; import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -55,7 +72,6 @@ import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Collectors; - import org.assertj.core.api.MapAssert; import org.openapitools.codegen.CliOption; import org.openapitools.codegen.ClientOptInput; @@ -81,16 +97,6 @@ import org.testng.annotations.Ignore; import org.testng.annotations.Test; -import com.google.common.collect.ImmutableMap; - -import io.swagger.parser.OpenAPIParser; -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.Schema; -import io.swagger.v3.oas.models.servers.Server; -import io.swagger.v3.parser.core.models.ParseOptions; - public class SpringCodegenTest { @Test @@ -3330,4 +3336,44 @@ public void givenMultipartForm_whenGenerateBlockedServer_thenParameterAreCreated assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/api/PetApi.java"), "@Valid @RequestParam(value = \"additionalMetadata\", required = false) String additionalMetadata"); } + + @Test + public void testXDiscriminatorValue_issue17343() throws IOException { + File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); + output.deleteOnExit(); + + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/bugs/issue_17343.yaml"); + final SpringCodegen codegen = new SpringCodegen(); + codegen.setOpenAPI(openAPI); + codegen.setModelNameSuffix("Dto"); + codegen.setOutputDir(output.getAbsolutePath()); + ClientOptInput input = new ClientOptInput(); + input.openAPI(openAPI); + input.config(codegen); + + DefaultGenerator generator = new DefaultGenerator(); + + Map files = generator.opts(input).generate().stream() + .collect(Collectors.toMap(File::getName, Function.identity())); + + JavaFileAssert.assertThat(files.get("DogItemDto.java")).assertTypeAnnotations() + .doesNotContainsWithName("JsonTypeName"); + JavaFileAssert.assertThat(files.get("CatItemDto.java")).assertTypeAnnotations() + .doesNotContainsWithName("JsonTypeName"); + JavaFileAssert.assertThat(files.get("PetItemDto.java")) + .assertTypeAnnotations() + .contains(new SingleMemberAnnotationExpr(new Name("JsonSubTypes"), + new ArrayInitializerExpr(NodeList.nodeList( + new NormalAnnotationExpr(new Name(new Name("JsonSubTypes"), "Type"), + NodeList.nodeList( + new MemberValuePair("value", new ClassExpr(new ClassOrInterfaceType("CatItemDto"))), + new MemberValuePair("name", new StringLiteralExpr("CAT")) + )), + new NormalAnnotationExpr(new Name(new Name("JsonSubTypes"), "Type"), + NodeList.nodeList( + new MemberValuePair("value", new ClassExpr(new ClassOrInterfaceType("DogItemDto"))), + new MemberValuePair("name", new StringLiteralExpr("DOG")) + ))) + ))); + } } diff --git a/modules/openapi-generator/src/test/resources/bugs/issue_17343.yaml b/modules/openapi-generator/src/test/resources/bugs/issue_17343.yaml new file mode 100644 index 000000000000..b7346c28232f --- /dev/null +++ b/modules/openapi-generator/src/test/resources/bugs/issue_17343.yaml @@ -0,0 +1,46 @@ +swagger: "2.0" +info: + version: 1.0.0 + title: x-discriminator-value bug +paths: + /getItems: + get: + description: test + operationId: getAllPets + responses: + 200: + description: 'list of PetItems' + schema: + type: array + items: + $ref: '#/definitions/PetItem' +definitions: + PetType: + type: string + enum: + - DOG + - CAT + PetItem: + discriminator: type + properties: + identifier: + type: string + type: + $ref: '#/definitions/PetType' + + DogItem: + x-discriminator-value: DOG + allOf: + - $ref: '#/definitions/PetItem' + - type: object + properties: + packSize: + type: integer + CatItem: + x-discriminator-value: CAT + allOf: + - $ref: '#/definitions/PetItem' + - type: object + properties: + huntingSkill: + type: string From 4199d111795ba4c18843f6f8f25f6f721ee8673b Mon Sep 17 00:00:00 2001 From: Jean-Paul Finne Date: Wed, 13 Dec 2023 10:56:43 +0100 Subject: [PATCH 02/27] fix(java): Remove unused getDiscriminatorValue() --- .../src/main/java/org/openapitools/codegen/CodegenModel.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java index ed5e6fd94536..3afe381043f4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java @@ -435,9 +435,6 @@ public String getDiscriminatorName() { return discriminator == null ? null : discriminator.getPropertyName(); } - public String getDiscriminatorValue() { - return !hasDiscriminatorWithNonEmptyMapping && getIsClassnameSanitized()? name: null; - } public ExternalDocumentation getExternalDocumentation() { return externalDocumentation; } From 77a34df104db14bd62df65da4a9ba432d2482b37 Mon Sep 17 00:00:00 2001 From: Jean-Paul Finne Date: Mon, 18 Dec 2023 15:43:46 +0100 Subject: [PATCH 03/27] build at Fednot --- modules/openapi-generator-cli/pom.xml | 2 +- modules/openapi-generator-core/pom.xml | 2 +- .../openapi-generator-gradle-plugin/pom.xml | 2 +- .../openapi-generator-maven-plugin/pom.xml | 2 +- modules/openapi-generator-online/pom.xml | 2 +- modules/openapi-generator/pom.xml | 2 +- pom.xml | 48 +++++++++---------- 7 files changed, 30 insertions(+), 30 deletions(-) diff --git a/modules/openapi-generator-cli/pom.xml b/modules/openapi-generator-cli/pom.xml index 368756d9ac25..24120bba4b5e 100644 --- a/modules/openapi-generator-cli/pom.xml +++ b/modules/openapi-generator-cli/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 7.2.0-SNAPSHOT + 7.2.0-fork.SNAPSHOT ../.. diff --git a/modules/openapi-generator-core/pom.xml b/modules/openapi-generator-core/pom.xml index 35e02577ddb3..57350c421dbf 100644 --- a/modules/openapi-generator-core/pom.xml +++ b/modules/openapi-generator-core/pom.xml @@ -6,7 +6,7 @@ openapi-generator-project org.openapitools - 7.2.0-SNAPSHOT + 7.2.0-fork.SNAPSHOT ../.. diff --git a/modules/openapi-generator-gradle-plugin/pom.xml b/modules/openapi-generator-gradle-plugin/pom.xml index 75bb895f495d..9d4938ef1e3b 100644 --- a/modules/openapi-generator-gradle-plugin/pom.xml +++ b/modules/openapi-generator-gradle-plugin/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 7.2.0-SNAPSHOT + 7.2.0-fork.SNAPSHOT ../.. diff --git a/modules/openapi-generator-maven-plugin/pom.xml b/modules/openapi-generator-maven-plugin/pom.xml index 8f98871fd28c..c28857a22278 100644 --- a/modules/openapi-generator-maven-plugin/pom.xml +++ b/modules/openapi-generator-maven-plugin/pom.xml @@ -5,7 +5,7 @@ org.openapitools openapi-generator-project - 7.2.0-SNAPSHOT + 7.2.0-fork.SNAPSHOT ../.. diff --git a/modules/openapi-generator-online/pom.xml b/modules/openapi-generator-online/pom.xml index e2f6230c09dd..9afff8fe7d91 100644 --- a/modules/openapi-generator-online/pom.xml +++ b/modules/openapi-generator-online/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 7.2.0-SNAPSHOT + 7.2.0-fork.SNAPSHOT ../.. diff --git a/modules/openapi-generator/pom.xml b/modules/openapi-generator/pom.xml index 98e9b688850f..238b4b7e2181 100644 --- a/modules/openapi-generator/pom.xml +++ b/modules/openapi-generator/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 7.2.0-SNAPSHOT + 7.2.0-fork.SNAPSHOT ../.. diff --git a/pom.xml b/pom.xml index ef758c61e54a..06511ae68d8c 100644 --- a/pom.xml +++ b/pom.xml @@ -1,19 +1,19 @@ - org.sonatype.oss - oss-parent - 5 + be.fednot.corporate + fednot-corporate + 2.7.12 - + 4.0.0 org.openapitools openapi-generator-project pom openapi-generator-project - 7.2.0-SNAPSHOT + 7.2.0-fork.SNAPSHOT https://github.com/openapitools/openapi-generator @@ -58,16 +58,16 @@ github https://github.com/openapitools/openapi-generator/issues - - - ossrh - https://oss.sonatype.org/content/repositories/snapshots - - - ossrh - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - + + + + + + + + + + Apache License 2.0 @@ -1189,15 +1189,15 @@ - - - sonatype-snapshots - https://oss.sonatype.org/content/repositories/snapshots - - true - - - + + + + + + + + + 11 11 From 53832b0ad540bb9230492510aa1eec41947c57a0 Mon Sep 17 00:00:00 2001 From: Jean-Paul Finne Date: Mon, 18 Dec 2023 15:47:01 +0100 Subject: [PATCH 04/27] build at Fednot --- modules/openapi-generator-cli/pom.xml | 2 +- modules/openapi-generator-core/pom.xml | 2 +- modules/openapi-generator-gradle-plugin/pom.xml | 2 +- modules/openapi-generator-maven-plugin/pom.xml | 2 +- modules/openapi-generator-online/pom.xml | 2 +- modules/openapi-generator/pom.xml | 2 +- pom.xml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/openapi-generator-cli/pom.xml b/modules/openapi-generator-cli/pom.xml index 24120bba4b5e..fe8371407e3f 100644 --- a/modules/openapi-generator-cli/pom.xml +++ b/modules/openapi-generator-cli/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 7.2.0-fork.SNAPSHOT + 7.2.0.fednot-SNAPSHOT ../.. diff --git a/modules/openapi-generator-core/pom.xml b/modules/openapi-generator-core/pom.xml index 57350c421dbf..49384a320a66 100644 --- a/modules/openapi-generator-core/pom.xml +++ b/modules/openapi-generator-core/pom.xml @@ -6,7 +6,7 @@ openapi-generator-project org.openapitools - 7.2.0-fork.SNAPSHOT + 7.2.0.fednot-SNAPSHOT ../.. diff --git a/modules/openapi-generator-gradle-plugin/pom.xml b/modules/openapi-generator-gradle-plugin/pom.xml index 9d4938ef1e3b..bbf371c14dd2 100644 --- a/modules/openapi-generator-gradle-plugin/pom.xml +++ b/modules/openapi-generator-gradle-plugin/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 7.2.0-fork.SNAPSHOT + 7.2.0.fednot-SNAPSHOT ../.. diff --git a/modules/openapi-generator-maven-plugin/pom.xml b/modules/openapi-generator-maven-plugin/pom.xml index c28857a22278..5ae8d724ccb3 100644 --- a/modules/openapi-generator-maven-plugin/pom.xml +++ b/modules/openapi-generator-maven-plugin/pom.xml @@ -5,7 +5,7 @@ org.openapitools openapi-generator-project - 7.2.0-fork.SNAPSHOT + 7.2.0.fednot-SNAPSHOT ../.. diff --git a/modules/openapi-generator-online/pom.xml b/modules/openapi-generator-online/pom.xml index 9afff8fe7d91..5dac3e9f1788 100644 --- a/modules/openapi-generator-online/pom.xml +++ b/modules/openapi-generator-online/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 7.2.0-fork.SNAPSHOT + 7.2.0.fednot-SNAPSHOT ../.. diff --git a/modules/openapi-generator/pom.xml b/modules/openapi-generator/pom.xml index 238b4b7e2181..5da6c57f5b69 100644 --- a/modules/openapi-generator/pom.xml +++ b/modules/openapi-generator/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 7.2.0-fork.SNAPSHOT + 7.2.0.fednot-SNAPSHOT ../.. diff --git a/pom.xml b/pom.xml index 06511ae68d8c..4f193562799f 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ pom openapi-generator-project - 7.2.0-fork.SNAPSHOT + 7.2.0.fednot-SNAPSHOT https://github.com/openapitools/openapi-generator From ad9959e1a6229747e4919cae3f4d0a4d1ac32916 Mon Sep 17 00:00:00 2001 From: Jean-Paul Finne Date: Tue, 19 Dec 2023 09:25:37 +0100 Subject: [PATCH 05/27] build at Fednot: skip sonar --- buildConfig.yaml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 buildConfig.yaml diff --git a/buildConfig.yaml b/buildConfig.yaml new file mode 100644 index 000000000000..6be60a277b9d --- /dev/null +++ b/buildConfig.yaml @@ -0,0 +1,4 @@ +project: + maven: + skipSonar: true + From eff380a6fdda4cb30ab2701d1d1c67659b96ba70 Mon Sep 17 00:00:00 2001 From: Jean-Paul Finne Date: Tue, 19 Dec 2023 09:42:23 +0100 Subject: [PATCH 06/27] scm for release at fednot --- pom.xml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 4f193562799f..41591d6e14c0 100644 --- a/pom.xml +++ b/pom.xml @@ -17,9 +17,7 @@ https://github.com/openapitools/openapi-generator - scm:git:git@github.com:openapitools/openapi-generator.git - scm:git:git@github.com:openapitools/openapi-generator.git - https://github.com/openapitools/openapi-generator + ${scm.url}/scm/tool/openapi-generator-fork.git From 5a2979590e64b6eaad2649488e2e90f73173a817 Mon Sep 17 00:00:00 2001 From: jpfinne Date: Tue, 12 Mar 2024 19:12:34 +0100 Subject: [PATCH 07/27] build fednot not 7.5.0-FEDNOT-SNAPSHOT --- modules/openapi-generator-cli/pom.xml | 2 +- modules/openapi-generator-core/pom.xml | 2 +- modules/openapi-generator/pom.xml | 2 +- pom.xml | 12 ++++++------ 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/modules/openapi-generator-cli/pom.xml b/modules/openapi-generator-cli/pom.xml index 38d6dfc8e79b..1c96f0029cde 100644 --- a/modules/openapi-generator-cli/pom.xml +++ b/modules/openapi-generator-cli/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 7.5.0-SNAPSHOT + 7.5.0-FEDNOT-SNAPSHOT ../.. diff --git a/modules/openapi-generator-core/pom.xml b/modules/openapi-generator-core/pom.xml index 401a1bbfac91..f7d3f3303c79 100644 --- a/modules/openapi-generator-core/pom.xml +++ b/modules/openapi-generator-core/pom.xml @@ -6,7 +6,7 @@ openapi-generator-project org.openapitools - 7.5.0-SNAPSHOT + 7.5.0-FEDNOT-SNAPSHOT ../.. diff --git a/modules/openapi-generator/pom.xml b/modules/openapi-generator/pom.xml index 7b0bdad0ea81..c584343174ad 100644 --- a/modules/openapi-generator/pom.xml +++ b/modules/openapi-generator/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 7.5.0-SNAPSHOT + 7.5.0-FEDNOT-SNAPSHOT ../.. diff --git a/pom.xml b/pom.xml index 5d58257dd984..6ad1bfcd951d 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ be.fednot.corporate fednot-corporate - 2.7.12 + 2.7.13 @@ -13,7 +13,7 @@ pom openapi-generator-project - 7.5.0-SNAPSHOT + 7.5.0-FEDNOT-SNAPSHOT https://github.com/openapitools/openapi-generator @@ -1126,10 +1126,10 @@ modules/openapi-generator-core modules/openapi-generator - modules/openapi-generator-cli - modules/openapi-generator-maven-plugin - modules/openapi-generator-gradle-plugin - modules/openapi-generator-online + + + + From 8e83bee67ddcc69d64d22e567ef98864e8239b42 Mon Sep 17 00:00:00 2001 From: jpfinne Date: Tue, 12 Mar 2024 19:24:50 +0100 Subject: [PATCH 08/27] build fednot not 7.5.0-FEDNOT-SNAPSHOT --- modules/openapi-generator-maven-plugin/pom.xml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator-maven-plugin/pom.xml b/modules/openapi-generator-maven-plugin/pom.xml index 930eb55e6df8..2b053b5ae932 100644 --- a/modules/openapi-generator-maven-plugin/pom.xml +++ b/modules/openapi-generator-maven-plugin/pom.xml @@ -5,7 +5,7 @@ org.openapitools openapi-generator-project - 7.5.0-SNAPSHOT + 7.5.0-FEDNOT-SNAPSHOT ../.. diff --git a/pom.xml b/pom.xml index 6ad1bfcd951d..6983401d5498 100644 --- a/pom.xml +++ b/pom.xml @@ -1127,7 +1127,7 @@ modules/openapi-generator-core modules/openapi-generator - + modules/openapi-generator-maven-plugin From ca5b2e6fbd035f63cc5132a12a7d38a46deb5154 Mon Sep 17 00:00:00 2001 From: jpfinne Date: Fri, 22 Mar 2024 10:41:26 +0100 Subject: [PATCH 09/27] test all vars --- .../openapitools/codegen/DefaultCodegenTest.java | 16 ++++++++++++++++ .../test/resources/3_0/spring/issue_16797.yaml | 3 +++ 2 files changed, 19 insertions(+) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java index a5df77b6074c..c4f367cc3aaa 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java @@ -4889,4 +4889,20 @@ public void testWebhooks() throws IOException { Assert.assertEquals(co.operationId, "newPetGet"); } + @Test + public void testAllOf() throws IOException { + DefaultCodegen codegen = new DefaultCodegen(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/spring/issue_16797.yaml"); + codegen.setOpenAPI(openAPI); + + Schema object3 = openAPI.getComponents().getSchemas().get("Object3"); + codegen.setOpenAPI(openAPI); + CodegenModel model = codegen.fromModel("Object3", object3); + Assert.assertEquals(names(model.allVars), List.of("timestamp", "pageInfo", "responseType", "requestId", "success")); + System.out.println(names(model.allVars)); + } + + static List names(List vars) { + return vars.stream().map(CodegenProperty::getBaseName).collect(Collectors.toList()); + } } diff --git a/modules/openapi-generator/src/test/resources/3_0/spring/issue_16797.yaml b/modules/openapi-generator/src/test/resources/3_0/spring/issue_16797.yaml index 8201b6bd7483..dbb2dd77b344 100644 --- a/modules/openapi-generator/src/test/resources/3_0/spring/issue_16797.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/spring/issue_16797.yaml @@ -74,6 +74,9 @@ components: allOf: - $ref: '#/components/schemas/Object2' properties: + timestamp: + type: string + format: date-time pageInfo: $ref: '#/components/schemas/Type1' required: From 9263f4ca3d804b09891a59fa5d9291c160612ac6 Mon Sep 17 00:00:00 2001 From: jpfinne Date: Mon, 25 Mar 2024 08:25:12 +0100 Subject: [PATCH 10/27] rollback custom pom.xml --- pom.xml | 58 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/pom.xml b/pom.xml index d5d83bba3351..2ce69f3df520 100644 --- a/pom.xml +++ b/pom.xml @@ -1,11 +1,11 @@ - be.fednot.corporate - fednot-corporate - 2.7.13 + org.sonatype.oss + oss-parent + 5 - + 4.0.0 org.openapitools @@ -13,11 +13,13 @@ pom openapi-generator-project - 7.5.0-FEDNOT-SNAPSHOT + 7.5.0-SNAPSHOT https://github.com/openapitools/openapi-generator - ${scm.url}/scm/tool/openapi-generator-fork.git + scm:git:git@github.com:openapitools/openapi-generator.git + scm:git:git@github.com:openapitools/openapi-generator.git + https://github.com/openapitools/openapi-generator @@ -56,16 +58,16 @@ github https://github.com/openapitools/openapi-generator/issues - - - - - - - - - - + + + ossrh + https://oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + Apache License 2.0 @@ -1141,10 +1143,10 @@ modules/openapi-generator-core modules/openapi-generator - + modules/openapi-generator-cli modules/openapi-generator-maven-plugin - - + modules/openapi-generator-gradle-plugin + modules/openapi-generator-online @@ -1200,15 +1202,15 @@ - - - - - - - - - + + + sonatype-snapshots + https://oss.sonatype.org/content/repositories/snapshots + + true + + + 11 11 From 33a68b206df4d0cbc4ae7ed078491a9342893ba5 Mon Sep 17 00:00:00 2001 From: jpfinne Date: Fri, 26 Apr 2024 15:47:10 +0200 Subject: [PATCH 11/27] commit master --- .devcontainer/devcontainer.json | 6 +- .github/workflows/openapi-generator.yaml | 17 +- .github/workflows/samples-dotnet.yaml | 1 + .../workflows/samples-java-client-jdk11.yaml | 1 + .github/workflows/samples-php8.yaml | 3 + .github/workflows/samples-scala.yaml | 1 + .gitignore | 5 + CONTRIBUTING.md | 24 +- README.md | 20 +- appveyor.yml | 1 + ...sharp-generichost-net8-anyOfNoCompare.yaml | 13 + bin/configs/{unmaintained => }/html2.yaml | 0 ...file-rest-client-3.0-jackson-with-xml.yaml | 3 +- ...-microprofile-rest-client-3.0-jackson.yaml | 3 +- bin/configs/java-okhttp-gson-swagger1.yaml | 3 +- .../java-okhttp-user-defined-templates.yaml | 17 + bin/configs/jaxrs-spec-quarkus-mutiny.yaml | 15 + ...in-model-prefix-type-mapping-echo-api.yaml | 2 +- .../kotlin-model-prefix-type-mapping.yaml | 2 +- ...ith-fake-endpoints-models-for-testing.yaml | 4 +- bin/configs/manual/rust-axum-petstore.yaml | 2 + bin/configs/php-flight.yaml | 6 + bin/configs/scala-cask-petstore-new.yaml | 13 + bin/utils/test_file_list.yaml | 2 +- buildConfig.yaml | 4 - docs/contributing.md | 24 +- docs/customization.md | 2 + docs/generators.md | 2 + docs/generators/cpp-restsdk.md | 3 +- docs/generators/go.md | 1 + docs/generators/groovy.md | 1 + docs/generators/java-camel.md | 1 + docs/generators/java-helidon-client.md | 1 + docs/generators/java-helidon-server.md | 1 + docs/generators/java-inflector.md | 1 + docs/generators/java-micronaut-client.md | 1 + docs/generators/java-micronaut-server.md | 1 + docs/generators/java-msf4j.md | 1 + docs/generators/java-pkmst.md | 1 + docs/generators/java-play-framework.md | 1 + docs/generators/java-undertow-server.md | 1 + docs/generators/java-vertx-web.md | 1 + docs/generators/java-vertx.md | 1 + docs/generators/java-wiremock.md | 1 + docs/generators/java.md | 3 +- docs/generators/jaxrs-cxf-cdi.md | 2 + docs/generators/jaxrs-cxf-client.md | 1 + docs/generators/jaxrs-cxf-extended.md | 1 + docs/generators/jaxrs-cxf.md | 1 + docs/generators/jaxrs-jersey.md | 1 + docs/generators/jaxrs-resteasy-eap.md | 1 + docs/generators/jaxrs-resteasy.md | 1 + docs/generators/jaxrs-spec.md | 2 + docs/generators/php-flight.md | 270 ++ docs/generators/scala-cask.md | 262 ++ docs/generators/spring.md | 1 + modules/openapi-generator-cli/pom.xml | 2 +- .../openapitools/codegen/cmd/Generate.java | 4 +- modules/openapi-generator-core/pom.xml | 2 +- .../codegen/config/GeneratorSettings.java | 28 +- .../README.adoc | 2 +- .../gradle.properties | 2 +- .../openapi-generator-gradle-plugin/pom.xml | 2 +- .../samples/local-spec/gradle.properties | 2 +- .../gradle/plugin/tasks/GenerateTask.kt | 4 +- .../openapi-generator-maven-plugin/README.md | 2 +- .../examples/java-client.xml | 2 +- .../examples/kotlin.xml | 2 +- .../examples/multi-module/java-client/pom.xml | 2 +- .../examples/non-java-invalid-spec.xml | 2 +- .../examples/non-java.xml | 2 +- .../examples/spring.xml | 2 +- .../openapi-generator-maven-plugin/pom.xml | 2 +- .../codegen/plugin/CodeGenMojo.java | 8 +- modules/openapi-generator-online/README.md | 2 +- modules/openapi-generator-online/pom.xml | 2 +- modules/openapi-generator/pom.xml | 2 +- .../openapitools/codegen/CodegenConfig.java | 4 +- .../codegen/CodegenConstants.java | 2 + .../openapitools/codegen/CodegenModel.java | 2 +- .../openapitools/codegen/DefaultCodegen.java | 137 +- .../codegen/DefaultGenerator.java | 10 +- .../codegen/InlineModelResolver.java | 33 +- .../codegen/OpenAPINormalizer.java | 39 +- .../codegen/config/CodegenConfigurator.java | 28 +- .../config/CodegenConfiguratorUtils.java | 16 +- .../codegen/examples/ExampleGenerator.java | 9 +- .../codegen/examples/XmlExampleGenerator.java | 3 +- .../codegen/languages/AbstractAdaCodegen.java | 3 +- .../languages/AbstractApexCodegen.java | 12 +- .../languages/AbstractCSharpCodegen.java | 14 +- .../languages/AbstractDartCodegen.java | 2 +- .../languages/AbstractEiffelCodegen.java | 6 +- .../languages/AbstractFSharpCodegen.java | 8 +- .../codegen/languages/AbstractGoCodegen.java | 15 +- .../languages/AbstractGraphQLCodegen.java | 3 +- .../languages/AbstractJavaCodegen.java | 28 +- .../languages/AbstractJuliaCodegen.java | 3 +- .../languages/AbstractKotlinCodegen.java | 11 +- .../codegen/languages/AbstractPhpCodegen.java | 5 +- .../languages/AbstractPythonCodegen.java | 11 +- .../AbstractPythonConnexionServerCodegen.java | 3 +- .../AbstractPythonPydanticV1Codegen.java | 11 +- .../languages/AbstractRubyCodegen.java | 2 +- .../languages/AbstractRustCodegen.java | 3 +- .../languages/AbstractScalaCodegen.java | 15 +- .../AbstractTypeScriptClientCodegen.java | 8 +- .../languages/AndroidClientCodegen.java | 3 +- .../codegen/languages/ApexClientCodegen.java | 2 +- .../codegen/languages/BashClientCodegen.java | 3 +- .../languages/CSharpClientCodegen.java | 3 +- .../languages/CSharpReducedClientCodegen.java | 3 +- .../languages/ClojureClientCodegen.java | 6 +- .../languages/ConfluenceWikiCodegen.java | 3 +- .../languages/CppPistacheServerCodegen.java | 6 +- .../languages/CppQtAbstractCodegen.java | 6 +- .../languages/CppRestSdkClientCodegen.java | 12 +- .../languages/CppRestbedServerCodegen.java | 9 +- .../CppRestbedServerDeprecatedCodegen.java | 6 +- .../languages/CppUE4ClientCodegen.java | 3 +- .../languages/CrystalClientCodegen.java | 2 +- .../languages/ElixirClientCodegen.java | 3 +- .../codegen/languages/ElmClientCodegen.java | 6 +- .../languages/ErlangProperCodegen.java | 12 +- .../codegen/languages/GoClientCodegen.java | 6 + .../GraphQLNodeJSExpressServerCodegen.java | 3 +- .../languages/HaskellHttpClientCodegen.java | 6 +- .../languages/HaskellServantCodegen.java | 19 +- .../languages/HaskellYesodServerCodegen.java | 6 +- .../languages/JMeterClientCodegen.java | 3 +- .../codegen/languages/JavaClientCodegen.java | 20 +- .../languages/JavaJAXRSSpecServerCodegen.java | 9 + .../JavascriptApolloClientCodegen.java | 35 +- .../languages/JavascriptClientCodegen.java | 34 +- ...JavascriptClosureAngularClientCodegen.java | 3 +- .../JetbrainsHttpClientClientCodegen.java | 64 +- .../languages/KotlinClientCodegen.java | 9 +- .../codegen/languages/LuaClientCodegen.java | 3 +- .../codegen/languages/N4jsClientCodegen.java | 5 +- .../codegen/languages/NimClientCodegen.java | 3 +- .../codegen/languages/OCamlClientCodegen.java | 18 +- .../codegen/languages/ObjcClientCodegen.java | 3 +- .../codegen/languages/PerlClientCodegen.java | 3 +- .../PhpDataTransferClientCodegen.java | 4 +- .../languages/PhpFlightServerCodegen.java | 326 ++ .../PhpMezzioPathHandlerServerCodegen.java | 4 +- .../languages/PhpNextgenClientCodegen.java | 4 + .../languages/PhpSilexServerCodegen.java | 3 +- .../languages/PhpSymfonyServerCodegen.java | 3 +- .../languages/PostmanCollectionCodegen.java | 3 + .../languages/PowerShellClientCodegen.java | 3 +- .../languages/ProtobufSchemaCodegen.java | 3 +- .../languages/PythonFastAPIServerCodegen.java | 3 +- .../codegen/languages/RClientCodegen.java | 3 +- .../languages/RustAxumServerCodegen.java | 3 +- .../codegen/languages/RustClientCodegen.java | 15 +- .../codegen/languages/RustServerCodegen.java | 19 +- .../languages/ScalaAkkaClientCodegen.java | 5 +- .../languages/ScalaCaskServerCodegen.java | 857 ++++++ .../languages/ScalaFinchServerCodegen.java | 3 +- .../languages/ScalaGatlingCodegen.java | 3 +- .../languages/ScalaHttp4sServerCodegen.java | 3 +- .../languages/ScalaPekkoClientCodegen.java | 5 +- .../ScalaPlayFrameworkServerCodegen.java | 2 +- .../languages/ScalaSttp4ClientCodegen.java | 5 +- .../languages/ScalaSttpClientCodegen.java | 5 +- .../languages/ScalazClientCodegen.java | 5 +- .../languages/StaticHtml2Generator.java | 3 +- .../languages/StaticHtmlGenerator.java | 3 +- .../languages/Swift5ClientCodegen.java | 9 +- .../languages/SwiftCombineClientCodegen.java | 5 +- .../languages/TypeScriptClientCodegen.java | 8 +- .../TypeScriptFetchClientCodegen.java | 6 + .../TypeScriptNodeClientCodegen.java | 2 +- .../codegen/languages/XojoClientCodegen.java | 3 +- .../codegen/utils/ModelUtils.java | 71 +- .../resources/Java/RFC3339DateFormat.mustache | 3 +- .../Java/ServerConfiguration.mustache | 1 + .../resources/Java/ServerVariable.mustache | 1 + .../Java/libraries/microprofile/pojo.mustache | 2 +- .../libraries/native/ApiResponse.mustache | 1 + .../Java/libraries/native/JSON.mustache | 1 + .../Java/libraries/native/api.mustache | 1 + .../libraries/okhttp-gson/ApiClient.mustache | 23 + .../okhttp-gson/anyof_model.mustache | 304 +- .../okhttp-gson/auth/AWS4Auth.mustache | 5 + .../okhttp-gson/oneof_model.mustache | 304 +- .../JavaJaxRS/spec/beanValidation.mustache | 3 +- .../spec/libraries/quarkus/api.mustache | 5 + .../spec/libraries/quarkus/apiMethod.mustache | 4 +- .../spec/libraries/quarkus/pom.mustache | 11 + .../quarkus/returnAsyncTypeInterface.mustache | 1 + .../resources/JavaJaxRS/spec/pojo.mustache | 4 +- .../main/resources/JavaSpring/api.mustache | 2 +- .../resources/JavaSpring/apiDelegate.mustache | 2 +- .../org.openapitools.codegen.CodegenConfig | 2 + .../anytype-header.mustache | 46 + .../anytype-source.mustache | 40 + .../csharp/HttpSigningConfiguration.mustache | 2 +- .../generichost/ClientUtils.mustache | 2 +- .../generichost/JsonConverter.mustache | 8 +- .../csharp/libraries/generichost/api.mustache | 7 +- .../resources/go-gin-server/go.mod.mustache | 2 +- .../go-server/partial_header.mustache | 3 +- .../main/resources/go/model_simple.mustache | 12 +- .../main/resources/htmlDocs2/index.mustache | 81 +- .../java-undertow-server/pom.mustache | 2 +- .../libraries/jvm-retrofit2/api.mustache | 6 +- .../libraries/multiplatform/api.mustache | 4 +- .../kotlin-spring/apiDelegate.mustache | 2 +- .../kotlin-spring/apiInterface.mustache | 2 +- .../kotlin-spring/cookieParams.mustache | 2 +- .../kotlin-spring/dataClass.mustache | 3 + .../kotlin-spring/formParams.mustache | 2 +- .../kotlin-spring/headerParams.mustache | 2 +- .../kotlin-spring/pathParams.mustache | 2 +- .../kotlin-spring/queryParams.mustache | 2 +- .../kotlin-spring/serviceImpl.mustache | 2 +- .../main/resources/php-flight/README.mustache | 10 + .../main/resources/php-flight/api.mustache | 57 + .../resources/php-flight/composer.mustache | 39 + .../src/main/resources/php-flight/gitignore | 28 + .../resources/php-flight/licenseInfo.mustache | 23 + .../main/resources/php-flight/model.mustache | 31 + .../resources/php-flight/model_enum.mustache | 8 + .../php-flight/model_generic.mustache | 90 + .../php-flight/model_variables.mustache | 113 + .../php-flight/partial_header.mustache | 14 + .../resources/php-flight/phpunit.mustache | 28 + .../php-flight/register_routes.mustache | 85 + .../php-flight/register_routes_test.mustache | 31 + .../php-nextgen/ObjectSerializer.mustache | 1 - .../resources/php-symfony/Controller.mustache | 6 +- .../php-symfony/api_controller.mustache | 19 +- .../resources/php-symfony/composer.mustache | 16 +- .../serialization/JmsSerializer.mustache | 36 +- .../testing/ControllerTest.mustache | 2 +- .../resources/php/ObjectSerializer.mustache | 1 - .../resources/powershell/api_client.mustache | 125 +- .../python-fastapi/model_doc.mustache | 2 +- .../python-fastapi/requirements.mustache | 4 +- .../python-pydantic-v1/model_doc.mustache | 2 +- .../main/resources/python/api_client.mustache | 2 + .../main/resources/python/model_doc.mustache | 2 +- .../main/resources/rust-axum/Cargo.mustache | 4 +- .../src/main/resources/rust-axum/lib.mustache | 12 +- .../main/resources/rust-axum/models.mustache | 16 +- .../server-operation-validate.mustache | 8 +- .../src/main/resources/rust/Cargo.mustache | 2 +- .../src/main/resources/rust/model.mustache | 15 +- .../scala-cask/.scalafmt.conf.mustache | 4 + .../resources/scala-cask/Dockerfile.mustache | 13 + .../main/resources/scala-cask/README.mustache | 96 + .../main/resources/scala-cask/api.mustache | 0 .../resources/scala-cask/apiPackage.mustache | 155 + .../resources/scala-cask/apiRoutes.mustache | 61 + .../apiRoutesQueryParamsTyped.mustache | 1 + .../resources/scala-cask/apiService.mustache | 37 + .../resources/scala-cask/appPackage.mustache | 12 + .../resources/scala-cask/appRoutes.mustache | 40 + .../resources/scala-cask/baseApp.mustache | 49 + .../resources/scala-cask/build.sbt.mustache | 53 + .../resources/scala-cask/build.sc.mustache | 43 + .../scala-cask/buildAndPublish.yml.mustache | 38 + .../resources/scala-cask/example.mustache | 60 + .../resources/scala-cask/exampleApp.mustache | 21 + .../resources/scala-cask/gitignore.mustache | 25 + .../resources/scala-cask/licenseInfo.mustache | 16 + .../main/resources/scala-cask/model.mustache | 60 + .../resources/scala-cask/modelData.mustache | 250 ++ .../scala-cask/modelPackage.mustache | 53 + .../resources/scala-cask/modelTest.mustache | 37 + .../scala-cask/openapiRoute.mustache | 116 + .../scala-cask/parseHttpParams.mustache | 56 + .../scala-cask/pathExtractor.mustache | 1 + .../scala-cask/pathExtractorParams.mustache | 1 + .../scala-cask/project/build.properties | 1 + .../resources/scala-cask/project/plugins.sbt | 4 + .../resources/scala-cask/queryParams.mustache | 1 + .../main/resources/swift5/APIHelper.mustache | 4 +- .../src/main/resources/swift5/Models.mustache | 4 +- .../URLSessionImplementations.mustache | 48 +- .../typescript-angular/modelGeneric.mustache | 10 +- .../typescript-axios/common.mustache | 42 +- .../typescript-nestjs/api.module.mustache | 2 +- .../typescript-nestjs/api.service.mustache | 48 +- .../typescript-node/package.mustache | 5 +- .../codegen/DefaultCodegenTest.java | 36 +- .../codegen/OpenAPINormalizerTest.java | 141 +- .../codegen/go/GoClientCodegenTest.java | 63 + .../codegen/go/GoClientOptionsTest.java | 1 + .../codegen/java/AbstractJavaCodegenTest.java | 90 + .../codegen/java/JavaClientCodegenTest.java | 34 +- .../jaxrs/JavaJAXRSSpecServerCodegenTest.java | 122 + .../java/spring/SpringCodegenTest.java | 94 +- .../kotlin/AbstractKotlinCodegenTest.java | 2 + .../options/GoClientOptionsProvider.java | 2 + .../flight/PhpFlightServerCodegenTest.java | 74 + .../postman/PostmanCollectionCodegenTest.java | 3 +- .../TypeScriptFetchClientCodegenTest.java | 38 + .../codegen/utils/ModelUtilsTest.java | 6 + .../test/resources/3_0/cpp-ue4/petstore.yaml | 717 +++++ .../allof_multiple_ref_and_discriminator.yaml | 54 + .../3_0/go/allof_skip_unmarshal_json.yaml | 55 + .../3_0/go/allof_with_unmarshal_json.yaml | 54 + .../src/test/resources/3_0/issue_14432.yaml | 30 + ...points-models-for-testing-okhttp-gson.yaml | 19 + .../resources/3_0/petstore-php-flight.yaml | 411 +++ ...ith-fake-endpoints-models-for-testing.yaml | 6 + .../3_0/postman-collection/SampleProject.yaml | 1 + ...ith-fake-endpoints-models-for-testing.yaml | 30 + .../src/test/resources/3_0/rust/petstore.yaml | 4 + .../3_0/simplifyOneOfAnyOf_test.yaml | 16 + .../resources/3_0/spring/issue_16797.yaml | 3 - .../src/test/resources/3_1/issue_18291.yaml | 36 + .../src/test/resources/3_1/java/petstore.yaml | 71 +- .../reusable-components-without-paths.yaml | 19 + .../src/test/resources/3_1/schema.yaml | 17 +- .../3_1/simplifyOneOfAnyOf_test.yaml | 114 + .../src/test/resources/bugs/issue_17343.yaml | 46 - .../src/test/resources/bugs/issue_17768.yaml | 33 + .../src/test/resources/bugs/issue_18336.yaml | 25 + .../src/test/resources/sampleConfig.json | 14 +- openapitools.json | 2 +- pom.xml | 6 +- .../.openapi-generator/VERSION | 2 +- .../echo_api/csharp-restsharp/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../echo_api/go-external-refs/README.md | 2 +- .../echo_api/go/.openapi-generator/VERSION | 2 +- samples/client/echo_api/go/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../echo_api/java/apache-httpclient/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../java/org/openapitools/client/BaseApi.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../org/openapitools/client/api/AuthApi.java | 2 +- .../org/openapitools/client/api/BodyApi.java | 2 +- .../org/openapitools/client/api/FormApi.java | 2 +- .../openapitools/client/api/HeaderApi.java | 2 +- .../org/openapitools/client/api/PathApi.java | 2 +- .../org/openapitools/client/api/QueryApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/model/Bird.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/DataQuery.java | 2 +- .../client/model/DefaultValue.java | 2 +- .../client/model/NumberPropertiesOnly.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Query.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../TestFormObjectMultipartRequestMarker.java | 2 +- ...deTrueObjectAllOfQueryObjectParameter.java | 2 +- ...deTrueArrayStringQueryObjectParameter.java | 2 +- .../feign-gson/.openapi-generator/VERSION | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../org/openapitools/client/api/AuthApi.java | 2 +- .../org/openapitools/client/api/BodyApi.java | 2 +- .../org/openapitools/client/api/FormApi.java | 2 +- .../openapitools/client/api/HeaderApi.java | 2 +- .../org/openapitools/client/api/PathApi.java | 2 +- .../org/openapitools/client/api/QueryApi.java | 2 +- .../org/openapitools/client/model/Bird.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/DataQuery.java | 2 +- .../client/model/DefaultValue.java | 2 +- .../client/model/NumberPropertiesOnly.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Query.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../TestFormObjectMultipartRequestMarker.java | 2 +- ...deTrueObjectAllOfQueryObjectParameter.java | 2 +- ...deTrueArrayStringQueryObjectParameter.java | 2 +- .../java/native/.openapi-generator/VERSION | 2 +- samples/client/echo_api/java/native/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../org/openapitools/client/ApiResponse.java | 1 + .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/JSON.java | 3 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/api/AuthApi.java | 4 +- .../org/openapitools/client/api/BodyApi.java | 12 +- .../org/openapitools/client/api/FormApi.java | 5 +- .../openapitools/client/api/HeaderApi.java | 3 +- .../org/openapitools/client/api/PathApi.java | 3 +- .../org/openapitools/client/api/QueryApi.java | 12 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../org/openapitools/client/model/Bird.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/DataQuery.java | 2 +- .../client/model/DefaultValue.java | 2 +- .../client/model/NumberPropertiesOnly.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Query.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../TestFormObjectMultipartRequestMarker.java | 2 +- ...deTrueObjectAllOfQueryObjectParameter.java | 2 +- ...deTrueArrayStringQueryObjectParameter.java | 2 +- .../.github/workflows/maven.yml | 30 + .../.gitignore | 21 + .../.openapi-generator-ignore | 23 + .../.openapi-generator/FILES | 63 + .../.openapi-generator/VERSION | 1 + .../.travis.yml | 22 + .../README.md | 184 ++ .../api/openapi.yaml | 870 ++++++ .../build.gradle | 169 ++ .../build.sbt | 29 + .../docs/Category.md | 15 + .../docs/ModelApiResponse.md | 16 + .../docs/Order.md | 29 + .../docs/Pet.md | 29 + .../docs/PetApiDocumentation.md} | 0 .../docs/StoreApiDocumentation.md} | 0 .../docs/Tag.md | 15 + .../docs/User.md | 21 + .../docs/UserApiDocumentation.md} | 0 .../git_push.sh | 57 + .../gradle.properties | 6 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59536 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + .../gradlew | 234 ++ .../gradlew.bat | 89 + .../info.md | 1289 ++++++++ .../modelCopy/Category.java | 151 + .../modelCopy/ModelApiResponse.java | 151 + .../modelCopy/Order.java | 151 + .../modelCopy/Pet.java | 151 + .../modelCopy/Tag.java | 151 + .../modelCopy/User.java | 151 + .../pom.xml | 349 +++ .../settings.gradle | 1 + .../src/main/AndroidManifest.xml | 3 + .../org/openapitools/client/ApiCallback.java | 62 + .../org/openapitools/client/ApiClient.java | 1660 +++++++++++ .../org/openapitools/client/ApiException.java | 167 ++ .../org/openapitools/client/ApiResponse.java | 76 + .../openapitools/client/Configuration.java | 41 + .../client/GzipRequestInterceptor.java | 85 + .../java/org/openapitools/client/JSON.java | 413 +++ .../java/org/openapitools/client/Pair.java | 57 + .../client/ProgressRequestBody.java | 73 + .../client/ProgressResponseBody.java | 70 + .../client/ServerConfiguration.java | 59 + .../openapitools/client/ServerVariable.java | 24 + .../org/openapitools/client/StringUtil.java | 83 + .../org/openapitools/client/api/PetApi.java | 0 .../org/openapitools/client/api/StoreApi.java | 0 .../org/openapitools/client/api/UserApi.java | 0 .../openapitools/client/auth/ApiKeyAuth.java | 80 + .../client/auth/Authentication.java | 36 + .../client/auth/HttpBasicAuth.java | 57 + .../client/auth/HttpBearerAuth.java | 75 + .../org/openapitools/client/auth/OAuth.java | 42 + .../openapitools/client/auth/OAuthFlow.java | 25 + .../client/auth/OAuthOkHttpClient.java | 69 + .../client/auth/RetryingOAuth.java | 210 ++ .../client/model/AbstractOpenApiSchema.java | 146 + .../openapitools/client/model/Category.java | 232 ++ .../client/model/ModelApiResponse.java | 261 ++ .../org/openapitools/client/model/Order.java | 395 +++ .../org/openapitools/client/model/Pet.java | 455 +++ .../org/openapitools/client/model/Tag.java | 232 ++ .../org/openapitools/client/model/User.java | 403 +++ .../openapitools/client/api/PetApiTest.java | 0 .../openapitools/client/api/StoreApiTest.java | 0 .../openapitools/client/api/UserApiTest.java | 0 .../client/model/CategoryTest.java | 56 + .../client/model/ModelApiResponseTest.java | 64 + .../openapitools/client/model/OrderTest.java | 89 + .../openapitools/client/model/PetTest.java | 92 + .../openapitools/client/model/TagTest.java | 56 + .../openapitools/client/model/UserTest.java | 104 + .../okhttp-gson/.openapi-generator/VERSION | 2 +- .../echo_api/java/okhttp-gson/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 13 + .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../org/openapitools/client/model/Bird.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/DataQuery.java | 2 +- .../client/model/DefaultValue.java | 2 +- .../client/model/NumberPropertiesOnly.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Query.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../TestFormObjectMultipartRequestMarker.java | 2 +- ...deTrueObjectAllOfQueryObjectParameter.java | 2 +- ...deTrueArrayStringQueryObjectParameter.java | 2 +- .../java/resteasy/.openapi-generator/VERSION | 2 +- .../client/echo_api/java/resteasy/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/JSON.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../org/openapitools/client/api/AuthApi.java | 2 +- .../org/openapitools/client/api/BodyApi.java | 2 +- .../org/openapitools/client/api/FormApi.java | 2 +- .../openapitools/client/api/HeaderApi.java | 2 +- .../org/openapitools/client/api/PathApi.java | 2 +- .../org/openapitools/client/api/QueryApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/model/Bird.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/DataQuery.java | 2 +- .../client/model/DefaultValue.java | 2 +- .../client/model/NumberPropertiesOnly.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Query.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../TestFormObjectMultipartRequestMarker.java | 2 +- ...deTrueObjectAllOfQueryObjectParameter.java | 2 +- ...deTrueArrayStringQueryObjectParameter.java | 2 +- .../resttemplate/.openapi-generator/VERSION | 2 +- .../echo_api/java/resttemplate/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../java/org/openapitools/client/BaseApi.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/api/AuthApi.java | 2 +- .../org/openapitools/client/api/BodyApi.java | 2 +- .../org/openapitools/client/api/FormApi.java | 2 +- .../openapitools/client/api/HeaderApi.java | 2 +- .../org/openapitools/client/api/PathApi.java | 2 +- .../org/openapitools/client/api/QueryApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/model/Bird.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/DataQuery.java | 2 +- .../client/model/DefaultValue.java | 2 +- .../client/model/NumberPropertiesOnly.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Query.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../TestFormObjectMultipartRequestMarker.java | 2 +- ...deTrueObjectAllOfQueryObjectParameter.java | 2 +- ...deTrueArrayStringQueryObjectParameter.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-jvm-spring-3-restclient/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-jvm-spring-3-webclient/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../php-nextgen/.openapi-generator/VERSION | 2 +- samples/client/echo_api/php-nextgen/README.md | 2 +- .../echo_api/php-nextgen/src/Api/AuthApi.php | 2 +- .../echo_api/php-nextgen/src/Api/BodyApi.php | 2 +- .../echo_api/php-nextgen/src/Api/FormApi.php | 2 +- .../php-nextgen/src/Api/HeaderApi.php | 2 +- .../echo_api/php-nextgen/src/Api/PathApi.php | 2 +- .../echo_api/php-nextgen/src/Api/QueryApi.php | 2 +- .../echo_api/php-nextgen/src/ApiException.php | 2 +- .../php-nextgen/src/Configuration.php | 2 +- .../php-nextgen/src/HeaderSelector.php | 2 +- .../echo_api/php-nextgen/src/Model/Bird.php | 2 +- .../php-nextgen/src/Model/Category.php | 2 +- .../php-nextgen/src/Model/DataQuery.php | 2 +- .../php-nextgen/src/Model/DefaultValue.php | 2 +- .../php-nextgen/src/Model/ModelInterface.php | 2 +- .../src/Model/NumberPropertiesOnly.php | 2 +- .../echo_api/php-nextgen/src/Model/Pet.php | 2 +- .../echo_api/php-nextgen/src/Model/Query.php | 2 +- .../php-nextgen/src/Model/StringEnumRef.php | 2 +- .../echo_api/php-nextgen/src/Model/Tag.php | 2 +- .../TestFormObjectMultipartRequestMarker.php | 2 +- ...odeTrueObjectAllOfQueryObjectParameter.php | 2 +- ...odeTrueArrayStringQueryObjectParameter.php | 2 +- .../php-nextgen/src/ObjectSerializer.php | 3 +- .../powershell/.openapi-generator/VERSION | 2 +- samples/client/echo_api/powershell/README.md | 2 +- .../src/PSOpenAPITools/Private/ApiClient.ps1 | 125 +- .../en-US/about_PSOpenAPITools.help.txt | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../docs/Bird.md | 2 +- .../docs/Category.md | 2 +- .../docs/DataQuery.md | 2 +- .../docs/DefaultValue.md | 2 +- .../docs/NumberPropertiesOnly.md | 2 +- .../docs/Pet.md | 2 +- .../docs/Query.md | 2 +- .../docs/Tag.md | 2 +- .../TestFormObjectMultipartRequestMarker.md | 2 +- ...lodeTrueObjectAllOfQueryObjectParameter.md | 2 +- ...lodeTrueArrayStringQueryObjectParameter.md | 2 +- .../openapi_client/api_client.py | 2 + .../.openapi-generator/VERSION | 2 +- .../echo_api/python-pydantic-v1/README.md | 2 +- .../echo_api/python-pydantic-v1/docs/Bird.md | 2 +- .../python-pydantic-v1/docs/Category.md | 2 +- .../python-pydantic-v1/docs/DataQuery.md | 2 +- .../python-pydantic-v1/docs/DefaultValue.md | 2 +- .../docs/NumberPropertiesOnly.md | 2 +- .../echo_api/python-pydantic-v1/docs/Pet.md | 2 +- .../echo_api/python-pydantic-v1/docs/Query.md | 2 +- .../echo_api/python-pydantic-v1/docs/Tag.md | 2 +- .../TestFormObjectMultipartRequestMarker.md | 2 +- ...lodeTrueObjectAllOfQueryObjectParameter.md | 2 +- ...lodeTrueArrayStringQueryObjectParameter.md | 2 +- .../python/.openapi-generator/VERSION | 2 +- samples/client/echo_api/python/README.md | 2 +- samples/client/echo_api/python/docs/Bird.md | 2 +- .../client/echo_api/python/docs/Category.md | 2 +- .../client/echo_api/python/docs/DataQuery.md | 2 +- .../echo_api/python/docs/DefaultValue.md | 2 +- .../python/docs/NumberPropertiesOnly.md | 2 +- samples/client/echo_api/python/docs/Pet.md | 2 +- samples/client/echo_api/python/docs/Query.md | 2 +- samples/client/echo_api/python/docs/Tag.md | 2 +- .../TestFormObjectMultipartRequestMarker.md | 2 +- ...lodeTrueObjectAllOfQueryObjectParameter.md | 2 +- ...lodeTrueArrayStringQueryObjectParameter.md | 2 +- .../python/openapi_client/api_client.py | 2 + .../echo_api/r/.openapi-generator/VERSION | 2 +- samples/client/echo_api/r/README.md | 2 +- .../ruby-faraday/.openapi-generator/VERSION | 2 +- .../client/echo_api/ruby-faraday/README.md | 2 +- .../ruby-faraday/lib/openapi_client.rb | 2 +- .../lib/openapi_client/api/auth_api.rb | 2 +- .../lib/openapi_client/api/body_api.rb | 2 +- .../lib/openapi_client/api/form_api.rb | 2 +- .../lib/openapi_client/api/header_api.rb | 2 +- .../lib/openapi_client/api/path_api.rb | 2 +- .../lib/openapi_client/api/query_api.rb | 2 +- .../lib/openapi_client/api_client.rb | 2 +- .../lib/openapi_client/api_error.rb | 2 +- .../lib/openapi_client/configuration.rb | 2 +- .../lib/openapi_client/models/bird.rb | 2 +- .../lib/openapi_client/models/category.rb | 2 +- .../lib/openapi_client/models/data_query.rb | 2 +- .../openapi_client/models/default_value.rb | 2 +- .../models/number_properties_only.rb | 2 +- .../lib/openapi_client/models/pet.rb | 2 +- .../lib/openapi_client/models/query.rb | 2 +- .../openapi_client/models/string_enum_ref.rb | 2 +- .../lib/openapi_client/models/tag.rb | 2 +- ...st_form_object_multipart_request_marker.rb | 2 +- ...ue_object_all_of_query_object_parameter.rb | 2 +- ...rue_array_string_query_object_parameter.rb | 2 +- .../lib/openapi_client/version.rb | 2 +- .../ruby-faraday/openapi_client.gemspec | 2 +- .../echo_api/ruby-faraday/spec/spec_helper.rb | 2 +- .../ruby-httpx/.openapi-generator/VERSION | 2 +- samples/client/echo_api/ruby-httpx/README.md | 2 +- .../echo_api/ruby-httpx/lib/openapi_client.rb | 2 +- .../lib/openapi_client/api/auth_api.rb | 2 +- .../lib/openapi_client/api/body_api.rb | 2 +- .../lib/openapi_client/api/form_api.rb | 2 +- .../lib/openapi_client/api/header_api.rb | 2 +- .../lib/openapi_client/api/path_api.rb | 2 +- .../lib/openapi_client/api/query_api.rb | 2 +- .../lib/openapi_client/api_client.rb | 2 +- .../lib/openapi_client/api_error.rb | 2 +- .../lib/openapi_client/configuration.rb | 2 +- .../lib/openapi_client/models/bird.rb | 2 +- .../lib/openapi_client/models/category.rb | 2 +- .../lib/openapi_client/models/data_query.rb | 2 +- .../openapi_client/models/default_value.rb | 2 +- .../models/number_properties_only.rb | 2 +- .../lib/openapi_client/models/pet.rb | 2 +- .../lib/openapi_client/models/query.rb | 2 +- .../openapi_client/models/string_enum_ref.rb | 2 +- .../lib/openapi_client/models/tag.rb | 2 +- ...st_form_object_multipart_request_marker.rb | 2 +- ...ue_object_all_of_query_object_parameter.rb | 2 +- ...rue_array_string_query_object_parameter.rb | 2 +- .../ruby-httpx/lib/openapi_client/version.rb | 2 +- .../ruby-httpx/openapi_client.gemspec | 2 +- .../echo_api/ruby-httpx/spec/spec_helper.rb | 2 +- .../ruby-typhoeus/.openapi-generator/VERSION | 2 +- .../client/echo_api/ruby-typhoeus/README.md | 2 +- .../ruby-typhoeus/lib/openapi_client.rb | 2 +- .../lib/openapi_client/api/auth_api.rb | 2 +- .../lib/openapi_client/api/body_api.rb | 2 +- .../lib/openapi_client/api/form_api.rb | 2 +- .../lib/openapi_client/api/header_api.rb | 2 +- .../lib/openapi_client/api/path_api.rb | 2 +- .../lib/openapi_client/api/query_api.rb | 2 +- .../lib/openapi_client/api_client.rb | 2 +- .../lib/openapi_client/api_error.rb | 2 +- .../lib/openapi_client/configuration.rb | 2 +- .../lib/openapi_client/models/bird.rb | 2 +- .../lib/openapi_client/models/category.rb | 2 +- .../lib/openapi_client/models/data_query.rb | 2 +- .../openapi_client/models/default_value.rb | 2 +- .../models/number_properties_only.rb | 2 +- .../lib/openapi_client/models/pet.rb | 2 +- .../lib/openapi_client/models/query.rb | 2 +- .../openapi_client/models/string_enum_ref.rb | 2 +- .../lib/openapi_client/models/tag.rb | 2 +- ...st_form_object_multipart_request_marker.rb | 2 +- ...ue_object_all_of_query_object_parameter.rb | 2 +- ...rue_array_string_query_object_parameter.rb | 2 +- .../lib/openapi_client/version.rb | 2 +- .../ruby-typhoeus/openapi_client.gemspec | 2 +- .../ruby-typhoeus/spec/spec_helper.rb | 2 +- .../build/.openapi-generator/VERSION | 2 +- .../echo_api/typescript-axios/build/common.ts | 42 +- .../http/client/.openapi-generator/VERSION | 2 +- .../http/client/.openapi-generator/VERSION | 2 +- .../http/client/.openapi-generator/VERSION | 2 +- .../http/client/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../others/csharp-complex-files/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../others/go/oneof-anyof-required/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../others/java/jersey2-oneOf-Mixed/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/JSON.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/api/DefaultApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../openapitools/client/model/Example.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/jersey2-oneOf-duplicates/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/JSON.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/api/DefaultApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../openapitools/client/model/Example.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../others/java/okhttp-gson-oneOf/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 13 + .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../client/model/MyExamplePostRequest.java | 113 +- .../.openapi-generator/VERSION | 2 +- .../java/okhttp-gson-streaming/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 13 + .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../client/model/SimpleOneOf.java | 157 +- .../openapitools/client/model/SomeObj.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../java/org/openapitools/client/BaseApi.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../openapitools/client/api/ResourceApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/api/ResourceApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../rust/hyper/api-with-ref-param/README.md | 2 +- .../composed-oneof/.openapi-generator/VERSION | 2 +- .../rust/hyper/composed-oneof/README.md | 2 +- .../emptyObject/.openapi-generator/VERSION | 2 +- .../others/rust/hyper/emptyObject/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../rust/hyper/oneOf-array-map/README.md | 2 +- .../oneOf-reuseRef/.openapi-generator/VERSION | 2 +- .../rust/hyper/oneOf-reuseRef/README.md | 2 +- .../hyper/oneOf/.openapi-generator/VERSION | 2 +- .../client/others/rust/hyper/oneOf/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../rust/reqwest-regression-16119/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../rust/reqwest/api-with-ref-param/README.md | 2 +- .../composed-oneof/.openapi-generator/VERSION | 2 +- .../rust/reqwest/composed-oneof/README.md | 2 +- .../emptyObject/.openapi-generator/VERSION | 2 +- .../others/rust/reqwest/emptyObject/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../rust/reqwest/oneOf-array-map/README.md | 2 +- .../oneOf-reuseRef/.openapi-generator/VERSION | 2 +- .../rust/reqwest/oneOf-reuseRef/README.md | 2 +- .../reqwest/oneOf/.openapi-generator/VERSION | 2 +- .../others/rust/reqwest/oneOf/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../common.ts | 42 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../client/petstore/R-httr2-wrapper/README.md | 2 +- .../R-httr2/.openapi-generator/VERSION | 2 +- samples/client/petstore/R-httr2/README.md | 2 +- .../petstore/R/.openapi-generator/VERSION | 2 +- samples/client/petstore/R/README.md | 2 +- .../petstore/ada/.openapi-generator/VERSION | 2 +- .../src/client/samples-petstore-clients.adb | 2 +- .../src/client/samples-petstore-clients.ads | 2 +- .../ada/src/model/samples-petstore-models.adb | 2 +- .../ada/src/model/samples-petstore-models.ads | 2 +- .../petstore/apex/.openapi-generator/VERSION | 2 +- .../petstore/bash/.openapi-generator/VERSION | 2 +- samples/client/petstore/bash/_petstore-cli | 2 +- samples/client/petstore/bash/petstore-cli | 2 +- .../bash/petstore-cli.bash-completion | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/c-useJsonUnformatted/README.md | 2 +- .../petstore/c/.openapi-generator/VERSION | 2 +- samples/client/petstore/c/README.md | 2 +- .../cpp-qt/.openapi-generator/VERSION | 2 +- samples/client/petstore/cpp-qt/README.md | 2 +- .../client/.openapi-generator/FILES | 2 + .../client/.openapi-generator/VERSION | 2 +- .../petstore/cpp-restsdk/client/README.md | 2 +- .../include/CppRestPetstoreClient/AnyType.h | 58 + .../include/CppRestPetstoreClient/ApiClient.h | 2 +- .../CppRestPetstoreClient/ApiConfiguration.h | 2 +- .../CppRestPetstoreClient/ApiException.h | 2 +- .../CppRestPetstoreClient/HttpContent.h | 2 +- .../include/CppRestPetstoreClient/IHttpBody.h | 2 +- .../include/CppRestPetstoreClient/JsonBody.h | 2 +- .../include/CppRestPetstoreClient/ModelBase.h | 2 +- .../CppRestPetstoreClient/MultipartFormData.h | 2 +- .../include/CppRestPetstoreClient/Object.h | 2 +- .../CppRestPetstoreClient/api/PetApi.h | 2 +- .../CppRestPetstoreClient/api/StoreApi.h | 2 +- .../CppRestPetstoreClient/api/UserApi.h | 2 +- .../CppRestPetstoreClient/model/ApiResponse.h | 2 +- .../CppRestPetstoreClient/model/Category.h | 2 +- .../CppRestPetstoreClient/model/Order.h | 2 +- .../include/CppRestPetstoreClient/model/Pet.h | 2 +- .../include/CppRestPetstoreClient/model/Tag.h | 2 +- .../CppRestPetstoreClient/model/User.h | 2 +- .../cpp-restsdk/client/src/AnyType.cpp | 52 + .../cpp-restsdk/client/src/ApiClient.cpp | 2 +- .../client/src/ApiConfiguration.cpp | 2 +- .../cpp-restsdk/client/src/ApiException.cpp | 2 +- .../cpp-restsdk/client/src/HttpContent.cpp | 2 +- .../cpp-restsdk/client/src/JsonBody.cpp | 2 +- .../cpp-restsdk/client/src/ModelBase.cpp | 2 +- .../client/src/MultipartFormData.cpp | 2 +- .../cpp-restsdk/client/src/Object.cpp | 2 +- .../cpp-restsdk/client/src/api/PetApi.cpp | 2 +- .../cpp-restsdk/client/src/api/StoreApi.cpp | 2 +- .../cpp-restsdk/client/src/api/UserApi.cpp | 2 +- .../client/src/model/ApiResponse.cpp | 2 +- .../cpp-restsdk/client/src/model/Category.cpp | 2 +- .../cpp-restsdk/client/src/model/Order.cpp | 2 +- .../cpp-restsdk/client/src/model/Pet.cpp | 2 +- .../cpp-restsdk/client/src/model/Tag.cpp | 2 +- .../cpp-restsdk/client/src/model/User.cpp | 2 +- .../cpp-tiny/.openapi-generator/VERSION | 2 +- .../cpp-ue4/.openapi-generator/VERSION | 2 +- .../crystal/.openapi-generator/VERSION | 2 +- samples/client/petstore/crystal/.travis.yml | 2 +- samples/client/petstore/crystal/README.md | 2 +- .../petstore/crystal/spec/spec_helper.cr | 2 +- .../client/petstore/crystal/src/petstore.cr | 2 +- .../crystal/src/petstore/api/fake_api.cr | 2 +- .../crystal/src/petstore/api/pet_api.cr | 2 +- .../crystal/src/petstore/api/store_api.cr | 2 +- .../crystal/src/petstore/api/user_api.cr | 2 +- .../crystal/src/petstore/api_client.cr | 2 +- .../crystal/src/petstore/api_error.cr | 2 +- .../crystal/src/petstore/configuration.cr | 2 +- .../models/another_property_name_mapping.cr | 2 +- .../src/petstore/models/api_response.cr | 2 +- .../crystal/src/petstore/models/category.cr | 2 +- .../src/petstore/models/format_test.cr | 2 +- .../crystal/src/petstore/models/order.cr | 2 +- .../crystal/src/petstore/models/pet.cr | 2 +- .../crystal/src/petstore/models/tag.cr | 2 +- .../crystal/src/petstore/models/user.cr | 2 +- .../.openapi-generator/VERSION | 2 +- .../net8/AllOf/.openapi-generator/VERSION | 2 +- .../Org.OpenAPITools/Client/ClientUtils.cs | 2 +- .../net8/AllOf/src/Org.OpenAPITools/README.md | 2 +- .../net8/AnyOf/.openapi-generator/VERSION | 2 +- .../Org.OpenAPITools/Client/ClientUtils.cs | 2 +- .../AnyOf/src/Org.OpenAPITools/Model/Fruit.cs | 4 +- .../net8/AnyOf/src/Org.OpenAPITools/README.md | 2 +- .../net8/AnyOfNoCompare/.gitignore | 362 +++ .../AnyOfNoCompare/.openapi-generator-ignore | 23 + .../AnyOfNoCompare/.openapi-generator/FILES | 42 + .../AnyOfNoCompare/.openapi-generator/VERSION | 1 + .../net8/AnyOfNoCompare/Org.OpenAPITools.sln | 27 + .../generichost/net8/AnyOfNoCompare/README.md | 1 + .../net8/AnyOfNoCompare/api/openapi.yaml | 42 + .../net8/AnyOfNoCompare/appveyor.yml | 9 + .../AnyOfNoCompare/docs/apis/DefaultApi.md | 90 + .../net8/AnyOfNoCompare/docs/models/Apple.md | 10 + .../net8/AnyOfNoCompare/docs/models/Banana.md | 10 + .../net8/AnyOfNoCompare/docs/models/Fruit.md | 10 + .../AnyOfNoCompare/docs/scripts/git_push.ps1 | 75 + .../AnyOfNoCompare/docs/scripts/git_push.sh | 49 + .../Org.OpenAPITools.Test/Api/ApiTestsBase.cs | 58 + .../Api/DefaultApiTests.cs | 64 + .../Api/DependencyInjectionTests.cs | 103 + .../Model/AppleTests.cs} | 34 +- .../Model/BananaTests.cs} | 34 +- .../Model/FruitTests.cs} | 34 +- .../Org.OpenAPITools.Test.csproj | 20 + .../src/Org.OpenAPITools.Test/README.md | 0 .../src/Org.OpenAPITools/Api/DefaultApi.cs | 332 +++ .../src/Org.OpenAPITools/Api/IApi.cs | 15 + .../Org.OpenAPITools/Client/ApiException.cs | 52 + .../src/Org.OpenAPITools/Client/ApiFactory.cs | 49 + .../Client/ApiResponseEventArgs.cs | 24 + .../Org.OpenAPITools/Client/ApiResponse`1.cs | 172 ++ .../Org.OpenAPITools/Client/ClientUtils.cs | 279 ++ .../Client/CookieContainer.cs | 20 + .../Client/DateOnlyJsonConverter.cs | 61 + .../Client/DateOnlyNullableJsonConverter.cs | 66 + .../Client/DateTimeJsonConverter.cs | 75 + .../Client/DateTimeNullableJsonConverter.cs | 80 + .../Client/ExceptionEventArgs.cs | 24 + .../Client/HostConfiguration.cs | 135 + .../Client/JsonSerializerOptionsProvider.cs | 27 + .../src/Org.OpenAPITools/Client/Option.cs | 53 + .../Client/RateLimitProvider`1.cs | 57 + .../src/Org.OpenAPITools/Client/TokenBase.cs | 71 + .../Client/TokenContainer`1.cs | 37 + .../Client/TokenProvider`1.cs | 44 + .../Extensions/IHostBuilderExtensions.cs | 59 + .../IHttpClientBuilderExtensions.cs | 79 + .../IServiceCollectionExtensions.cs | 73 + .../src/Org.OpenAPITools/Model/Apple.cs | 175 ++ .../src/Org.OpenAPITools/Model/Banana.cs | 173 ++ .../src/Org.OpenAPITools/Model/Fruit.cs | 243 ++ .../Org.OpenAPITools/Org.OpenAPITools.csproj | 30 + .../src/Org.OpenAPITools/README.md | 177 ++ .../FormModels/.openapi-generator/VERSION | 2 +- .../src/Org.OpenAPITools/Api/FakeApi.cs | 46 +- .../src/Org.OpenAPITools/Api/PetApi.cs | 4 +- .../src/Org.OpenAPITools/Api/UserApi.cs | 4 +- .../src/Org.OpenAPITools/Model/Fruit.cs | 4 +- .../src/Org.OpenAPITools/Model/FruitReq.cs | 4 +- .../src/Org.OpenAPITools/Model/GmFruit.cs | 4 +- .../src/Org.OpenAPITools/Model/OneOfString.cs | 10 +- .../Model/PolymorphicProperty.cs | 34 +- .../FormModels/src/Org.OpenAPITools/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../Org.OpenAPITools.Test/Api/FakeApiTests.cs | 20 + .../Model/ClassModelTests.cs | 6 +- .../Model/FooGetDefaultResponseTests.cs | 6 +- .../Model/FormatTestTests.cs | 30 +- .../Model/MixedEnumTypeTests.cs | 56 - .../Model/MixedNullableEnumTypeTests.cs | 56 - .../Model/Model200ResponseTests.cs | 6 +- .../Model/ReturnTests.cs | 27 + .../src/Org.OpenAPITools/Api/FakeApi.cs | 46 +- .../src/Org.OpenAPITools/Api/PetApi.cs | 4 +- .../src/Org.OpenAPITools/Api/UserApi.cs | 4 +- .../Org.OpenAPITools/Client/ClientUtils.cs | 2 +- .../src/Org.OpenAPITools/Model/Fruit.cs | 4 +- .../src/Org.OpenAPITools/Model/FruitReq.cs | 4 +- .../src/Org.OpenAPITools/Model/GmFruit.cs | 4 +- .../src/Org.OpenAPITools/Model/OneOfString.cs | 10 +- .../Model/PolymorphicProperty.cs | 34 +- .../src/Org.OpenAPITools/README.md | 2 +- .../net8/OneOf/.openapi-generator/VERSION | 2 +- .../Org.OpenAPITools/Client/ClientUtils.cs | 2 +- .../OneOf/src/Org.OpenAPITools/Model/Fruit.cs | 4 +- .../net8/OneOf/src/Org.OpenAPITools/README.md | 2 +- .../net8/Petstore/.openapi-generator/VERSION | 2 +- .../Org.OpenAPITools.Test/Api/FakeApiTests.cs | 20 + .../Model/ClassModelTests.cs | 6 +- .../Model/FooGetDefaultResponseTests.cs | 6 +- .../Model/FormatTestTests.cs | 30 +- .../Model/MixedEnumTypeTests.cs | 56 - .../Model/MixedNullableEnumTypeTests.cs | 56 - .../Model/Model200ResponseTests.cs | 6 +- .../Model/ReturnTests.cs | 27 + .../src/Org.OpenAPITools/Api/FakeApi.cs | 46 +- .../src/Org.OpenAPITools/Api/PetApi.cs | 4 +- .../src/Org.OpenAPITools/Api/UserApi.cs | 4 +- .../src/Org.OpenAPITools/Model/Fruit.cs | 4 +- .../src/Org.OpenAPITools/Model/FruitReq.cs | 4 +- .../src/Org.OpenAPITools/Model/GmFruit.cs | 4 +- .../src/Org.OpenAPITools/Model/OneOfString.cs | 10 +- .../Model/PolymorphicProperty.cs | 34 +- .../Petstore/src/Org.OpenAPITools/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../src/Org.OpenAPITools/Api/FakeApi.cs | 46 +- .../src/Org.OpenAPITools/Api/PetApi.cs | 4 +- .../src/Org.OpenAPITools/Api/UserApi.cs | 4 +- .../Org.OpenAPITools/Client/ClientUtils.cs | 2 +- .../src/Org.OpenAPITools/Model/Fruit.cs | 4 +- .../src/Org.OpenAPITools/Model/FruitReq.cs | 4 +- .../src/Org.OpenAPITools/Model/GmFruit.cs | 4 +- .../src/Org.OpenAPITools/Model/OneOfString.cs | 10 +- .../Model/PolymorphicProperty.cs | 34 +- .../src/Org.OpenAPITools/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../Org.OpenAPITools/Client/ClientUtils.cs | 2 +- .../src/Org.OpenAPITools/README.md | 2 +- .../Petstore/.openapi-generator/VERSION | 2 +- .../Org.OpenAPITools.Test/Api/FakeApiTests.cs | 20 + .../Model/ClassModelTests.cs | 6 +- .../Model/FooGetDefaultResponseTests.cs | 6 +- .../Model/FormatTestTests.cs | 30 +- .../Model/MixedEnumTypeTests.cs | 56 - .../Model/MixedNullableEnumTypeTests.cs | 56 - .../Model/Model200ResponseTests.cs | 6 +- .../Model/ReturnTests.cs | 27 + .../src/Org.OpenAPITools/Api/FakeApi.cs | 46 +- .../src/Org.OpenAPITools/Api/PetApi.cs | 4 +- .../src/Org.OpenAPITools/Api/UserApi.cs | 4 +- .../src/Org.OpenAPITools/Model/Fruit.cs | 4 +- .../src/Org.OpenAPITools/Model/FruitReq.cs | 4 +- .../src/Org.OpenAPITools/Model/GmFruit.cs | 4 +- .../src/Org.OpenAPITools/Model/OneOfString.cs | 10 +- .../Model/PolymorphicProperty.cs | 34 +- .../Petstore/src/Org.OpenAPITools/README.md | 2 +- .../Petstore/.openapi-generator/VERSION | 2 +- .../httpclient/standard2.0/Petstore/README.md | 2 +- .../Client/HttpSigningConfiguration.cs | 2 +- .../.openapi-generator/VERSION | 2 +- .../net4.7/MultipleFrameworks/README.md | 2 +- .../Petstore/.openapi-generator/VERSION | 2 +- .../restsharp/net4.7/Petstore/README.md | 2 +- .../Client/HttpSigningConfiguration.cs | 2 +- .../Petstore/.openapi-generator/VERSION | 2 +- .../restsharp/net4.8/Petstore/README.md | 2 +- .../Client/HttpSigningConfiguration.cs | 2 +- .../.openapi-generator/VERSION | 2 +- .../net6/ParameterMappings/README.md | 2 +- .../EnumMappings/.openapi-generator/VERSION | 2 +- .../restsharp/net7/EnumMappings/README.md | 2 +- .../Client/HttpSigningConfiguration.cs | 2 +- .../net7/Petstore/.openapi-generator/VERSION | 2 +- .../csharp/restsharp/net7/Petstore/README.md | 2 +- .../Client/HttpSigningConfiguration.cs | 2 +- .../.openapi-generator/VERSION | 2 +- .../net7/UseDateTimeForDate/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../ConditionalSerialization/README.md | 2 +- .../Client/HttpSigningConfiguration.cs | 2 +- .../Petstore/.openapi-generator/VERSION | 2 +- .../restsharp/standard2.0/Petstore/README.md | 2 +- .../Client/HttpSigningConfiguration.cs | 2 +- .../Petstore/.openapi-generator/VERSION | 2 +- .../standard2.0/Petstore/README.md | 2 +- .../Client/HttpSigningConfiguration.cs | 2 +- .../elixir/.openapi-generator/VERSION | 2 +- .../lib/openapi_petstore/api/another_fake.ex | 2 +- .../lib/openapi_petstore/api/default.ex | 2 +- .../elixir/lib/openapi_petstore/api/fake.ex | 2 +- .../api/fake_classname_tags123.ex | 2 +- .../elixir/lib/openapi_petstore/api/pet.ex | 2 +- .../elixir/lib/openapi_petstore/api/store.ex | 2 +- .../elixir/lib/openapi_petstore/api/user.ex | 2 +- .../elixir/lib/openapi_petstore/connection.ex | 2 +- .../lib/openapi_petstore/deserializer.ex | 2 +- .../model/_foo_get_default_response.ex | 2 +- .../model/_special_model_name_.ex | 2 +- .../model/additional_properties_class.ex | 2 +- .../model/all_of_with_single_ref.ex | 2 +- .../lib/openapi_petstore/model/animal.ex | 2 +- .../openapi_petstore/model/api_response.ex | 2 +- .../model/array_of_array_of_number_only.ex | 2 +- .../model/array_of_number_only.ex | 2 +- .../lib/openapi_petstore/model/array_test.ex | 2 +- .../openapi_petstore/model/capitalization.ex | 2 +- .../elixir/lib/openapi_petstore/model/cat.ex | 2 +- .../lib/openapi_petstore/model/category.ex | 2 +- .../model/child_with_nullable.ex | 2 +- .../lib/openapi_petstore/model/class_model.ex | 2 +- .../lib/openapi_petstore/model/client.ex | 2 +- .../model/deprecated_model.ex | 2 +- .../elixir/lib/openapi_petstore/model/dog.ex | 2 +- .../lib/openapi_petstore/model/enum_arrays.ex | 2 +- .../lib/openapi_petstore/model/enum_class.ex | 2 +- .../lib/openapi_petstore/model/enum_test.ex | 2 +- .../fake_big_decimal_map_200_response.ex | 2 +- .../elixir/lib/openapi_petstore/model/file.ex | 2 +- .../model/file_schema_test_class.ex | 2 +- .../elixir/lib/openapi_petstore/model/foo.ex | 2 +- .../lib/openapi_petstore/model/format_test.ex | 2 +- .../model/has_only_read_only.ex | 2 +- .../model/health_check_result.ex | 2 +- .../elixir/lib/openapi_petstore/model/list.ex | 2 +- .../lib/openapi_petstore/model/map_test.ex | 2 +- ...perties_and_additional_properties_class.ex | 2 +- .../model/model_200_response.ex | 2 +- .../elixir/lib/openapi_petstore/model/name.ex | 2 +- .../openapi_petstore/model/nullable_class.ex | 2 +- .../lib/openapi_petstore/model/number_only.ex | 2 +- .../model/object_with_deprecated_fields.ex | 2 +- .../lib/openapi_petstore/model/order.ex | 2 +- .../openapi_petstore/model/outer_composite.ex | 2 +- .../lib/openapi_petstore/model/outer_enum.ex | 2 +- .../model/outer_enum_default_value.ex | 2 +- .../model/outer_enum_integer.ex | 2 +- .../model/outer_enum_integer_default_value.ex | 2 +- .../model/outer_object_with_enum_property.ex | 2 +- .../model/parent_with_nullable.ex | 2 +- .../elixir/lib/openapi_petstore/model/pet.ex | 2 +- .../openapi_petstore/model/read_only_first.ex | 2 +- .../lib/openapi_petstore/model/return.ex | 2 +- .../openapi_petstore/model/single_ref_type.ex | 2 +- .../elixir/lib/openapi_petstore/model/tag.ex | 2 +- ..._freeform_additional_properties_request.ex | 2 +- .../elixir/lib/openapi_petstore/model/user.ex | 2 +- .../lib/openapi_petstore/request_builder.ex | 2 +- .../petstore/elm/.openapi-generator/VERSION | 2 +- samples/client/petstore/elm/README.md | 2 +- .../erlang-client/.openapi-generator/VERSION | 2 +- .../erlang-proper/.openapi-generator/VERSION | 2 +- .../go/go-petstore/.openapi-generator/VERSION | 2 +- .../client/petstore/go/go-petstore/README.md | 2 +- .../groovy/.openapi-generator/VERSION | 2 +- samples/client/petstore/groovy/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../openapi-petstore.cabal | 2 +- .../mp/.openapi-generator/VERSION | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../se/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTags123Api.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../java/org/openapitools/model/BigCat.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelClient.java | 2 +- .../org/openapitools/model/ModelFile.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../java/org/openapitools/model/Name.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/java/apache-httpclient/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../java/org/openapitools/client/BaseApi.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../client/api/AnotherFakeApi.java | 2 +- .../openapitools/client/api/DefaultApi.java | 2 +- .../org/openapitools/client/api/FakeApi.java | 2 +- .../client/api/FakeClassnameTags123Api.java | 2 +- .../org/openapitools/client/api/PetApi.java | 2 +- .../org/openapitools/client/api/StoreApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../openapitools/client/auth/OAuthFlow.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../client/model/AllOfWithSingleRef.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ChildWithNullable.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../client/model/DeprecatedObject.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../model/FakeBigDecimalMap200Response.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../org/openapitools/client/model/Foo.java | 2 +- .../client/model/FooGetDefaultResponse.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../client/model/HealthCheckResult.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../client/model/NullableClass.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../model/ObjectWithDeprecatedFields.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../model/OuterObjectWithEnumProperty.java | 2 +- .../client/model/ParentWithNullable.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- ...neFreeformAdditionalPropertiesRequest.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../client/api/AnotherFakeApi.java | 2 +- .../org/openapitools/client/api/FakeApi.java | 2 +- .../client/api/FakeClassnameTags123Api.java | 2 +- .../org/openapitools/client/api/PetApi.java | 2 +- .../org/openapitools/client/api/StoreApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../client/auth/DefaultApi20Impl.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../openapitools/client/auth/OAuthFlow.java | 2 +- .../auth/OauthClientCredentialsGrant.java | 2 +- .../client/auth/OauthPasswordGrant.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../org/openapitools/client/model/BigCat.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../org/openapitools/client/model/File.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../client/model/TypeHolderDefault.java | 2 +- .../client/model/TypeHolderExample.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../openapitools/client/model/XmlItem.java | 2 +- .../java/feign/.openapi-generator/VERSION | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../client/api/AnotherFakeApi.java | 2 +- .../openapitools/client/api/DefaultApi.java | 2 +- .../org/openapitools/client/api/FakeApi.java | 2 +- .../client/api/FakeClassnameTags123Api.java | 2 +- .../org/openapitools/client/api/PetApi.java | 2 +- .../org/openapitools/client/api/StoreApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../client/auth/DefaultApi20Impl.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../openapitools/client/auth/OAuthFlow.java | 2 +- .../auth/OauthClientCredentialsGrant.java | 2 +- .../client/auth/OauthPasswordGrant.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../client/model/AllOfWithSingleRef.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ChildWithNullable.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../client/model/DeprecatedObject.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../model/FakeBigDecimalMap200Response.java | 2 +- .../org/openapitools/client/model/File.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../org/openapitools/client/model/Foo.java | 2 +- .../client/model/FooGetDefaultResponse.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../client/model/HealthCheckResult.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../client/model/NullableClass.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../model/ObjectWithDeprecatedFields.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../model/OuterObjectWithEnumProperty.java | 2 +- .../client/model/ParentWithNullable.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- ...neFreeformAdditionalPropertiesRequest.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/java/google-api-client/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../client/api/AnotherFakeApi.java | 2 +- .../org/openapitools/client/api/FakeApi.java | 2 +- .../client/api/FakeClassnameTags123Api.java | 2 +- .../org/openapitools/client/api/PetApi.java | 2 +- .../org/openapitools/client/api/StoreApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../org/openapitools/client/model/BigCat.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../client/model/TypeHolderDefault.java | 2 +- .../client/model/TypeHolderExample.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../openapitools/client/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../jersey2-java8-localdatetime/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/JSON.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../client/api/AnotherFakeApi.java | 2 +- .../org/openapitools/client/api/FakeApi.java | 2 +- .../client/api/FakeClassnameTags123Api.java | 2 +- .../org/openapitools/client/api/PetApi.java | 2 +- .../org/openapitools/client/api/StoreApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../org/openapitools/client/model/BigCat.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../client/model/TypeHolderDefault.java | 2 +- .../client/model/TypeHolderExample.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../openapitools/client/model/XmlItem.java | 2 +- .../jersey2-java8/.openapi-generator/VERSION | 2 +- .../petstore/java/jersey2-java8/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/JSON.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../client/api/AnotherFakeApi.java | 2 +- .../org/openapitools/client/api/FakeApi.java | 2 +- .../client/api/FakeClassnameTags123Api.java | 2 +- .../org/openapitools/client/api/PetApi.java | 2 +- .../org/openapitools/client/api/StoreApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../org/openapitools/client/model/BigCat.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../client/model/TypeHolderDefault.java | 2 +- .../client/model/TypeHolderExample.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../openapitools/client/model/XmlItem.java | 2 +- .../java/jersey3/.openapi-generator/VERSION | 2 +- .../client/petstore/java/jersey3/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/JSON.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../client/api/AnotherFakeApi.java | 2 +- .../openapitools/client/api/DefaultApi.java | 2 +- .../org/openapitools/client/api/FakeApi.java | 2 +- .../client/api/FakeClassnameTags123Api.java | 2 +- .../org/openapitools/client/api/PetApi.java | 2 +- .../org/openapitools/client/api/StoreApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../org/openapitools/client/model/Apple.java | 2 +- .../openapitools/client/model/AppleReq.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../org/openapitools/client/model/Banana.java | 2 +- .../openapitools/client/model/BananaReq.java | 2 +- .../openapitools/client/model/BasquePig.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/ChildCat.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../client/model/ComplexQuadrilateral.java | 2 +- .../openapitools/client/model/DanishPig.java | 2 +- .../client/model/DeprecatedObject.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/Drawing.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../client/model/EquilateralTriangle.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../org/openapitools/client/model/Foo.java | 2 +- .../client/model/FooGetDefaultResponse.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../org/openapitools/client/model/Fruit.java | 2 +- .../openapitools/client/model/FruitReq.java | 2 +- .../openapitools/client/model/GmFruit.java | 2 +- .../client/model/GrandparentAnimal.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../client/model/HealthCheckResult.java | 2 +- .../client/model/IsoscelesTriangle.java | 2 +- .../org/openapitools/client/model/Mammal.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../client/model/NullableClass.java | 2 +- .../client/model/NullableShape.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../model/ObjectWithDeprecatedFields.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../openapitools/client/model/ParentPet.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Pig.java | 2 +- .../client/model/Quadrilateral.java | 2 +- .../client/model/QuadrilateralInterface.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/ScaleneTriangle.java | 2 +- .../org/openapitools/client/model/Shape.java | 2 +- .../client/model/ShapeInterface.java | 2 +- .../client/model/ShapeOrNull.java | 2 +- .../client/model/SimpleQuadrilateral.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- ...neFreeformAdditionalPropertiesRequest.java | 2 +- .../openapitools/client/model/Triangle.java | 2 +- .../client/model/TriangleInterface.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../org/openapitools/client/model/Whale.java | 2 +- .../org/openapitools/client/model/Zebra.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../.openapi-generator/VERSION | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../native-async/.openapi-generator/VERSION | 2 +- .../petstore/java/native-async/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../org/openapitools/client/ApiResponse.java | 1 + .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/JSON.java | 3 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../client/api/AnotherFakeApi.java | 3 +- .../openapitools/client/api/DefaultApi.java | 3 +- .../org/openapitools/client/api/FakeApi.java | 22 +- .../client/api/FakeClassnameTags123Api.java | 3 +- .../org/openapitools/client/api/PetApi.java | 11 +- .../org/openapitools/client/api/StoreApi.java | 6 +- .../org/openapitools/client/api/UserApi.java | 10 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../org/openapitools/client/model/Apple.java | 2 +- .../openapitools/client/model/AppleReq.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../org/openapitools/client/model/Banana.java | 2 +- .../openapitools/client/model/BananaReq.java | 2 +- .../openapitools/client/model/BasquePig.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/ChildCat.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../client/model/ComplexQuadrilateral.java | 2 +- .../openapitools/client/model/DanishPig.java | 2 +- .../client/model/DeprecatedObject.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/Drawing.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../client/model/EquilateralTriangle.java | 2 +- .../model/FakeBigDecimalMap200Response.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../org/openapitools/client/model/Foo.java | 2 +- .../client/model/FooGetDefaultResponse.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../org/openapitools/client/model/Fruit.java | 2 +- .../openapitools/client/model/FruitReq.java | 2 +- .../openapitools/client/model/GmFruit.java | 2 +- .../client/model/GrandparentAnimal.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../client/model/HealthCheckResult.java | 2 +- .../client/model/IsoscelesTriangle.java | 2 +- .../org/openapitools/client/model/Mammal.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../client/model/NullableClass.java | 2 +- .../client/model/NullableShape.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../model/ObjectWithDeprecatedFields.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../openapitools/client/model/ParentPet.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Pig.java | 2 +- .../client/model/Quadrilateral.java | 2 +- .../client/model/QuadrilateralInterface.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/ScaleneTriangle.java | 2 +- .../org/openapitools/client/model/Shape.java | 2 +- .../client/model/ShapeInterface.java | 2 +- .../client/model/ShapeOrNull.java | 2 +- .../client/model/SimpleQuadrilateral.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- ...neFreeformAdditionalPropertiesRequest.java | 2 +- .../openapitools/client/model/Triangle.java | 2 +- .../client/model/TriangleInterface.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../org/openapitools/client/model/Whale.java | 2 +- .../org/openapitools/client/model/Zebra.java | 2 +- .../native-jakarta/.openapi-generator/VERSION | 2 +- .../petstore/java/native-jakarta/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../org/openapitools/client/ApiResponse.java | 1 + .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/JSON.java | 3 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/api/PetApi.java | 10 +- .../org/openapitools/client/api/StoreApi.java | 6 +- .../org/openapitools/client/api/UserApi.java | 10 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../java/native/.openapi-generator/VERSION | 2 +- samples/client/petstore/java/native/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../org/openapitools/client/ApiResponse.java | 1 + .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/JSON.java | 3 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../client/api/AnotherFakeApi.java | 3 +- .../openapitools/client/api/DefaultApi.java | 3 +- .../org/openapitools/client/api/FakeApi.java | 22 +- .../client/api/FakeClassnameTags123Api.java | 3 +- .../org/openapitools/client/api/PetApi.java | 11 +- .../org/openapitools/client/api/StoreApi.java | 6 +- .../org/openapitools/client/api/UserApi.java | 10 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../org/openapitools/client/model/Apple.java | 2 +- .../openapitools/client/model/AppleReq.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../org/openapitools/client/model/Banana.java | 2 +- .../openapitools/client/model/BananaReq.java | 2 +- .../openapitools/client/model/BasquePig.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/ChildCat.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../client/model/ComplexQuadrilateral.java | 2 +- .../openapitools/client/model/DanishPig.java | 2 +- .../client/model/DeprecatedObject.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/Drawing.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../client/model/EquilateralTriangle.java | 2 +- .../model/FakeBigDecimalMap200Response.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../org/openapitools/client/model/Foo.java | 2 +- .../client/model/FooGetDefaultResponse.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../org/openapitools/client/model/Fruit.java | 2 +- .../openapitools/client/model/FruitReq.java | 2 +- .../openapitools/client/model/GmFruit.java | 2 +- .../client/model/GrandparentAnimal.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../client/model/HealthCheckResult.java | 2 +- .../client/model/IsoscelesTriangle.java | 2 +- .../org/openapitools/client/model/Mammal.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../client/model/NullableClass.java | 2 +- .../client/model/NullableShape.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../model/ObjectWithDeprecatedFields.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../openapitools/client/model/ParentPet.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Pig.java | 2 +- .../client/model/Quadrilateral.java | 2 +- .../client/model/QuadrilateralInterface.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/ScaleneTriangle.java | 2 +- .../org/openapitools/client/model/Shape.java | 2 +- .../client/model/ShapeInterface.java | 2 +- .../client/model/ShapeOrNull.java | 2 +- .../client/model/SimpleQuadrilateral.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- ...neFreeformAdditionalPropertiesRequest.java | 2 +- .../openapitools/client/model/Triangle.java | 2 +- .../client/model/TriangleInterface.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../org/openapitools/client/model/Whale.java | 2 +- .../org/openapitools/client/model/Zebra.java | 2 +- .../okhttp-gson-3.1/.openapi-generator/FILES | 12 +- .../.openapi-generator/VERSION | 2 +- .../petstore/java/okhttp-gson-3.1/README.md | 9 +- .../java/okhttp-gson-3.1/api/openapi.yaml | 60 +- .../okhttp-gson-3.1/docs/ArrayOfSameRef.md | 15 + .../docs/CircularReference1.md | 13 + .../docs/CircularReference2.md | 13 + .../docs/CircularReference3.md | 13 + .../java/okhttp-gson-3.1/docs/CodesEnum.md | 15 + .../java/okhttp-gson-3.1/docs/FakeApi.md | 60 + .../org/openapitools/client/ApiClient.java | 13 + .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/JSON.java | 5 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../org/openapitools/client/api/FakeApi.java | 122 + .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../openapitools/client/auth/OAuthFlow.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../openapitools/client/model/AnyOfArray.java | 217 -- .../client/model/AnyTypeTest.java | 2 +- .../client/model/ArrayOfSameRef.java | 405 +++ .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/CircularReference1.java | 289 ++ .../client/model/CircularReference2.java | 289 ++ .../client/model/CircularReference3.java | 289 ++ .../openapitools/client/model/CodesEnum.java | 80 + .../org/openapitools/client/model/Dog.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../client/model/OneOfStringOrInt.java | 157 +- .../org/openapitools/client/model/Order.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/StringOrInt.java | 158 +- .../org/openapitools/client/model/Tag.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../client/model/ArrayOfSameRefTest.java | 67 + .../client/model/CircularReference1Test.java | 49 + .../client/model/CircularReference2Test.java | 49 + .../client/model/CircularReference3Test.java | 49 + ...AnyOfArrayTest.java => CodesEnumTest.java} | 13 +- .../.openapi-generator/VERSION | 2 +- .../java/okhttp-gson-awsv4signature/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 21 + .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/auth/AWS4Auth.java | 7 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../openapitools/client/auth/OAuthFlow.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../okhttp-gson-dynamicOperations/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 13 + .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../openapitools/client/auth/OAuthFlow.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../org/openapitools/client/model/BigCat.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../client/model/TypeHolderDefault.java | 2 +- .../client/model/TypeHolderExample.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../openapitools/client/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../okhttp-gson-group-parameter/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 13 + .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../openapitools/client/auth/OAuthFlow.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../okhttp-gson-nullable-required/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 13 + .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../openapitools/client/auth/OAuthFlow.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../model/PetWithRequiredNullableCases1.java | 2 +- .../model/PetWithRequiredNullableCases2.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../okhttp-gson-parcelableModel/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 13 + .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../openapitools/client/auth/OAuthFlow.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../org/openapitools/client/model/BigCat.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../client/model/TypeHolderDefault.java | 2 +- .../client/model/TypeHolderExample.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../openapitools/client/model/XmlItem.java | 2 +- .../.openapi-generator/FILES | 8 +- .../.openapi-generator/VERSION | 2 +- .../java/okhttp-gson-swagger1/README.md | 48 +- .../okhttp-gson-swagger1/api/openapi.yaml | 40 +- .../okhttp-gson-swagger1/docs/CommonApi.md | 1373 +++++++++ .../org/openapitools/client/ApiClient.java | 13 + .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/api/CommonApi.java | 2645 +++++++++++++++++ .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../openapitools/client/auth/OAuthFlow.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../client/api/CommonApiTest.java | 324 ++ .../client/model/CategoryTest.java | 2 +- .../client/model/ModelApiResponseTest.java | 2 +- .../openapitools/client/model/OrderTest.java | 2 +- .../openapitools/client/model/PetTest.java | 2 +- .../openapitools/client/model/TagTest.java | 2 +- .../openapitools/client/model/UserTest.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/okhttp-gson-swagger2/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 13 + .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../openapitools/client/auth/OAuthFlow.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../java/okhttp-gson/.openapi-generator/FILES | 6 + .../okhttp-gson/.openapi-generator/VERSION | 2 +- .../petstore/java/okhttp-gson/README.md | 5 +- .../java/okhttp-gson/api/openapi.yaml | 19 + .../docs/ArrayAnyOf.md} | 2 +- .../java/okhttp-gson/docs/ArrayOneOf.md | 12 + .../docs/ModelWithOneOfAnyOfProperties.md | 14 + .../org/openapitools/client/ApiClient.java | 13 + .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/JSON.java | 3 + .../java/org/openapitools/client/Pair.java | 2 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../openapitools/client/auth/OAuthFlow.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../client/model/AllOfModelArrayAnyOf.java | 2 +- .../AllOfModelArrayAnyOfAllOfAttributes.java | 2 +- .../AllOfModelArrayAnyOfAllOfAttributesC.java | 141 +- ...OfModelArrayAnyOfAllOfLinkListColumn1.java | 2 +- ...elArrayAnyOfAllOfLinkListColumn1Value.java | 142 +- .../org/openapitools/client/model/Animal.java | 2 +- .../org/openapitools/client/model/Apple.java | 2 +- .../openapitools/client/model/AppleReq.java | 2 +- .../openapitools/client/model/ArrayAnyOf.java | 291 ++ .../client/model/ArrayDefault.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfInlineAllOf.java | 2 +- ...InlineAllOfArrayAllofDogPropertyInner.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayOneOf.java | 299 ++ .../openapitools/client/model/ArrayTest.java | 2 +- .../org/openapitools/client/model/Banana.java | 2 +- .../openapitools/client/model/BananaReq.java | 2 +- .../openapitools/client/model/BasquePig.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../client/model/ComplexQuadrilateral.java | 2 +- .../openapitools/client/model/DanishPig.java | 2 +- .../client/model/DeprecatedObject.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/Drawing.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../client/model/EnumStringDiscriminator.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../client/model/EquilateralTriangle.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../org/openapitools/client/model/Foo.java | 2 +- .../client/model/FooGetDefaultResponse.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../org/openapitools/client/model/Fruit.java | 141 +- .../openapitools/client/model/FruitReq.java | 141 +- .../openapitools/client/model/GmFruit.java | 142 +- .../client/model/GrandparentAnimal.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../client/model/HealthCheckResult.java | 2 +- .../client/model/IsoscelesTriangle.java | 2 +- .../org/openapitools/client/model/Mammal.java | 179 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../model/ModelWithOneOfAnyOfProperties.java | 320 ++ .../org/openapitools/client/model/Name.java | 2 +- .../org/openapitools/client/model/NewPet.java | 2 +- .../model/NewPetCategoryInlineAllof.java | 2 +- ...etCategoryInlineAllofAllOfCategoryTag.java | 2 +- .../client/model/NullableClass.java | 2 +- .../client/model/NullableShape.java | 141 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../model/ObjectWithDeprecatedFields.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../openapitools/client/model/ParentPet.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/PetComposition.java | 2 +- .../org/openapitools/client/model/PetRef.java | 2 +- .../client/model/PetUsingAllOf.java | 2 +- .../client/model/PetWithRequiredTags.java | 2 +- .../org/openapitools/client/model/Pig.java | 141 +- .../client/model/PropertyNameCollision.java | 2 +- .../client/model/Quadrilateral.java | 141 +- .../client/model/QuadrilateralInterface.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../org/openapitools/client/model/Scalar.java | 203 +- .../client/model/ScalarAnyOf.java | 206 +- .../client/model/ScaleneTriangle.java | 2 +- .../org/openapitools/client/model/Shape.java | 141 +- .../client/model/ShapeInterface.java | 2 +- .../client/model/ShapeOrNull.java | 141 +- .../client/model/SimpleQuadrilateral.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- ...neFreeformAdditionalPropertiesRequest.java | 2 +- .../openapitools/client/model/Triangle.java | 179 +- .../client/model/TriangleInterface.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../org/openapitools/client/model/Value.java | 189 +- .../openapitools/client/model/Variable.java | 2 +- .../org/openapitools/client/model/Whale.java | 2 +- .../org/openapitools/client/model/Zebra.java | 2 +- .../org/openapitools/client/JSONTest.java | 48 +- .../client/model/ArrayAnyOfTest.java | 34 + .../client/model/ArrayOneOfTest.java | 34 + .../ModelWithOneOfAnyOfPropertiesTest.java | 58 + .../.openapi-generator/VERSION | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../org/openapitools/client/model/BigCat.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../client/model/TypeHolderDefault.java | 2 +- .../client/model/TypeHolderExample.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../openapitools/client/model/XmlItem.java | 2 +- .../rest-assured/.openapi-generator/VERSION | 2 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../org/openapitools/client/model/BigCat.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../client/model/TypeHolderDefault.java | 2 +- .../client/model/TypeHolderExample.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../openapitools/client/model/XmlItem.java | 2 +- .../java/resteasy/.openapi-generator/VERSION | 2 +- .../client/petstore/java/resteasy/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/JSON.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../client/api/AnotherFakeApi.java | 2 +- .../openapitools/client/api/DefaultApi.java | 2 +- .../org/openapitools/client/api/FakeApi.java | 2 +- .../client/api/FakeClassnameTags123Api.java | 2 +- .../org/openapitools/client/api/PetApi.java | 2 +- .../org/openapitools/client/api/StoreApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../openapitools/client/auth/OAuthFlow.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../client/model/AllOfWithSingleRef.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ChildWithNullable.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../client/model/DeprecatedObject.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../model/FakeBigDecimalMap200Response.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../org/openapitools/client/model/Foo.java | 2 +- .../client/model/FooGetDefaultResponse.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../client/model/HealthCheckResult.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../client/model/NullableClass.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../model/ObjectWithDeprecatedFields.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../model/OuterObjectWithEnumProperty.java | 2 +- .../client/model/ParentWithNullable.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- ...neFreeformAdditionalPropertiesRequest.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/resttemplate-jakarta/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../java/org/openapitools/client/BaseApi.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/api/PetApi.java | 2 +- .../org/openapitools/client/api/StoreApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/resttemplate-swagger1/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../java/org/openapitools/client/BaseApi.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/api/PetApi.java | 2 +- .../org/openapitools/client/api/StoreApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/resttemplate-swagger2/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../java/org/openapitools/client/BaseApi.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/api/PetApi.java | 2 +- .../org/openapitools/client/api/StoreApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/resttemplate-withXml/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../java/org/openapitools/client/BaseApi.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../client/api/AnotherFakeApi.java | 2 +- .../openapitools/client/api/DefaultApi.java | 2 +- .../org/openapitools/client/api/FakeApi.java | 2 +- .../client/api/FakeClassnameTags123Api.java | 2 +- .../org/openapitools/client/api/PetApi.java | 2 +- .../org/openapitools/client/api/StoreApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../client/model/AllOfWithSingleRef.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ChildWithNullable.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../client/model/DeprecatedObject.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../model/FakeBigDecimalMap200Response.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../org/openapitools/client/model/Foo.java | 2 +- .../client/model/FooGetDefaultResponse.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../client/model/HealthCheckResult.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../client/model/NullableClass.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../model/ObjectWithDeprecatedFields.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../model/OuterObjectWithEnumProperty.java | 2 +- .../client/model/ParentWithNullable.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- ...neFreeformAdditionalPropertiesRequest.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../resttemplate/.openapi-generator/VERSION | 2 +- .../petstore/java/resttemplate/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../java/org/openapitools/client/BaseApi.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../client/api/AnotherFakeApi.java | 2 +- .../openapitools/client/api/DefaultApi.java | 2 +- .../org/openapitools/client/api/FakeApi.java | 2 +- .../client/api/FakeClassnameTags123Api.java | 2 +- .../org/openapitools/client/api/PetApi.java | 2 +- .../org/openapitools/client/api/StoreApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../client/model/AllOfWithSingleRef.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ChildWithNullable.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../client/model/DeprecatedObject.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../model/FakeBigDecimalMap200Response.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../org/openapitools/client/model/Foo.java | 2 +- .../client/model/FooGetDefaultResponse.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../client/model/HealthCheckResult.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../client/model/NullableClass.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../model/ObjectWithDeprecatedFields.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../model/OuterObjectWithEnumProperty.java | 2 +- .../client/model/ParentWithNullable.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- ...neFreeformAdditionalPropertiesRequest.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../org/openapitools/client/model/BigCat.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../client/model/TypeHolderDefault.java | 2 +- .../client/model/TypeHolderExample.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../openapitools/client/model/XmlItem.java | 2 +- .../java/retrofit2/.openapi-generator/VERSION | 2 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/auth/OAuthFlow.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../org/openapitools/client/model/BigCat.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../client/model/TypeHolderDefault.java | 2 +- .../client/model/TypeHolderExample.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../openapitools/client/model/XmlItem.java | 2 +- .../retrofit2rx2/.openapi-generator/VERSION | 2 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/auth/OAuthFlow.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../org/openapitools/client/model/BigCat.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../client/model/TypeHolderDefault.java | 2 +- .../client/model/TypeHolderExample.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../openapitools/client/model/XmlItem.java | 2 +- .../retrofit2rx3/.openapi-generator/VERSION | 2 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/auth/OAuthFlow.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../org/openapitools/client/model/BigCat.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../client/model/TypeHolderDefault.java | 2 +- .../client/model/TypeHolderExample.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../openapitools/client/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/java/vertx-no-nullable/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../client/api/AnotherFakeApiImpl.java | 2 +- .../openapitools/client/api/FakeApiImpl.java | 2 +- .../api/FakeClassnameTags123ApiImpl.java | 2 +- .../openapitools/client/api/PetApiImpl.java | 2 +- .../openapitools/client/api/StoreApiImpl.java | 2 +- .../openapitools/client/api/UserApiImpl.java | 2 +- .../client/api/rxjava/AnotherFakeApi.java | 2 +- .../client/api/rxjava/FakeApi.java | 2 +- .../api/rxjava/FakeClassnameTags123Api.java | 2 +- .../client/api/rxjava/PetApi.java | 2 +- .../client/api/rxjava/StoreApi.java | 2 +- .../client/api/rxjava/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../org/openapitools/client/model/BigCat.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../client/model/TypeHolderDefault.java | 2 +- .../client/model/TypeHolderExample.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../openapitools/client/model/XmlItem.java | 2 +- .../java/vertx/.openapi-generator/VERSION | 2 +- samples/client/petstore/java/vertx/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../client/api/AnotherFakeApiImpl.java | 2 +- .../client/api/DefaultApiImpl.java | 2 +- .../openapitools/client/api/FakeApiImpl.java | 2 +- .../api/FakeClassnameTags123ApiImpl.java | 2 +- .../openapitools/client/api/PetApiImpl.java | 2 +- .../openapitools/client/api/StoreApiImpl.java | 2 +- .../openapitools/client/api/UserApiImpl.java | 2 +- .../client/api/rxjava/AnotherFakeApi.java | 2 +- .../client/api/rxjava/DefaultApi.java | 2 +- .../client/api/rxjava/FakeApi.java | 2 +- .../api/rxjava/FakeClassnameTags123Api.java | 2 +- .../client/api/rxjava/PetApi.java | 2 +- .../client/api/rxjava/StoreApi.java | 2 +- .../client/api/rxjava/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../client/model/AllOfWithSingleRef.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ChildWithNullable.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../client/model/DeprecatedObject.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../model/FakeBigDecimalMap200Response.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../org/openapitools/client/model/Foo.java | 2 +- .../client/model/FooGetDefaultResponse.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../client/model/HealthCheckResult.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../client/model/NullableClass.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../model/ObjectWithDeprecatedFields.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../model/OuterObjectWithEnumProperty.java | 2 +- .../client/model/ParentWithNullable.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- ...neFreeformAdditionalPropertiesRequest.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/java/webclient-jakarta/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../client/api/AnotherFakeApi.java | 2 +- .../openapitools/client/api/DefaultApi.java | 2 +- .../org/openapitools/client/api/FakeApi.java | 2 +- .../client/api/FakeClassnameTags123Api.java | 2 +- .../org/openapitools/client/api/PetApi.java | 2 +- .../org/openapitools/client/api/StoreApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../client/model/AllOfWithSingleRef.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ChildWithNullable.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../client/model/DeprecatedObject.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../model/FakeBigDecimalMap200Response.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../org/openapitools/client/model/Foo.java | 2 +- .../client/model/FooGetDefaultResponse.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../client/model/HealthCheckResult.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../client/model/NullableClass.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../model/ObjectWithDeprecatedFields.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../model/OuterObjectWithEnumProperty.java | 2 +- .../client/model/ParentWithNullable.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- ...neFreeformAdditionalPropertiesRequest.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/webclient-nullable-arrays/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/api/DefaultApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../client/model/ByteArrayObject.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/webclient-swagger2/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../client/api/AnotherFakeApi.java | 2 +- .../openapitools/client/api/DefaultApi.java | 2 +- .../org/openapitools/client/api/FakeApi.java | 2 +- .../client/api/FakeClassnameTags123Api.java | 2 +- .../org/openapitools/client/api/PetApi.java | 2 +- .../org/openapitools/client/api/StoreApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../client/model/AllOfWithSingleRef.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ChildWithNullable.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../client/model/DeprecatedObject.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../model/FakeBigDecimalMap200Response.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../org/openapitools/client/model/Foo.java | 2 +- .../client/model/FooGetDefaultResponse.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../client/model/HealthCheckResult.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../client/model/NullableClass.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../model/ObjectWithDeprecatedFields.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../model/OuterObjectWithEnumProperty.java | 2 +- .../client/model/ParentWithNullable.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- ...neFreeformAdditionalPropertiesRequest.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../java/webclient/.openapi-generator/VERSION | 2 +- .../client/petstore/java/webclient/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../client/api/AnotherFakeApi.java | 2 +- .../openapitools/client/api/DefaultApi.java | 2 +- .../org/openapitools/client/api/FakeApi.java | 2 +- .../client/api/FakeClassnameTags123Api.java | 2 +- .../org/openapitools/client/api/PetApi.java | 2 +- .../org/openapitools/client/api/StoreApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../client/model/AllOfWithSingleRef.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ChildWithNullable.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../client/model/DeprecatedObject.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../model/FakeBigDecimalMap200Response.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../org/openapitools/client/model/Foo.java | 2 +- .../client/model/FooGetDefaultResponse.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../client/model/HealthCheckResult.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../client/model/NullableClass.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../model/ObjectWithDeprecatedFields.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../model/OuterObjectWithEnumProperty.java | 2 +- .../client/model/ParentWithNullable.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- ...neFreeformAdditionalPropertiesRequest.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/javascript-apollo/README.md | 2 +- .../javascript-es6/.openapi-generator/VERSION | 2 +- .../client/petstore/javascript-es6/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/javascript-promise-es6/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../http/client/.openapi-generator/VERSION | 2 +- .../jmeter/.openapi-generator/VERSION | 2 +- .../petstore/julia/.openapi-generator/VERSION | 2 +- samples/client/petstore/julia/README.md | 2 +- .../petstore/k6/.openapi-generator/VERSION | 2 +- samples/client/petstore/k6/script.js | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-allOff-discriminator/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-enum-default-value/README.md | 2 +- .../kotlin-gson/.openapi-generator/VERSION | 2 +- samples/client/petstore/kotlin-gson/README.md | 2 +- .../kotlin-jackson/.openapi-generator/VERSION | 2 +- .../client/petstore/kotlin-jackson/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-json-request-string/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/kotlin-jvm-jackson/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/kotlin-jvm-ktor-gson/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-jvm-ktor-jackson/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-jvm-okhttp4-coroutines/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-jvm-spring-2-webclient/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-jvm-spring-3-restclient/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-jvm-spring-3-webclient/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/kotlin-jvm-vertx-gson/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-jvm-vertx-jackson/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/kotlin-jvm-vertx-moshi/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-kotlinx-datetime/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/kotlin-modelMutable/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/kotlin-moshi-codegen/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/kotlin-multiplatform/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-name-parameter-mappings/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/kotlin-nonpublic/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../client/petstore/kotlin-nullable/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-retrofit2-jackson/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/kotlin-retrofit2-rx3/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/kotlin-retrofit2/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin/org/openapitools/api/PetApi.kt | 2 +- .../kotlin/org/openapitools/api/StoreApi.kt | 2 +- .../kotlin/org/openapitools/api/UserApi.kt | 2 +- .../kotlin-string/.openapi-generator/VERSION | 2 +- .../client/petstore/kotlin-string/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/kotlin-threetenbp/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/kotlin-uppercase-enum/README.md | 2 +- .../kotlin/.openapi-generator/VERSION | 2 +- samples/client/petstore/kotlin/README.md | 2 +- .../petstore/lua/.openapi-generator/VERSION | 2 +- .../petstore/n4js/.openapi-generator/VERSION | 2 +- samples/client/petstore/n4js/README.md | 2 +- .../petstore/nim/.openapi-generator/VERSION | 2 +- samples/client/petstore/nim/README.md | 2 +- .../objc/core-data/.openapi-generator/VERSION | 2 +- .../client/petstore/objc/core-data/README.md | 2 +- .../objc/default/.openapi-generator/VERSION | 2 +- .../client/petstore/objc/default/README.md | 2 +- .../petstore/perl/.openapi-generator/VERSION | 2 +- samples/client/petstore/perl/README.md | 2 +- .../perl/lib/WWW/OpenAPIClient/Role.pm | 4 +- .../php-dt-modern/.openapi-generator/VERSION | 2 +- .../php-dt/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../php-nextgen/OpenAPIClient-php/README.md | 2 +- .../docs/Model/FormatTest.md | 1 + .../lib/ObjectSerializer.php | 1 - .../src/Api/AnotherFakeApi.php | 2 +- .../OpenAPIClient-php/src/Api/DefaultApi.php | 2 +- .../OpenAPIClient-php/src/Api/FakeApi.php | 2 +- .../src/Api/FakeClassnameTags123Api.php | 2 +- .../OpenAPIClient-php/src/Api/PetApi.php | 2 +- .../OpenAPIClient-php/src/Api/StoreApi.php | 2 +- .../OpenAPIClient-php/src/Api/UserApi.php | 2 +- .../OpenAPIClient-php/src/ApiException.php | 2 +- .../OpenAPIClient-php/src/Configuration.php | 2 +- .../OpenAPIClient-php/src/HeaderSelector.php | 2 +- .../src/Model/AdditionalPropertiesClass.php | 2 +- .../src/Model/AllOfWithSingleRef.php | 2 +- .../OpenAPIClient-php/src/Model/Animal.php | 2 +- .../src/Model/ApiResponse.php | 2 +- .../src/Model/ArrayOfArrayOfNumberOnly.php | 2 +- .../src/Model/ArrayOfNumberOnly.php | 2 +- .../OpenAPIClient-php/src/Model/ArrayTest.php | 2 +- .../src/Model/Capitalization.php | 2 +- .../OpenAPIClient-php/src/Model/Cat.php | 2 +- .../OpenAPIClient-php/src/Model/Category.php | 2 +- .../src/Model/ChildWithNullable.php | 2 +- .../src/Model/ClassModel.php | 2 +- .../OpenAPIClient-php/src/Model/Client.php | 2 +- .../src/Model/DeprecatedObject.php | 2 +- .../OpenAPIClient-php/src/Model/Dog.php | 2 +- .../src/Model/EnumArrays.php | 2 +- .../OpenAPIClient-php/src/Model/EnumClass.php | 2 +- .../OpenAPIClient-php/src/Model/EnumTest.php | 2 +- .../Model/FakeBigDecimalMap200Response.php | 2 +- .../OpenAPIClient-php/src/Model/File.php | 2 +- .../src/Model/FileSchemaTestClass.php | 2 +- .../OpenAPIClient-php/src/Model/Foo.php | 2 +- .../src/Model/FooGetDefaultResponse.php | 2 +- .../src/Model/FormatTest.php | 48 +- .../src/Model/HasOnlyReadOnly.php | 2 +- .../src/Model/HealthCheckResult.php | 2 +- .../OpenAPIClient-php/src/Model/MapTest.php | 2 +- ...PropertiesAndAdditionalPropertiesClass.php | 2 +- .../src/Model/Model200Response.php | 2 +- .../src/Model/ModelInterface.php | 2 +- .../OpenAPIClient-php/src/Model/ModelList.php | 2 +- .../src/Model/ModelReturn.php | 2 +- .../OpenAPIClient-php/src/Model/Name.php | 2 +- .../src/Model/NullableClass.php | 2 +- .../src/Model/NumberOnly.php | 2 +- .../src/Model/ObjectWithDeprecatedFields.php | 2 +- .../OpenAPIClient-php/src/Model/Order.php | 2 +- .../src/Model/OuterComposite.php | 2 +- .../OpenAPIClient-php/src/Model/OuterEnum.php | 2 +- .../src/Model/OuterEnumDefaultValue.php | 2 +- .../src/Model/OuterEnumInteger.php | 2 +- .../Model/OuterEnumIntegerDefaultValue.php | 2 +- .../src/Model/OuterObjectWithEnumProperty.php | 2 +- .../src/Model/ParentWithNullable.php | 2 +- .../OpenAPIClient-php/src/Model/Pet.php | 2 +- .../src/Model/ReadOnlyFirst.php | 2 +- .../src/Model/SingleRefType.php | 2 +- .../src/Model/SpecialModelName.php | 2 +- .../OpenAPIClient-php/src/Model/Tag.php | 2 +- ...ineFreeformAdditionalPropertiesRequest.php | 2 +- .../OpenAPIClient-php/src/Model/User.php | 2 +- .../src/ObjectSerializer.php | 3 +- .../.openapi-generator/VERSION | 2 +- .../petstore/php/OpenAPIClient-php/README.md | 2 +- .../lib/Api/AnotherFakeApi.php | 2 +- .../OpenAPIClient-php/lib/Api/DefaultApi.php | 2 +- .../php/OpenAPIClient-php/lib/Api/FakeApi.php | 2 +- .../lib/Api/FakeClassnameTags123Api.php | 2 +- .../php/OpenAPIClient-php/lib/Api/PetApi.php | 2 +- .../OpenAPIClient-php/lib/Api/StoreApi.php | 2 +- .../php/OpenAPIClient-php/lib/Api/UserApi.php | 2 +- .../OpenAPIClient-php/lib/ApiException.php | 2 +- .../OpenAPIClient-php/lib/Configuration.php | 2 +- .../OpenAPIClient-php/lib/HeaderSelector.php | 2 +- .../lib/Model/AdditionalPropertiesClass.php | 2 +- .../lib/Model/AllOfWithSingleRef.php | 2 +- .../OpenAPIClient-php/lib/Model/Animal.php | 2 +- .../lib/Model/ApiResponse.php | 2 +- .../lib/Model/ArrayOfArrayOfNumberOnly.php | 2 +- .../lib/Model/ArrayOfNumberOnly.php | 2 +- .../OpenAPIClient-php/lib/Model/ArrayTest.php | 2 +- .../lib/Model/Capitalization.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Cat.php | 2 +- .../OpenAPIClient-php/lib/Model/Category.php | 2 +- .../lib/Model/ClassModel.php | 2 +- .../OpenAPIClient-php/lib/Model/Client.php | 2 +- .../lib/Model/DeprecatedObject.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Dog.php | 2 +- .../lib/Model/EnumArrays.php | 2 +- .../OpenAPIClient-php/lib/Model/EnumClass.php | 2 +- .../OpenAPIClient-php/lib/Model/EnumTest.php | 2 +- .../Model/FakeBigDecimalMap200Response.php | 2 +- .../php/OpenAPIClient-php/lib/Model/File.php | 2 +- .../lib/Model/FileSchemaTestClass.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Foo.php | 2 +- .../lib/Model/FooGetDefaultResponse.php | 2 +- .../lib/Model/FormatTest.php | 2 +- .../lib/Model/HasOnlyReadOnly.php | 2 +- .../lib/Model/HealthCheckResult.php | 2 +- .../OpenAPIClient-php/lib/Model/MapTest.php | 2 +- ...PropertiesAndAdditionalPropertiesClass.php | 2 +- .../lib/Model/Model200Response.php | 2 +- .../lib/Model/ModelInterface.php | 2 +- .../OpenAPIClient-php/lib/Model/ModelList.php | 2 +- .../lib/Model/ModelReturn.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Name.php | 2 +- .../lib/Model/NullableClass.php | 2 +- .../lib/Model/NumberOnly.php | 2 +- .../lib/Model/ObjectWithDeprecatedFields.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Order.php | 2 +- .../lib/Model/OuterComposite.php | 2 +- .../OpenAPIClient-php/lib/Model/OuterEnum.php | 2 +- .../lib/Model/OuterEnumDefaultValue.php | 2 +- .../lib/Model/OuterEnumInteger.php | 2 +- .../Model/OuterEnumIntegerDefaultValue.php | 2 +- .../lib/Model/OuterObjectWithEnumProperty.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Pet.php | 2 +- .../lib/Model/PropertyNameMapping.php | 2 +- .../lib/Model/ReadOnlyFirst.php | 2 +- .../lib/Model/SingleRefType.php | 2 +- .../lib/Model/SpecialModelName.php | 2 +- .../php/OpenAPIClient-php/lib/Model/Tag.php | 2 +- ...ineFreeformAdditionalPropertiesRequest.php | 2 +- .../php/OpenAPIClient-php/lib/Model/User.php | 2 +- .../lib/ObjectSerializer.php | 3 +- .../php/psr-18/.openapi-generator/VERSION | 2 +- samples/client/petstore/php/psr-18/README.md | 2 +- .../php/psr-18/lib/Api/AnotherFakeApi.php | 2 +- .../php/psr-18/lib/Api/DefaultApi.php | 2 +- .../petstore/php/psr-18/lib/Api/FakeApi.php | 2 +- .../lib/Api/FakeClassnameTags123Api.php | 2 +- .../petstore/php/psr-18/lib/Api/PetApi.php | 2 +- .../petstore/php/psr-18/lib/Api/StoreApi.php | 2 +- .../petstore/php/psr-18/lib/Api/UserApi.php | 2 +- .../petstore/php/psr-18/lib/ApiException.php | 2 +- .../petstore/php/psr-18/lib/Configuration.php | 2 +- .../petstore/php/psr-18/lib/DebugPlugin.php | 2 +- .../php/psr-18/lib/HeaderSelector.php | 2 +- .../lib/Model/AdditionalPropertiesClass.php | 2 +- .../psr-18/lib/Model/AllOfWithSingleRef.php | 2 +- .../petstore/php/psr-18/lib/Model/Animal.php | 2 +- .../php/psr-18/lib/Model/ApiResponse.php | 2 +- .../lib/Model/ArrayOfArrayOfNumberOnly.php | 2 +- .../psr-18/lib/Model/ArrayOfNumberOnly.php | 2 +- .../php/psr-18/lib/Model/ArrayTest.php | 2 +- .../php/psr-18/lib/Model/Capitalization.php | 2 +- .../petstore/php/psr-18/lib/Model/Cat.php | 2 +- .../php/psr-18/lib/Model/Category.php | 2 +- .../php/psr-18/lib/Model/ClassModel.php | 2 +- .../petstore/php/psr-18/lib/Model/Client.php | 2 +- .../php/psr-18/lib/Model/DeprecatedObject.php | 2 +- .../petstore/php/psr-18/lib/Model/Dog.php | 2 +- .../php/psr-18/lib/Model/EnumArrays.php | 2 +- .../php/psr-18/lib/Model/EnumClass.php | 2 +- .../php/psr-18/lib/Model/EnumTest.php | 2 +- .../Model/FakeBigDecimalMap200Response.php | 2 +- .../petstore/php/psr-18/lib/Model/File.php | 2 +- .../psr-18/lib/Model/FileSchemaTestClass.php | 2 +- .../petstore/php/psr-18/lib/Model/Foo.php | 2 +- .../lib/Model/FooGetDefaultResponse.php | 2 +- .../php/psr-18/lib/Model/FormatTest.php | 2 +- .../php/psr-18/lib/Model/HasOnlyReadOnly.php | 2 +- .../psr-18/lib/Model/HealthCheckResult.php | 2 +- .../petstore/php/psr-18/lib/Model/MapTest.php | 2 +- ...PropertiesAndAdditionalPropertiesClass.php | 2 +- .../php/psr-18/lib/Model/Model200Response.php | 2 +- .../php/psr-18/lib/Model/ModelInterface.php | 2 +- .../php/psr-18/lib/Model/ModelList.php | 2 +- .../php/psr-18/lib/Model/ModelReturn.php | 2 +- .../petstore/php/psr-18/lib/Model/Name.php | 2 +- .../php/psr-18/lib/Model/NullableClass.php | 2 +- .../php/psr-18/lib/Model/NumberOnly.php | 2 +- .../lib/Model/ObjectWithDeprecatedFields.php | 2 +- .../petstore/php/psr-18/lib/Model/Order.php | 2 +- .../php/psr-18/lib/Model/OuterComposite.php | 2 +- .../php/psr-18/lib/Model/OuterEnum.php | 2 +- .../lib/Model/OuterEnumDefaultValue.php | 2 +- .../php/psr-18/lib/Model/OuterEnumInteger.php | 2 +- .../Model/OuterEnumIntegerDefaultValue.php | 2 +- .../lib/Model/OuterObjectWithEnumProperty.php | 2 +- .../petstore/php/psr-18/lib/Model/Pet.php | 2 +- .../psr-18/lib/Model/PropertyNameMapping.php | 2 +- .../php/psr-18/lib/Model/ReadOnlyFirst.php | 2 +- .../php/psr-18/lib/Model/SingleRefType.php | 2 +- .../php/psr-18/lib/Model/SpecialModelName.php | 2 +- .../petstore/php/psr-18/lib/Model/Tag.php | 2 +- ...ineFreeformAdditionalPropertiesRequest.php | 2 +- .../petstore/php/psr-18/lib/Model/User.php | 2 +- .../php/psr-18/lib/ObjectSerializer.php | 3 +- .../powershell/.openapi-generator/VERSION | 2 +- samples/client/petstore/powershell/README.md | 2 +- .../src/PSPetstore/Private/PSApiClient.ps1 | 125 +- .../en-US/about_PSPetstore.help.txt | 2 +- .../ruby-autoload/.openapi-generator/VERSION | 2 +- .../client/petstore/ruby-autoload/README.md | 2 +- .../petstore/ruby-autoload/lib/petstore.rb | 2 +- .../lib/petstore/api/another_fake_api.rb | 2 +- .../lib/petstore/api/default_api.rb | 2 +- .../lib/petstore/api/fake_api.rb | 2 +- .../api/fake_classname_tags123_api.rb | 2 +- .../ruby-autoload/lib/petstore/api/pet_api.rb | 2 +- .../lib/petstore/api/store_api.rb | 2 +- .../lib/petstore/api/user_api.rb | 2 +- .../ruby-autoload/lib/petstore/api_client.rb | 2 +- .../ruby-autoload/lib/petstore/api_error.rb | 2 +- .../lib/petstore/configuration.rb | 2 +- .../models/additional_properties_class.rb | 2 +- .../petstore/models/all_of_with_single_ref.rb | 2 +- .../lib/petstore/models/animal.rb | 2 +- .../lib/petstore/models/api_response.rb | 2 +- .../models/array_of_array_of_number_only.rb | 2 +- .../petstore/models/array_of_number_only.rb | 2 +- .../lib/petstore/models/array_test.rb | 2 +- .../lib/petstore/models/capitalization.rb | 2 +- .../ruby-autoload/lib/petstore/models/cat.rb | 2 +- .../lib/petstore/models/category.rb | 2 +- .../petstore/models/child_with_nullable.rb | 2 +- .../lib/petstore/models/class_model.rb | 2 +- .../lib/petstore/models/client.rb | 2 +- .../lib/petstore/models/deprecated_object.rb | 2 +- .../ruby-autoload/lib/petstore/models/dog.rb | 2 +- .../lib/petstore/models/enum_arrays.rb | 2 +- .../lib/petstore/models/enum_class.rb | 2 +- .../lib/petstore/models/enum_test.rb | 2 +- .../fake_big_decimal_map200_response.rb | 2 +- .../ruby-autoload/lib/petstore/models/file.rb | 2 +- .../petstore/models/file_schema_test_class.rb | 2 +- .../ruby-autoload/lib/petstore/models/foo.rb | 2 +- .../models/foo_get_default_response.rb | 2 +- .../lib/petstore/models/format_test.rb | 2 +- .../lib/petstore/models/has_only_read_only.rb | 2 +- .../petstore/models/health_check_result.rb | 2 +- .../ruby-autoload/lib/petstore/models/list.rb | 2 +- .../lib/petstore/models/map_test.rb | 2 +- ...perties_and_additional_properties_class.rb | 2 +- .../lib/petstore/models/model200_response.rb | 2 +- .../lib/petstore/models/model_return.rb | 2 +- .../ruby-autoload/lib/petstore/models/name.rb | 2 +- .../lib/petstore/models/nullable_class.rb | 2 +- .../lib/petstore/models/number_only.rb | 2 +- .../models/object_with_deprecated_fields.rb | 2 +- .../lib/petstore/models/order.rb | 2 +- .../lib/petstore/models/outer_composite.rb | 2 +- .../lib/petstore/models/outer_enum.rb | 2 +- .../models/outer_enum_default_value.rb | 2 +- .../lib/petstore/models/outer_enum_integer.rb | 2 +- .../outer_enum_integer_default_value.rb | 2 +- .../models/outer_object_with_enum_property.rb | 2 +- .../petstore/models/parent_with_nullable.rb | 2 +- .../ruby-autoload/lib/petstore/models/pet.rb | 2 +- .../lib/petstore/models/read_only_first.rb | 2 +- .../lib/petstore/models/single_ref_type.rb | 2 +- .../lib/petstore/models/special_model_name.rb | 2 +- .../ruby-autoload/lib/petstore/models/tag.rb | 2 +- ..._freeform_additional_properties_request.rb | 2 +- .../ruby-autoload/lib/petstore/models/user.rb | 2 +- .../ruby-autoload/lib/petstore/version.rb | 2 +- .../petstore/ruby-autoload/petstore.gemspec | 2 +- .../ruby-autoload/spec/spec_helper.rb | 2 +- .../ruby-faraday/.openapi-generator/VERSION | 2 +- .../client/petstore/ruby-faraday/README.md | 2 +- .../petstore/ruby-faraday/lib/petstore.rb | 2 +- .../lib/petstore/api/another_fake_api.rb | 2 +- .../lib/petstore/api/default_api.rb | 2 +- .../ruby-faraday/lib/petstore/api/fake_api.rb | 2 +- .../api/fake_classname_tags123_api.rb | 2 +- .../ruby-faraday/lib/petstore/api/pet_api.rb | 2 +- .../lib/petstore/api/store_api.rb | 2 +- .../ruby-faraday/lib/petstore/api/user_api.rb | 2 +- .../ruby-faraday/lib/petstore/api_client.rb | 2 +- .../ruby-faraday/lib/petstore/api_error.rb | 2 +- .../lib/petstore/configuration.rb | 2 +- .../models/additional_properties_class.rb | 2 +- .../petstore/models/all_of_with_single_ref.rb | 2 +- .../lib/petstore/models/animal.rb | 2 +- .../lib/petstore/models/api_response.rb | 2 +- .../models/array_of_array_of_number_only.rb | 2 +- .../petstore/models/array_of_number_only.rb | 2 +- .../lib/petstore/models/array_test.rb | 2 +- .../lib/petstore/models/capitalization.rb | 2 +- .../ruby-faraday/lib/petstore/models/cat.rb | 2 +- .../lib/petstore/models/category.rb | 2 +- .../petstore/models/child_with_nullable.rb | 2 +- .../lib/petstore/models/class_model.rb | 2 +- .../lib/petstore/models/client.rb | 2 +- .../lib/petstore/models/deprecated_object.rb | 2 +- .../ruby-faraday/lib/petstore/models/dog.rb | 2 +- .../lib/petstore/models/enum_arrays.rb | 2 +- .../lib/petstore/models/enum_class.rb | 2 +- .../lib/petstore/models/enum_test.rb | 2 +- .../fake_big_decimal_map200_response.rb | 2 +- .../ruby-faraday/lib/petstore/models/file.rb | 2 +- .../petstore/models/file_schema_test_class.rb | 2 +- .../ruby-faraday/lib/petstore/models/foo.rb | 2 +- .../models/foo_get_default_response.rb | 2 +- .../lib/petstore/models/format_test.rb | 2 +- .../lib/petstore/models/has_only_read_only.rb | 2 +- .../petstore/models/health_check_result.rb | 2 +- .../ruby-faraday/lib/petstore/models/list.rb | 2 +- .../lib/petstore/models/map_test.rb | 2 +- ...perties_and_additional_properties_class.rb | 2 +- .../lib/petstore/models/model200_response.rb | 2 +- .../lib/petstore/models/model_return.rb | 2 +- .../ruby-faraday/lib/petstore/models/name.rb | 2 +- .../lib/petstore/models/nullable_class.rb | 2 +- .../lib/petstore/models/number_only.rb | 2 +- .../models/object_with_deprecated_fields.rb | 2 +- .../ruby-faraday/lib/petstore/models/order.rb | 2 +- .../lib/petstore/models/outer_composite.rb | 2 +- .../lib/petstore/models/outer_enum.rb | 2 +- .../models/outer_enum_default_value.rb | 2 +- .../lib/petstore/models/outer_enum_integer.rb | 2 +- .../outer_enum_integer_default_value.rb | 2 +- .../models/outer_object_with_enum_property.rb | 2 +- .../petstore/models/parent_with_nullable.rb | 2 +- .../ruby-faraday/lib/petstore/models/pet.rb | 2 +- .../lib/petstore/models/read_only_first.rb | 2 +- .../lib/petstore/models/single_ref_type.rb | 2 +- .../lib/petstore/models/special_model_name.rb | 2 +- .../ruby-faraday/lib/petstore/models/tag.rb | 2 +- ..._freeform_additional_properties_request.rb | 2 +- .../ruby-faraday/lib/petstore/models/user.rb | 2 +- .../ruby-faraday/lib/petstore/version.rb | 2 +- .../petstore/ruby-faraday/petstore.gemspec | 2 +- .../petstore/ruby-faraday/spec/spec_helper.rb | 2 +- .../ruby-httpx/.openapi-generator/VERSION | 2 +- samples/client/petstore/ruby-httpx/README.md | 2 +- .../petstore/ruby-httpx/lib/petstore.rb | 2 +- .../lib/petstore/api/another_fake_api.rb | 2 +- .../lib/petstore/api/default_api.rb | 2 +- .../ruby-httpx/lib/petstore/api/fake_api.rb | 2 +- .../api/fake_classname_tags123_api.rb | 2 +- .../ruby-httpx/lib/petstore/api/pet_api.rb | 2 +- .../ruby-httpx/lib/petstore/api/store_api.rb | 2 +- .../ruby-httpx/lib/petstore/api/user_api.rb | 2 +- .../ruby-httpx/lib/petstore/api_client.rb | 2 +- .../ruby-httpx/lib/petstore/api_error.rb | 2 +- .../ruby-httpx/lib/petstore/configuration.rb | 2 +- .../models/additional_properties_class.rb | 2 +- .../petstore/models/all_of_with_single_ref.rb | 2 +- .../ruby-httpx/lib/petstore/models/animal.rb | 2 +- .../lib/petstore/models/api_response.rb | 2 +- .../models/array_of_array_of_number_only.rb | 2 +- .../petstore/models/array_of_number_only.rb | 2 +- .../lib/petstore/models/array_test.rb | 2 +- .../lib/petstore/models/capitalization.rb | 2 +- .../ruby-httpx/lib/petstore/models/cat.rb | 2 +- .../lib/petstore/models/category.rb | 2 +- .../lib/petstore/models/class_model.rb | 2 +- .../ruby-httpx/lib/petstore/models/client.rb | 2 +- .../ruby-httpx/lib/petstore/models/cow.rb | 2 +- .../lib/petstore/models/deprecated_object.rb | 2 +- .../ruby-httpx/lib/petstore/models/dog.rb | 2 +- .../lib/petstore/models/enum_arrays.rb | 2 +- .../lib/petstore/models/enum_class.rb | 2 +- .../lib/petstore/models/enum_test.rb | 2 +- .../fake_big_decimal_map200_response.rb | 2 +- .../ruby-httpx/lib/petstore/models/file.rb | 2 +- .../petstore/models/file_schema_test_class.rb | 2 +- .../ruby-httpx/lib/petstore/models/foo.rb | 2 +- .../models/foo_get_default_response.rb | 2 +- .../lib/petstore/models/format_test.rb | 2 +- .../lib/petstore/models/has_only_read_only.rb | 2 +- .../petstore/models/health_check_result.rb | 2 +- .../ruby-httpx/lib/petstore/models/list.rb | 2 +- .../lib/petstore/models/mamal_with_enum.rb | 2 +- .../ruby-httpx/lib/petstore/models/mammal.rb | 2 +- .../lib/petstore/models/mammal_anyof.rb | 2 +- .../models/mammal_without_discriminator.rb | 2 +- .../lib/petstore/models/map_test.rb | 2 +- ...perties_and_additional_properties_class.rb | 2 +- .../lib/petstore/models/model200_response.rb | 2 +- .../lib/petstore/models/model_return.rb | 2 +- .../ruby-httpx/lib/petstore/models/name.rb | 2 +- .../lib/petstore/models/nullable_class.rb | 2 +- .../lib/petstore/models/number_only.rb | 2 +- .../models/object_with_deprecated_fields.rb | 2 +- .../ruby-httpx/lib/petstore/models/order.rb | 2 +- .../lib/petstore/models/outer_composite.rb | 2 +- .../lib/petstore/models/outer_enum.rb | 2 +- .../models/outer_enum_default_value.rb | 2 +- .../lib/petstore/models/outer_enum_integer.rb | 2 +- .../outer_enum_integer_default_value.rb | 2 +- .../models/outer_object_with_enum_property.rb | 2 +- .../ruby-httpx/lib/petstore/models/pet.rb | 2 +- .../petstore/models/property_name_mapping.rb | 2 +- .../lib/petstore/models/read_only_first.rb | 2 +- .../lib/petstore/models/single_ref_type.rb | 2 +- .../lib/petstore/models/special_model_name.rb | 2 +- .../ruby-httpx/lib/petstore/models/tag.rb | 2 +- ..._freeform_additional_properties_request.rb | 2 +- .../ruby-httpx/lib/petstore/models/user.rb | 2 +- .../ruby-httpx/lib/petstore/models/whale.rb | 2 +- .../ruby-httpx/lib/petstore/models/zebra.rb | 2 +- .../ruby-httpx/lib/petstore/version.rb | 2 +- .../petstore/ruby-httpx/petstore.gemspec | 2 +- .../petstore/ruby-httpx/spec/spec_helper.rb | 2 +- .../petstore/ruby/.openapi-generator/VERSION | 2 +- samples/client/petstore/ruby/README.md | 2 +- samples/client/petstore/ruby/lib/petstore.rb | 2 +- .../ruby/lib/petstore/api/another_fake_api.rb | 2 +- .../ruby/lib/petstore/api/default_api.rb | 2 +- .../ruby/lib/petstore/api/fake_api.rb | 2 +- .../api/fake_classname_tags123_api.rb | 2 +- .../petstore/ruby/lib/petstore/api/pet_api.rb | 2 +- .../ruby/lib/petstore/api/store_api.rb | 2 +- .../ruby/lib/petstore/api/user_api.rb | 2 +- .../petstore/ruby/lib/petstore/api_client.rb | 2 +- .../petstore/ruby/lib/petstore/api_error.rb | 2 +- .../ruby/lib/petstore/configuration.rb | 2 +- .../models/additional_properties_class.rb | 2 +- .../petstore/models/all_of_with_single_ref.rb | 2 +- .../ruby/lib/petstore/models/animal.rb | 2 +- .../ruby/lib/petstore/models/api_response.rb | 2 +- .../models/array_of_array_of_number_only.rb | 2 +- .../petstore/models/array_of_number_only.rb | 2 +- .../ruby/lib/petstore/models/array_test.rb | 2 +- .../lib/petstore/models/capitalization.rb | 2 +- .../petstore/ruby/lib/petstore/models/cat.rb | 2 +- .../ruby/lib/petstore/models/category.rb | 2 +- .../ruby/lib/petstore/models/class_model.rb | 2 +- .../ruby/lib/petstore/models/client.rb | 2 +- .../petstore/ruby/lib/petstore/models/cow.rb | 2 +- .../lib/petstore/models/deprecated_object.rb | 2 +- .../petstore/ruby/lib/petstore/models/dog.rb | 2 +- .../ruby/lib/petstore/models/enum_arrays.rb | 2 +- .../ruby/lib/petstore/models/enum_class.rb | 2 +- .../ruby/lib/petstore/models/enum_test.rb | 2 +- .../fake_big_decimal_map200_response.rb | 2 +- .../petstore/ruby/lib/petstore/models/file.rb | 2 +- .../petstore/models/file_schema_test_class.rb | 2 +- .../petstore/ruby/lib/petstore/models/foo.rb | 2 +- .../models/foo_get_default_response.rb | 2 +- .../ruby/lib/petstore/models/format_test.rb | 2 +- .../lib/petstore/models/has_only_read_only.rb | 2 +- .../petstore/models/health_check_result.rb | 2 +- .../petstore/ruby/lib/petstore/models/list.rb | 2 +- .../lib/petstore/models/mamal_with_enum.rb | 2 +- .../ruby/lib/petstore/models/mammal.rb | 2 +- .../ruby/lib/petstore/models/mammal_anyof.rb | 2 +- .../models/mammal_without_discriminator.rb | 2 +- .../ruby/lib/petstore/models/map_test.rb | 2 +- ...perties_and_additional_properties_class.rb | 2 +- .../lib/petstore/models/model200_response.rb | 2 +- .../ruby/lib/petstore/models/model_return.rb | 2 +- .../petstore/ruby/lib/petstore/models/name.rb | 2 +- .../lib/petstore/models/nullable_class.rb | 2 +- .../ruby/lib/petstore/models/number_only.rb | 2 +- .../models/object_with_deprecated_fields.rb | 2 +- .../ruby/lib/petstore/models/order.rb | 2 +- .../lib/petstore/models/outer_composite.rb | 2 +- .../ruby/lib/petstore/models/outer_enum.rb | 2 +- .../models/outer_enum_default_value.rb | 2 +- .../lib/petstore/models/outer_enum_integer.rb | 2 +- .../outer_enum_integer_default_value.rb | 2 +- .../models/outer_object_with_enum_property.rb | 2 +- .../petstore/ruby/lib/petstore/models/pet.rb | 2 +- .../petstore/models/property_name_mapping.rb | 2 +- .../lib/petstore/models/read_only_first.rb | 2 +- .../lib/petstore/models/single_ref_type.rb | 2 +- .../lib/petstore/models/special_model_name.rb | 2 +- .../petstore/ruby/lib/petstore/models/tag.rb | 2 +- ..._freeform_additional_properties_request.rb | 2 +- .../petstore/ruby/lib/petstore/models/user.rb | 2 +- .../ruby/lib/petstore/models/whale.rb | 2 +- .../ruby/lib/petstore/models/zebra.rb | 2 +- .../petstore/ruby/lib/petstore/version.rb | 2 +- samples/client/petstore/ruby/petstore.gemspec | 2 +- .../client/petstore/ruby/spec/spec_helper.rb | 2 +- .../hyper/petstore/.openapi-generator/VERSION | 2 +- .../petstore/rust/hyper/petstore/Cargo.toml | 2 +- .../petstore/rust/hyper/petstore/README.md | 2 +- .../rust/hyper/petstore/docs/TypeTesting.md | 1 + .../hyper/petstore/src/models/type_testing.rs | 9 +- .../name-mapping/.openapi-generator/VERSION | 2 +- .../rust/reqwest/name-mapping/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore-async-middleware/Cargo.toml | 2 +- .../petstore-async-middleware/README.md | 2 +- .../docs/TypeTesting.md | 1 + .../src/models/type_testing.rs | 9 +- .../petstore-async/.openapi-generator/VERSION | 2 +- .../rust/reqwest/petstore-async/Cargo.toml | 2 +- .../rust/reqwest/petstore-async/README.md | 2 +- .../petstore-async/docs/TypeTesting.md | 1 + .../petstore-async/src/models/type_testing.rs | 9 +- .../.openapi-generator/VERSION | 2 +- .../reqwest/petstore-avoid-box/Cargo.toml | 2 +- .../rust/reqwest/petstore-avoid-box/README.md | 2 +- .../petstore-avoid-box/docs/TypeTesting.md | 1 + .../src/models/type_testing.rs | 9 +- .../.openapi-generator/VERSION | 2 +- .../petstore-awsv4signature/Cargo.toml | 2 +- .../reqwest/petstore-awsv4signature/README.md | 2 +- .../docs/TypeTesting.md | 1 + .../src/models/type_testing.rs | 9 +- .../petstore/.openapi-generator/VERSION | 2 +- .../petstore/rust/reqwest/petstore/Cargo.toml | 2 +- .../petstore/rust/reqwest/petstore/README.md | 2 +- .../rust/reqwest/petstore/docs/TypeTesting.md | 1 + .../petstore/src/models/type_testing.rs | 9 +- .../scala-akka/.openapi-generator/VERSION | 2 +- samples/client/petstore/scala-akka/README.md | 2 +- .../scala-pekko/.openapi-generator/VERSION | 2 +- samples/client/petstore/scala-pekko/README.md | 2 +- .../scala-sttp/.openapi-generator/VERSION | 2 +- samples/client/petstore/scala-sttp/README.md | 2 +- .../scala-sttp4/.openapi-generator/VERSION | 2 +- samples/client/petstore/scala-sttp4/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/SomeApi.java | 4 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/DefaultApi.java | 4 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/PetController.java | 4 +- .../org/openapitools/api/StoreController.java | 4 +- .../org/openapitools/api/UserController.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../spring-cloud/.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 4 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../api/FakeClassnameTags123Api.java | 4 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../HttpInterfacesAbstractConfigurator.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../java/org/openapitools/model/BigCat.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ChildWithNullable.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../model/ContainerDefaultValue.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../org/openapitools/model/EnumClass.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../java/org/openapitools/model/File.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../java/org/openapitools/model/Name.java | 2 +- .../model/NullableMapProperty.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../org/openapitools/model/OuterEnum.java | 2 +- .../model/ParentWithNullable.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- ...ResponseObjectWithDifferentFieldNames.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 4 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../api/FakeClassnameTags123Api.java | 4 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../HttpInterfacesAbstractConfigurator.java | 2 +- .../model/AdditionalPropertiesAnyTypeDto.java | 2 +- .../model/AdditionalPropertiesArrayDto.java | 2 +- .../model/AdditionalPropertiesBooleanDto.java | 2 +- .../model/AdditionalPropertiesClassDto.java | 2 +- .../model/AdditionalPropertiesIntegerDto.java | 2 +- .../model/AdditionalPropertiesNumberDto.java | 2 +- .../model/AdditionalPropertiesObjectDto.java | 2 +- .../model/AdditionalPropertiesStringDto.java | 2 +- .../org/openapitools/model/AnimalDto.java | 2 +- .../openapitools/model/ApiResponseDto.java | 2 +- .../model/ArrayOfArrayOfNumberOnlyDto.java | 2 +- .../model/ArrayOfNumberOnlyDto.java | 2 +- .../org/openapitools/model/ArrayTestDto.java | 2 +- .../org/openapitools/model/BigCatDto.java | 2 +- .../openapitools/model/CapitalizationDto.java | 2 +- .../java/org/openapitools/model/CatDto.java | 2 +- .../org/openapitools/model/CategoryDto.java | 2 +- .../model/ChildWithNullableDto.java | 2 +- .../org/openapitools/model/ClassModelDto.java | 2 +- .../org/openapitools/model/ClientDto.java | 2 +- .../model/ContainerDefaultValueDto.java | 2 +- .../java/org/openapitools/model/DogDto.java | 2 +- .../org/openapitools/model/EnumArraysDto.java | 2 +- .../org/openapitools/model/EnumClassDto.java | 2 +- .../org/openapitools/model/EnumTestDto.java | 2 +- .../java/org/openapitools/model/FileDto.java | 2 +- .../model/FileSchemaTestClassDto.java | 2 +- .../org/openapitools/model/FormatTestDto.java | 2 +- .../model/HasOnlyReadOnlyDto.java | 2 +- .../java/org/openapitools/model/ListDto.java | 2 +- .../org/openapitools/model/MapTestDto.java | 2 +- ...ertiesAndAdditionalPropertiesClassDto.java | 2 +- .../model/Model200ResponseDto.java | 2 +- .../java/org/openapitools/model/NameDto.java | 2 +- .../model/NullableMapPropertyDto.java | 2 +- .../org/openapitools/model/NumberOnlyDto.java | 2 +- .../java/org/openapitools/model/OrderDto.java | 2 +- .../openapitools/model/OuterCompositeDto.java | 2 +- .../org/openapitools/model/OuterEnumDto.java | 2 +- .../model/ParentWithNullableDto.java | 2 +- .../java/org/openapitools/model/PetDto.java | 2 +- .../openapitools/model/ReadOnlyFirstDto.java | 2 +- ...ponseObjectWithDifferentFieldNamesDto.java | 2 +- .../org/openapitools/model/ReturnDto.java | 2 +- .../model/SpecialModelNameDto.java | 2 +- .../java/org/openapitools/model/TagDto.java | 2 +- .../model/TypeHolderDefaultDto.java | 2 +- .../model/TypeHolderExampleDto.java | 2 +- .../java/org/openapitools/model/UserDto.java | 2 +- .../org/openapitools/model/XmlItemDto.java | 2 +- .../client/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../Classes/OpenAPIs/APIHelper.swift | 4 +- .../swift5/alamofireLibrary/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../Classes/OpenAPIs/APIHelper.swift | 4 +- .../Classes/OpenAPIs/Models.swift | 4 +- .../OpenAPIs/URLSessionImplementations.swift | 48 +- .../swift5/anycodableLibrary/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../Classes/OpenAPIs/APIHelper.swift | 4 +- .../Classes/OpenAPIs/Models.swift | 4 +- .../OpenAPIs/URLSessionImplementations.swift | 48 +- .../swift5/asyncAwaitLibrary/README.md | 2 +- .../combineLibrary/.openapi-generator/VERSION | 2 +- .../Classes/OpenAPIs/APIHelper.swift | 4 +- .../Classes/OpenAPIs/Models.swift | 4 +- .../OpenAPIs/URLSessionImplementations.swift | 48 +- .../petstore/swift5/combineLibrary/README.md | 2 +- .../swift5/default/.openapi-generator/VERSION | 2 +- .../Classes/OpenAPIs/APIHelper.swift | 4 +- .../Classes/OpenAPIs/Models.swift | 4 +- .../OpenAPIs/URLSessionImplementations.swift | 48 +- .../client/petstore/swift5/default/README.md | 2 +- .../deprecated/.openapi-generator/VERSION | 2 +- .../Classes/OpenAPIs/APIHelper.swift | 4 +- .../Classes/OpenAPIs/Models.swift | 4 +- .../OpenAPIs/URLSessionImplementations.swift | 48 +- .../petstore/swift5/deprecated/README.md | 2 +- .../frozenEnums/.openapi-generator/VERSION | 2 +- .../Classes/OpenAPIs/APIHelper.swift | 4 +- .../Classes/OpenAPIs/Models.swift | 4 +- .../OpenAPIs/URLSessionImplementations.swift | 48 +- .../petstore/swift5/frozenEnums/README.md | 2 +- .../nonPublicApi/.openapi-generator/VERSION | 2 +- .../Classes/OpenAPIs/APIHelper.swift | 4 +- .../Classes/OpenAPIs/Models.swift | 4 +- .../OpenAPIs/URLSessionImplementations.swift | 48 +- .../petstore/swift5/nonPublicApi/README.md | 2 +- .../objcCompatible/.openapi-generator/VERSION | 2 +- .../Classes/OpenAPIs/APIHelper.swift | 4 +- .../Classes/OpenAPIs/Models.swift | 4 +- .../OpenAPIs/URLSessionImplementations.swift | 48 +- .../petstore/swift5/objcCompatible/README.md | 2 +- .../swift5/oneOf/.openapi-generator/VERSION | 2 +- .../Classes/OpenAPIs/APIHelper.swift | 4 +- .../Classes/OpenAPIs/Models.swift | 4 +- .../OpenAPIs/URLSessionImplementations.swift | 48 +- .../client/petstore/swift5/oneOf/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../Classes/OpenAPIs/APIHelper.swift | 4 +- .../Classes/OpenAPIs/Models.swift | 4 +- .../OpenAPIs/URLSessionImplementations.swift | 48 +- .../swift5/promisekitLibrary/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../Classes/OpenAPIs/APIHelper.swift | 4 +- .../Classes/OpenAPIs/Models.swift | 4 +- .../OpenAPIs/URLSessionImplementations.swift | 48 +- .../swift5/readonlyProperties/README.md | 2 +- .../resultLibrary/.openapi-generator/VERSION | 2 +- .../Classes/OpenAPIs/APIHelper.swift | 4 +- .../Classes/OpenAPIs/Models.swift | 4 +- .../OpenAPIs/URLSessionImplementations.swift | 48 +- .../petstore/swift5/resultLibrary/README.md | 2 +- .../rxswiftLibrary/.openapi-generator/VERSION | 2 +- .../Classes/OpenAPIs/APIHelper.swift | 4 +- .../Classes/OpenAPIs/Models.swift | 4 +- .../OpenAPIs/URLSessionImplementations.swift | 48 +- .../petstore/swift5/rxswiftLibrary/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../swift5/urlsessionLibrary/README.md | 2 +- .../Sources/PetstoreClient/APIHelper.swift | 4 +- .../Sources/PetstoreClient/Models.swift | 4 +- .../URLSessionImplementations.swift | 48 +- .../validation/.openapi-generator/VERSION | 2 +- .../swift5/validation/Package.resolved | 16 + .../Classes/OpenAPIs/APIHelper.swift | 4 +- .../Classes/OpenAPIs/Models.swift | 4 +- .../OpenAPIs/URLSessionImplementations.swift | 48 +- .../petstore/swift5/validation/README.md | 2 +- .../vaporLibrary/.openapi-generator/VERSION | 2 +- .../petstore/swift5/vaporLibrary/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../Classes/OpenAPIs/APIHelper.swift | 4 +- .../Classes/OpenAPIs/Models.swift | 4 +- .../OpenAPIs/URLSessionImplementations.swift | 48 +- .../swift5/x-swift-hashable/README.md | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../with-npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/default/model/pet.ts | 1 + .../with-npm/.openapi-generator/VERSION | 2 +- .../builds/with-npm/model/pet.ts | 1 + .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/default/model/pet.ts | 1 + .../.openapi-generator/VERSION | 2 +- .../model/pet.ts | 1 + .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/default/model/pet.ts | 1 + .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/default/model/pet.ts | 1 + .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/default/model/pet.ts | 1 + .../default/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../builds/composed-schemas/common.ts | 42 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../typescript-axios/builds/default/common.ts | 42 +- .../es6-target/.openapi-generator/VERSION | 2 +- .../builds/es6-target/common.ts | 42 +- .../test-petstore/.openapi-generator/VERSION | 2 +- .../builds/test-petstore/common.ts | 42 +- .../.openapi-generator/VERSION | 2 +- .../builds/with-complex-headers/common.ts | 42 +- .../.openapi-generator/VERSION | 2 +- .../common.ts | 42 +- .../.openapi-generator/VERSION | 2 +- .../builds/with-interfaces/common.ts | 42 +- .../.openapi-generator/VERSION | 2 +- .../builds/with-node-imports/common.ts | 42 +- .../.openapi-generator/VERSION | 2 +- .../common.ts | 42 +- .../.openapi-generator/VERSION | 2 +- .../builds/with-npm-version/common.ts | 42 +- .../.openapi-generator/VERSION | 2 +- .../with-single-request-parameters/common.ts | 42 +- .../.openapi-generator/VERSION | 2 +- .../builds/with-string-enums/common.ts | 42 +- .../allOf-nullable/.openapi-generator/VERSION | 2 +- .../allOf-readonly/.openapi-generator/VERSION | 2 +- .../default-v3.0/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/enum/.openapi-generator/VERSION | 2 +- .../es6-target/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../default/.openapi-generator/VERSION | 2 +- .../npm/.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/default/api.module.ts | 2 +- .../builds/default/api/pet.service.ts | 224 +- .../builds/default/api/store.service.ts | 85 +- .../builds/default/api/user.service.ts | 173 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/default/api/pet.service.ts | 224 +- .../builds/default/api/store.service.ts | 85 +- .../builds/default/api/user.service.ts | 173 +- .../default/.openapi-generator/VERSION | 2 +- .../npm/.openapi-generator/VERSION | 2 +- .../petstore/typescript-node/npm/package.json | 5 +- .../.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../es6-target/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../xojo/client-synchronous/README.md | 2 +- .../xojo/client/.openapi-generator/VERSION | 2 +- samples/client/petstore/xojo/client/README.md | 2 +- .../zapier/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../config/petstore/protobuf-schema/README.md | 2 +- .../html2/.openapi-generator/VERSION | 2 +- samples/documentation/html2/index.html | 2010 ++++++++++--- samples/meta-codegen/lib/pom.xml | 2 +- .../usage/.openapi-generator/VERSION | 2 +- .../client/elm/.openapi-generator/VERSION | 2 +- samples/openapi3/client/elm/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../x-auth-id-alias/go-experimental/README.md | 2 +- .../jersey2-java8/.openapi-generator/VERSION | 2 +- .../java/jersey2-java8/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/JSON.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../org/openapitools/client/api/UsageApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../ruby-client/.openapi-generator/VERSION | 2 +- .../x-auth-id-alias/ruby-client/README.md | 2 +- .../ruby-client/lib/x_auth_id_alias.rb | 2 +- .../lib/x_auth_id_alias/api/usage_api.rb | 2 +- .../lib/x_auth_id_alias/api_client.rb | 2 +- .../lib/x_auth_id_alias/api_error.rb | 2 +- .../lib/x_auth_id_alias/configuration.rb | 2 +- .../lib/x_auth_id_alias/version.rb | 2 +- .../ruby-client/spec/spec_helper.rb | 2 +- .../ruby-client/x_auth_id_alias.gemspec | 2 +- .../ruby/.openapi-generator/VERSION | 2 +- .../features/dynamic-servers/ruby/README.md | 2 +- .../ruby/dynamic_servers.gemspec | 2 +- .../ruby/lib/dynamic_servers.rb | 2 +- .../ruby/lib/dynamic_servers/api/usage_api.rb | 2 +- .../ruby/lib/dynamic_servers/api_client.rb | 2 +- .../ruby/lib/dynamic_servers/api_error.rb | 2 +- .../ruby/lib/dynamic_servers/configuration.rb | 2 +- .../ruby/lib/dynamic_servers/version.rb | 2 +- .../dynamic-servers/ruby/spec/spec_helper.rb | 2 +- .../ruby-client/.openapi-generator/VERSION | 2 +- .../ruby-client/README.md | 2 +- .../ruby-client/lib/petstore.rb | 2 +- .../ruby-client/lib/petstore/api/usage_api.rb | 2 +- .../ruby-client/lib/petstore/api_client.rb | 2 +- .../ruby-client/lib/petstore/api_error.rb | 2 +- .../ruby-client/lib/petstore/configuration.rb | 2 +- .../lib/petstore/models/array_alias.rb | 2 +- .../lib/petstore/models/map_alias.rb | 2 +- .../ruby-client/lib/petstore/version.rb | 2 +- .../ruby-client/petstore.gemspec | 2 +- .../ruby-client/spec/spec_helper.rb | 2 +- .../dart-dio/oneof/.openapi-generator/VERSION | 2 +- .../client/petstore/dart-dio/oneof/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../dart-dio/oneof_primitive/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore_client_lib_fake/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../dart2/petstore_client_lib/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../dart2/petstore_client_lib_fake/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../go/go-petstore/.openapi-generator/VERSION | 2 +- .../client/petstore/go/go-petstore/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/JSON.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../openapitools/client/api/DefaultApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../client/model/ChildSchema.java | 2 +- .../client/model/MySchemaNameCharacters.java | 2 +- .../org/openapitools/client/model/Parent.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/jersey2-java8-swagger1/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/JSON.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../org/openapitools/client/api/PetApi.java | 2 +- .../org/openapitools/client/api/StoreApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/jersey2-java8-swagger2/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/JSON.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../org/openapitools/client/api/PetApi.java | 2 +- .../org/openapitools/client/api/StoreApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../jersey2-java8/.openapi-generator/VERSION | 2 +- .../petstore/java/jersey2-java8/README.md | 2 +- .../org/openapitools/client/ApiClient.java | 2 +- .../org/openapitools/client/ApiException.java | 2 +- .../openapitools/client/Configuration.java | 2 +- .../java/org/openapitools/client/JSON.java | 2 +- .../client/JavaTimeFormatter.java | 2 +- .../java/org/openapitools/client/Pair.java | 2 +- .../client/RFC3339DateFormat.java | 3 +- .../client/ServerConfiguration.java | 1 + .../openapitools/client/ServerVariable.java | 1 + .../org/openapitools/client/StringUtil.java | 2 +- .../client/api/AnotherFakeApi.java | 2 +- .../openapitools/client/api/DefaultApi.java | 2 +- .../org/openapitools/client/api/FakeApi.java | 2 +- .../client/api/FakeClassnameTags123Api.java | 2 +- .../org/openapitools/client/api/PetApi.java | 2 +- .../org/openapitools/client/api/StoreApi.java | 2 +- .../org/openapitools/client/api/UserApi.java | 2 +- .../openapitools/client/auth/ApiKeyAuth.java | 2 +- .../client/auth/HttpBasicAuth.java | 2 +- .../client/auth/HttpBearerAuth.java | 2 +- .../org/openapitools/client/auth/OAuth.java | 2 +- .../client/model/AbstractOpenApiSchema.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../org/openapitools/client/model/Animal.java | 2 +- .../org/openapitools/client/model/Apple.java | 2 +- .../openapitools/client/model/AppleReq.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../client/model/ArrayOfNumberOnly.java | 2 +- .../openapitools/client/model/ArrayTest.java | 2 +- .../org/openapitools/client/model/Banana.java | 2 +- .../openapitools/client/model/BananaReq.java | 2 +- .../openapitools/client/model/BasquePig.java | 2 +- .../client/model/Capitalization.java | 2 +- .../org/openapitools/client/model/Cat.java | 2 +- .../openapitools/client/model/Category.java | 2 +- .../openapitools/client/model/ChildCat.java | 2 +- .../openapitools/client/model/ClassModel.java | 2 +- .../org/openapitools/client/model/Client.java | 2 +- .../client/model/ComplexQuadrilateral.java | 2 +- .../openapitools/client/model/DanishPig.java | 2 +- .../client/model/DeprecatedObject.java | 2 +- .../org/openapitools/client/model/Dog.java | 2 +- .../openapitools/client/model/Drawing.java | 2 +- .../openapitools/client/model/EnumArrays.java | 2 +- .../openapitools/client/model/EnumTest.java | 2 +- .../client/model/EquilateralTriangle.java | 2 +- .../client/model/FileSchemaTestClass.java | 2 +- .../org/openapitools/client/model/Foo.java | 2 +- .../client/model/FooGetDefaultResponse.java | 2 +- .../openapitools/client/model/FormatTest.java | 2 +- .../org/openapitools/client/model/Fruit.java | 2 +- .../openapitools/client/model/FruitReq.java | 2 +- .../openapitools/client/model/GmFruit.java | 2 +- .../client/model/GrandparentAnimal.java | 2 +- .../client/model/HasOnlyReadOnly.java | 2 +- .../client/model/HealthCheckResult.java | 2 +- .../client/model/IsoscelesTriangle.java | 2 +- .../org/openapitools/client/model/Mammal.java | 2 +- .../openapitools/client/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../client/model/Model200Response.java | 2 +- .../client/model/ModelApiResponse.java | 2 +- .../openapitools/client/model/ModelFile.java | 2 +- .../openapitools/client/model/ModelList.java | 2 +- .../client/model/ModelReturn.java | 2 +- .../org/openapitools/client/model/Name.java | 2 +- .../client/model/NullableClass.java | 2 +- .../client/model/NullableShape.java | 2 +- .../openapitools/client/model/NumberOnly.java | 2 +- .../model/ObjectWithDeprecatedFields.java | 2 +- .../org/openapitools/client/model/Order.java | 2 +- .../client/model/OuterComposite.java | 2 +- .../openapitools/client/model/ParentPet.java | 2 +- .../org/openapitools/client/model/Pet.java | 2 +- .../org/openapitools/client/model/Pig.java | 2 +- .../client/model/Quadrilateral.java | 2 +- .../client/model/QuadrilateralInterface.java | 2 +- .../client/model/ReadOnlyFirst.java | 2 +- .../client/model/ScaleneTriangle.java | 2 +- .../org/openapitools/client/model/Shape.java | 2 +- .../client/model/ShapeInterface.java | 2 +- .../client/model/ShapeOrNull.java | 2 +- .../client/model/SimpleQuadrilateral.java | 2 +- .../client/model/SpecialModelName.java | 2 +- .../org/openapitools/client/model/Tag.java | 2 +- ...neFreeformAdditionalPropertiesRequest.java | 2 +- .../openapitools/client/model/Triangle.java | 2 +- .../client/model/TriangleInterface.java | 2 +- .../org/openapitools/client/model/User.java | 2 +- .../org/openapitools/client/model/Whale.java | 2 +- .../org/openapitools/client/model/Zebra.java | 2 +- .../python-aiohttp/.openapi-generator/FILES | 6 + .../python-aiohttp/.openapi-generator/VERSION | 2 +- .../client/petstore/python-aiohttp/README.md | 5 +- .../docs/AdditionalPropertiesAnyType.md | 2 +- .../docs/AdditionalPropertiesClass.md | 2 +- .../docs/AdditionalPropertiesObject.md | 2 +- ...AdditionalPropertiesWithDescriptionOnly.md | 2 +- .../python-aiohttp/docs/AllOfSuperModel.md | 29 + .../python-aiohttp/docs/AllOfWithSingleRef.md | 2 +- .../petstore/python-aiohttp/docs/Animal.md | 2 +- .../python-aiohttp/docs/AnyOfColor.md | 2 +- .../petstore/python-aiohttp/docs/AnyOfPig.md | 2 +- .../docs/ArrayOfArrayOfModel.md | 2 +- .../docs/ArrayOfArrayOfNumberOnly.md | 2 +- .../python-aiohttp/docs/ArrayOfNumberOnly.md | 2 +- .../petstore/python-aiohttp/docs/ArrayTest.md | 2 +- .../petstore/python-aiohttp/docs/BasquePig.md | 2 +- .../petstore/python-aiohttp/docs/Bathing.md | 2 +- .../python-aiohttp/docs/Capitalization.md | 2 +- .../petstore/python-aiohttp/docs/Cat.md | 2 +- .../petstore/python-aiohttp/docs/Category.md | 2 +- .../python-aiohttp/docs/CircularAllOfRef.md | 30 + .../docs/CircularReferenceModel.md | 2 +- .../python-aiohttp/docs/ClassModel.md | 2 +- .../petstore/python-aiohttp/docs/Client.md | 2 +- .../petstore/python-aiohttp/docs/Color.md | 2 +- .../petstore/python-aiohttp/docs/Creature.md | 2 +- .../python-aiohttp/docs/CreatureInfo.md | 2 +- .../petstore/python-aiohttp/docs/DanishPig.md | 2 +- .../python-aiohttp/docs/DeprecatedObject.md | 2 +- .../docs/DiscriminatorAllOfSub.md | 2 +- .../docs/DiscriminatorAllOfSuper.md | 2 +- .../petstore/python-aiohttp/docs/Dog.md | 2 +- .../python-aiohttp/docs/DummyModel.md | 2 +- .../python-aiohttp/docs/EnumArrays.md | 2 +- .../petstore/python-aiohttp/docs/EnumTest.md | 2 +- .../petstore/python-aiohttp/docs/FakeApi.md | 7 +- .../petstore/python-aiohttp/docs/Feeding.md | 2 +- .../petstore/python-aiohttp/docs/File.md | 2 +- .../docs/FileSchemaTestClass.md | 2 +- .../petstore/python-aiohttp/docs/FirstRef.md | 2 +- .../petstore/python-aiohttp/docs/Foo.md | 2 +- .../docs/FooGetDefaultResponse.md | 2 +- .../python-aiohttp/docs/FormatTest.md | 2 +- .../python-aiohttp/docs/HasOnlyReadOnly.md | 2 +- .../python-aiohttp/docs/HealthCheckResult.md | 2 +- .../docs/InnerDictWithProperty.md | 2 +- .../python-aiohttp/docs/InputAllOf.md | 2 +- .../python-aiohttp/docs/IntOrString.md | 2 +- .../petstore/python-aiohttp/docs/ListClass.md | 2 +- .../python-aiohttp/docs/MapOfArrayOfModel.md | 2 +- .../petstore/python-aiohttp/docs/MapTest.md | 2 +- ...dPropertiesAndAdditionalPropertiesClass.md | 2 +- .../python-aiohttp/docs/Model200Response.md | 2 +- .../python-aiohttp/docs/ModelApiResponse.md | 2 +- .../python-aiohttp/docs/ModelField.md | 2 +- .../python-aiohttp/docs/ModelReturn.md | 2 +- .../petstore/python-aiohttp/docs/Name.md | 2 +- .../python-aiohttp/docs/NullableClass.md | 2 +- .../python-aiohttp/docs/NullableProperty.md | 2 +- .../python-aiohttp/docs/NumberOnly.md | 2 +- .../docs/ObjectToTestAdditionalProperties.md | 2 +- .../docs/ObjectWithDeprecatedFields.md | 2 +- .../python-aiohttp/docs/OneOfEnumString.md | 2 +- .../petstore/python-aiohttp/docs/Order.md | 2 +- .../python-aiohttp/docs/OuterComposite.md | 2 +- .../docs/OuterObjectWithEnumProperty.md | 2 +- .../petstore/python-aiohttp/docs/Parent.md | 2 +- .../docs/ParentWithOptionalDict.md | 2 +- .../petstore/python-aiohttp/docs/Pet.md | 2 +- .../petstore/python-aiohttp/docs/Pig.md | 2 +- .../python-aiohttp/docs/PoopCleaning.md | 2 +- .../python-aiohttp/docs/PropertyMap.md | 2 +- .../docs/PropertyNameCollision.md | 2 +- .../python-aiohttp/docs/ReadOnlyFirst.md | 2 +- .../docs/SecondCircularAllOfRef.md | 30 + .../petstore/python-aiohttp/docs/SecondRef.md | 2 +- .../python-aiohttp/docs/SelfReferenceModel.md | 2 +- .../python-aiohttp/docs/SpecialModelName.md | 2 +- .../python-aiohttp/docs/SpecialName.md | 2 +- .../petstore/python-aiohttp/docs/Tag.md | 2 +- .../petstore/python-aiohttp/docs/Task.md | 2 +- .../python-aiohttp/docs/TaskActivity.md | 2 +- .../TestErrorResponsesWithModel400Response.md | 2 +- .../TestErrorResponsesWithModel404Response.md | 2 +- ...lineFreeformAdditionalPropertiesRequest.md | 2 +- ...ObjectForMultipartRequestsRequestMarker.md | 2 +- .../petstore/python-aiohttp/docs/Tiger.md | 2 +- ...edDictWithAdditionalModelListProperties.md | 2 +- ...dDictWithAdditionalStringListProperties.md | 2 +- .../petstore/python-aiohttp/docs/User.md | 2 +- .../python-aiohttp/docs/WithNestedOneOf.md | 2 +- .../python-aiohttp/petstore_api/__init__.py | 3 + .../petstore_api/api/fake_api.py | 19 + .../python-aiohttp/petstore_api/api_client.py | 2 + .../petstore_api/models/__init__.py | 3 + .../petstore_api/models/all_of_super_model.py | 87 + .../models/circular_all_of_ref.py | 99 + .../models/second_circular_all_of_ref.py | 99 + .../test/test_all_of_super_model.py | 51 + .../test/test_circular_all_of_ref.py | 60 + .../test/test_second_circular_all_of_ref.py | 57 + .../.openapi-generator/FILES | 6 + .../.openapi-generator/VERSION | 2 +- .../python-pydantic-v1-aiohttp/README.md | 5 +- .../docs/AdditionalPropertiesAnyType.md | 2 +- .../docs/AdditionalPropertiesClass.md | 2 +- .../docs/AdditionalPropertiesObject.md | 2 +- ...AdditionalPropertiesWithDescriptionOnly.md | 2 +- .../docs/AllOfSuperModel.md | 28 + .../docs/AllOfWithSingleRef.md | 2 +- .../python-pydantic-v1-aiohttp/docs/Animal.md | 2 +- .../docs/AnyOfColor.md | 2 +- .../docs/AnyOfPig.md | 2 +- .../docs/ApiResponse.md | 2 +- .../docs/ArrayOfArrayOfModel.md | 2 +- .../docs/ArrayOfArrayOfNumberOnly.md | 2 +- .../docs/ArrayOfNumberOnly.md | 2 +- .../docs/ArrayTest.md | 2 +- .../docs/BasquePig.md | 2 +- .../docs/Bathing.md | 2 +- .../docs/Capitalization.md | 2 +- .../python-pydantic-v1-aiohttp/docs/Cat.md | 2 +- .../docs/Category.md | 2 +- .../docs/CircularAllOfRef.md | 29 + .../docs/CircularReferenceModel.md | 2 +- .../docs/ClassModel.md | 2 +- .../python-pydantic-v1-aiohttp/docs/Client.md | 2 +- .../python-pydantic-v1-aiohttp/docs/Color.md | 2 +- .../docs/Creature.md | 2 +- .../docs/CreatureInfo.md | 2 +- .../docs/DanishPig.md | 2 +- .../docs/DeprecatedObject.md | 2 +- .../docs/DiscriminatorAllOfSub.md | 2 +- .../docs/DiscriminatorAllOfSuper.md | 2 +- .../python-pydantic-v1-aiohttp/docs/Dog.md | 2 +- .../docs/DummyModel.md | 2 +- .../docs/EnumArrays.md | 2 +- .../docs/EnumTest.md | 2 +- .../docs/FakeApi.md | 7 +- .../docs/Feeding.md | 2 +- .../python-pydantic-v1-aiohttp/docs/Field.md | 2 +- .../python-pydantic-v1-aiohttp/docs/File.md | 2 +- .../docs/FileSchemaTestClass.md | 2 +- .../docs/FirstRef.md | 2 +- .../python-pydantic-v1-aiohttp/docs/Foo.md | 2 +- .../docs/FooGetDefaultResponse.md | 2 +- .../docs/FormatTest.md | 2 +- .../docs/HasOnlyReadOnly.md | 2 +- .../docs/HealthCheckResult.md | 2 +- .../docs/InnerDictWithProperty.md | 2 +- .../docs/InputAllOf.md | 2 +- .../docs/IntOrString.md | 2 +- .../docs/ListClass.md | 2 +- .../docs/MapOfArrayOfModel.md | 2 +- .../docs/MapTest.md | 2 +- ...dPropertiesAndAdditionalPropertiesClass.md | 2 +- .../docs/Model200Response.md | 2 +- .../docs/ModelReturn.md | 2 +- .../python-pydantic-v1-aiohttp/docs/Name.md | 2 +- .../docs/NullableClass.md | 2 +- .../docs/NullableProperty.md | 2 +- .../docs/NumberOnly.md | 2 +- .../docs/ObjectToTestAdditionalProperties.md | 2 +- .../docs/ObjectWithDeprecatedFields.md | 2 +- .../docs/OneOfEnumString.md | 2 +- .../python-pydantic-v1-aiohttp/docs/Order.md | 2 +- .../docs/OuterComposite.md | 2 +- .../docs/OuterObjectWithEnumProperty.md | 2 +- .../python-pydantic-v1-aiohttp/docs/Parent.md | 2 +- .../docs/ParentWithOptionalDict.md | 2 +- .../python-pydantic-v1-aiohttp/docs/Pet.md | 2 +- .../python-pydantic-v1-aiohttp/docs/Pig.md | 2 +- .../docs/PoopCleaning.md | 2 +- .../docs/PropertyMap.md | 2 +- .../docs/PropertyNameCollision.md | 2 +- .../docs/ReadOnlyFirst.md | 2 +- .../docs/SecondCircularAllOfRef.md | 29 + .../docs/SecondRef.md | 2 +- .../docs/SelfReferenceModel.md | 2 +- .../docs/SpecialModelName.md | 2 +- .../docs/SpecialName.md | 2 +- .../python-pydantic-v1-aiohttp/docs/Tag.md | 2 +- .../python-pydantic-v1-aiohttp/docs/Task.md | 2 +- .../docs/TaskActivity.md | 2 +- .../TestErrorResponsesWithModel400Response.md | 2 +- .../TestErrorResponsesWithModel404Response.md | 2 +- ...lineFreeformAdditionalPropertiesRequest.md | 2 +- ...ObjectForMultipartRequestsRequestMarker.md | 2 +- .../python-pydantic-v1-aiohttp/docs/Tiger.md | 2 +- ...edDictWithAdditionalModelListProperties.md | 2 +- ...dDictWithAdditionalStringListProperties.md | 2 +- .../python-pydantic-v1-aiohttp/docs/User.md | 2 +- .../docs/WithNestedOneOf.md | 2 +- .../petstore_api/__init__.py | 3 + .../petstore_api/api/fake_api.py | 18 +- .../petstore_api/models/__init__.py | 3 + .../petstore_api/models/all_of_super_model.py | 71 + .../models/circular_all_of_ref.py | 82 + .../models/second_circular_all_of_ref.py | 82 + .../test/test_all_of_super_model.py | 52 + .../test/test_circular_all_of_ref.py | 61 + .../test/test_second_circular_all_of_ref.py | 58 + .../.openapi-generator/FILES | 6 + .../.openapi-generator/VERSION | 2 +- .../petstore/python-pydantic-v1/README.md | 5 +- .../docs/AdditionalPropertiesAnyType.md | 2 +- .../docs/AdditionalPropertiesClass.md | 2 +- .../docs/AdditionalPropertiesObject.md | 2 +- ...AdditionalPropertiesWithDescriptionOnly.md | 2 +- .../docs/AllOfSuperModel.md | 28 + .../docs/AllOfWithSingleRef.md | 2 +- .../python-pydantic-v1/docs/Animal.md | 2 +- .../python-pydantic-v1/docs/AnyOfColor.md | 2 +- .../python-pydantic-v1/docs/AnyOfPig.md | 2 +- .../python-pydantic-v1/docs/ApiResponse.md | 2 +- .../docs/ArrayOfArrayOfModel.md | 2 +- .../docs/ArrayOfArrayOfNumberOnly.md | 2 +- .../docs/ArrayOfNumberOnly.md | 2 +- .../python-pydantic-v1/docs/ArrayTest.md | 2 +- .../python-pydantic-v1/docs/BasquePig.md | 2 +- .../python-pydantic-v1/docs/Bathing.md | 2 +- .../python-pydantic-v1/docs/Capitalization.md | 2 +- .../petstore/python-pydantic-v1/docs/Cat.md | 2 +- .../python-pydantic-v1/docs/Category.md | 2 +- .../docs/CircularAllOfRef.md | 29 + .../docs/CircularReferenceModel.md | 2 +- .../python-pydantic-v1/docs/ClassModel.md | 2 +- .../python-pydantic-v1/docs/Client.md | 2 +- .../petstore/python-pydantic-v1/docs/Color.md | 2 +- .../python-pydantic-v1/docs/Creature.md | 2 +- .../python-pydantic-v1/docs/CreatureInfo.md | 2 +- .../python-pydantic-v1/docs/DanishPig.md | 2 +- .../docs/DeprecatedObject.md | 2 +- .../docs/DiscriminatorAllOfSub.md | 2 +- .../docs/DiscriminatorAllOfSuper.md | 2 +- .../petstore/python-pydantic-v1/docs/Dog.md | 2 +- .../python-pydantic-v1/docs/DummyModel.md | 2 +- .../python-pydantic-v1/docs/EnumArrays.md | 2 +- .../python-pydantic-v1/docs/EnumTest.md | 2 +- .../python-pydantic-v1/docs/FakeApi.md | 7 +- .../python-pydantic-v1/docs/Feeding.md | 2 +- .../petstore/python-pydantic-v1/docs/Field.md | 2 +- .../petstore/python-pydantic-v1/docs/File.md | 2 +- .../docs/FileSchemaTestClass.md | 2 +- .../python-pydantic-v1/docs/FirstRef.md | 2 +- .../petstore/python-pydantic-v1/docs/Foo.md | 2 +- .../docs/FooGetDefaultResponse.md | 2 +- .../python-pydantic-v1/docs/FormatTest.md | 2 +- .../docs/HasOnlyReadOnly.md | 2 +- .../docs/HealthCheckResult.md | 2 +- .../docs/InnerDictWithProperty.md | 2 +- .../python-pydantic-v1/docs/InputAllOf.md | 2 +- .../python-pydantic-v1/docs/IntOrString.md | 2 +- .../python-pydantic-v1/docs/ListClass.md | 2 +- .../docs/MapOfArrayOfModel.md | 2 +- .../python-pydantic-v1/docs/MapTest.md | 2 +- ...dPropertiesAndAdditionalPropertiesClass.md | 2 +- .../docs/Model200Response.md | 2 +- .../python-pydantic-v1/docs/ModelReturn.md | 2 +- .../petstore/python-pydantic-v1/docs/Name.md | 2 +- .../python-pydantic-v1/docs/NullableClass.md | 2 +- .../docs/NullableProperty.md | 2 +- .../python-pydantic-v1/docs/NumberOnly.md | 2 +- .../docs/ObjectToTestAdditionalProperties.md | 2 +- .../docs/ObjectWithDeprecatedFields.md | 2 +- .../docs/OneOfEnumString.md | 2 +- .../petstore/python-pydantic-v1/docs/Order.md | 2 +- .../python-pydantic-v1/docs/OuterComposite.md | 2 +- .../docs/OuterObjectWithEnumProperty.md | 2 +- .../python-pydantic-v1/docs/Parent.md | 2 +- .../docs/ParentWithOptionalDict.md | 2 +- .../petstore/python-pydantic-v1/docs/Pet.md | 2 +- .../petstore/python-pydantic-v1/docs/Pig.md | 2 +- .../python-pydantic-v1/docs/PoopCleaning.md | 2 +- .../python-pydantic-v1/docs/PropertyMap.md | 2 +- .../docs/PropertyNameCollision.md | 2 +- .../python-pydantic-v1/docs/ReadOnlyFirst.md | 2 +- .../docs/SecondCircularAllOfRef.md | 29 + .../python-pydantic-v1/docs/SecondRef.md | 2 +- .../docs/SelfReferenceModel.md | 2 +- .../docs/SpecialModelName.md | 2 +- .../python-pydantic-v1/docs/SpecialName.md | 2 +- .../petstore/python-pydantic-v1/docs/Tag.md | 2 +- .../petstore/python-pydantic-v1/docs/Task.md | 2 +- .../python-pydantic-v1/docs/TaskActivity.md | 2 +- .../TestErrorResponsesWithModel400Response.md | 2 +- .../TestErrorResponsesWithModel404Response.md | 2 +- ...lineFreeformAdditionalPropertiesRequest.md | 2 +- ...ObjectForMultipartRequestsRequestMarker.md | 2 +- .../petstore/python-pydantic-v1/docs/Tiger.md | 2 +- ...edDictWithAdditionalModelListProperties.md | 2 +- ...dDictWithAdditionalStringListProperties.md | 2 +- .../petstore/python-pydantic-v1/docs/User.md | 2 +- .../docs/WithNestedOneOf.md | 2 +- .../petstore_api/__init__.py | 3 + .../petstore_api/api/fake_api.py | 22 +- .../petstore_api/models/__init__.py | 3 + .../petstore_api/models/all_of_super_model.py | 83 + .../models/circular_all_of_ref.py | 94 + .../models/second_circular_all_of_ref.py | 94 + .../test/test_all_of_super_model.py | 52 + .../test/test_circular_all_of_ref.py | 61 + .../test/test_second_circular_all_of_ref.py | 58 + .../petstore/python/.openapi-generator/FILES | 6 + .../python/.openapi-generator/VERSION | 2 +- .../openapi3/client/petstore/python/README.md | 5 +- .../docs/AdditionalPropertiesAnyType.md | 2 +- .../python/docs/AdditionalPropertiesClass.md | 2 +- .../python/docs/AdditionalPropertiesObject.md | 2 +- ...AdditionalPropertiesWithDescriptionOnly.md | 2 +- .../petstore/python/docs/AllOfSuperModel.md | 29 + .../python/docs/AllOfWithSingleRef.md | 2 +- .../client/petstore/python/docs/Animal.md | 2 +- .../client/petstore/python/docs/AnyOfColor.md | 2 +- .../client/petstore/python/docs/AnyOfPig.md | 2 +- .../python/docs/ArrayOfArrayOfModel.md | 2 +- .../python/docs/ArrayOfArrayOfNumberOnly.md | 2 +- .../petstore/python/docs/ArrayOfNumberOnly.md | 2 +- .../client/petstore/python/docs/ArrayTest.md | 2 +- .../client/petstore/python/docs/BasquePig.md | 2 +- .../client/petstore/python/docs/Bathing.md | 2 +- .../petstore/python/docs/Capitalization.md | 2 +- .../client/petstore/python/docs/Cat.md | 2 +- .../client/petstore/python/docs/Category.md | 2 +- .../petstore/python/docs/CircularAllOfRef.md | 30 + .../python/docs/CircularReferenceModel.md | 2 +- .../client/petstore/python/docs/ClassModel.md | 2 +- .../client/petstore/python/docs/Client.md | 2 +- .../client/petstore/python/docs/Color.md | 2 +- .../client/petstore/python/docs/Creature.md | 2 +- .../petstore/python/docs/CreatureInfo.md | 2 +- .../client/petstore/python/docs/DanishPig.md | 2 +- .../petstore/python/docs/DeprecatedObject.md | 2 +- .../python/docs/DiscriminatorAllOfSub.md | 2 +- .../python/docs/DiscriminatorAllOfSuper.md | 2 +- .../client/petstore/python/docs/Dog.md | 2 +- .../client/petstore/python/docs/DummyModel.md | 2 +- .../client/petstore/python/docs/EnumArrays.md | 2 +- .../petstore/python/docs/EnumSerialization.md | 11 + .../client/petstore/python/docs/EnumTest.md | 2 +- .../client/petstore/python/docs/FakeApi.md | 7 +- .../client/petstore/python/docs/Feeding.md | 2 +- .../client/petstore/python/docs/File.md | 2 +- .../python/docs/FileSchemaTestClass.md | 2 +- .../client/petstore/python/docs/FirstRef.md | 2 +- .../client/petstore/python/docs/Foo.md | 2 +- .../python/docs/FooGetDefaultResponse.md | 2 +- .../client/petstore/python/docs/FormatTest.md | 2 +- .../petstore/python/docs/HasOnlyReadOnly.md | 2 +- .../petstore/python/docs/HealthCheckResult.md | 2 +- .../python/docs/InnerDictWithProperty.md | 2 +- .../client/petstore/python/docs/InputAllOf.md | 2 +- .../petstore/python/docs/IntOrString.md | 2 +- .../client/petstore/python/docs/ListClass.md | 2 +- .../petstore/python/docs/MapOfArrayOfModel.md | 2 +- .../client/petstore/python/docs/MapTest.md | 2 +- ...dPropertiesAndAdditionalPropertiesClass.md | 2 +- .../petstore/python/docs/Model200Response.md | 2 +- .../petstore/python/docs/ModelApiResponse.md | 2 +- .../client/petstore/python/docs/ModelField.md | 2 +- .../petstore/python/docs/ModelReturn.md | 2 +- .../client/petstore/python/docs/Name.md | 2 +- .../petstore/python/docs/NullableClass.md | 2 +- .../petstore/python/docs/NullableProperty.md | 2 +- .../client/petstore/python/docs/NumberOnly.md | 2 +- .../docs/ObjectToTestAdditionalProperties.md | 2 +- .../python/docs/ObjectWithDeprecatedFields.md | 2 +- .../petstore/python/docs/OneOfEnumString.md | 2 +- .../client/petstore/python/docs/Order.md | 2 +- .../petstore/python/docs/OuterComposite.md | 2 +- .../docs/OuterObjectWithEnumProperty.md | 2 +- .../client/petstore/python/docs/Parent.md | 2 +- .../python/docs/ParentWithOptionalDict.md | 2 +- .../client/petstore/python/docs/Pet.md | 2 +- .../client/petstore/python/docs/Pig.md | 2 +- .../petstore/python/docs/PoopCleaning.md | 2 +- .../petstore/python/docs/PropertyMap.md | 2 +- .../python/docs/PropertyNameCollision.md | 2 +- .../petstore/python/docs/ReadOnlyFirst.md | 2 +- .../python/docs/SecondCircularAllOfRef.md | 30 + .../client/petstore/python/docs/SecondRef.md | 2 +- .../python/docs/SelfReferenceModel.md | 2 +- .../petstore/python/docs/SpecialModelName.md | 2 +- .../petstore/python/docs/SpecialName.md | 2 +- .../client/petstore/python/docs/Tag.md | 2 +- .../client/petstore/python/docs/Task.md | 2 +- .../petstore/python/docs/TaskActivity.md | 2 +- .../TestErrorResponsesWithModel400Response.md | 2 +- .../TestErrorResponsesWithModel404Response.md | 2 +- ...lineFreeformAdditionalPropertiesRequest.md | 2 +- ...ObjectForMultipartRequestsRequestMarker.md | 2 +- .../client/petstore/python/docs/Tiger.md | 2 +- ...edDictWithAdditionalModelListProperties.md | 2 +- ...dDictWithAdditionalStringListProperties.md | 2 +- .../client/petstore/python/docs/User.md | 2 +- .../petstore/python/docs/WithNestedOneOf.md | 2 +- .../petstore/python/petstore_api/__init__.py | 3 + .../python/petstore_api/api/fake_api.py | 19 + .../python/petstore_api/api_client.py | 2 + .../python/petstore_api/models/__init__.py | 3 + .../petstore_api/models/all_of_super_model.py | 100 + .../models/circular_all_of_ref.py | 112 + .../petstore_api/models/enum_serialization.py | 37 + .../models/second_circular_all_of_ref.py | 112 + .../python/test/test_all_of_super_model.py | 51 + .../python/test/test_circular_all_of_ref.py | 60 + .../python/test/test_enum_serialization.py | 33 + .../test/test_second_circular_all_of_ref.py | 57 + .../petstore/python/tests/test_api_client.py | 34 +- .../petstore/python/tests/test_fake_api.py | 25 +- .../petstore/python/tests/test_model.py | 10 + .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../spring-cloud-3/.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/DefaultApi.java | 4 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 4 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../api/FakeClassnameTags123Api.java | 4 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../java/org/openapitools/model/BigCat.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ChildWithNullable.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../model/ContainerDefaultValue.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../org/openapitools/model/EnumClass.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../java/org/openapitools/model/File.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../java/org/openapitools/model/Name.java | 2 +- .../model/NullableMapProperty.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../org/openapitools/model/OuterEnum.java | 2 +- .../model/ParentWithNullable.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- ...ResponseObjectWithDifferentFieldNames.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../spring-cloud/.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../spring-stubs/.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../builds/browser/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../builds/default/.openapi-generator/VERSION | 2 +- .../builds/deno/.openapi-generator/VERSION | 2 +- .../inversify/.openapi-generator/VERSION | 2 +- .../builds/jquery/.openapi-generator/VERSION | 2 +- .../object_params/.openapi-generator/VERSION | 2 +- .../avro-schema/.openapi-generator/VERSION | 2 +- .../go/go-petstore/.openapi-generator/VERSION | 2 +- .../server/petstore/go/go-petstore/README.md | 2 +- .../server/petstore/go/go-petstore/go/api.go | 3 +- .../petstore/go/go-petstore/go/api_pet.go | 3 +- .../go/go-petstore/go/api_pet_service.go | 3 +- .../petstore/go/go-petstore/go/api_store.go | 3 +- .../go/go-petstore/go/api_store_service.go | 3 +- .../petstore/go/go-petstore/go/api_user.go | 3 +- .../go/go-petstore/go/api_user_service.go | 3 +- .../petstore/go/go-petstore/go/error.go | 3 +- .../petstore/go/go-petstore/go/helpers.go | 3 +- .../server/petstore/go/go-petstore/go/impl.go | 3 +- .../petstore/go/go-petstore/go/logger.go | 3 +- .../go/go-petstore/go/model_an_object.go | 3 +- .../go/go-petstore/go/model_api_response.go | 3 +- .../go/go-petstore/go/model_category.go | 3 +- .../petstore/go/go-petstore/go/model_order.go | 3 +- .../go/go-petstore/go/model_order_info.go | 3 +- .../petstore/go/go-petstore/go/model_pet.go | 3 +- .../go/go-petstore/go/model_special_info.go | 3 +- .../petstore/go/go-petstore/go/model_tag.go | 3 +- .../petstore/go/go-petstore/go/model_user.go | 3 +- .../petstore/go/go-petstore/go/routers.go | 3 +- .../server/petstore/go/go-petstore/main.go | 3 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/BarApi.java | 4 +- .../java/org/openapitools/api/FooApi.java | 4 +- .../org/openapitools/model/Addressable.java | 2 +- .../java/org/openapitools/model/Apple.java | 2 +- .../java/org/openapitools/model/Banana.java | 2 +- .../main/java/org/openapitools/model/Bar.java | 2 +- .../org/openapitools/model/BarCreate.java | 2 +- .../java/org/openapitools/model/BarRef.java | 2 +- .../org/openapitools/model/BarRefOrValue.java | 2 +- .../java/org/openapitools/model/Entity.java | 2 +- .../org/openapitools/model/EntityRef.java | 2 +- .../org/openapitools/model/Extensible.java | 2 +- .../main/java/org/openapitools/model/Foo.java | 2 +- .../java/org/openapitools/model/FooRef.java | 2 +- .../org/openapitools/model/FooRefOrValue.java | 2 +- .../java/org/openapitools/model/Fruit.java | 2 +- .../org/openapitools/model/FruitType.java | 2 +- .../java/org/openapitools/model/Pasta.java | 2 +- .../java/org/openapitools/model/Pizza.java | 2 +- .../org/openapitools/model/PizzaSpeziale.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../springboot-3/.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 4 +- .../api/AnotherFakeApiDelegate.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../org/openapitools/api/FakeApiDelegate.java | 2 +- .../api/FakeClassnameTestApi.java | 4 +- .../api/FakeClassnameTestApiDelegate.java | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../org/openapitools/api/PetApiDelegate.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../openapitools/api/StoreApiDelegate.java | 2 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../org/openapitools/api/UserApiDelegate.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../java/org/openapitools/model/BigCat.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ChildWithNullable.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../model/ContainerDefaultValue.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../org/openapitools/model/EnumClass.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../java/org/openapitools/model/File.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../java/org/openapitools/model/Name.java | 2 +- .../model/NullableMapProperty.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../org/openapitools/model/OuterEnum.java | 2 +- .../model/ParentWithNullable.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- ...ResponseObjectWithDifferentFieldNames.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 4 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../api/FakeClassnameTestApi.java | 4 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../java/org/openapitools/model/BigCat.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ChildWithNullable.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../model/ContainerDefaultValue.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../org/openapitools/model/EnumClass.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../java/org/openapitools/model/File.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../java/org/openapitools/model/Name.java | 2 +- .../model/NullableMapProperty.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../org/openapitools/model/OuterEnum.java | 2 +- .../model/ParentWithNullable.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- ...ResponseObjectWithDifferentFieldNames.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../springboot/.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/ktorm/.openapi-generator/VERSION | 2 +- .../petstore/mysql/.openapi-generator/VERSION | 2 +- .../wsdl-schema/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../schema/postman-collection/postman.json | 2 +- .../python/test/test_endpoints.py | 7 + .../.openapi-generator/VERSION | 2 +- .../org/openapitools/server/apis/StuffApi.kt | 2 +- .../jaxrs-spec/.openapi-generator/VERSION | 2 +- .../openapitools/server/apis/DefaultApi.kt | 2 +- .../aspnetcore-3.0/.openapi-generator/VERSION | 2 +- .../aspnetcore-3.1/.openapi-generator/VERSION | 2 +- .../aspnetcore-5.0/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../aspnetcore-6.0/.openapi-generator/VERSION | 2 +- .../aspnetcore/.openapi-generator/VERSION | 2 +- .../cpp-pistache/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../server/README.MD | 2 +- .../generated/3_0/.openapi-generator/VERSION | 2 +- .../generated/3_0/api/AnotherFakeApi.cpp | 2 +- .../generated/3_0/api/AnotherFakeApi.h | 2 +- .../generated/3_0/api/DefaultApi.cpp | 2 +- .../generated/3_0/api/DefaultApi.h | 2 +- .../cpp-restbed/generated/3_0/api/FakeApi.cpp | 2 +- .../cpp-restbed/generated/3_0/api/FakeApi.h | 2 +- .../3_0/api/FakeClassnameTags123Api.cpp | 2 +- .../3_0/api/FakeClassnameTags123Api.h | 2 +- .../cpp-restbed/generated/3_0/api/PetApi.cpp | 2 +- .../cpp-restbed/generated/3_0/api/PetApi.h | 2 +- .../generated/3_0/api/StoreApi.cpp | 2 +- .../cpp-restbed/generated/3_0/api/StoreApi.h | 2 +- .../cpp-restbed/generated/3_0/api/UserApi.cpp | 2 +- .../cpp-restbed/generated/3_0/api/UserApi.h | 2 +- .../3_0/model/AdditionalPropertiesClass.cpp | 2 +- .../3_0/model/AdditionalPropertiesClass.h | 2 +- .../3_0/model/AllOfWithSingleRef.cpp | 2 +- .../generated/3_0/model/AllOfWithSingleRef.h | 2 +- .../generated/3_0/model/Animal.cpp | 2 +- .../cpp-restbed/generated/3_0/model/Animal.h | 2 +- .../generated/3_0/model/ApiResponse.cpp | 2 +- .../generated/3_0/model/ApiResponse.h | 2 +- .../3_0/model/ArrayOfArrayOfNumberOnly.cpp | 2 +- .../3_0/model/ArrayOfArrayOfNumberOnly.h | 2 +- .../generated/3_0/model/ArrayOfNumberOnly.cpp | 2 +- .../generated/3_0/model/ArrayOfNumberOnly.h | 2 +- .../generated/3_0/model/ArrayTest.cpp | 2 +- .../generated/3_0/model/ArrayTest.h | 2 +- .../generated/3_0/model/Capitalization.cpp | 2 +- .../generated/3_0/model/Capitalization.h | 2 +- .../cpp-restbed/generated/3_0/model/Cat.cpp | 2 +- .../cpp-restbed/generated/3_0/model/Cat.h | 2 +- .../generated/3_0/model/Category.cpp | 2 +- .../generated/3_0/model/Category.h | 2 +- .../generated/3_0/model/ChildWithNullable.cpp | 2 +- .../generated/3_0/model/ChildWithNullable.h | 2 +- .../generated/3_0/model/ClassModel.cpp | 2 +- .../generated/3_0/model/ClassModel.h | 2 +- .../generated/3_0/model/Client.cpp | 2 +- .../cpp-restbed/generated/3_0/model/Client.h | 2 +- .../generated/3_0/model/DeprecatedObject.cpp | 2 +- .../generated/3_0/model/DeprecatedObject.h | 2 +- .../cpp-restbed/generated/3_0/model/Dog.cpp | 2 +- .../cpp-restbed/generated/3_0/model/Dog.h | 2 +- .../generated/3_0/model/EnumArrays.cpp | 2 +- .../generated/3_0/model/EnumArrays.h | 2 +- .../generated/3_0/model/EnumClass.cpp | 2 +- .../generated/3_0/model/EnumClass.h | 2 +- .../generated/3_0/model/Enum_Test.cpp | 2 +- .../generated/3_0/model/Enum_Test.h | 2 +- .../model/FakeBigDecimalMap_200_response.cpp | 2 +- .../model/FakeBigDecimalMap_200_response.h | 2 +- .../cpp-restbed/generated/3_0/model/File.cpp | 2 +- .../cpp-restbed/generated/3_0/model/File.h | 2 +- .../3_0/model/FileSchemaTestClass.cpp | 2 +- .../generated/3_0/model/FileSchemaTestClass.h | 2 +- .../cpp-restbed/generated/3_0/model/Foo.cpp | 2 +- .../cpp-restbed/generated/3_0/model/Foo.h | 2 +- .../generated/3_0/model/Format_test.cpp | 2 +- .../generated/3_0/model/Format_test.h | 2 +- .../generated/3_0/model/HasOnlyReadOnly.cpp | 2 +- .../generated/3_0/model/HasOnlyReadOnly.h | 2 +- .../generated/3_0/model/HealthCheckResult.cpp | 2 +- .../generated/3_0/model/HealthCheckResult.h | 2 +- .../cpp-restbed/generated/3_0/model/List.cpp | 2 +- .../cpp-restbed/generated/3_0/model/List.h | 2 +- .../generated/3_0/model/MapTest.cpp | 2 +- .../cpp-restbed/generated/3_0/model/MapTest.h | 2 +- ...PropertiesAndAdditionalPropertiesClass.cpp | 2 +- ...edPropertiesAndAdditionalPropertiesClass.h | 2 +- .../cpp-restbed/generated/3_0/model/Name.cpp | 2 +- .../cpp-restbed/generated/3_0/model/Name.h | 2 +- .../generated/3_0/model/NullableClass.cpp | 2 +- .../generated/3_0/model/NullableClass.h | 2 +- .../generated/3_0/model/NumberOnly.cpp | 2 +- .../generated/3_0/model/NumberOnly.h | 2 +- .../3_0/model/ObjectWithDeprecatedFields.cpp | 2 +- .../3_0/model/ObjectWithDeprecatedFields.h | 2 +- .../cpp-restbed/generated/3_0/model/Order.cpp | 2 +- .../cpp-restbed/generated/3_0/model/Order.h | 2 +- .../generated/3_0/model/OuterComposite.cpp | 2 +- .../generated/3_0/model/OuterComposite.h | 2 +- .../generated/3_0/model/OuterEnum.cpp | 2 +- .../generated/3_0/model/OuterEnum.h | 2 +- .../3_0/model/OuterEnumDefaultValue.cpp | 2 +- .../3_0/model/OuterEnumDefaultValue.h | 2 +- .../generated/3_0/model/OuterEnumInteger.cpp | 2 +- .../generated/3_0/model/OuterEnumInteger.h | 2 +- .../model/OuterEnumIntegerDefaultValue.cpp | 2 +- .../3_0/model/OuterEnumIntegerDefaultValue.h | 2 +- .../3_0/model/OuterObjectWithEnumProperty.cpp | 2 +- .../3_0/model/OuterObjectWithEnumProperty.h | 2 +- .../3_0/model/ParentWithNullable.cpp | 2 +- .../generated/3_0/model/ParentWithNullable.h | 2 +- .../cpp-restbed/generated/3_0/model/Pet.cpp | 2 +- .../cpp-restbed/generated/3_0/model/Pet.h | 2 +- .../generated/3_0/model/ReadOnlyFirst.cpp | 2 +- .../generated/3_0/model/ReadOnlyFirst.h | 2 +- .../generated/3_0/model/Return.cpp | 2 +- .../cpp-restbed/generated/3_0/model/Return.h | 2 +- .../generated/3_0/model/SingleRefType.cpp | 2 +- .../generated/3_0/model/SingleRefType.h | 2 +- .../cpp-restbed/generated/3_0/model/Tag.cpp | 2 +- .../cpp-restbed/generated/3_0/model/Tag.h | 2 +- ...neFreeformAdditionalProperties_request.cpp | 2 +- ...lineFreeformAdditionalProperties_request.h | 2 +- .../cpp-restbed/generated/3_0/model/User.cpp | 2 +- .../cpp-restbed/generated/3_0/model/User.h | 2 +- .../3_0/model/_foo_get_default_response.cpp | 2 +- .../3_0/model/_foo_get_default_response.h | 2 +- .../3_0/model/_special_model_name_.cpp | 2 +- .../3_0/model/_special_model_name_.h | 2 +- .../cpp-restbed/generated/3_0/model/helpers.h | 2 +- .../generated/3_0/model/r_200_response.cpp | 2 +- .../generated/3_0/model/r_200_response.h | 2 +- .../erlang-server/.openapi-generator/VERSION | 2 +- .../go-api-server/.openapi-generator/VERSION | 2 +- .../server/petstore/go-api-server/README.md | 2 +- .../server/petstore/go-api-server/go/api.go | 3 +- .../petstore/go-api-server/go/api_pet.go | 3 +- .../go-api-server/go/api_pet_service.go | 3 +- .../petstore/go-api-server/go/api_store.go | 3 +- .../go-api-server/go/api_store_service.go | 3 +- .../petstore/go-api-server/go/api_user.go | 3 +- .../go-api-server/go/api_user_service.go | 3 +- .../server/petstore/go-api-server/go/error.go | 3 +- .../petstore/go-api-server/go/helpers.go | 3 +- .../server/petstore/go-api-server/go/impl.go | 3 +- .../petstore/go-api-server/go/logger.go | 3 +- .../go-api-server/go/model_an_object.go | 3 +- .../go-api-server/go/model_api_response.go | 3 +- .../go-api-server/go/model_category.go | 3 +- .../petstore/go-api-server/go/model_colour.go | 3 +- .../petstore/go-api-server/go/model_gender.go | 3 +- .../petstore/go-api-server/go/model_order.go | 3 +- .../go-api-server/go/model_order_info.go | 3 +- .../petstore/go-api-server/go/model_pet.go | 3 +- .../go-api-server/go/model_special_info.go | 3 +- .../go-api-server/go/model_species.go | 3 +- .../petstore/go-api-server/go/model_tag.go | 3 +- .../petstore/go-api-server/go/model_user.go | 3 +- .../petstore/go-api-server/go/routers.go | 3 +- samples/server/petstore/go-api-server/main.go | 3 +- .../go-chi-server/.openapi-generator/VERSION | 2 +- .../server/petstore/go-chi-server/README.md | 2 +- .../server/petstore/go-chi-server/go/api.go | 3 +- .../petstore/go-chi-server/go/api_pet.go | 3 +- .../go-chi-server/go/api_pet_service.go | 3 +- .../petstore/go-chi-server/go/api_store.go | 3 +- .../go-chi-server/go/api_store_service.go | 3 +- .../petstore/go-chi-server/go/api_user.go | 3 +- .../go-chi-server/go/api_user_service.go | 3 +- .../server/petstore/go-chi-server/go/error.go | 3 +- .../petstore/go-chi-server/go/helpers.go | 3 +- .../server/petstore/go-chi-server/go/impl.go | 3 +- .../petstore/go-chi-server/go/logger.go | 3 +- .../go-chi-server/go/model_an_object.go | 3 +- .../go-chi-server/go/model_api_response.go | 3 +- .../go-chi-server/go/model_category.go | 3 +- .../petstore/go-chi-server/go/model_colour.go | 3 +- .../petstore/go-chi-server/go/model_gender.go | 3 +- .../petstore/go-chi-server/go/model_order.go | 3 +- .../go-chi-server/go/model_order_info.go | 3 +- .../petstore/go-chi-server/go/model_pet.go | 3 +- .../go-chi-server/go/model_special_info.go | 3 +- .../go-chi-server/go/model_species.go | 3 +- .../petstore/go-chi-server/go/model_tag.go | 3 +- .../petstore/go-chi-server/go/model_user.go | 3 +- .../petstore/go-chi-server/go/routers.go | 3 +- samples/server/petstore/go-chi-server/main.go | 3 +- .../go-echo-server/.openapi-generator/VERSION | 2 +- .../server/petstore/go-echo-server/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../go-gin-api-server-interface-only/go.mod | 2 +- .../go/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../server/petstore/go-gin-api-server/go.mod | 2 +- .../petstore/go-gin-api-server/go/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../haskell-yesod/.openapi-generator/VERSION | 2 +- .../java-camel/.openapi-generator/VERSION | 2 +- samples/server/petstore/java-camel/pom.xml | 2 +- .../org/openapitools/RestConfiguration.java | 2 +- .../ValidationErrorProcessor.java | 2 +- .../java/org/openapitools/api/PetApi.java | 2 +- .../openapitools/api/PetApiRoutesImpl.java | 2 +- .../org/openapitools/api/PetApiValidator.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../openapitools/api/StoreApiRoutesImpl.java | 2 +- .../openapitools/api/StoreApiValidator.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../openapitools/api/UserApiRoutesImpl.java | 2 +- .../openapitools/api/UserApiValidator.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../src/main/resources/application.properties | 2 +- .../mp/.openapi-generator/VERSION | 2 +- .../server/JavaTimeFormatter.java | 2 +- .../server/api/AnotherFakeService.java | 2 +- .../server/api/AnotherFakeServiceImpl.java | 2 +- .../server/api/DefaultService.java | 2 +- .../server/api/DefaultServiceImpl.java | 2 +- .../api/FakeClassnameTags123Service.java | 2 +- .../api/FakeClassnameTags123ServiceImpl.java | 2 +- .../openapitools/server/api/FakeService.java | 2 +- .../server/api/FakeServiceImpl.java | 2 +- .../openapitools/server/api/PetService.java | 2 +- .../server/api/PetServiceImpl.java | 2 +- .../openapitools/server/api/StoreService.java | 2 +- .../server/api/StoreServiceImpl.java | 2 +- .../openapitools/server/api/UserService.java | 2 +- .../server/api/UserServiceImpl.java | 2 +- .../se/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../controller/PetController.java | 2 +- .../controller/StoreController.java | 2 +- .../controller/UserController.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java-msf4j/.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../api/AnotherFakeApiService.java | 2 +- .../org/openapitools/api/ApiException.java | 2 +- .../org/openapitools/api/ApiOriginFilter.java | 2 +- .../openapitools/api/ApiResponseMessage.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../org/openapitools/api/FakeApiService.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../api/FakeClassnameTestApiService.java | 2 +- .../openapitools/api/NotFoundException.java | 2 +- .../gen/java/org/openapitools/api/PetApi.java | 2 +- .../org/openapitools/api/PetApiService.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../org/openapitools/api/StoreApiService.java | 2 +- .../java/org/openapitools/api/StringUtil.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../org/openapitools/api/UserApiService.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../java/org/openapitools/model/BigCat.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../gen/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../gen/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelFile.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../gen/java/org/openapitools/model/Name.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../gen/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../gen/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../gen/java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../api/impl/AnotherFakeApiServiceImpl.java | 2 +- .../api/impl/FakeApiServiceImpl.java | 2 +- .../impl/FakeClassnameTestApiServiceImpl.java | 2 +- .../api/impl/PetApiServiceImpl.java | 2 +- .../api/impl/StoreApiServiceImpl.java | 2 +- .../api/impl/UserApiServiceImpl.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../app/apimodels/Category.java | 2 +- .../app/apimodels/ModelApiResponse.java | 2 +- .../app/apimodels/Order.java | 2 +- .../app/apimodels/Pet.java | 2 +- .../app/apimodels/Tag.java | 2 +- .../app/apimodels/User.java | 2 +- .../puppies/store/apis/PetApiController.java | 2 +- .../store/apis/PetApiControllerImp.java | 2 +- .../store/apis/StoreApiController.java | 2 +- .../store/apis/StoreApiControllerImp.java | 2 +- .../puppies/store/apis/UserApiController.java | 2 +- .../store/apis/UserApiControllerImp.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../app/apimodels/Category.java | 2 +- .../app/apimodels/ModelApiResponse.java | 2 +- .../app/apimodels/Order.java | 2 +- .../app/apimodels/Pet.java | 2 +- .../app/apimodels/Tag.java | 2 +- .../app/apimodels/User.java | 2 +- .../app/controllers/PetApiController.java | 2 +- .../app/controllers/PetApiControllerImp.java | 2 +- .../app/controllers/StoreApiController.java | 2 +- .../controllers/StoreApiControllerImp.java | 2 +- .../app/controllers/UserApiController.java | 2 +- .../app/controllers/UserApiControllerImp.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../app/apimodels/Category.java | 2 +- .../app/apimodels/ModelApiResponse.java | 2 +- .../app/apimodels/Order.java | 2 +- .../app/apimodels/Pet.java | 2 +- .../app/apimodels/Tag.java | 2 +- .../app/apimodels/User.java | 2 +- .../app/controllers/PetApiController.java | 2 +- .../app/controllers/StoreApiController.java | 2 +- .../app/controllers/UserApiController.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../app/apimodels/Category.java | 2 +- .../app/apimodels/ModelApiResponse.java | 2 +- .../app/apimodels/Order.java | 2 +- .../app/apimodels/Pet.java | 2 +- .../app/apimodels/Tag.java | 2 +- .../app/apimodels/User.java | 2 +- .../app/controllers/PetApiController.java | 2 +- .../app/controllers/PetApiControllerImp.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../AdditionalPropertiesAnyType.java | 2 +- .../apimodels/AdditionalPropertiesArray.java | 2 +- .../AdditionalPropertiesBoolean.java | 2 +- .../apimodels/AdditionalPropertiesClass.java | 2 +- .../AdditionalPropertiesInteger.java | 2 +- .../apimodels/AdditionalPropertiesNumber.java | 2 +- .../apimodels/AdditionalPropertiesObject.java | 2 +- .../apimodels/AdditionalPropertiesString.java | 2 +- .../app/apimodels/Animal.java | 2 +- .../apimodels/ArrayOfArrayOfNumberOnly.java | 2 +- .../app/apimodels/ArrayOfNumberOnly.java | 2 +- .../app/apimodels/ArrayTest.java | 2 +- .../app/apimodels/BigCat.java | 2 +- .../app/apimodels/Capitalization.java | 2 +- .../app/apimodels/Cat.java | 2 +- .../app/apimodels/Category.java | 2 +- .../app/apimodels/ClassModel.java | 2 +- .../app/apimodels/Client.java | 2 +- .../app/apimodels/Dog.java | 2 +- .../app/apimodels/EnumArrays.java | 2 +- .../app/apimodels/EnumTest.java | 2 +- .../app/apimodels/FileSchemaTestClass.java | 2 +- .../app/apimodels/FormatTest.java | 2 +- .../app/apimodels/HasOnlyReadOnly.java | 2 +- .../app/apimodels/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../app/apimodels/Model200Response.java | 2 +- .../app/apimodels/ModelApiResponse.java | 2 +- .../app/apimodels/ModelFile.java | 2 +- .../app/apimodels/ModelList.java | 2 +- .../app/apimodels/ModelReturn.java | 2 +- .../app/apimodels/Name.java | 2 +- .../app/apimodels/NumberOnly.java | 2 +- .../app/apimodels/Order.java | 2 +- .../app/apimodels/OuterComposite.java | 2 +- .../app/apimodels/Pet.java | 2 +- .../app/apimodels/ReadOnlyFirst.java | 2 +- .../app/apimodels/SpecialModelName.java | 2 +- .../app/apimodels/Tag.java | 2 +- .../app/apimodels/TypeHolderDefault.java | 2 +- .../app/apimodels/TypeHolderExample.java | 2 +- .../app/apimodels/User.java | 2 +- .../app/apimodels/XmlItem.java | 2 +- .../controllers/AnotherFakeApiController.java | 2 +- .../AnotherFakeApiControllerImp.java | 2 +- .../app/controllers/FakeApiController.java | 2 +- .../app/controllers/FakeApiControllerImp.java | 2 +- .../FakeClassnameTags123ApiController.java | 2 +- .../FakeClassnameTags123ApiControllerImp.java | 2 +- .../app/controllers/PetApiController.java | 2 +- .../app/controllers/PetApiControllerImp.java | 2 +- .../app/controllers/StoreApiController.java | 2 +- .../controllers/StoreApiControllerImp.java | 2 +- .../app/controllers/UserApiController.java | 2 +- .../app/controllers/UserApiControllerImp.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../app/apimodels/Category.java | 2 +- .../app/apimodels/ModelApiResponse.java | 2 +- .../app/apimodels/Order.java | 2 +- .../app/apimodels/Pet.java | 2 +- .../app/apimodels/Tag.java | 2 +- .../app/apimodels/User.java | 2 +- .../app/controllers/PetApiController.java | 2 +- .../app/controllers/PetApiControllerImp.java | 2 +- .../app/controllers/StoreApiController.java | 2 +- .../controllers/StoreApiControllerImp.java | 2 +- .../app/controllers/UserApiController.java | 2 +- .../app/controllers/UserApiControllerImp.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../app/apimodels/Category.java | 2 +- .../app/apimodels/ModelApiResponse.java | 2 +- .../app/apimodels/Order.java | 2 +- .../app/apimodels/Pet.java | 2 +- .../app/apimodels/Tag.java | 2 +- .../app/apimodels/User.java | 2 +- .../app/controllers/PetApiController.java | 2 +- .../app/controllers/PetApiControllerImp.java | 2 +- .../app/controllers/StoreApiController.java | 2 +- .../controllers/StoreApiControllerImp.java | 2 +- .../app/controllers/UserApiController.java | 2 +- .../app/controllers/UserApiControllerImp.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../app/apimodels/Category.java | 2 +- .../app/apimodels/ModelApiResponse.java | 2 +- .../app/apimodels/Order.java | 2 +- .../app/apimodels/Pet.java | 2 +- .../app/apimodels/Tag.java | 2 +- .../app/apimodels/User.java | 2 +- .../app/controllers/PetApiController.java | 2 +- .../app/controllers/PetApiControllerImp.java | 2 +- .../app/controllers/StoreApiController.java | 2 +- .../controllers/StoreApiControllerImp.java | 2 +- .../app/controllers/UserApiController.java | 2 +- .../app/controllers/UserApiControllerImp.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../app/apimodels/Category.java | 2 +- .../app/apimodels/ModelApiResponse.java | 2 +- .../app/apimodels/Order.java | 2 +- .../app/apimodels/Pet.java | 2 +- .../app/apimodels/Tag.java | 2 +- .../app/apimodels/User.java | 2 +- .../app/controllers/PetApiController.java | 2 +- .../app/controllers/PetApiControllerImp.java | 2 +- .../app/controllers/StoreApiController.java | 2 +- .../controllers/StoreApiControllerImp.java | 2 +- .../app/controllers/UserApiController.java | 2 +- .../app/controllers/UserApiControllerImp.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../app/apimodels/Category.java | 2 +- .../app/apimodels/ModelApiResponse.java | 2 +- .../app/apimodels/Order.java | 2 +- .../app/apimodels/Pet.java | 2 +- .../app/apimodels/Tag.java | 2 +- .../app/apimodels/User.java | 2 +- .../app/controllers/PetApiController.java | 2 +- .../app/controllers/PetApiControllerImp.java | 2 +- .../app/controllers/StoreApiController.java | 2 +- .../controllers/StoreApiControllerImp.java | 2 +- .../app/controllers/UserApiController.java | 2 +- .../app/controllers/UserApiControllerImp.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../app/apimodels/Category.java | 2 +- .../app/apimodels/ModelApiResponse.java | 2 +- .../app/apimodels/Order.java | 2 +- .../app/apimodels/Pet.java | 2 +- .../app/apimodels/Tag.java | 2 +- .../app/apimodels/User.java | 2 +- .../app/controllers/PetApiController.java | 2 +- .../app/controllers/PetApiControllerImp.java | 2 +- .../app/controllers/StoreApiController.java | 2 +- .../controllers/StoreApiControllerImp.java | 2 +- .../app/controllers/UserApiController.java | 2 +- .../app/controllers/UserApiControllerImp.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../app/apimodels/Category.java | 2 +- .../app/apimodels/ModelApiResponse.java | 2 +- .../app/apimodels/Order.java | 2 +- .../app/apimodels/Pet.java | 2 +- .../app/apimodels/Tag.java | 2 +- .../app/apimodels/User.java | 2 +- .../app/controllers/PetApiController.java | 2 +- .../app/controllers/PetApiControllerImp.java | 2 +- .../app/controllers/StoreApiController.java | 2 +- .../controllers/StoreApiControllerImp.java | 2 +- .../app/controllers/UserApiController.java | 2 +- .../app/controllers/UserApiControllerImp.java | 2 +- .../java-undertow/.openapi-generator/VERSION | 2 +- samples/server/petstore/java-undertow/pom.xml | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java-vertx-web/.openapi-generator/VERSION | 2 +- .../server/petstore/java-vertx-web/README.md | 2 +- .../java-wiremock/.openapi-generator/VERSION | 2 +- .../api/AnotherFakeApiMockServer.java | 2 +- .../mockserver/api/DefaultApiMockServer.java | 2 +- .../mockserver/api/FakeApiMockServer.java | 2 +- .../FakeClassnameTags123ApiMockServer.java | 2 +- .../mockserver/api/PetApiMockServer.java | 2 +- .../mockserver/api/StoreApiMockServer.java | 2 +- .../mockserver/api/UserApiMockServer.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../jaxrs-cxf-cdi/.openapi-generator/VERSION | 2 +- .../gen/java/org/openapitools/api/PetApi.java | 2 +- .../org/openapitools/api/PetApiService.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../org/openapitools/api/StoreApiService.java | 2 +- .../java/org/openapitools/api/TestApi.java | 2 +- .../org/openapitools/api/TestApiService.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../org/openapitools/api/UserApiService.java | 2 +- .../api/impl/PetApiServiceImpl.java | 2 +- .../api/impl/StoreApiServiceImpl.java | 2 +- .../api/impl/TestApiServiceImpl.java | 2 +- .../api/impl/UserApiServiceImpl.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../jaxrs-cxf/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../api/AnotherFakeApiService.java | 2 +- .../org/openapitools/api/ApiException.java | 2 +- .../org/openapitools/api/ApiOriginFilter.java | 2 +- .../openapitools/api/ApiResponseMessage.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../org/openapitools/api/FakeApiService.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../api/FakeClassnameTestApiService.java | 2 +- .../openapitools/api/NotFoundException.java | 2 +- .../gen/java/org/openapitools/api/PetApi.java | 2 +- .../org/openapitools/api/PetApiService.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../org/openapitools/api/StoreApiService.java | 2 +- .../java/org/openapitools/api/StringUtil.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../org/openapitools/api/UserApiService.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../java/org/openapitools/model/BigCat.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../gen/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../gen/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelFile.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../gen/java/org/openapitools/model/Name.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../gen/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../gen/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../gen/java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../AnotherFakeApiServiceFactory.java | 2 +- .../api/factories/FakeApiServiceFactory.java | 2 +- .../FakeClassnameTestApiServiceFactory.java | 2 +- .../api/factories/PetApiServiceFactory.java | 2 +- .../api/factories/StoreApiServiceFactory.java | 2 +- .../api/factories/UserApiServiceFactory.java | 2 +- .../api/impl/AnotherFakeApiServiceImpl.java | 2 +- .../api/impl/FakeApiServiceImpl.java | 2 +- .../impl/FakeClassnameTestApiServiceImpl.java | 2 +- .../api/impl/PetApiServiceImpl.java | 2 +- .../api/impl/StoreApiServiceImpl.java | 2 +- .../api/impl/UserApiServiceImpl.java | 2 +- .../jaxrs-jersey/.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../api/AnotherFakeApiService.java | 2 +- .../org/openapitools/api/ApiException.java | 2 +- .../org/openapitools/api/ApiOriginFilter.java | 2 +- .../openapitools/api/ApiResponseMessage.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../org/openapitools/api/FakeApiService.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../api/FakeClassnameTestApiService.java | 2 +- .../gen/java/org/openapitools/api/FooApi.java | 2 +- .../org/openapitools/api/FooApiService.java | 2 +- .../openapitools/api/NotFoundException.java | 2 +- .../gen/java/org/openapitools/api/PetApi.java | 2 +- .../org/openapitools/api/PetApiService.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../org/openapitools/api/StoreApiService.java | 2 +- .../java/org/openapitools/api/StringUtil.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../org/openapitools/api/UserApiService.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AllOfWithSingleRef.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../gen/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ChildWithNullable.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../openapitools/model/DeprecatedObject.java | 2 +- .../gen/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../model/FakeBigDecimalMap200Response.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../gen/java/org/openapitools/model/Foo.java | 2 +- .../model/FooGetDefaultResponse.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../openapitools/model/HealthCheckResult.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelFile.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../gen/java/org/openapitools/model/Name.java | 2 +- .../org/openapitools/model/NullableClass.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../model/ObjectWithDeprecatedFields.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../model/OuterObjectWithEnumProperty.java | 2 +- .../model/ParentWithNullable.java | 2 +- .../gen/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../gen/java/org/openapitools/model/Tag.java | 2 +- ...neFreeformAdditionalPropertiesRequest.java | 2 +- .../gen/java/org/openapitools/model/User.java | 2 +- .../AnotherFakeApiServiceFactory.java | 2 +- .../api/factories/FakeApiServiceFactory.java | 2 +- .../FakeClassnameTestApiServiceFactory.java | 2 +- .../api/factories/FooApiServiceFactory.java | 2 +- .../api/factories/PetApiServiceFactory.java | 2 +- .../api/factories/StoreApiServiceFactory.java | 2 +- .../api/factories/UserApiServiceFactory.java | 2 +- .../api/impl/AnotherFakeApiServiceImpl.java | 2 +- .../api/impl/FakeApiServiceImpl.java | 2 +- .../impl/FakeClassnameTestApiServiceImpl.java | 2 +- .../api/impl/FooApiServiceImpl.java | 2 +- .../api/impl/PetApiServiceImpl.java | 2 +- .../api/impl/StoreApiServiceImpl.java | 2 +- .../api/impl/UserApiServiceImpl.java | 2 +- .../default/.openapi-generator/VERSION | 2 +- .../org/openapitools/api/ApiException.java | 2 +- .../org/openapitools/api/ApiOriginFilter.java | 2 +- .../openapitools/api/ApiResponseMessage.java | 2 +- .../openapitools/api/NotFoundException.java | 2 +- .../gen/java/org/openapitools/api/PetApi.java | 2 +- .../org/openapitools/api/PetApiService.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../org/openapitools/api/StoreApiService.java | 2 +- .../java/org/openapitools/api/StringUtil.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../org/openapitools/api/UserApiService.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../gen/java/org/openapitools/model/Pet.java | 2 +- .../gen/java/org/openapitools/model/Tag.java | 2 +- .../gen/java/org/openapitools/model/User.java | 2 +- .../api/impl/PetApiServiceImpl.java | 2 +- .../api/impl/StoreApiServiceImpl.java | 2 +- .../api/impl/UserApiServiceImpl.java | 2 +- .../eap-java8/.openapi-generator/VERSION | 2 +- .../gen/java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../gen/java/org/openapitools/model/Pet.java | 2 +- .../gen/java/org/openapitools/model/Tag.java | 2 +- .../gen/java/org/openapitools/model/User.java | 2 +- .../api/impl/PetApiServiceImpl.java | 2 +- .../api/impl/StoreApiServiceImpl.java | 2 +- .../api/impl/UserApiServiceImpl.java | 2 +- .../eap-joda/.openapi-generator/VERSION | 2 +- .../gen/java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../gen/java/org/openapitools/model/Pet.java | 2 +- .../gen/java/org/openapitools/model/Tag.java | 2 +- .../gen/java/org/openapitools/model/User.java | 2 +- .../api/impl/PetApiServiceImpl.java | 2 +- .../api/impl/StoreApiServiceImpl.java | 2 +- .../api/impl/UserApiServiceImpl.java | 2 +- .../eap/.openapi-generator/VERSION | 2 +- .../gen/java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../gen/java/org/openapitools/model/Pet.java | 2 +- .../gen/java/org/openapitools/model/Tag.java | 2 +- .../gen/java/org/openapitools/model/User.java | 2 +- .../api/impl/PetApiServiceImpl.java | 2 +- .../api/impl/StoreApiServiceImpl.java | 2 +- .../api/impl/UserApiServiceImpl.java | 2 +- .../java8/.openapi-generator/VERSION | 2 +- .../org/openapitools/api/ApiException.java | 2 +- .../org/openapitools/api/ApiOriginFilter.java | 2 +- .../openapitools/api/ApiResponseMessage.java | 2 +- .../openapitools/api/NotFoundException.java | 2 +- .../gen/java/org/openapitools/api/PetApi.java | 2 +- .../org/openapitools/api/PetApiService.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../org/openapitools/api/StoreApiService.java | 2 +- .../java/org/openapitools/api/StringUtil.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../org/openapitools/api/UserApiService.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../gen/java/org/openapitools/model/Pet.java | 2 +- .../gen/java/org/openapitools/model/Tag.java | 2 +- .../gen/java/org/openapitools/model/User.java | 2 +- .../api/impl/PetApiServiceImpl.java | 2 +- .../api/impl/StoreApiServiceImpl.java | 2 +- .../api/impl/UserApiServiceImpl.java | 2 +- .../joda/.openapi-generator/VERSION | 2 +- .../org/openapitools/api/ApiException.java | 2 +- .../org/openapitools/api/ApiOriginFilter.java | 2 +- .../openapitools/api/ApiResponseMessage.java | 2 +- .../openapitools/api/NotFoundException.java | 2 +- .../gen/java/org/openapitools/api/PetApi.java | 2 +- .../org/openapitools/api/PetApiService.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../org/openapitools/api/StoreApiService.java | 2 +- .../java/org/openapitools/api/StringUtil.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../org/openapitools/api/UserApiService.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../gen/java/org/openapitools/model/Pet.java | 2 +- .../gen/java/org/openapitools/model/Tag.java | 2 +- .../gen/java/org/openapitools/model/User.java | 2 +- .../api/impl/PetApiServiceImpl.java | 2 +- .../api/impl/StoreApiServiceImpl.java | 2 +- .../api/impl/UserApiServiceImpl.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../gen/java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 4 +- .../model/AdditionalPropertiesArray.java | 4 +- .../model/AdditionalPropertiesBoolean.java | 4 +- .../model/AdditionalPropertiesClass.java | 18 +- .../model/AdditionalPropertiesInteger.java | 4 +- .../model/AdditionalPropertiesNumber.java | 4 +- .../model/AdditionalPropertiesObject.java | 4 +- .../model/AdditionalPropertiesString.java | 4 +- .../java/org/openapitools/model/Animal.java | 9 +- .../model/ArrayOfArrayOfNumberOnly.java | 4 +- .../openapitools/model/ArrayOfNumberOnly.java | 4 +- .../org/openapitools/model/ArrayTest.java | 6 +- .../java/org/openapitools/model/BigCat.java | 4 +- .../openapitools/model/Capitalization.java | 14 +- .../gen/java/org/openapitools/model/Cat.java | 4 +- .../java/org/openapitools/model/Category.java | 9 +- .../org/openapitools/model/ClassModel.java | 4 +- .../java/org/openapitools/model/Client.java | 4 +- .../gen/java/org/openapitools/model/Dog.java | 4 +- .../org/openapitools/model/EnumArrays.java | 4 +- .../java/org/openapitools/model/EnumTest.java | 17 +- .../model/FileSchemaTestClass.java | 8 +- .../org/openapitools/model/FormatTest.java | 60 +- .../openapitools/model/HasOnlyReadOnly.java | 6 +- .../java/org/openapitools/model/MapTest.java | 4 +- ...ropertiesAndAdditionalPropertiesClass.java | 12 +- .../openapitools/model/Model200Response.java | 6 +- .../openapitools/model/ModelApiResponse.java | 8 +- .../org/openapitools/model/ModelFile.java | 4 +- .../org/openapitools/model/ModelList.java | 4 +- .../org/openapitools/model/ModelReturn.java | 4 +- .../gen/java/org/openapitools/model/Name.java | 13 +- .../org/openapitools/model/NumberOnly.java | 6 +- .../java/org/openapitools/model/Order.java | 16 +- .../openapitools/model/OuterComposite.java | 10 +- .../gen/java/org/openapitools/model/Pet.java | 20 +- .../org/openapitools/model/ReadOnlyFirst.java | 6 +- .../openapitools/model/SpecialModelName.java | 4 +- .../gen/java/org/openapitools/model/Tag.java | 6 +- .../openapitools/model/TypeHolderDefault.java | 25 +- .../openapitools/model/TypeHolderExample.java | 30 +- .../gen/java/org/openapitools/model/User.java | 18 +- .../java/org/openapitools/model/XmlItem.java | 52 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../gen/java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 4 +- .../model/AdditionalPropertiesArray.java | 4 +- .../model/AdditionalPropertiesBoolean.java | 4 +- .../model/AdditionalPropertiesClass.java | 18 +- .../model/AdditionalPropertiesInteger.java | 4 +- .../model/AdditionalPropertiesNumber.java | 4 +- .../model/AdditionalPropertiesObject.java | 4 +- .../model/AdditionalPropertiesString.java | 4 +- .../java/org/openapitools/model/Animal.java | 9 +- .../model/ArrayOfArrayOfNumberOnly.java | 4 +- .../openapitools/model/ArrayOfNumberOnly.java | 4 +- .../org/openapitools/model/ArrayTest.java | 6 +- .../java/org/openapitools/model/BigCat.java | 4 +- .../openapitools/model/Capitalization.java | 14 +- .../gen/java/org/openapitools/model/Cat.java | 4 +- .../java/org/openapitools/model/Category.java | 9 +- .../org/openapitools/model/ClassModel.java | 4 +- .../java/org/openapitools/model/Client.java | 4 +- .../gen/java/org/openapitools/model/Dog.java | 4 +- .../org/openapitools/model/EnumArrays.java | 4 +- .../java/org/openapitools/model/EnumTest.java | 17 +- .../model/FileSchemaTestClass.java | 8 +- .../org/openapitools/model/FormatTest.java | 60 +- .../openapitools/model/HasOnlyReadOnly.java | 6 +- .../java/org/openapitools/model/MapTest.java | 4 +- ...ropertiesAndAdditionalPropertiesClass.java | 12 +- .../openapitools/model/Model200Response.java | 6 +- .../openapitools/model/ModelApiResponse.java | 8 +- .../org/openapitools/model/ModelFile.java | 4 +- .../org/openapitools/model/ModelList.java | 4 +- .../org/openapitools/model/ModelReturn.java | 4 +- .../gen/java/org/openapitools/model/Name.java | 13 +- .../org/openapitools/model/NumberOnly.java | 6 +- .../java/org/openapitools/model/Order.java | 16 +- .../openapitools/model/OuterComposite.java | 10 +- .../gen/java/org/openapitools/model/Pet.java | 20 +- .../org/openapitools/model/ReadOnlyFirst.java | 6 +- .../openapitools/model/SpecialModelName.java | 4 +- .../gen/java/org/openapitools/model/Tag.java | 6 +- .../openapitools/model/TypeHolderDefault.java | 25 +- .../openapitools/model/TypeHolderExample.java | 30 +- .../gen/java/org/openapitools/model/User.java | 18 +- .../java/org/openapitools/model/XmlItem.java | 52 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../gen/java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 4 +- .../model/AdditionalPropertiesArray.java | 4 +- .../model/AdditionalPropertiesBoolean.java | 4 +- .../model/AdditionalPropertiesClass.java | 18 +- .../model/AdditionalPropertiesInteger.java | 4 +- .../model/AdditionalPropertiesNumber.java | 4 +- .../model/AdditionalPropertiesObject.java | 4 +- .../model/AdditionalPropertiesString.java | 4 +- .../java/org/openapitools/model/Animal.java | 9 +- .../model/ArrayOfArrayOfNumberOnly.java | 4 +- .../openapitools/model/ArrayOfNumberOnly.java | 4 +- .../org/openapitools/model/ArrayTest.java | 6 +- .../java/org/openapitools/model/BigCat.java | 4 +- .../openapitools/model/Capitalization.java | 14 +- .../gen/java/org/openapitools/model/Cat.java | 4 +- .../java/org/openapitools/model/Category.java | 9 +- .../org/openapitools/model/ClassModel.java | 4 +- .../java/org/openapitools/model/Client.java | 4 +- .../gen/java/org/openapitools/model/Dog.java | 4 +- .../org/openapitools/model/EnumArrays.java | 4 +- .../java/org/openapitools/model/EnumTest.java | 17 +- .../model/FileSchemaTestClass.java | 8 +- .../org/openapitools/model/FormatTest.java | 60 +- .../openapitools/model/HasOnlyReadOnly.java | 6 +- .../java/org/openapitools/model/MapTest.java | 4 +- ...ropertiesAndAdditionalPropertiesClass.java | 12 +- .../openapitools/model/Model200Response.java | 6 +- .../openapitools/model/ModelApiResponse.java | 8 +- .../org/openapitools/model/ModelFile.java | 4 +- .../org/openapitools/model/ModelList.java | 4 +- .../org/openapitools/model/ModelReturn.java | 4 +- .../gen/java/org/openapitools/model/Name.java | 13 +- .../org/openapitools/model/NumberOnly.java | 6 +- .../java/org/openapitools/model/Order.java | 16 +- .../openapitools/model/OuterComposite.java | 10 +- .../gen/java/org/openapitools/model/Pet.java | 20 +- .../org/openapitools/model/ReadOnlyFirst.java | 6 +- .../openapitools/model/SpecialModelName.java | 4 +- .../gen/java/org/openapitools/model/Tag.java | 6 +- .../openapitools/model/TypeHolderDefault.java | 25 +- .../openapitools/model/TypeHolderExample.java | 30 +- .../gen/java/org/openapitools/model/User.java | 18 +- .../java/org/openapitools/model/XmlItem.java | 52 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../gen/java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 4 +- .../model/AdditionalPropertiesArray.java | 4 +- .../model/AdditionalPropertiesBoolean.java | 4 +- .../model/AdditionalPropertiesClass.java | 18 +- .../model/AdditionalPropertiesInteger.java | 4 +- .../model/AdditionalPropertiesNumber.java | 4 +- .../model/AdditionalPropertiesObject.java | 4 +- .../model/AdditionalPropertiesString.java | 4 +- .../java/org/openapitools/model/Animal.java | 9 +- .../model/ArrayOfArrayOfNumberOnly.java | 4 +- .../openapitools/model/ArrayOfNumberOnly.java | 4 +- .../org/openapitools/model/ArrayTest.java | 6 +- .../java/org/openapitools/model/BigCat.java | 4 +- .../openapitools/model/Capitalization.java | 14 +- .../gen/java/org/openapitools/model/Cat.java | 4 +- .../java/org/openapitools/model/Category.java | 9 +- .../org/openapitools/model/ClassModel.java | 4 +- .../java/org/openapitools/model/Client.java | 4 +- .../gen/java/org/openapitools/model/Dog.java | 4 +- .../org/openapitools/model/EnumArrays.java | 4 +- .../java/org/openapitools/model/EnumTest.java | 17 +- .../model/FileSchemaTestClass.java | 8 +- .../org/openapitools/model/FormatTest.java | 60 +- .../openapitools/model/HasOnlyReadOnly.java | 6 +- .../java/org/openapitools/model/MapTest.java | 4 +- ...ropertiesAndAdditionalPropertiesClass.java | 12 +- .../openapitools/model/Model200Response.java | 6 +- .../openapitools/model/ModelApiResponse.java | 8 +- .../org/openapitools/model/ModelFile.java | 4 +- .../org/openapitools/model/ModelList.java | 4 +- .../org/openapitools/model/ModelReturn.java | 4 +- .../gen/java/org/openapitools/model/Name.java | 13 +- .../org/openapitools/model/NumberOnly.java | 6 +- .../java/org/openapitools/model/Order.java | 16 +- .../openapitools/model/OuterComposite.java | 10 +- .../gen/java/org/openapitools/model/Pet.java | 20 +- .../org/openapitools/model/ReadOnlyFirst.java | 6 +- .../openapitools/model/SpecialModelName.java | 4 +- .../gen/java/org/openapitools/model/Tag.java | 6 +- .../openapitools/model/TypeHolderDefault.java | 25 +- .../openapitools/model/TypeHolderExample.java | 30 +- .../gen/java/org/openapitools/model/User.java | 18 +- .../java/org/openapitools/model/XmlItem.java | 52 +- .../jaxrs-spec-quarkus-mutiny/.dockerignore | 4 + .../.openapi-generator-ignore | 23 + .../.openapi-generator/FILES | 66 + .../.openapi-generator/VERSION | 1 + .../jaxrs-spec-quarkus-mutiny/README.md | 33 + .../jaxrs-spec-quarkus-mutiny/pom.xml | 157 + .../org/openapitools/api/AnotherFakeApi.java | 80 + .../java/org/openapitools/api/FakeApi.java | 441 +++ .../api/FakeClassnameTestApi.java | 82 + .../gen/java/org/openapitools/api/FooApi.java | 79 + .../gen/java/org/openapitools/api/PetApi.java | 239 ++ .../org/openapitools/api/RestApplication.java | 17 + .../openapitools/api/RestResourceRoot.java | 5 + .../java/org/openapitools/api/StoreApi.java | 145 + .../java/org/openapitools/api/UserApi.java | 206 ++ .../model/AdditionalPropertiesAnyType.java | 84 + .../model/AdditionalPropertiesArray.java | 85 + .../model/AdditionalPropertiesBoolean.java | 84 + .../model/AdditionalPropertiesClass.java | 178 ++ .../model/AdditionalPropertiesInteger.java | 84 + .../model/AdditionalPropertiesNumber.java | 85 + .../model/AdditionalPropertiesObject.java | 84 + .../model/AdditionalPropertiesString.java | 84 + .../model/AllOfWithSingleRef.java | 145 + .../java/org/openapitools/model/Animal.java | 152 + .../model/ArrayOfArrayOfNumberOnly.java | 136 + .../openapitools/model/ArrayOfNumberOnly.java | 136 + .../org/openapitools/model/ArrayTest.java | 224 ++ .../java/org/openapitools/model/BigCat.java | 163 + .../openapitools/model/Capitalization.java | 257 ++ .../gen/java/org/openapitools/model/Cat.java | 116 + .../java/org/openapitools/model/Category.java | 144 + .../openapitools/model/ChildWithNullable.java | 117 + .../org/openapitools/model/ClassModel.java | 118 + .../java/org/openapitools/model/Client.java | 116 + .../openapitools/model/DeprecatedObject.java | 116 + .../gen/java/org/openapitools/model/Dog.java | 116 + .../org/openapitools/model/EnumArrays.java | 257 ++ .../org/openapitools/model/EnumClass.java | 59 + .../java/org/openapitools/model/EnumTest.java | 506 ++++ .../model/FakeBigDecimalMap200Response.java | 164 + .../model/FileSchemaTestClass.java | 164 + .../gen/java/org/openapitools/model/Foo.java | 116 + .../model/FooGetDefaultResponse.java | 118 + .../org/openapitools/model/FormatTest.java | 555 ++++ .../openapitools/model/HasOnlyReadOnly.java | 145 + .../openapitools/model/HealthCheckResult.java | 119 + .../java/org/openapitools/model/MapTest.java | 313 ++ ...ropertiesAndAdditionalPropertiesClass.java | 193 ++ .../openapitools/model/Model200Response.java | 147 + .../openapitools/model/ModelApiResponse.java | 173 ++ .../org/openapitools/model/ModelFile.java | 120 + .../org/openapitools/model/ModelList.java | 117 + .../org/openapitools/model/ModelReturn.java | 119 + .../gen/java/org/openapitools/model/Name.java | 202 ++ .../org/openapitools/model/NullableClass.java | 429 +++ .../org/openapitools/model/NumberOnly.java | 117 + .../model/ObjectWithDeprecatedFields.java | 221 ++ .../java/org/openapitools/model/Order.java | 305 ++ .../openapitools/model/OuterComposite.java | 173 ++ .../org/openapitools/model/OuterEnum.java | 59 + .../model/OuterEnumDefaultValue.java | 59 + .../openapitools/model/OuterEnumInteger.java | 59 + .../model/OuterEnumIntegerDefaultValue.java | 59 + .../model/OuterObjectWithEnumProperty.java | 117 + .../model/ParentWithNullable.java | 199 ++ .../gen/java/org/openapitools/model/Pet.java | 345 +++ .../org/openapitools/model/ReadOnlyFirst.java | 144 + .../org/openapitools/model/SingleRefType.java | 57 + .../openapitools/model/SpecialModelName.java | 117 + .../gen/java/org/openapitools/model/Tag.java | 144 + ...neFreeformAdditionalPropertiesRequest.java | 85 + .../openapitools/model/TypeHolderDefault.java | 248 ++ .../openapitools/model/TypeHolderExample.java | 276 ++ .../gen/java/org/openapitools/model/User.java | 313 ++ .../java/org/openapitools/model/XmlItem.java | 1048 +++++++ .../src/main/docker/Dockerfile.jvm | 34 + .../src/main/docker/Dockerfile.native | 22 + .../src/main/resources/META-INF/openapi.yaml | 2451 +++++++++++++++ .../src/main/resources/application.properties | 5 + .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../model/ReadonlyAndRequiredProperties.java | 13 +- .../jaxrs-spec/.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../gen/java/org/openapitools/api/PetApi.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 4 +- .../model/AdditionalPropertiesArray.java | 4 +- .../model/AdditionalPropertiesBoolean.java | 4 +- .../model/AdditionalPropertiesClass.java | 18 +- .../model/AdditionalPropertiesInteger.java | 4 +- .../model/AdditionalPropertiesNumber.java | 4 +- .../model/AdditionalPropertiesObject.java | 4 +- .../model/AdditionalPropertiesString.java | 4 +- .../java/org/openapitools/model/Animal.java | 9 +- .../model/ArrayOfArrayOfNumberOnly.java | 4 +- .../openapitools/model/ArrayOfNumberOnly.java | 4 +- .../org/openapitools/model/ArrayTest.java | 6 +- .../java/org/openapitools/model/BigCat.java | 4 +- .../openapitools/model/Capitalization.java | 14 +- .../gen/java/org/openapitools/model/Cat.java | 4 +- .../java/org/openapitools/model/Category.java | 9 +- .../org/openapitools/model/ClassModel.java | 4 +- .../java/org/openapitools/model/Client.java | 4 +- .../gen/java/org/openapitools/model/Dog.java | 4 +- .../org/openapitools/model/EnumArrays.java | 4 +- .../java/org/openapitools/model/EnumTest.java | 17 +- .../model/FileSchemaTestClass.java | 8 +- .../org/openapitools/model/FormatTest.java | 60 +- .../openapitools/model/HasOnlyReadOnly.java | 6 +- .../java/org/openapitools/model/MapTest.java | 4 +- ...ropertiesAndAdditionalPropertiesClass.java | 12 +- .../openapitools/model/Model200Response.java | 6 +- .../openapitools/model/ModelApiResponse.java | 8 +- .../org/openapitools/model/ModelFile.java | 4 +- .../org/openapitools/model/ModelList.java | 4 +- .../org/openapitools/model/ModelReturn.java | 4 +- .../gen/java/org/openapitools/model/Name.java | 13 +- .../org/openapitools/model/NumberOnly.java | 6 +- .../java/org/openapitools/model/Order.java | 16 +- .../openapitools/model/OuterComposite.java | 10 +- .../gen/java/org/openapitools/model/Pet.java | 20 +- .../org/openapitools/model/ReadOnlyFirst.java | 6 +- .../openapitools/model/SpecialModelName.java | 4 +- .../gen/java/org/openapitools/model/Tag.java | 6 +- .../openapitools/model/TypeHolderDefault.java | 25 +- .../openapitools/model/TypeHolderExample.java | 30 +- .../gen/java/org/openapitools/model/User.java | 18 +- .../java/org/openapitools/model/XmlItem.java | 52 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../api/AnotherFakeApiService.java | 2 +- .../org/openapitools/api/ApiException.java | 2 +- .../org/openapitools/api/ApiOriginFilter.java | 2 +- .../openapitools/api/ApiResponseMessage.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../org/openapitools/api/FakeApiService.java | 2 +- .../api/FakeClassnameTags123Api.java | 2 +- .../api/FakeClassnameTags123ApiService.java | 2 +- .../openapitools/api/NotFoundException.java | 2 +- .../gen/java/org/openapitools/api/PetApi.java | 2 +- .../org/openapitools/api/PetApiService.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../org/openapitools/api/StoreApiService.java | 2 +- .../java/org/openapitools/api/StringUtil.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../org/openapitools/api/UserApiService.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../java/org/openapitools/model/BigCat.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../gen/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../gen/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelFile.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../gen/java/org/openapitools/model/Name.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../gen/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../gen/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../gen/java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../AnotherFakeApiServiceFactory.java | 2 +- .../api/factories/FakeApiServiceFactory.java | 2 +- ...FakeClassnameTags123ApiServiceFactory.java | 2 +- .../api/factories/PetApiServiceFactory.java | 2 +- .../api/factories/StoreApiServiceFactory.java | 2 +- .../api/factories/UserApiServiceFactory.java | 2 +- .../api/impl/AnotherFakeApiServiceImpl.java | 2 +- .../api/impl/FakeApiServiceImpl.java | 2 +- .../FakeClassnameTags123ApiServiceImpl.java | 2 +- .../api/impl/PetApiServiceImpl.java | 2 +- .../api/impl/StoreApiServiceImpl.java | 2 +- .../api/impl/UserApiServiceImpl.java | 2 +- .../jaxrs/jersey2/.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../api/AnotherFakeApiService.java | 2 +- .../org/openapitools/api/ApiException.java | 2 +- .../org/openapitools/api/ApiOriginFilter.java | 2 +- .../openapitools/api/ApiResponseMessage.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../org/openapitools/api/FakeApiService.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../api/FakeClassnameTestApiService.java | 2 +- .../openapitools/api/NotFoundException.java | 2 +- .../gen/java/org/openapitools/api/PetApi.java | 2 +- .../org/openapitools/api/PetApiService.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../org/openapitools/api/StoreApiService.java | 2 +- .../java/org/openapitools/api/StringUtil.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../org/openapitools/api/UserApiService.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../java/org/openapitools/model/BigCat.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../gen/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../gen/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelFile.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../gen/java/org/openapitools/model/Name.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../gen/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../gen/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../gen/java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../AnotherFakeApiServiceFactory.java | 2 +- .../api/factories/FakeApiServiceFactory.java | 2 +- .../FakeClassnameTestApiServiceFactory.java | 2 +- .../api/factories/PetApiServiceFactory.java | 2 +- .../api/factories/StoreApiServiceFactory.java | 2 +- .../api/factories/UserApiServiceFactory.java | 2 +- .../api/impl/AnotherFakeApiServiceImpl.java | 2 +- .../api/impl/FakeApiServiceImpl.java | 2 +- .../impl/FakeClassnameTestApiServiceImpl.java | 2 +- .../api/impl/PetApiServiceImpl.java | 2 +- .../api/impl/StoreApiServiceImpl.java | 2 +- .../api/impl/UserApiServiceImpl.java | 2 +- .../jaxrs/jersey3/.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 2 +- .../api/AnotherFakeApiService.java | 2 +- .../org/openapitools/api/ApiException.java | 2 +- .../org/openapitools/api/ApiOriginFilter.java | 2 +- .../openapitools/api/ApiResponseMessage.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 2 +- .../org/openapitools/api/FakeApiService.java | 2 +- .../api/FakeClassnameTestApi.java | 2 +- .../api/FakeClassnameTestApiService.java | 2 +- .../gen/java/org/openapitools/api/FooApi.java | 2 +- .../org/openapitools/api/FooApiService.java | 2 +- .../openapitools/api/NotFoundException.java | 2 +- .../gen/java/org/openapitools/api/PetApi.java | 2 +- .../org/openapitools/api/PetApiService.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 2 +- .../org/openapitools/api/StoreApiService.java | 2 +- .../java/org/openapitools/api/StringUtil.java | 2 +- .../java/org/openapitools/api/UserApi.java | 2 +- .../org/openapitools/api/UserApiService.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AllOfWithSingleRef.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../gen/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ChildWithNullable.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../openapitools/model/DeprecatedObject.java | 2 +- .../gen/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../model/FakeBigDecimalMap200Response.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../gen/java/org/openapitools/model/Foo.java | 2 +- .../model/FooGetDefaultResponse.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../openapitools/model/HealthCheckResult.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelFile.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../gen/java/org/openapitools/model/Name.java | 2 +- .../org/openapitools/model/NullableClass.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../model/ObjectWithDeprecatedFields.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../model/OuterObjectWithEnumProperty.java | 2 +- .../model/ParentWithNullable.java | 2 +- .../gen/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../gen/java/org/openapitools/model/Tag.java | 2 +- ...neFreeformAdditionalPropertiesRequest.java | 2 +- .../gen/java/org/openapitools/model/User.java | 2 +- .../AnotherFakeApiServiceFactory.java | 2 +- .../api/factories/FakeApiServiceFactory.java | 2 +- .../FakeClassnameTestApiServiceFactory.java | 2 +- .../api/factories/FooApiServiceFactory.java | 2 +- .../api/factories/PetApiServiceFactory.java | 2 +- .../api/factories/StoreApiServiceFactory.java | 2 +- .../api/factories/UserApiServiceFactory.java | 2 +- .../api/impl/AnotherFakeApiServiceImpl.java | 2 +- .../api/impl/FakeApiServiceImpl.java | 2 +- .../impl/FakeClassnameTestApiServiceImpl.java | 2 +- .../api/impl/FooApiServiceImpl.java | 2 +- .../api/impl/PetApiServiceImpl.java | 2 +- .../api/impl/StoreApiServiceImpl.java | 2 +- .../api/impl/UserApiServiceImpl.java | 2 +- .../petstore/julia/.openapi-generator/VERSION | 2 +- samples/server/petstore/julia/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin-server-modelMutable/README.md | 2 +- .../javalin/.openapi-generator/VERSION | 2 +- .../petstore/kotlin-server/javalin/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/server/apis/PetApi.kt | 2 +- .../org/openapitools/server/apis/StoreApi.kt | 2 +- .../org/openapitools/server/apis/UserApi.kt | 2 +- .../jaxrs-spec/.openapi-generator/VERSION | 2 +- .../org/openapitools/server/apis/PetApi.kt | 2 +- .../org/openapitools/server/apis/StoreApi.kt | 2 +- .../org/openapitools/server/apis/UserApi.kt | 2 +- .../ktor/.openapi-generator/VERSION | 2 +- .../petstore/kotlin-server/ktor/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin/org/openapitools/api/PetApi.kt | 2 +- .../org/openapitools/api/PetApiController.kt | 2 +- .../org/openapitools/api/PetApiDelegate.kt | 2 +- .../kotlin/org/openapitools/api/StoreApi.kt | 2 +- .../openapitools/api/StoreApiController.kt | 2 +- .../org/openapitools/api/StoreApiDelegate.kt | 2 +- .../kotlin/org/openapitools/api/UserApi.kt | 2 +- .../org/openapitools/api/UserApiController.kt | 2 +- .../org/openapitools/api/UserApiDelegate.kt | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin/org/openapitools/api/FakeApi.kt | 2 +- .../openapitools/api/FakeClassnameTestApi.kt | 2 +- .../kotlin/org/openapitools/api/FooApi.kt | 2 +- .../kotlin/org/openapitools/api/PetApi.kt | 2 +- .../kotlin/org/openapitools/api/StoreApi.kt | 2 +- .../kotlin/org/openapitools/api/UserApi.kt | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin/org/openapitools/api/PetApi.kt | 2 +- .../kotlin/org/openapitools/api/StoreApi.kt | 2 +- .../kotlin/org/openapitools/api/UserApi.kt | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../openapitools/SpringFoxConfiguration.kt | 2 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../kotlin/vertx/.openapi-generator/VERSION | 2 +- samples/server/petstore/php-flight/.gitignore | 28 + .../php-flight/.openapi-generator-ignore | 23 + .../php-flight/.openapi-generator/FILES | 18 + .../php-flight/.openapi-generator/VERSION | 1 + .../php-flight/Api/AbstractPetApi.php | 171 ++ .../php-flight/Api/AbstractStoreApi.php | 94 + .../php-flight/Api/AbstractUserApi.php | 145 + .../petstore/php-flight/Model/ApiResponse.php | 94 + .../petstore/php-flight/Model/Category.php | 83 + .../FindPetsByStatusStatusParameterInner.php | 41 + .../petstore/php-flight/Model/Order.php | 130 + .../petstore/php-flight/Model/OrderStatus.php | 43 + .../server/petstore/php-flight/Model/Pet.php | 136 + .../petstore/php-flight/Model/PetStatus.php | 43 + .../server/petstore/php-flight/Model/Tag.php | 82 + .../server/petstore/php-flight/Model/User.php | 156 + samples/server/petstore/php-flight/README.md | 10 + .../petstore/php-flight/RegisterRoutes.php | 380 +++ .../php-flight/Test/RegisterRoutesTest.php | 52 + .../server/petstore/php-flight/composer.json | 34 + .../petstore/php-flight/phpunit.xml.dist | 28 + .../php-laravel/.openapi-generator/VERSION | 2 +- .../php-lumen/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../php-mezzio-ph/.openapi-generator/VERSION | 2 +- .../php-slim4/.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../Controller/Controller.php | 6 +- .../Controller/PetController.php | 140 +- .../Controller/StoreController.php | 70 +- .../Controller/UserController.php | 132 +- .../php-symfony/SymfonyBundle-php/README.md | 2 +- .../Service/JmsSerializer.php | 36 +- .../Tests/Controller/ControllerTest.php | 2 +- .../SymfonyBundle-php/composer.json | 16 +- .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../python-fastapi/.openapi-generator/VERSION | 2 +- .../server/petstore/python-fastapi/README.md | 2 +- .../petstore/python-fastapi/requirements.txt | 4 +- .../python-flask/.openapi-generator/VERSION | 2 +- .../multipart-v3/.openapi-generator/VERSION | 2 +- .../rust-axum/output/multipart-v3/Cargo.toml | 4 +- .../rust-axum/output/multipart-v3/README.md | 2 +- .../rust-axum/output/multipart-v3/src/lib.rs | 6 +- .../output/multipart-v3/src/server/mod.rs | 3 - .../openapi-v3/.openapi-generator/VERSION | 2 +- .../rust-axum/output/openapi-v3/Cargo.toml | 4 +- .../rust-axum/output/openapi-v3/README.md | 2 +- .../rust-axum/output/openapi-v3/src/lib.rs | 6 +- .../output/openapi-v3/src/server/mod.rs | 46 +- .../output/ops-v3/.openapi-generator/VERSION | 2 +- .../rust-axum/output/ops-v3/Cargo.toml | 4 +- .../rust-axum/output/ops-v3/README.md | 2 +- .../rust-axum/output/ops-v3/src/lib.rs | 6 +- .../rust-axum/output/ops-v3/src/server/mod.rs | 37 - .../.openapi-generator/VERSION | 2 +- .../Cargo.toml | 4 +- .../README.md | 2 +- .../src/lib.rs | 6 +- .../src/models.rs | 6 +- .../src/server/mod.rs | 71 +- .../petstore/.openapi-generator/VERSION | 2 +- .../rust-axum/output/petstore/Cargo.toml | 4 +- .../rust-axum/output/petstore/README.md | 2 +- .../rust-axum/output/petstore/src/lib.rs | 6 +- .../rust-axum/output/petstore/src/models.rs | 8 +- .../output/petstore/src/server/mod.rs | 42 +- .../.openapi-generator/VERSION | 2 +- .../output/ping-bearer-auth/Cargo.toml | 4 +- .../output/ping-bearer-auth/README.md | 2 +- .../output/ping-bearer-auth/src/lib.rs | 6 +- .../output/ping-bearer-auth/src/server/mod.rs | 1 - .../rust-axum-test/.openapi-generator/VERSION | 2 +- .../output/rust-axum-test/Cargo.toml | 4 +- .../rust-axum/output/rust-axum-test/README.md | 2 +- .../output/rust-axum-test/src/lib.rs | 6 +- .../output/rust-axum-test/src/server/mod.rs | 11 +- .../multipart-v3/.openapi-generator/VERSION | 2 +- .../rust-server/output/multipart-v3/README.md | 2 +- .../no-example-v3/.openapi-generator/VERSION | 2 +- .../output/no-example-v3/README.md | 2 +- .../openapi-v3/.openapi-generator/VERSION | 2 +- .../rust-server/output/openapi-v3/README.md | 2 +- .../output/ops-v3/.openapi-generator/VERSION | 2 +- .../rust-server/output/ops-v3/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../output/ping-bearer-auth/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../output/rust-server-test/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../petstore/scala-akka-http-server/README.md | 2 +- .../.github/workflows/buildAndPublish.yml | 38 + samples/server/petstore/scala-cask/.gitignore | 25 + .../scala-cask/.openapi-generator-ignore | 23 + .../scala-cask/.openapi-generator/FILES | 39 + .../scala-cask/.openapi-generator/VERSION | 1 + .../server/petstore/scala-cask/.scalafmt.conf | 4 + samples/server/petstore/scala-cask/README.md | 96 + samples/server/petstore/scala-cask/build.sbt | 53 + samples/server/petstore/scala-cask/build.sc | 43 + .../petstore/scala-cask/example/Dockerfile | 13 + .../petstore/scala-cask/example/Server.scala | 61 + .../jvm/src/main/resources/openapi.json | 1032 +++++++ .../main/scala/sample/cask/AppRoutes.scala | 52 + .../src/main/scala/sample/cask/BaseApp.scala | 59 + .../main/scala/sample/cask/ExampleApp.scala | 31 + .../scala/sample/cask/api/OpenApiRoutes.scala | 128 + .../scala/sample/cask/api/PetRoutes.scala | 218 ++ .../scala/sample/cask/api/PetService.scala | 84 + .../scala/sample/cask/api/StoreRoutes.scala | 109 + .../scala/sample/cask/api/StoreService.scala | 58 + .../scala/sample/cask/api/UserRoutes.scala | 197 ++ .../scala/sample/cask/api/UserService.scala | 83 + .../main/scala/sample/cask/api/package.scala | 167 ++ .../src/main/scala/sample/cask/package.scala | 24 + .../sample/cask/model/ApiResponseTest.scala | 35 + .../sample/cask/model/CategoryTest.scala | 35 + .../scala/sample/cask/model/OrderTest.scala | 36 + .../scala/sample/cask/model/PetTest.scala | 37 + .../scala/sample/cask/model/TagTest.scala | 35 + .../scala/sample/cask/model/UserTest.scala | 35 + .../scala-cask/project/build.properties | 1 + .../petstore/scala-cask/project/plugins.sbt | 4 + .../scala/sample/cask/model/ApiResponse.scala | 55 + .../sample/cask/model/ApiResponseData.scala | 171 ++ .../scala/sample/cask/model/Category.scala | 51 + .../sample/cask/model/CategoryData.scala | 153 + .../main/scala/sample/cask/model/Order.scala | 76 + .../scala/sample/cask/model/OrderData.scala | 245 ++ .../main/scala/sample/cask/model/Pet.scala | 77 + .../scala/sample/cask/model/PetData.scala | 262 ++ .../main/scala/sample/cask/model/Tag.scala | 51 + .../scala/sample/cask/model/TagData.scala | 147 + .../main/scala/sample/cask/model/User.scala | 76 + .../scala/sample/cask/model/UserData.scala | 292 ++ .../scala/sample/cask/model/package.scala | 65 + .../.openapi-generator/VERSION | 2 +- .../.openapi-generator/VERSION | 2 +- .../scala-pekko-http-server/README.md | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 4 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../api/FakeClassnameTestApi.java | 4 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../java/org/openapitools/model/BigCat.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ChildWithNullable.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../model/ContainerDefaultValue.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../org/openapitools/model/EnumClass.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../java/org/openapitools/model/File.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../java/org/openapitools/model/Name.java | 2 +- .../model/NullableMapProperty.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../org/openapitools/model/OuterEnum.java | 2 +- .../model/ParentWithNullable.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- ...ResponseObjectWithDifferentFieldNames.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/NullableApi.java | 4 +- .../model/ObjectWithUniqueItems.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 4 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../api/FakeClassnameTestApi.java | 4 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../configuration/SpringFoxConfiguration.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../java/org/openapitools/model/BigCat.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ChildWithNullable.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../model/ContainerDefaultValue.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../org/openapitools/model/EnumClass.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../java/org/openapitools/model/File.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../java/org/openapitools/model/Name.java | 2 +- .../model/NullableMapProperty.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../org/openapitools/model/OuterEnum.java | 2 +- .../model/ParentWithNullable.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- ...ResponseObjectWithDifferentFieldNames.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 4 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../api/FakeClassnameTestApi.java | 4 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../configuration/SpringFoxConfiguration.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../java/org/openapitools/model/BigCat.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ChildWithNullable.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../model/ContainerDefaultValue.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../org/openapitools/model/EnumClass.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../java/org/openapitools/model/File.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../java/org/openapitools/model/Name.java | 2 +- .../model/NullableMapProperty.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../org/openapitools/model/OuterEnum.java | 2 +- .../model/ParentWithNullable.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- ...ResponseObjectWithDifferentFieldNames.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 4 +- .../api/AnotherFakeApiDelegate.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../org/openapitools/api/FakeApiDelegate.java | 2 +- .../api/FakeClassnameTestApi.java | 4 +- .../api/FakeClassnameTestApiDelegate.java | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../org/openapitools/api/PetApiDelegate.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../openapitools/api/StoreApiDelegate.java | 2 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../org/openapitools/api/UserApiDelegate.java | 2 +- .../configuration/SpringFoxConfiguration.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../java/org/openapitools/model/BigCat.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ChildWithNullable.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../model/ContainerDefaultValue.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../org/openapitools/model/EnumClass.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../java/org/openapitools/model/File.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../java/org/openapitools/model/Name.java | 2 +- .../model/NullableMapProperty.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../org/openapitools/model/OuterEnum.java | 2 +- .../model/ParentWithNullable.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- ...ResponseObjectWithDifferentFieldNames.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../org/openapitools/api/PetApiDelegate.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../openapitools/api/StoreApiDelegate.java | 2 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../org/openapitools/api/UserApiDelegate.java | 2 +- .../configuration/SpringFoxConfiguration.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 4 +- .../api/AnotherFakeApiDelegate.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../org/openapitools/api/FakeApiDelegate.java | 2 +- .../api/FakeClassnameTestApi.java | 4 +- .../api/FakeClassnameTestApiDelegate.java | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../org/openapitools/api/PetApiDelegate.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../openapitools/api/StoreApiDelegate.java | 2 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../org/openapitools/api/UserApiDelegate.java | 2 +- .../configuration/SpringFoxConfiguration.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../java/org/openapitools/model/BigCat.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ChildWithNullable.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../model/ContainerDefaultValue.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../org/openapitools/model/EnumClass.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../java/org/openapitools/model/File.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../java/org/openapitools/model/Name.java | 2 +- .../model/NullableMapProperty.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../org/openapitools/model/OuterEnum.java | 2 +- .../model/ParentWithNullable.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- ...ResponseObjectWithDifferentFieldNames.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 4 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../api/FakeClassnameTestApi.java | 4 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../configuration/SpringFoxConfiguration.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../java/org/openapitools/model/BigCat.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ChildWithNullable.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../model/ContainerDefaultValue.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../org/openapitools/model/EnumClass.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../java/org/openapitools/model/File.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../java/org/openapitools/model/Name.java | 2 +- .../model/NullableMapProperty.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../org/openapitools/model/OuterEnum.java | 2 +- .../model/ParentWithNullable.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- ...ResponseObjectWithDifferentFieldNames.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 4 +- .../api/AnotherFakeApiDelegate.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../org/openapitools/api/FakeApiDelegate.java | 2 +- .../api/FakeClassnameTestApi.java | 4 +- .../api/FakeClassnameTestApiDelegate.java | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../org/openapitools/api/PetApiDelegate.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../openapitools/api/StoreApiDelegate.java | 2 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../org/openapitools/api/UserApiDelegate.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../java/org/openapitools/model/BigCat.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ChildWithNullable.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../model/ContainerDefaultValue.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../org/openapitools/model/EnumClass.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../java/org/openapitools/model/File.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../java/org/openapitools/model/Name.java | 2 +- .../model/NullableMapProperty.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../org/openapitools/model/OuterEnum.java | 2 +- .../model/ParentWithNullable.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- ...ResponseObjectWithDifferentFieldNames.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 4 +- .../api/AnotherFakeApiDelegate.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../org/openapitools/api/FakeApiDelegate.java | 2 +- .../api/FakeClassnameTestApi.java | 4 +- .../api/FakeClassnameTestApiDelegate.java | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../org/openapitools/api/PetApiDelegate.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../openapitools/api/StoreApiDelegate.java | 2 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../org/openapitools/api/UserApiDelegate.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../java/org/openapitools/model/BigCat.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ChildWithNullable.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../model/ContainerDefaultValue.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../org/openapitools/model/EnumClass.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../java/org/openapitools/model/File.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../java/org/openapitools/model/Name.java | 2 +- .../model/NullableMapProperty.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../org/openapitools/model/OuterEnum.java | 2 +- .../model/ParentWithNullable.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- ...ResponseObjectWithDifferentFieldNames.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 4 +- .../api/AnotherFakeApiDelegate.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../org/openapitools/api/FakeApiDelegate.java | 2 +- .../api/FakeClassnameTestApi.java | 4 +- .../api/FakeClassnameTestApiDelegate.java | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../org/openapitools/api/PetApiDelegate.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../openapitools/api/StoreApiDelegate.java | 2 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../org/openapitools/api/UserApiDelegate.java | 2 +- .../org/openapitools/api/VersioningApi.java | 4 +- .../api/VersioningApiDelegate.java | 2 +- .../configuration/SpringFoxConfiguration.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../org/openapitools/model/EnumClass.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../java/org/openapitools/model/File.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../java/org/openapitools/model/Name.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../org/openapitools/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 4 +- .../api/AnotherFakeApiDelegate.java | 2 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../org/openapitools/api/FakeApiDelegate.java | 2 +- .../api/FakeClassnameTestApi.java | 4 +- .../api/FakeClassnameTestApiDelegate.java | 2 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../org/openapitools/api/PetApiDelegate.java | 2 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../openapitools/api/StoreApiDelegate.java | 2 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../org/openapitools/api/UserApiDelegate.java | 2 +- .../org/openapitools/api/VersioningApi.java | 4 +- .../api/VersioningApiDelegate.java | 2 +- .../configuration/SpringFoxConfiguration.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../org/openapitools/model/EnumClass.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../java/org/openapitools/model/File.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../java/org/openapitools/model/Name.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../org/openapitools/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 4 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../api/FakeClassnameTestApi.java | 4 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../org/openapitools/api/VersioningApi.java | 4 +- .../configuration/SpringFoxConfiguration.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../org/openapitools/model/EnumClass.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../java/org/openapitools/model/File.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../java/org/openapitools/model/Name.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../org/openapitools/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 4 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../api/FakeClassnameTestApi.java | 4 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../org/openapitools/api/VersioningApi.java | 4 +- .../configuration/SpringFoxConfiguration.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../org/openapitools/model/EnumClass.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../java/org/openapitools/model/File.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../java/org/openapitools/model/Name.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../org/openapitools/model/OuterEnum.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 4 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../api/FakeClassnameTestApi.java | 4 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../configuration/SpringFoxConfiguration.java | 2 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../java/org/openapitools/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../openapitools/model/ArrayOfNumberOnly.java | 2 +- .../org/openapitools/model/ArrayTest.java | 2 +- .../java/org/openapitools/model/BigCat.java | 2 +- .../openapitools/model/Capitalization.java | 2 +- .../main/java/org/openapitools/model/Cat.java | 2 +- .../java/org/openapitools/model/Category.java | 2 +- .../openapitools/model/ChildWithNullable.java | 2 +- .../org/openapitools/model/ClassModel.java | 2 +- .../java/org/openapitools/model/Client.java | 2 +- .../model/ContainerDefaultValue.java | 2 +- .../main/java/org/openapitools/model/Dog.java | 2 +- .../org/openapitools/model/EnumArrays.java | 2 +- .../org/openapitools/model/EnumClass.java | 2 +- .../java/org/openapitools/model/EnumTest.java | 2 +- .../java/org/openapitools/model/File.java | 2 +- .../model/FileSchemaTestClass.java | 2 +- .../org/openapitools/model/FormatTest.java | 2 +- .../openapitools/model/HasOnlyReadOnly.java | 2 +- .../java/org/openapitools/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../openapitools/model/Model200Response.java | 2 +- .../openapitools/model/ModelApiResponse.java | 2 +- .../org/openapitools/model/ModelList.java | 2 +- .../org/openapitools/model/ModelReturn.java | 2 +- .../java/org/openapitools/model/Name.java | 2 +- .../model/NullableMapProperty.java | 2 +- .../org/openapitools/model/NumberOnly.java | 2 +- .../java/org/openapitools/model/Order.java | 2 +- .../openapitools/model/OuterComposite.java | 2 +- .../org/openapitools/model/OuterEnum.java | 2 +- .../model/ParentWithNullable.java | 2 +- .../main/java/org/openapitools/model/Pet.java | 2 +- .../org/openapitools/model/ReadOnlyFirst.java | 2 +- ...ResponseObjectWithDifferentFieldNames.java | 2 +- .../openapitools/model/SpecialModelName.java | 2 +- .../main/java/org/openapitools/model/Tag.java | 2 +- .../openapitools/model/TypeHolderDefault.java | 2 +- .../openapitools/model/TypeHolderExample.java | 2 +- .../java/org/openapitools/model/User.java | 2 +- .../java/org/openapitools/model/XmlItem.java | 2 +- .../.openapi-generator/VERSION | 2 +- .../virtualan/api/AnotherFakeApi.java | 4 +- .../openapitools/virtualan/api/FakeApi.java | 4 +- .../virtualan/api/FakeClassnameTestApi.java | 4 +- .../openapitools/virtualan/api/PetApi.java | 4 +- .../openapitools/virtualan/api/StoreApi.java | 4 +- .../openapitools/virtualan/api/UserApi.java | 4 +- .../model/AdditionalPropertiesAnyType.java | 2 +- .../model/AdditionalPropertiesArray.java | 2 +- .../model/AdditionalPropertiesBoolean.java | 2 +- .../model/AdditionalPropertiesClass.java | 2 +- .../model/AdditionalPropertiesInteger.java | 2 +- .../model/AdditionalPropertiesNumber.java | 2 +- .../model/AdditionalPropertiesObject.java | 2 +- .../model/AdditionalPropertiesString.java | 2 +- .../openapitools/virtualan/model/Animal.java | 2 +- .../model/ArrayOfArrayOfNumberOnly.java | 2 +- .../virtualan/model/ArrayOfNumberOnly.java | 2 +- .../virtualan/model/ArrayTest.java | 2 +- .../openapitools/virtualan/model/BigCat.java | 2 +- .../virtualan/model/Capitalization.java | 2 +- .../org/openapitools/virtualan/model/Cat.java | 2 +- .../virtualan/model/Category.java | 2 +- .../virtualan/model/ChildWithNullable.java | 2 +- .../virtualan/model/ClassModel.java | 2 +- .../openapitools/virtualan/model/Client.java | 2 +- .../model/ContainerDefaultValue.java | 2 +- .../org/openapitools/virtualan/model/Dog.java | 2 +- .../virtualan/model/EnumArrays.java | 2 +- .../virtualan/model/EnumClass.java | 2 +- .../virtualan/model/EnumTest.java | 2 +- .../openapitools/virtualan/model/File.java | 2 +- .../virtualan/model/FileSchemaTestClass.java | 2 +- .../virtualan/model/FormatTest.java | 2 +- .../virtualan/model/HasOnlyReadOnly.java | 2 +- .../openapitools/virtualan/model/MapTest.java | 2 +- ...ropertiesAndAdditionalPropertiesClass.java | 2 +- .../virtualan/model/Model200Response.java | 2 +- .../virtualan/model/ModelApiResponse.java | 2 +- .../virtualan/model/ModelList.java | 2 +- .../virtualan/model/ModelReturn.java | 2 +- .../openapitools/virtualan/model/Name.java | 2 +- .../virtualan/model/NullableMapProperty.java | 2 +- .../virtualan/model/NumberOnly.java | 2 +- .../openapitools/virtualan/model/Order.java | 2 +- .../virtualan/model/OuterComposite.java | 2 +- .../virtualan/model/OuterEnum.java | 2 +- .../virtualan/model/ParentWithNullable.java | 2 +- .../org/openapitools/virtualan/model/Pet.java | 2 +- .../virtualan/model/ReadOnlyFirst.java | 2 +- ...ResponseObjectWithDifferentFieldNames.java | 2 +- .../virtualan/model/SpecialModelName.java | 2 +- .../org/openapitools/virtualan/model/Tag.java | 2 +- .../virtualan/model/TypeHolderDefault.java | 2 +- .../virtualan/model/TypeHolderExample.java | 2 +- .../openapitools/virtualan/model/User.java | 2 +- .../openapitools/virtualan/model/XmlItem.java | 2 +- .../springboot/.openapi-generator/VERSION | 2 +- .../org/openapitools/api/AnotherFakeApi.java | 4 +- .../java/org/openapitools/api/FakeApi.java | 4 +- .../api/FakeClassnameTestApi.java | 4 +- .../java/org/openapitools/api/PetApi.java | 4 +- .../java/org/openapitools/api/StoreApi.java | 4 +- .../java/org/openapitools/api/UserApi.java | 4 +- .../configuration/SpringFoxConfiguration.java | 2 +- .../model/AdditionalPropertiesAnyTypeDto.java | 2 +- .../model/AdditionalPropertiesArrayDto.java | 2 +- .../model/AdditionalPropertiesBooleanDto.java | 2 +- .../model/AdditionalPropertiesClassDto.java | 2 +- .../model/AdditionalPropertiesIntegerDto.java | 2 +- .../model/AdditionalPropertiesNumberDto.java | 2 +- .../model/AdditionalPropertiesObjectDto.java | 2 +- .../model/AdditionalPropertiesStringDto.java | 2 +- .../org/openapitools/model/AnimalDto.java | 2 +- .../openapitools/model/ApiResponseDto.java | 2 +- .../model/ArrayOfArrayOfNumberOnlyDto.java | 2 +- .../model/ArrayOfNumberOnlyDto.java | 2 +- .../org/openapitools/model/ArrayTestDto.java | 2 +- .../org/openapitools/model/BigCatDto.java | 2 +- .../openapitools/model/CapitalizationDto.java | 2 +- .../java/org/openapitools/model/CatDto.java | 2 +- .../org/openapitools/model/CategoryDto.java | 2 +- .../model/ChildWithNullableDto.java | 2 +- .../org/openapitools/model/ClassModelDto.java | 2 +- .../org/openapitools/model/ClientDto.java | 2 +- .../model/ContainerDefaultValueDto.java | 2 +- .../java/org/openapitools/model/DogDto.java | 2 +- .../org/openapitools/model/EnumArraysDto.java | 2 +- .../org/openapitools/model/EnumClassDto.java | 2 +- .../org/openapitools/model/EnumTestDto.java | 2 +- .../java/org/openapitools/model/FileDto.java | 2 +- .../model/FileSchemaTestClassDto.java | 2 +- .../org/openapitools/model/FormatTestDto.java | 2 +- .../model/HasOnlyReadOnlyDto.java | 2 +- .../java/org/openapitools/model/ListDto.java | 2 +- .../org/openapitools/model/MapTestDto.java | 2 +- ...ertiesAndAdditionalPropertiesClassDto.java | 2 +- .../model/Model200ResponseDto.java | 2 +- .../java/org/openapitools/model/NameDto.java | 2 +- .../model/NullableMapPropertyDto.java | 2 +- .../org/openapitools/model/NumberOnlyDto.java | 2 +- .../java/org/openapitools/model/OrderDto.java | 2 +- .../openapitools/model/OuterCompositeDto.java | 2 +- .../org/openapitools/model/OuterEnumDto.java | 2 +- .../model/ParentWithNullableDto.java | 2 +- .../java/org/openapitools/model/PetDto.java | 2 +- .../openapitools/model/ReadOnlyFirstDto.java | 2 +- ...ponseObjectWithDifferentFieldNamesDto.java | 2 +- .../org/openapitools/model/ReturnDto.java | 2 +- .../model/SpecialModelNameDto.java | 2 +- .../java/org/openapitools/model/TagDto.java | 2 +- .../model/TypeHolderDefaultDto.java | 2 +- .../model/TypeHolderExampleDto.java | 2 +- .../java/org/openapitools/model/UserDto.java | 2 +- .../org/openapitools/model/XmlItemDto.java | 2 +- website/src/dynamic/sponsors.yml | 2 +- website/src/dynamic/users.yml | 5 + website/static/img/companies/searchapi.png | Bin 0 -> 47318 bytes 7648 files changed, 66856 insertions(+), 13583 deletions(-) create mode 100644 bin/configs/csharp-generichost-net8-anyOfNoCompare.yaml rename bin/configs/{unmaintained => }/html2.yaml (100%) create mode 100644 bin/configs/java-okhttp-user-defined-templates.yaml create mode 100644 bin/configs/jaxrs-spec-quarkus-mutiny.yaml create mode 100644 bin/configs/php-flight.yaml create mode 100644 bin/configs/scala-cask-petstore-new.yaml delete mode 100644 buildConfig.yaml create mode 100644 docs/generators/php-flight.md create mode 100644 docs/generators/scala-cask.md create mode 100644 modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpFlightServerCodegen.java create mode 100644 modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaCaskServerCodegen.java create mode 100644 modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/returnAsyncTypeInterface.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/anytype-header.mustache create mode 100644 modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/anytype-source.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-flight/README.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-flight/api.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-flight/composer.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-flight/gitignore create mode 100644 modules/openapi-generator/src/main/resources/php-flight/licenseInfo.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-flight/model.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-flight/model_enum.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-flight/model_generic.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-flight/model_variables.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-flight/partial_header.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-flight/phpunit.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-flight/register_routes.mustache create mode 100644 modules/openapi-generator/src/main/resources/php-flight/register_routes_test.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/.scalafmt.conf.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/Dockerfile.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/README.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/api.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/apiPackage.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/apiRoutes.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/apiRoutesQueryParamsTyped.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/apiService.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/appPackage.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/appRoutes.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/baseApp.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/build.sbt.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/build.sc.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/buildAndPublish.yml.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/example.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/exampleApp.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/gitignore.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/licenseInfo.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/model.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/modelData.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/modelPackage.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/modelTest.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/openapiRoute.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/parseHttpParams.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/pathExtractor.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/pathExtractorParams.mustache create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/project/build.properties create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/project/plugins.sbt create mode 100644 modules/openapi-generator/src/main/resources/scala-cask/queryParams.mustache create mode 100644 modules/openapi-generator/src/test/java/org/openapitools/codegen/php/flight/PhpFlightServerCodegenTest.java create mode 100644 modules/openapi-generator/src/test/resources/3_0/cpp-ue4/petstore.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_0/go/allof_multiple_ref_and_discriminator.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_0/go/allof_skip_unmarshal_json.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_0/go/allof_with_unmarshal_json.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_0/issue_14432.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_0/petstore-php-flight.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_1/issue_18291.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_1/reusable-components-without-paths.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_1/simplifyOneOfAnyOf_test.yaml delete mode 100644 modules/openapi-generator/src/test/resources/bugs/issue_17343.yaml create mode 100644 modules/openapi-generator/src/test/resources/bugs/issue_17768.yaml create mode 100644 modules/openapi-generator/src/test/resources/bugs/issue_18336.yaml create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/.github/workflows/maven.yml create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/.gitignore create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/.openapi-generator-ignore create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/.openapi-generator/FILES create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/.openapi-generator/VERSION create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/.travis.yml create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/README.md create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/api/openapi.yaml create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/build.gradle create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/build.sbt create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/Category.md create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/ModelApiResponse.md create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/Order.md create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/Pet.md rename samples/client/{petstore/java/okhttp-gson-swagger1/docs/PetApi.md => echo_api/java/okhttp-gson-user-defined-templates/docs/PetApiDocumentation.md} (100%) rename samples/client/{petstore/java/okhttp-gson-swagger1/docs/StoreApi.md => echo_api/java/okhttp-gson-user-defined-templates/docs/StoreApiDocumentation.md} (100%) create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/Tag.md create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/User.md rename samples/client/{petstore/java/okhttp-gson-swagger1/docs/UserApi.md => echo_api/java/okhttp-gson-user-defined-templates/docs/UserApiDocumentation.md} (100%) create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/git_push.sh create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/gradle.properties create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/gradle/wrapper/gradle-wrapper.jar create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/gradle/wrapper/gradle-wrapper.properties create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/gradlew create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/gradlew.bat create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/info.md create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/modelCopy/Category.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/modelCopy/ModelApiResponse.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/modelCopy/Order.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/modelCopy/Pet.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/modelCopy/Tag.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/modelCopy/User.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/pom.xml create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/settings.gradle create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/AndroidManifest.xml create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/ApiCallback.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/ApiClient.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/ApiException.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/ApiResponse.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/Configuration.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/GzipRequestInterceptor.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/JSON.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/Pair.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/ProgressRequestBody.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/ProgressResponseBody.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/ServerConfiguration.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/ServerVariable.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/StringUtil.java rename samples/client/{petstore/java/okhttp-gson-swagger1 => echo_api/java/okhttp-gson-user-defined-templates}/src/main/java/org/openapitools/client/api/PetApi.java (100%) rename samples/client/{petstore/java/okhttp-gson-swagger1 => echo_api/java/okhttp-gson-user-defined-templates}/src/main/java/org/openapitools/client/api/StoreApi.java (100%) rename samples/client/{petstore/java/okhttp-gson-swagger1 => echo_api/java/okhttp-gson-user-defined-templates}/src/main/java/org/openapitools/client/api/UserApi.java (100%) create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/auth/Authentication.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/auth/OAuth.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/auth/OAuthFlow.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/auth/OAuthOkHttpClient.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/auth/RetryingOAuth.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/model/Category.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/model/ModelApiResponse.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/model/Order.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/model/Pet.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/model/Tag.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/main/java/org/openapitools/client/model/User.java rename samples/client/{petstore/java/okhttp-gson-swagger1 => echo_api/java/okhttp-gson-user-defined-templates}/src/test/java/org/openapitools/client/api/PetApiTest.java (100%) rename samples/client/{petstore/java/okhttp-gson-swagger1 => echo_api/java/okhttp-gson-user-defined-templates}/src/test/java/org/openapitools/client/api/StoreApiTest.java (100%) rename samples/client/{petstore/java/okhttp-gson-swagger1 => echo_api/java/okhttp-gson-user-defined-templates}/src/test/java/org/openapitools/client/api/UserApiTest.java (100%) create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/test/java/org/openapitools/client/model/CategoryTest.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/test/java/org/openapitools/client/model/ModelApiResponseTest.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/test/java/org/openapitools/client/model/OrderTest.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/test/java/org/openapitools/client/model/PetTest.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/test/java/org/openapitools/client/model/TagTest.java create mode 100644 samples/client/echo_api/java/okhttp-gson-user-defined-templates/src/test/java/org/openapitools/client/model/UserTest.java create mode 100644 samples/client/petstore/cpp-restsdk/client/include/CppRestPetstoreClient/AnyType.h create mode 100644 samples/client/petstore/cpp-restsdk/client/src/AnyType.cpp create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/.gitignore create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/.openapi-generator-ignore create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/.openapi-generator/FILES create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/.openapi-generator/VERSION create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/Org.OpenAPITools.sln create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/README.md create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/api/openapi.yaml create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/appveyor.yml create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/docs/apis/DefaultApi.md create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/docs/models/Apple.md create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/docs/models/Banana.md create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/docs/models/Fruit.md create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/docs/scripts/git_push.ps1 create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/docs/scripts/git_push.sh create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools.Test/Api/ApiTestsBase.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools.Test/Api/DefaultApiTests.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools.Test/Api/DependencyInjectionTests.cs rename samples/client/petstore/csharp/generichost/net8/{NullReferenceTypes/src/Org.OpenAPITools.Test/Model/MixedSubIdTests.cs => AnyOfNoCompare/src/Org.OpenAPITools.Test/Model/AppleTests.cs} (52%) rename samples/client/petstore/csharp/generichost/{standard2.0/Petstore/src/Org.OpenAPITools.Test/Model/MixedSubIdTests.cs => net8/AnyOfNoCompare/src/Org.OpenAPITools.Test/Model/BananaTests.cs} (52%) rename samples/client/petstore/csharp/generichost/net8/{Petstore/src/Org.OpenAPITools.Test/Model/MixedSubIdTests.cs => AnyOfNoCompare/src/Org.OpenAPITools.Test/Model/FruitTests.cs} (52%) create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools.Test/README.md create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Api/DefaultApi.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Api/IApi.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiException.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiFactory.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiResponseEventArgs.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ApiResponse`1.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ClientUtils.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/CookieContainer.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateOnlyJsonConverter.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateOnlyNullableJsonConverter.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateTimeJsonConverter.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/DateTimeNullableJsonConverter.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/ExceptionEventArgs.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/HostConfiguration.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/JsonSerializerOptionsProvider.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/Option.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/RateLimitProvider`1.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenBase.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenContainer`1.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Client/TokenProvider`1.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Extensions/IHostBuilderExtensions.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Extensions/IHttpClientBuilderExtensions.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Extensions/IServiceCollectionExtensions.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Model/Apple.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Model/Banana.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Model/Fruit.cs create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/Org.OpenAPITools.csproj create mode 100644 samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare/src/Org.OpenAPITools/README.md delete mode 100644 samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools.Test/Model/MixedEnumTypeTests.cs delete mode 100644 samples/client/petstore/csharp/generichost/net8/NullReferenceTypes/src/Org.OpenAPITools.Test/Model/MixedNullableEnumTypeTests.cs delete mode 100644 samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools.Test/Model/MixedEnumTypeTests.cs delete mode 100644 samples/client/petstore/csharp/generichost/net8/Petstore/src/Org.OpenAPITools.Test/Model/MixedNullableEnumTypeTests.cs delete mode 100644 samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools.Test/Model/MixedEnumTypeTests.cs delete mode 100644 samples/client/petstore/csharp/generichost/standard2.0/Petstore/src/Org.OpenAPITools.Test/Model/MixedNullableEnumTypeTests.cs create mode 100644 samples/client/petstore/java/okhttp-gson-3.1/docs/ArrayOfSameRef.md create mode 100644 samples/client/petstore/java/okhttp-gson-3.1/docs/CircularReference1.md create mode 100644 samples/client/petstore/java/okhttp-gson-3.1/docs/CircularReference2.md create mode 100644 samples/client/petstore/java/okhttp-gson-3.1/docs/CircularReference3.md create mode 100644 samples/client/petstore/java/okhttp-gson-3.1/docs/CodesEnum.md delete mode 100644 samples/client/petstore/java/okhttp-gson-3.1/src/main/java/org/openapitools/client/model/AnyOfArray.java create mode 100644 samples/client/petstore/java/okhttp-gson-3.1/src/main/java/org/openapitools/client/model/ArrayOfSameRef.java create mode 100644 samples/client/petstore/java/okhttp-gson-3.1/src/main/java/org/openapitools/client/model/CircularReference1.java create mode 100644 samples/client/petstore/java/okhttp-gson-3.1/src/main/java/org/openapitools/client/model/CircularReference2.java create mode 100644 samples/client/petstore/java/okhttp-gson-3.1/src/main/java/org/openapitools/client/model/CircularReference3.java create mode 100644 samples/client/petstore/java/okhttp-gson-3.1/src/main/java/org/openapitools/client/model/CodesEnum.java create mode 100644 samples/client/petstore/java/okhttp-gson-3.1/src/test/java/org/openapitools/client/model/ArrayOfSameRefTest.java create mode 100644 samples/client/petstore/java/okhttp-gson-3.1/src/test/java/org/openapitools/client/model/CircularReference1Test.java create mode 100644 samples/client/petstore/java/okhttp-gson-3.1/src/test/java/org/openapitools/client/model/CircularReference2Test.java create mode 100644 samples/client/petstore/java/okhttp-gson-3.1/src/test/java/org/openapitools/client/model/CircularReference3Test.java rename samples/client/petstore/java/okhttp-gson-3.1/src/test/java/org/openapitools/client/model/{AnyOfArrayTest.java => CodesEnumTest.java} (71%) create mode 100644 samples/client/petstore/java/okhttp-gson-swagger1/docs/CommonApi.md create mode 100644 samples/client/petstore/java/okhttp-gson-swagger1/src/main/java/org/openapitools/client/api/CommonApi.java create mode 100644 samples/client/petstore/java/okhttp-gson-swagger1/src/test/java/org/openapitools/client/api/CommonApiTest.java rename samples/client/petstore/java/{okhttp-gson-3.1/docs/AnyOfArray.md => okhttp-gson/docs/ArrayAnyOf.md} (90%) create mode 100644 samples/client/petstore/java/okhttp-gson/docs/ArrayOneOf.md create mode 100644 samples/client/petstore/java/okhttp-gson/docs/ModelWithOneOfAnyOfProperties.md create mode 100644 samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/ArrayAnyOf.java create mode 100644 samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/ArrayOneOf.java create mode 100644 samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/model/ModelWithOneOfAnyOfProperties.java create mode 100644 samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/model/ArrayAnyOfTest.java create mode 100644 samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/model/ArrayOneOfTest.java create mode 100644 samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/model/ModelWithOneOfAnyOfPropertiesTest.java mode change 100644 => 100755 samples/client/petstore/powershell/src/PSPetstore/Private/PSApiClient.ps1 create mode 100644 samples/client/petstore/swift5/validation/Package.resolved create mode 100644 samples/openapi3/client/petstore/python-aiohttp/docs/AllOfSuperModel.md create mode 100644 samples/openapi3/client/petstore/python-aiohttp/docs/CircularAllOfRef.md create mode 100644 samples/openapi3/client/petstore/python-aiohttp/docs/SecondCircularAllOfRef.md create mode 100644 samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/all_of_super_model.py create mode 100644 samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/circular_all_of_ref.py create mode 100644 samples/openapi3/client/petstore/python-aiohttp/petstore_api/models/second_circular_all_of_ref.py create mode 100644 samples/openapi3/client/petstore/python-aiohttp/test/test_all_of_super_model.py create mode 100644 samples/openapi3/client/petstore/python-aiohttp/test/test_circular_all_of_ref.py create mode 100644 samples/openapi3/client/petstore/python-aiohttp/test/test_second_circular_all_of_ref.py create mode 100644 samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/docs/AllOfSuperModel.md create mode 100644 samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/docs/CircularAllOfRef.md create mode 100644 samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/docs/SecondCircularAllOfRef.md create mode 100644 samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/petstore_api/models/all_of_super_model.py create mode 100644 samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/petstore_api/models/circular_all_of_ref.py create mode 100644 samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/petstore_api/models/second_circular_all_of_ref.py create mode 100644 samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/test/test_all_of_super_model.py create mode 100644 samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/test/test_circular_all_of_ref.py create mode 100644 samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/test/test_second_circular_all_of_ref.py create mode 100644 samples/openapi3/client/petstore/python-pydantic-v1/docs/AllOfSuperModel.md create mode 100644 samples/openapi3/client/petstore/python-pydantic-v1/docs/CircularAllOfRef.md create mode 100644 samples/openapi3/client/petstore/python-pydantic-v1/docs/SecondCircularAllOfRef.md create mode 100644 samples/openapi3/client/petstore/python-pydantic-v1/petstore_api/models/all_of_super_model.py create mode 100644 samples/openapi3/client/petstore/python-pydantic-v1/petstore_api/models/circular_all_of_ref.py create mode 100644 samples/openapi3/client/petstore/python-pydantic-v1/petstore_api/models/second_circular_all_of_ref.py create mode 100644 samples/openapi3/client/petstore/python-pydantic-v1/test/test_all_of_super_model.py create mode 100644 samples/openapi3/client/petstore/python-pydantic-v1/test/test_circular_all_of_ref.py create mode 100644 samples/openapi3/client/petstore/python-pydantic-v1/test/test_second_circular_all_of_ref.py create mode 100644 samples/openapi3/client/petstore/python/docs/AllOfSuperModel.md create mode 100644 samples/openapi3/client/petstore/python/docs/CircularAllOfRef.md create mode 100644 samples/openapi3/client/petstore/python/docs/EnumSerialization.md create mode 100644 samples/openapi3/client/petstore/python/docs/SecondCircularAllOfRef.md create mode 100644 samples/openapi3/client/petstore/python/petstore_api/models/all_of_super_model.py create mode 100644 samples/openapi3/client/petstore/python/petstore_api/models/circular_all_of_ref.py create mode 100644 samples/openapi3/client/petstore/python/petstore_api/models/enum_serialization.py create mode 100644 samples/openapi3/client/petstore/python/petstore_api/models/second_circular_all_of_ref.py create mode 100644 samples/openapi3/client/petstore/python/test/test_all_of_super_model.py create mode 100644 samples/openapi3/client/petstore/python/test/test_circular_all_of_ref.py create mode 100644 samples/openapi3/client/petstore/python/test/test_enum_serialization.py create mode 100644 samples/openapi3/client/petstore/python/test/test_second_circular_all_of_ref.py create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/.dockerignore create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/.openapi-generator-ignore create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/.openapi-generator/FILES create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/.openapi-generator/VERSION create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/README.md create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/pom.xml create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/api/AnotherFakeApi.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/api/FakeApi.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/api/FakeClassnameTestApi.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/api/FooApi.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/api/PetApi.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/api/RestApplication.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/api/RestResourceRoot.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/api/StoreApi.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/api/UserApi.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/AdditionalPropertiesAnyType.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/AdditionalPropertiesArray.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/AdditionalPropertiesBoolean.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/AdditionalPropertiesClass.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/AdditionalPropertiesInteger.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/AdditionalPropertiesNumber.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/AdditionalPropertiesObject.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/AdditionalPropertiesString.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/AllOfWithSingleRef.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/Animal.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/ArrayOfArrayOfNumberOnly.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/ArrayOfNumberOnly.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/ArrayTest.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/BigCat.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/Capitalization.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/Cat.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/Category.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/ChildWithNullable.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/ClassModel.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/Client.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/DeprecatedObject.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/Dog.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/EnumArrays.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/EnumClass.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/EnumTest.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/FakeBigDecimalMap200Response.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/FileSchemaTestClass.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/Foo.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/FooGetDefaultResponse.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/FormatTest.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/HasOnlyReadOnly.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/HealthCheckResult.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/MapTest.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClass.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/Model200Response.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/ModelApiResponse.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/ModelFile.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/ModelList.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/ModelReturn.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/Name.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/NullableClass.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/NumberOnly.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/ObjectWithDeprecatedFields.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/Order.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/OuterComposite.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/OuterEnum.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/OuterEnumDefaultValue.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/OuterEnumInteger.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/OuterEnumIntegerDefaultValue.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/OuterObjectWithEnumProperty.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/ParentWithNullable.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/Pet.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/ReadOnlyFirst.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/SingleRefType.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/SpecialModelName.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/Tag.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/TestInlineFreeformAdditionalPropertiesRequest.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/TypeHolderDefault.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/TypeHolderExample.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/User.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/gen/java/org/openapitools/model/XmlItem.java create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/main/docker/Dockerfile.jvm create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/main/docker/Dockerfile.native create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/main/resources/META-INF/openapi.yaml create mode 100644 samples/server/petstore/jaxrs-spec-quarkus-mutiny/src/main/resources/application.properties create mode 100644 samples/server/petstore/php-flight/.gitignore create mode 100644 samples/server/petstore/php-flight/.openapi-generator-ignore create mode 100644 samples/server/petstore/php-flight/.openapi-generator/FILES create mode 100644 samples/server/petstore/php-flight/.openapi-generator/VERSION create mode 100644 samples/server/petstore/php-flight/Api/AbstractPetApi.php create mode 100644 samples/server/petstore/php-flight/Api/AbstractStoreApi.php create mode 100644 samples/server/petstore/php-flight/Api/AbstractUserApi.php create mode 100644 samples/server/petstore/php-flight/Model/ApiResponse.php create mode 100644 samples/server/petstore/php-flight/Model/Category.php create mode 100644 samples/server/petstore/php-flight/Model/FindPetsByStatusStatusParameterInner.php create mode 100644 samples/server/petstore/php-flight/Model/Order.php create mode 100644 samples/server/petstore/php-flight/Model/OrderStatus.php create mode 100644 samples/server/petstore/php-flight/Model/Pet.php create mode 100644 samples/server/petstore/php-flight/Model/PetStatus.php create mode 100644 samples/server/petstore/php-flight/Model/Tag.php create mode 100644 samples/server/petstore/php-flight/Model/User.php create mode 100644 samples/server/petstore/php-flight/README.md create mode 100644 samples/server/petstore/php-flight/RegisterRoutes.php create mode 100644 samples/server/petstore/php-flight/Test/RegisterRoutesTest.php create mode 100644 samples/server/petstore/php-flight/composer.json create mode 100644 samples/server/petstore/php-flight/phpunit.xml.dist create mode 100644 samples/server/petstore/scala-cask/.github/workflows/buildAndPublish.yml create mode 100644 samples/server/petstore/scala-cask/.gitignore create mode 100644 samples/server/petstore/scala-cask/.openapi-generator-ignore create mode 100644 samples/server/petstore/scala-cask/.openapi-generator/FILES create mode 100644 samples/server/petstore/scala-cask/.openapi-generator/VERSION create mode 100644 samples/server/petstore/scala-cask/.scalafmt.conf create mode 100644 samples/server/petstore/scala-cask/README.md create mode 100644 samples/server/petstore/scala-cask/build.sbt create mode 100644 samples/server/petstore/scala-cask/build.sc create mode 100644 samples/server/petstore/scala-cask/example/Dockerfile create mode 100644 samples/server/petstore/scala-cask/example/Server.scala create mode 100644 samples/server/petstore/scala-cask/jvm/src/main/resources/openapi.json create mode 100644 samples/server/petstore/scala-cask/jvm/src/main/scala/sample/cask/AppRoutes.scala create mode 100644 samples/server/petstore/scala-cask/jvm/src/main/scala/sample/cask/BaseApp.scala create mode 100644 samples/server/petstore/scala-cask/jvm/src/main/scala/sample/cask/ExampleApp.scala create mode 100644 samples/server/petstore/scala-cask/jvm/src/main/scala/sample/cask/api/OpenApiRoutes.scala create mode 100644 samples/server/petstore/scala-cask/jvm/src/main/scala/sample/cask/api/PetRoutes.scala create mode 100644 samples/server/petstore/scala-cask/jvm/src/main/scala/sample/cask/api/PetService.scala create mode 100644 samples/server/petstore/scala-cask/jvm/src/main/scala/sample/cask/api/StoreRoutes.scala create mode 100644 samples/server/petstore/scala-cask/jvm/src/main/scala/sample/cask/api/StoreService.scala create mode 100644 samples/server/petstore/scala-cask/jvm/src/main/scala/sample/cask/api/UserRoutes.scala create mode 100644 samples/server/petstore/scala-cask/jvm/src/main/scala/sample/cask/api/UserService.scala create mode 100644 samples/server/petstore/scala-cask/jvm/src/main/scala/sample/cask/api/package.scala create mode 100644 samples/server/petstore/scala-cask/jvm/src/main/scala/sample/cask/package.scala create mode 100644 samples/server/petstore/scala-cask/jvm/src/test/scala/sample/cask/model/ApiResponseTest.scala create mode 100644 samples/server/petstore/scala-cask/jvm/src/test/scala/sample/cask/model/CategoryTest.scala create mode 100644 samples/server/petstore/scala-cask/jvm/src/test/scala/sample/cask/model/OrderTest.scala create mode 100644 samples/server/petstore/scala-cask/jvm/src/test/scala/sample/cask/model/PetTest.scala create mode 100644 samples/server/petstore/scala-cask/jvm/src/test/scala/sample/cask/model/TagTest.scala create mode 100644 samples/server/petstore/scala-cask/jvm/src/test/scala/sample/cask/model/UserTest.scala create mode 100644 samples/server/petstore/scala-cask/project/build.properties create mode 100644 samples/server/petstore/scala-cask/project/plugins.sbt create mode 100644 samples/server/petstore/scala-cask/shared/src/main/scala/sample/cask/model/ApiResponse.scala create mode 100644 samples/server/petstore/scala-cask/shared/src/main/scala/sample/cask/model/ApiResponseData.scala create mode 100644 samples/server/petstore/scala-cask/shared/src/main/scala/sample/cask/model/Category.scala create mode 100644 samples/server/petstore/scala-cask/shared/src/main/scala/sample/cask/model/CategoryData.scala create mode 100644 samples/server/petstore/scala-cask/shared/src/main/scala/sample/cask/model/Order.scala create mode 100644 samples/server/petstore/scala-cask/shared/src/main/scala/sample/cask/model/OrderData.scala create mode 100644 samples/server/petstore/scala-cask/shared/src/main/scala/sample/cask/model/Pet.scala create mode 100644 samples/server/petstore/scala-cask/shared/src/main/scala/sample/cask/model/PetData.scala create mode 100644 samples/server/petstore/scala-cask/shared/src/main/scala/sample/cask/model/Tag.scala create mode 100644 samples/server/petstore/scala-cask/shared/src/main/scala/sample/cask/model/TagData.scala create mode 100644 samples/server/petstore/scala-cask/shared/src/main/scala/sample/cask/model/User.scala create mode 100644 samples/server/petstore/scala-cask/shared/src/main/scala/sample/cask/model/UserData.scala create mode 100644 samples/server/petstore/scala-cask/shared/src/main/scala/sample/cask/model/package.scala create mode 100644 website/static/img/companies/searchapi.png diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 3c64d59bd9bf..92423daeffb4 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -26,8 +26,8 @@ "java.configuration.runtimes": [ { "name": "JavaSE-11", - "path": "/usr/local/sdkman/candidates/java/11.0.16.1-ms", - "sources": "/usr/local/sdkman/candidates/java/11.0.16.1-ms/lib/src.zip", + "path": "/usr/local/sdkman/candidates/java/current", + "sources": "/usr/local/sdkman/candidates/java/current/lib/src.zip", "javadoc": "https://docs.oracle.com/en/java/javase/11/docs/api", "default": true } @@ -50,4 +50,4 @@ // "postCreateCommand": "mvn clean package -DskipTests", // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. "remoteUser": "vscode" -} \ No newline at end of file +} diff --git a/.github/workflows/openapi-generator.yaml b/.github/workflows/openapi-generator.yaml index 1e9fb800ba5f..6070ca97d95b 100644 --- a/.github/workflows/openapi-generator.yaml +++ b/.github/workflows/openapi-generator.yaml @@ -140,8 +140,23 @@ jobs: with: name: openapi-generator-cli.jar path: modules/openapi-generator-cli/target + - name: Delete samples that are entirely generated + run: | + rm -rf samples/client/petstore/csharp/generichost/net8/AllOf + rm -rf samples/client/petstore/csharp/generichost/net8/AnyOf + rm -rf samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare + rm -rf samples/client/petstore/csharp/generichost/net8/FormModels + rm -rf samples/client/petstore/csharp/generichost/net8/NullReferenceTypes + rm -rf samples/client/petstore/csharp/generichost/net8/OneOf + rm -rf samples/client/petstore/csharp/generichost/net8/Petstore + rm -rf samples/client/petstore/csharp/generichost/net8/SourceGeneration + rm -rf samples/client/petstore/csharp/generichost/net8/UseDateTimeForDate + rm -rf samples/client/petstore/csharp/generichost/standard2.0/Petstore - name: Generate samples - run: bash bin/generate-samples.sh + run: | + bash bin/generate-samples.sh + # when a sample is deleted, you have to generate it twice for all files to get created + bash bin/generate-samples.sh - name: Verify git status run: | if [[ "$(git status --porcelain)" != "" ]]; then diff --git a/.github/workflows/samples-dotnet.yaml b/.github/workflows/samples-dotnet.yaml index 5abec2690c33..9481be79501e 100644 --- a/.github/workflows/samples-dotnet.yaml +++ b/.github/workflows/samples-dotnet.yaml @@ -23,6 +23,7 @@ jobs: sample: - samples/client/petstore/csharp/generichost/net8/AllOf - samples/client/petstore/csharp/generichost/net8/AnyOf + - samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare - samples/client/petstore/csharp/generichost/net8/FormModels - samples/client/petstore/csharp/generichost/net8/ManualPetstoreTests - samples/client/petstore/csharp/generichost/net8/ManualSourceGenerationTests diff --git a/.github/workflows/samples-java-client-jdk11.yaml b/.github/workflows/samples-java-client-jdk11.yaml index 11eb1fb933cd..a8d60c39b35d 100644 --- a/.github/workflows/samples-java-client-jdk11.yaml +++ b/.github/workflows/samples-java-client-jdk11.yaml @@ -73,6 +73,7 @@ jobs: - samples/client/petstore/java/resttemplate-swagger2/ - samples/openapi3/client/petstore/java/jersey2-java8-swagger2/ - samples/client/others/java/okhttp-gson-oneOf/ + - samples/client/echo_api/java/okhttp-gson-user-defined-templates/ - samples/client/others/java/resttemplate-useAbstractionForFiles/ - samples/client/others/java/webclient-useAbstractionForFiles/ - samples/client/others/java/jersey2-oneOf-duplicates/ diff --git a/.github/workflows/samples-php8.yaml b/.github/workflows/samples-php8.yaml index 82ead5c953a6..0d2941f6e3ce 100644 --- a/.github/workflows/samples-php8.yaml +++ b/.github/workflows/samples-php8.yaml @@ -4,9 +4,11 @@ on: push: paths: - samples/server/petstore/php-symfony/SymfonyBundle-php/** + - samples/server/petstore/php-flight/** pull_request: paths: - samples/server/petstore/php-symfony/SymfonyBundle-php/** + - samples/server/petstore/php-flight/** jobs: build: name: Build PHP projects @@ -17,6 +19,7 @@ jobs: sample: # servers - samples/server/petstore/php-symfony/SymfonyBundle-php/ + - samples/server/petstore/php-flight/ steps: - uses: actions/checkout@v4 - name: Setup PHP with tools diff --git a/.github/workflows/samples-scala.yaml b/.github/workflows/samples-scala.yaml index 953b35355c79..eb1a3ac43cff 100644 --- a/.github/workflows/samples-scala.yaml +++ b/.github/workflows/samples-scala.yaml @@ -32,6 +32,7 @@ jobs: - samples/server/petstore/scalatra - samples/server/petstore/scala-finch # cannot be tested with jdk11 - samples/server/petstore/scala-http4s-server + - samples/server/petstore/scala-cask steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 diff --git a/.gitignore b/.gitignore index bdc4f34b4d82..0bebe6bad6e0 100644 --- a/.gitignore +++ b/.gitignore @@ -85,6 +85,11 @@ samples/client/petstore/cpp-restsdk/CMakeCache.txt samples/client/petstore/cpp-restsdk/CMakeFiles/ samples/client/petstore/cpp-restsdk/Makefile samples/client/petstore/cpp-restsdk/cmake_install.cmake +samples/client/petstore/cpp-restsdk/client/CMakeFiles +samples/client/petstore/cpp-restsdk/client/Makefile +samples/client/petstore/cpp-restsdk/client/cmake_install.cmake +samples/client/petstore/cpp-restsdk/client/CppRestPetstoreClientConfig.cmake +samples/client/petstore/cpp-restsdk/client/CMakeCache.txt #Java/Android **/.gradle diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 25b8c613622c..695a8d95a02d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -31,7 +31,7 @@ Please file the pull request against the correct branch, e.g. `master` for non-b All the code generators can be found in [modules/openapi-generator/src/main/java/org/openapitools/codegen/languages](https://github.com/openapitools/openapi-generator/tree/master/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages) -If you want to add a new generator, follow the [new-generator](https://openapi-generator.tech/docs/new-generator) guide. +If you want to add a new generator, follow the [new-generator](https://openapi-generator.tech/docs/new-generator) guide. ### Templates @@ -84,6 +84,26 @@ For [Vendor Extensions](https://github.com/OAI/OpenAPI-Specification/blob/master - For language-specified vendor extension, put it in the form of `x-{lang}-{extension-name}`. e.g. `x-objc-operation-id`, `x-java-feign-retry-limit` - For a list of existing vendor extensions in use, please refer to https://github.com/openapitools/openapi-generator/wiki/Vendor-Extensions. If you've added new vendor extensions as part of your PR, please update the wiki page. +### Building + +The `openapi-generator-cli` can be built using the following command. This will generate the `openapi-generator-cli.jar` in the `modules/openapi-generator-cli/target` directory without running the tests and generating the Javadocs. + +```shell +./mvnw clean install -DskipTests -Dmaven.javadoc.skip=true +``` + +Or on Windows: + +```shell +mvnw.cmd clean install -DskipTests -Dmaven.javadoc.skip=true +``` + +The binary can run via `java -jar`. For example: + +```shell +java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar help +``` + ### Testing To add test cases (optional) covering the change in the code generator, please refer to [modules/openapi-generator/src/test/java/org/openapitools/codegen](https://github.com/openapitools/openapi-generator/tree/master/modules/openapi-generator/src/test/java/org/openapitools/codegen) @@ -112,5 +132,5 @@ See [OpenAPI Tools wiki](https://github.com/OpenAPITools/openapi-generator/wiki/ - File a PR with meaningful title, description and commit messages - Make sure the option "Allow edits from maintainers" in the PR is selected so that the maintainers can update your PRs with minor fixes, if needed. - Recommended git settings - - `git config core.autocrlf input` to tell Git convert CRLF to LF on commit but not the other way around + - `git config core.autocrlf input` to tell Git convert CRLF to LF on commit but not the other way around - To close an issue (e.g. issue 1542) automatically after a PR is merged, use keywords "fix", "close", "resolve" in the PR description, e.g. `fix #1542`. (Ref: [closing issues using keywords](https://help.github.com/articles/closing-issues-using-keywords/)) diff --git a/README.md b/README.md index 053aa0d9efff..84ce04142c02 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@
-[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`7.5.0`): +[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`7.6.0`): [![Build Status](https://api.travis-ci.com/OpenAPITools/openapi-generator.svg?branch=master&status=passed)](https://app.travis-ci.com/github/OpenAPITools/openapi-generator/builds) [![Integration Test2](https://circleci.com/gh/OpenAPITools/openapi-generator.svg?style=shield)](https://circleci.com/gh/OpenAPITools/openapi-generator) [![Windows Test](https://ci.appveyor.com/api/projects/status/github/openapitools/openapi-generator?branch=master&svg=true&passingText=Windows%20Test%20-%20OK&failingText=Windows%20Test%20-%20Fails)](https://ci.appveyor.com/project/WilliamCheng/openapi-generator) @@ -61,7 +61,7 @@ If you find OpenAPI Generator useful for work, please consider asking your compa [](https://bump.sh/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) [](https://www.bileto.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) [](https://www.bairesdev.com/sponsoring-open-source-projects/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) -[](https://www.dm-jobs.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://www.dmtech.de/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) [](https://adyen.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) [](https://fornex.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) [](https://runalloy.com/signup?utm_source=github&utm_medium=referral&utm_campaign=1524_openapigenerator) @@ -85,7 +85,7 @@ OpenAPI Generator allows generation of API client libraries (SDK generation), se | | Languages/Frameworks | | -------------------------------- |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **API clients** | **ActionScript**, **Ada**, **Apex**, **Bash**, **C**, **C#** (.net 2.0, 3.5 or later, .NET Standard 1.3 - 2.1, .NET Core 3.1, .NET 5.0. Libraries: RestSharp, GenericHost, HttpClient), **C++** (Arduino, cpp-restsdk, Qt5, Tizen, Unreal Engine 4), **Clojure**, **Crystal**, **Dart**, **Elixir**, **Elm**, **Eiffel**, **Erlang**, **Go**, **Groovy**, **Haskell** (http-client, Servant), **Java** (Apache HttpClient 4.x, Apache HttpClient 5.x, Jersey2.x, OkHttp, Retrofit1.x, Retrofit2.x, Feign, RestTemplate, RESTEasy, Vertx, Google API Client Library for Java, Rest-assured, Spring 5 Web Client, MicroProfile Rest Client, Helidon), **Jetbrains HTTP Client**, **Julia**, **k6**, **Kotlin**, **Lua**, **N4JS**, **Nim**, **Node.js/JavaScript** (ES5, ES6, AngularJS with Google Closure Compiler annotations, Flow types, Apollo GraphQL DataStore), **Objective-C**, **OCaml**, **Perl**, **PHP**, **PowerShell**, **Python**, **R**, **Ruby**, **Rust** (hyper, reqwest, rust-server), **Scala** (akka, http4s, scalaz, sttp, swagger-async-httpclient, pekko), **Swift** (2.x, 3.x, 4.x, 5.x), **Typescript** (AngularJS, Angular (9.x - 17.x), Aurelia, Axios, Fetch, Inversify, jQuery, Nestjs, Node, redux-query, Rxjs), **XoJo**, **Zapier** | -| **Server stubs** | **Ada**, **C#** (ASP.NET Core, Azure Functions), **C++** (Pistache, Restbed, Qt5 QHTTPEngine), **Erlang**, **F#** (Giraffe), **Go** (net/http, Gin, Echo), **Haskell** (Servant, Yesod), **Java** (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, Jersey, RestEasy, Play Framework, [PKMST](https://github.com/ProKarma-Inc/pkmst-getting-started-examples), [Vert.x](https://vertx.io/), [Apache Camel](https://camel.apache.org/), [Helidon](https://helidon.io/)), **Julia**, **Kotlin** (Spring Boot, [Ktor](https://github.com/ktorio/ktor), [Vert.x](https://vertx.io/)), **PHP** (Laravel, Lumen, [Mezzio (fka Zend Expressive)](https://github.com/mezzio/mezzio), Slim, Silex, [Symfony](https://symfony.com/)), **Python** (FastAPI, Flask), **NodeJS**, **Ruby** (Sinatra, Rails5), **Rust** ([rust-server](https://openapi-generator.tech/docs/generators/rust-server/)), **Scala** (Akka, [Finch](https://github.com/finagle/finch), [Lagom](https://github.com/lagom/lagom), [Play](https://www.playframework.com/), Scalatra) | +| **Server stubs** | **Ada**, **C#** (ASP.NET Core, Azure Functions), **C++** (Pistache, Restbed, Qt5 QHTTPEngine), **Erlang**, **F#** (Giraffe), **Go** (net/http, Gin, Echo), **Haskell** (Servant, Yesod), **Java** (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, Jersey, RestEasy, Play Framework, [PKMST](https://github.com/ProKarma-Inc/pkmst-getting-started-examples), [Vert.x](https://vertx.io/), [Apache Camel](https://camel.apache.org/), [Helidon](https://helidon.io/)), **Julia**, **Kotlin** (Spring Boot, [Ktor](https://github.com/ktorio/ktor), [Vert.x](https://vertx.io/)), **PHP** ([Flight](https://docs.flightphp.com/), Laravel, Lumen, [Mezzio (fka Zend Expressive)](https://github.com/mezzio/mezzio), Slim, Silex, [Symfony](https://symfony.com/)), **Python** (FastAPI, Flask), **NodeJS**, **Ruby** (Sinatra, Rails5), **Rust** ([rust-server](https://openapi-generator.tech/docs/generators/rust-server/)), **Scala** (Akka, [Finch](https://github.com/finagle/finch), [Lagom](https://github.com/lagom/lagom), [Play](https://www.playframework.com/), [Cask](https://github.com/com-lihaoyi/cask), Scalatra) | | **API documentation generators** | **HTML**, **Confluence Wiki**, **Asciidoc**, **Markdown**, **PlantUML** | | **Configuration files** | [**Apache2**](https://httpd.apache.org/) | | **Others** | **GraphQL**, **JMeter**, **Ktorm**, **MySQL Schema**, **Postman Collection**, **Protocol Buffer**, **WSDL** | @@ -126,8 +126,8 @@ The OpenAPI Specification has undergone 3 revisions since initial creation in 20 | OpenAPI Generator Version | Release Date | Notes | | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------- | -| 7.5.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/7.5.0-SNAPSHOT/) | 12.04.2024 | Minor release with breaking changes (with fallback) | -| [7.4.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v7.4.0) (latest stable release) | 11.03.2024 | Minor release with breaking changes (with fallback) | +| 7.6.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/7.6.0-SNAPSHOT/) | 17.54.2024 | Minor release with breaking changes (with fallback) | +| [7.5.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v7.5.0) (latest stable release) | 17.04.2024 | Minor release with breaking changes (with fallback) | | [6.6.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v6.6.0) | 11.05.2023 | Minor release with breaking changes (with fallback) | | [5.4.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v5.4.0) | 31.01.2022 | Minor release with breaking changes (with fallback) | | [4.3.1](https://github.com/OpenAPITools/openapi-generator/releases/tag/v4.3.1) | 06.05.2020 | Patch release (enhancements, bug fixes, etc) | @@ -190,16 +190,16 @@ See the different versions of the [openapi-generator-cli](https://search.maven.o If you're looking for the latest stable version, you can grab it directly from Maven.org (Java 11 runtime at a minimum): -JAR location: `https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.4.0/openapi-generator-cli-7.4.0.jar` +JAR location: `https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.5.0/openapi-generator-cli-7.5.0.jar` For **Mac/Linux** users: ```sh -wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.4.0/openapi-generator-cli-7.4.0.jar -O openapi-generator-cli.jar +wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.5.0/openapi-generator-cli-7.5.0.jar -O openapi-generator-cli.jar ``` For **Windows** users, you will need to install [wget](http://gnuwin32.sourceforge.net/packages/wget.htm) or you can use Invoke-WebRequest in PowerShell (3.0+), e.g. ``` -Invoke-WebRequest -OutFile openapi-generator-cli.jar https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.4.0/openapi-generator-cli-7.4.0.jar +Invoke-WebRequest -OutFile openapi-generator-cli.jar https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.5.0/openapi-generator-cli-7.5.0.jar ``` After downloading the JAR, run `java -jar openapi-generator-cli.jar help` to show the usage. @@ -705,6 +705,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - [REST United](https://restunited.com) - [Robocorp](https://www.robocorp.com) - [Robotinfra](https://www.robotinfra.com) +- [SearchApi](https://www.searchapi.io/) - [SmartHR](https://smarthr.co.jp/) - [Sony Interactive Entertainment](https://www.sie.com/en/index.html) - [Splitit](https://www.splitit.com/) @@ -931,6 +932,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in - 2023-12-10 - [UnityでOpenAPI Generatorを使う](https://www.youtube.com/watch?v=CbNwKVV5LRM) by [Soup Tori](https://www.youtube.com/@souptori8417) - 2024-03-04 - [Generating TypeScript Types with OpenAPI for REST API Consumption](https://www.pullrequest.com/blog/generating-typescript-types-with-openapi-for-rest-api-consumption/) by [PullRequest](https://www.pullrequest.com/) - 2024-03-07 - [Fully typed Web Apps with OpenAPI (Part 1)](https://medium.com/@gfox1984/fully-typed-web-apps-with-openapi-part-1-595d55766670) by [Guillaume Renard](https://medium.com/@gfox1984) +- 2024-03-08 - [Laravel OpenAPIによる "辛くない" スキーマ駆動開発](https://fortee.jp/phperkaigi-2024/proposal/9e2e6c38-d078-4efa-99b4-83ebf9033b34) by [KentarouTakeda](https://twitter.com/KentarouTakeda) ## [6 - About Us](#table-of-contents) @@ -1090,6 +1092,7 @@ Here is a list of template creators: * Kotlin (Vertx): @Wooyme * Kotlin (JAX-RS): @anttileppa * NodeJS Express: @YishTish + * PHP Flight: @daniel-sc * PHP Laravel: @renepardon * PHP Lumen: @abcsun * PHP Mezzio (with Path Handler): @Articus @@ -1102,6 +1105,7 @@ Here is a list of template creators: * Ruby on Rails 5: @zlx * Rust (rust-server): @metaswitch * Scala Akka: @Bouillie + * Scala Cask: @aaronp * Scala Finch: @jimschubert [:heart:](https://www.patreon.com/jimschubert) * Scala Lagom: @gmkumar2005 * Scala Play: @adigerber diff --git a/appveyor.yml b/appveyor.yml index 2df9330db234..b0d30b217bfb 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -45,6 +45,7 @@ build_script: test_script: - dotnet test samples\client\petstore\csharp\generichost\net8\AllOf\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj - dotnet test samples\client\petstore\csharp\generichost\net8\AnyOf\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj + - dotnet test samples\client\petstore\csharp\generichost\net8\AnyOfNoCompare\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj - dotnet test samples\client\petstore\csharp\generichost\net8\FormModels\src\Org.OpenAPITools.Test\Org.OpenAPITools.Test.csproj - dotnet test samples\client\petstore\csharp\generichost\net8\ManualSourceGenerationTests\ManualTests.Latest.UseSourceGeneration\ManualTests.Latest.UseSourceGeneration.csproj - dotnet test samples\client\petstore\csharp\generichost\net8\ManualPetstoreTests\OpenAPIClient-generichost-manual-tests\OpenAPIClient-generichost-manual-tests.csproj diff --git a/bin/configs/csharp-generichost-net8-anyOfNoCompare.yaml b/bin/configs/csharp-generichost-net8-anyOfNoCompare.yaml new file mode 100644 index 000000000000..e78b1dc2dda6 --- /dev/null +++ b/bin/configs/csharp-generichost-net8-anyOfNoCompare.yaml @@ -0,0 +1,13 @@ +# for csharp generichost +generatorName: csharp +outputDir: samples/client/petstore/csharp/generichost/net8/AnyOfNoCompare +inputSpec: modules/openapi-generator/src/test/resources/3_0/anyOf.yaml +library: generichost +templateDir: modules/openapi-generator/src/main/resources/csharp +additionalProperties: + packageGuid: '{321C8C3F-0156-40C1-AE42-D59761FB9B6C}' + useCompareNetObjects: false + disallowAdditionalPropertiesIfNotPresent: false + nullableReferenceTypes: true + equatable: true + targetFramework: net8.0 diff --git a/bin/configs/unmaintained/html2.yaml b/bin/configs/html2.yaml similarity index 100% rename from bin/configs/unmaintained/html2.yaml rename to bin/configs/html2.yaml diff --git a/bin/configs/java-microprofile-rest-client-3.0-jackson-with-xml.yaml b/bin/configs/java-microprofile-rest-client-3.0-jackson-with-xml.yaml index af31232ee24b..8dc08e4a4bb2 100644 --- a/bin/configs/java-microprofile-rest-client-3.0-jackson-with-xml.yaml +++ b/bin/configs/java-microprofile-rest-client-3.0-jackson-with-xml.yaml @@ -8,4 +8,5 @@ additionalProperties: serializationLibrary: jackson artifactId: microprofile-rest-client-3-jackson-with-xml configKey: petstore - microprofileRestClientVersion: "3.0" \ No newline at end of file + microprofileRestClientVersion: "3.0" + hideGenerationTimestamp: true diff --git a/bin/configs/java-microprofile-rest-client-3.0-jackson.yaml b/bin/configs/java-microprofile-rest-client-3.0-jackson.yaml index 92d945a3cb93..06d0814d2f47 100644 --- a/bin/configs/java-microprofile-rest-client-3.0-jackson.yaml +++ b/bin/configs/java-microprofile-rest-client-3.0-jackson.yaml @@ -7,4 +7,5 @@ additionalProperties: serializationLibrary: jackson artifactId: microprofile-rest-client-3-jackson configKey: petstore - microprofileRestClientVersion: "3.0" \ No newline at end of file + microprofileRestClientVersion: "3.0" + hideGenerationTimestamp: true diff --git a/bin/configs/java-okhttp-gson-swagger1.yaml b/bin/configs/java-okhttp-gson-swagger1.yaml index c8fea398d4ce..df09bc1f9df6 100644 --- a/bin/configs/java-okhttp-gson-swagger1.yaml +++ b/bin/configs/java-okhttp-gson-swagger1.yaml @@ -9,4 +9,5 @@ additionalProperties: useOneOfDiscriminatorLookup: "true" disallowAdditionalPropertiesIfNotPresent: false annotationLibrary: "swagger1" - +openapiNormalizer: + SET_TAGS_FOR_ALL_OPERATIONS: common diff --git a/bin/configs/java-okhttp-user-defined-templates.yaml b/bin/configs/java-okhttp-user-defined-templates.yaml new file mode 100644 index 000000000000..495cae7bdfcf --- /dev/null +++ b/bin/configs/java-okhttp-user-defined-templates.yaml @@ -0,0 +1,17 @@ +generatorName: java +outputDir: samples/client/echo_api/java/okhttp-gson-user-defined-templates +library: okhttp-gson +inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml +templateDir: modules/openapi-generator/src/main/resources/Java +additionalProperties: + hideGenerationTimestamp: "true" +files: + README.md: + destinationFilename: info.md + api_doc.mustache: + templateType: APIDocs + destinationFilename: Documentation.md + pojo.mustache: + templateType: Model + folder: modelCopy + destinationFilename: .java diff --git a/bin/configs/jaxrs-spec-quarkus-mutiny.yaml b/bin/configs/jaxrs-spec-quarkus-mutiny.yaml new file mode 100644 index 000000000000..5620523e027f --- /dev/null +++ b/bin/configs/jaxrs-spec-quarkus-mutiny.yaml @@ -0,0 +1,15 @@ +generatorName: jaxrs-spec +outputDir: samples/server/petstore/jaxrs-spec-quarkus-mutiny +inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml +templateDir: modules/openapi-generator/src/main/resources/JavaJaxRS/spec +additionalProperties: + artifactId: jaxrs-spec-petstore-server + serializableModel: "true" + hideGenerationTimestamp: "true" + implicitHeadersRegex: (api_key|enum_header_string) + generateBuilders: "true" + useMicroProfileOpenAPIAnnotations: "true" + useAsync: "true" + useMutiny: "true" + library: "quarkus" + dateLibrary: "java8-localdatetime" diff --git a/bin/configs/kotlin-model-prefix-type-mapping-echo-api.yaml b/bin/configs/kotlin-model-prefix-type-mapping-echo-api.yaml index b790566ee439..e765f0def5b5 100644 --- a/bin/configs/kotlin-model-prefix-type-mapping-echo-api.yaml +++ b/bin/configs/kotlin-model-prefix-type-mapping-echo-api.yaml @@ -12,4 +12,4 @@ additionalProperties: enumPropertyNaming: UPPERCASE serializationLibrary: gson openapiNormalizer: - SIMPLIFY_ONEOF_ANYOF=false + SIMPLIFY_ONEOF_ANYOF: false diff --git a/bin/configs/kotlin-model-prefix-type-mapping.yaml b/bin/configs/kotlin-model-prefix-type-mapping.yaml index 993e0f197cf0..841b5af060d0 100644 --- a/bin/configs/kotlin-model-prefix-type-mapping.yaml +++ b/bin/configs/kotlin-model-prefix-type-mapping.yaml @@ -12,4 +12,4 @@ additionalProperties: enumPropertyNaming: UPPERCASE serializationLibrary: gson openapiNormalizer: - SIMPLIFY_ONEOF_ANYOF=false + SIMPLIFY_ONEOF_ANYOF: false diff --git a/bin/configs/manual/rust-axum-petstore-with-fake-endpoints-models-for-testing.yaml b/bin/configs/manual/rust-axum-petstore-with-fake-endpoints-models-for-testing.yaml index 69ca39092e45..5a537e65b85c 100644 --- a/bin/configs/manual/rust-axum-petstore-with-fake-endpoints-models-for-testing.yaml +++ b/bin/configs/manual/rust-axum-petstore-with-fake-endpoints-models-for-testing.yaml @@ -7,4 +7,6 @@ additionalProperties: hideGenerationTimestamp: "true" packageName: petstore-with-fake-endpoints-models-for-testing publishRustRegistry: crates-io -enablePostProcessFile: true \ No newline at end of file +globalProperties: + skipFormModel: false +enablePostProcessFile: true diff --git a/bin/configs/manual/rust-axum-petstore.yaml b/bin/configs/manual/rust-axum-petstore.yaml index 3149c7418582..179e370639a5 100644 --- a/bin/configs/manual/rust-axum-petstore.yaml +++ b/bin/configs/manual/rust-axum-petstore.yaml @@ -6,4 +6,6 @@ generateAliasAsModel: true additionalProperties: hideGenerationTimestamp: "true" packageName: petstore +globalProperties: + skipFormModel: false enablePostProcessFile: true diff --git a/bin/configs/php-flight.yaml b/bin/configs/php-flight.yaml new file mode 100644 index 000000000000..2c3dedc1911d --- /dev/null +++ b/bin/configs/php-flight.yaml @@ -0,0 +1,6 @@ +generatorName: php-flight +outputDir: samples/server/petstore/php-flight +inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml +templateDir: modules/openapi-generator/src/main/resources/php-flight +additionalProperties: + hideGenerationTimestamp: "true" diff --git a/bin/configs/scala-cask-petstore-new.yaml b/bin/configs/scala-cask-petstore-new.yaml new file mode 100644 index 000000000000..bb37d3587e7f --- /dev/null +++ b/bin/configs/scala-cask-petstore-new.yaml @@ -0,0 +1,13 @@ +generatorName: scala-cask +outputDir: samples/server/petstore/scala-cask +inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml +templateDir: modules/openapi-generator/src/main/resources/scala-cask +additionalProperties: + hideGenerationTimestamp: "true" + artifactId: scala-cask-petstore + groupId: "cask.groupId" + package: "sample.cask" + modelPackage: "sample.cask.model" + apiPackage: "sample.cask.api" + gitRepoId: "sample-cask-repo" + gitUserId: "sample-cask-user" \ No newline at end of file diff --git a/bin/utils/test_file_list.yaml b/bin/utils/test_file_list.yaml index 6bb064f509c6..c86ca6ea74ff 100644 --- a/bin/utils/test_file_list.yaml +++ b/bin/utils/test_file_list.yaml @@ -10,7 +10,7 @@ - filename: "samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/ClientTest.java" sha256: db505f7801fef62c13a08a8e9ca1fc4c5c947ab46b46f12943139d353feacf17 - filename: "samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/JSONTest.java" - sha256: c479b587cf0d51fa550eb81d33b277081807b87dc28649027d1164224c25ad0a + sha256: 8210bdaf06aae8dc46521515a8a0ef10e48c980fadd3efd95313e6c806f409c2 - filename: "samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/api/PetApiTest.java" sha256: 0d64cdc11809a7b5b952ccdad2bd91bd0045b3894d6fabf3e368fa0be12b8217 - filename: "samples/client/petstore/java/okhttp-gson/src/test/java/org/openapitools/client/model/PetTest.java" diff --git a/buildConfig.yaml b/buildConfig.yaml deleted file mode 100644 index 6be60a277b9d..000000000000 --- a/buildConfig.yaml +++ /dev/null @@ -1,4 +0,0 @@ -project: - maven: - skipSonar: true - diff --git a/docs/contributing.md b/docs/contributing.md index 9502582ac4e2..2b7f268aefbb 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -35,7 +35,7 @@ Please file the pull request against the correct branch, e.g. `master` for non-b All the code generators can be found in [modules/openapi-generator/src/main/java/org/openapitools/codegen/languages](https://github.com/openapitools/openapi-generator/tree/master/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages) -If you want to add a new generator, follow the [new-generator](https://openapi-generator.tech/docs/new-generator) guide. +If you want to add a new generator, follow the [new-generator](https://openapi-generator.tech/docs/new-generator) guide. ### Templates @@ -88,6 +88,26 @@ For [Vendor Extensions](https://github.com/OAI/OpenAPI-Specification/blob/master - For language-specified vendor extension, put it in the form of `x-{lang}-{extension-name}`. e.g. `x-objc-operation-id`, `x-java-feign-retry-limit` - For a list of existing vendor extensions in use, please refer to https://github.com/openapitools/openapi-generator/wiki/Vendor-Extensions. If you've added new vendor extensions as part of your PR, please update the wiki page. +### Building + +The `openapi-generator-cli` can be built using the following command. This will generate the `openapi-generator-cli.jar` in the `modules/openapi-generator-cli/target` directory without running the tests and generating the Javadocs. + +```shell +./mvnw clean install -DskipTests -Dmaven.javadoc.skip=true +``` + +Or on Windows: + +```shell +mvnw.cmd clean install -DskipTests -Dmaven.javadoc.skip=true +``` + +The binary can run via `java -jar`. For example: + +```shell +java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar help +``` + ### Testing To add test cases (optional) covering the change in the code generator, please refer to [modules/openapi-generator/src/test/java/org/openapitools/codegen](https://github.com/openapitools/openapi-generator/tree/master/modules/openapi-generator/src/test/java/org/openapitools/codegen) @@ -116,5 +136,5 @@ See [OpenAPI Tools wiki](https://github.com/OpenAPITools/openapi-generator/wiki/ - File a PR with meaningful title, description and commit messages - Make sure the option "Allow edits from maintainers" in the PR is selected so that the maintainers can update your PRs with minor fixes, if needed. - Recommended git settings - - `git config core.autocrlf input` to tell Git convert CRLF to LF on commit but not the other way around + - `git config core.autocrlf input` to tell Git convert CRLF to LF on commit but not the other way around - To close an issue (e.g. issue 1542) automatically after a PR is merged, use keywords "fix", "close", "resolve" in the PR description, e.g. `fix #1542`. (Ref: [closing issues using keywords](https://help.github.com/articles/closing-issues-using-keywords/)) diff --git a/docs/customization.md b/docs/customization.md index 12bc5b0b88ee..28cb619f1ebf 100644 --- a/docs/customization.md +++ b/docs/customization.md @@ -304,6 +304,8 @@ You can use also `config.yml` with following equivalent example: apiPackage: "petstore" ``` +Another example of config file can be found in [modules/openapi-generator/src/test/resources/sampleConfig.json](https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/test/resources/sampleConfig.json) + Supported config options can be different per language. Running `config-help -g {lang}` will show available options. **These options are applied via configuration file (e.g. config.json or config.yml) or by passing them with `-p {optionName}={optionValue}`**. (If `-p {optionName}` does not work, please open a [ticket](https://github.com/openapitools/openapi-generator/issues/new) and we'll look into it) diff --git a/docs/generators.md b/docs/generators.md index ca6e426f9b98..03c75077a3ac 100644 --- a/docs/generators.md +++ b/docs/generators.md @@ -120,6 +120,7 @@ The following generators are available: * [kotlin-spring](generators/kotlin-spring.md) * [kotlin-vertx (beta)](generators/kotlin-vertx.md) * [nodejs-express-server (beta)](generators/nodejs-express-server.md) +* [php-flight (experimental)](generators/php-flight.md) * [php-laravel](generators/php-laravel.md) * [php-lumen](generators/php-lumen.md) * [php-mezzio-ph](generators/php-mezzio-ph.md) @@ -134,6 +135,7 @@ The following generators are available: * [rust-axum (beta)](generators/rust-axum.md) * [rust-server](generators/rust-server.md) * [scala-akka-http-server (beta)](generators/scala-akka-http-server.md) +* [scala-cask](generators/scala-cask.md) * [scala-finch](generators/scala-finch.md) * [scala-http4s-server](generators/scala-http4s-server.md) * [scala-lagom-server](generators/scala-lagom-server.md) diff --git a/docs/generators/cpp-restsdk.md b/docs/generators/cpp-restsdk.md index c60305614def..ed3157397d85 100644 --- a/docs/generators/cpp-restsdk.md +++ b/docs/generators/cpp-restsdk.md @@ -32,6 +32,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl | Type/Alias | Imports | | ---------- | ------- | +|AnyType|#include "AnyType.h"| |HttpContent|#include "HttpContent.h"| |Object|#include "Object.h"| |std::map|#include <map>| @@ -184,7 +185,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |Uuid|✗| |Array|✓|OAS2,OAS3 |Null|✗|OAS3 -|AnyType|✗|OAS2,OAS3 +|AnyType|✓|OAS2,OAS3 |Object|✓|OAS2,OAS3 |Maps|✓|ToolingExtension |CollectionFormat|✓|OAS2 diff --git a/docs/generators/go.md b/docs/generators/go.md index 31dae23e98b6..e81de548e957 100644 --- a/docs/generators/go.md +++ b/docs/generators/go.md @@ -22,6 +22,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |enumClassPrefix|Prefix enum with class name| |false| |generateInterfaces|Generate interfaces for api classes| |false| |generateMarshalJSON|Generate MarshalJSON method| |true| +|generateUnmarshalJSON|Generate UnmarshalJSON method| |true| |hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true| |isGoSubmodule|whether the generated Go module is a submodule| |false| |packageName|Go package name (convention: lowercase).| |openapi| diff --git a/docs/generators/groovy.md b/docs/generators/groovy.md index 69a10b11a2a3..1c83fce38742 100644 --- a/docs/generators/groovy.md +++ b/docs/generators/groovy.md @@ -135,6 +135,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
    +
  • _
  • abstract
  • apiclient
  • apiexception
  • diff --git a/docs/generators/java-camel.md b/docs/generators/java-camel.md index b8333667cc2c..a46b87970da5 100644 --- a/docs/generators/java-camel.md +++ b/docs/generators/java-camel.md @@ -174,6 +174,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
      +
    • _
    • abstract
    • apiclient
    • apiexception
    • diff --git a/docs/generators/java-helidon-client.md b/docs/generators/java-helidon-client.md index 5b7b6253f71b..484df2e51152 100644 --- a/docs/generators/java-helidon-client.md +++ b/docs/generators/java-helidon-client.md @@ -128,6 +128,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
        +
      • _
      • abstract
      • apiclient
      • apiexception
      • diff --git a/docs/generators/java-helidon-server.md b/docs/generators/java-helidon-server.md index ef648ea3be95..3c2e448a9137 100644 --- a/docs/generators/java-helidon-server.md +++ b/docs/generators/java-helidon-server.md @@ -130,6 +130,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
          +
        • _
        • abstract
        • apiclient
        • apiexception
        • diff --git a/docs/generators/java-inflector.md b/docs/generators/java-inflector.md index d3536d0b5409..93bcc5e03d4a 100644 --- a/docs/generators/java-inflector.md +++ b/docs/generators/java-inflector.md @@ -132,6 +132,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
            +
          • _
          • abstract
          • apiclient
          • apiexception
          • diff --git a/docs/generators/java-micronaut-client.md b/docs/generators/java-micronaut-client.md index 96bc9f58b321..c83bce61bad1 100644 --- a/docs/generators/java-micronaut-client.md +++ b/docs/generators/java-micronaut-client.md @@ -153,6 +153,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
              +
            • _
            • abstract
            • apiclient
            • apiexception
            • diff --git a/docs/generators/java-micronaut-server.md b/docs/generators/java-micronaut-server.md index bbbb99df9f00..fce177a46979 100644 --- a/docs/generators/java-micronaut-server.md +++ b/docs/generators/java-micronaut-server.md @@ -153,6 +153,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
                +
              • _
              • abstract
              • apiclient
              • apiexception
              • diff --git a/docs/generators/java-msf4j.md b/docs/generators/java-msf4j.md index 6e50953454b0..624040df9beb 100644 --- a/docs/generators/java-msf4j.md +++ b/docs/generators/java-msf4j.md @@ -138,6 +138,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
                  +
                • _
                • abstract
                • apiclient
                • apiexception
                • diff --git a/docs/generators/java-pkmst.md b/docs/generators/java-pkmst.md index 28512a4a8ac7..20345fb4a23c 100644 --- a/docs/generators/java-pkmst.md +++ b/docs/generators/java-pkmst.md @@ -139,6 +139,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
                    +
                  • _
                  • abstract
                  • apiclient
                  • apiexception
                  • diff --git a/docs/generators/java-play-framework.md b/docs/generators/java-play-framework.md index ad76ca0124cd..c83e4827e31a 100644 --- a/docs/generators/java-play-framework.md +++ b/docs/generators/java-play-framework.md @@ -142,6 +142,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
                      +
                    • _
                    • abstract
                    • apiclient
                    • apiexception
                    • diff --git a/docs/generators/java-undertow-server.md b/docs/generators/java-undertow-server.md index 7cf811514c89..8556f93afc7c 100644 --- a/docs/generators/java-undertow-server.md +++ b/docs/generators/java-undertow-server.md @@ -132,6 +132,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
                        +
                      • _
                      • abstract
                      • apiclient
                      • apiexception
                      • diff --git a/docs/generators/java-vertx-web.md b/docs/generators/java-vertx-web.md index 0f73519d40ca..aa29fbbc514b 100644 --- a/docs/generators/java-vertx-web.md +++ b/docs/generators/java-vertx-web.md @@ -132,6 +132,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
                          +
                        • _
                        • abstract
                        • apiclient
                        • apiexception
                        • diff --git a/docs/generators/java-vertx.md b/docs/generators/java-vertx.md index 8cf7c144e779..08672146b4cb 100644 --- a/docs/generators/java-vertx.md +++ b/docs/generators/java-vertx.md @@ -135,6 +135,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
                            +
                          • _
                          • abstract
                          • apiclient
                          • apiexception
                          • diff --git a/docs/generators/java-wiremock.md b/docs/generators/java-wiremock.md index 89950b457914..26cf0167653b 100644 --- a/docs/generators/java-wiremock.md +++ b/docs/generators/java-wiremock.md @@ -132,6 +132,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
                              +
                            • _
                            • abstract
                            • apiclient
                            • apiexception
                            • diff --git a/docs/generators/java.md b/docs/generators/java.md index 57727bbfd741..b6eab0d23e88 100644 --- a/docs/generators/java.md +++ b/docs/generators/java.md @@ -47,7 +47,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |dynamicOperations|Generate operations dynamically at runtime from an OAS| |false| |ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true| |enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|
                              **false**
                              No changes to the enum's are made, this is the default option.
                              **true**
                              With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.
                              |false| -|errorObjectType|Error Object type. (This option is for okhttp-gson-next-gen only)| |null| +|errorObjectType|Error Object type. (This option is for okhttp-gson only)| |null| |generateClientAsBean|For resttemplate, configure whether to create `ApiClient.java` and Apis clients as bean (with `@Component` annotation).| |false| |gradleProperties|Append additional Gradle properties to the gradle.properties file| |null| |groupId|groupId in generated pom.xml| |org.openapitools| @@ -164,6 +164,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
                                +
                              • _
                              • abstract
                              • apiclient
                              • apiexception
                              • diff --git a/docs/generators/jaxrs-cxf-cdi.md b/docs/generators/jaxrs-cxf-cdi.md index c16e577dfdba..1de80c28200a 100644 --- a/docs/generators/jaxrs-cxf-cdi.md +++ b/docs/generators/jaxrs-cxf-cdi.md @@ -78,6 +78,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |useBeanValidation|Use BeanValidation API annotations| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useMicroProfileOpenAPIAnnotations|Whether to generate Microprofile OpenAPI annotations. Only valid when library is set to quarkus.| |false| +|useMutiny|Whether to use Smallrye Mutiny instead of CompletionStage for asynchronous computation. Only valid when library is set to quarkus.| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| |useSwaggerAnnotations|Whether to generate Swagger annotations.| |true| |useTags|use tags for creating interface and controller classnames| |false| @@ -146,6 +147,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
                                  +
                                • _
                                • abstract
                                • apiclient
                                • apiexception
                                • diff --git a/docs/generators/jaxrs-cxf-client.md b/docs/generators/jaxrs-cxf-client.md index 82107c502a3d..203688c5302a 100644 --- a/docs/generators/jaxrs-cxf-client.md +++ b/docs/generators/jaxrs-cxf-client.md @@ -137,6 +137,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
                                    +
                                  • _
                                  • abstract
                                  • apiclient
                                  • apiexception
                                  • diff --git a/docs/generators/jaxrs-cxf-extended.md b/docs/generators/jaxrs-cxf-extended.md index 8b29e33075e8..08a0fe67750e 100644 --- a/docs/generators/jaxrs-cxf-extended.md +++ b/docs/generators/jaxrs-cxf-extended.md @@ -160,6 +160,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
                                      +
                                    • _
                                    • abstract
                                    • apiclient
                                    • apiexception
                                    • diff --git a/docs/generators/jaxrs-cxf.md b/docs/generators/jaxrs-cxf.md index bbd63a7249ce..975ba1a05797 100644 --- a/docs/generators/jaxrs-cxf.md +++ b/docs/generators/jaxrs-cxf.md @@ -155,6 +155,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
                                        +
                                      • _
                                      • abstract
                                      • apiclient
                                      • apiexception
                                      • diff --git a/docs/generators/jaxrs-jersey.md b/docs/generators/jaxrs-jersey.md index c7ff53d1f7e2..1565d04f0d47 100644 --- a/docs/generators/jaxrs-jersey.md +++ b/docs/generators/jaxrs-jersey.md @@ -138,6 +138,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
                                          +
                                        • _
                                        • abstract
                                        • apiclient
                                        • apiexception
                                        • diff --git a/docs/generators/jaxrs-resteasy-eap.md b/docs/generators/jaxrs-resteasy-eap.md index 1c0d41727220..ce8e83b65180 100644 --- a/docs/generators/jaxrs-resteasy-eap.md +++ b/docs/generators/jaxrs-resteasy-eap.md @@ -139,6 +139,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
                                            +
                                          • _
                                          • abstract
                                          • apiclient
                                          • apiexception
                                          • diff --git a/docs/generators/jaxrs-resteasy.md b/docs/generators/jaxrs-resteasy.md index 7ed0e367622a..b7613483d24c 100644 --- a/docs/generators/jaxrs-resteasy.md +++ b/docs/generators/jaxrs-resteasy.md @@ -138,6 +138,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
                                              +
                                            • _
                                            • abstract
                                            • apiclient
                                            • apiexception
                                            • diff --git a/docs/generators/jaxrs-spec.md b/docs/generators/jaxrs-spec.md index ffcd987fcb83..87563f7c6bee 100644 --- a/docs/generators/jaxrs-spec.md +++ b/docs/generators/jaxrs-spec.md @@ -78,6 +78,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |useBeanValidation|Use BeanValidation API annotations| |true| |useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false| |useMicroProfileOpenAPIAnnotations|Whether to generate Microprofile OpenAPI annotations. Only valid when library is set to quarkus.| |false| +|useMutiny|Whether to use Smallrye Mutiny instead of CompletionStage for asynchronous computation. Only valid when library is set to quarkus.| |false| |useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false| |useSwaggerAnnotations|Whether to generate Swagger annotations.| |true| |useTags|use tags for creating interface and controller classnames| |false| @@ -146,6 +147,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
                                                +
                                              • _
                                              • abstract
                                              • apiclient
                                              • apiexception
                                              • diff --git a/docs/generators/php-flight.md b/docs/generators/php-flight.md new file mode 100644 index 000000000000..8b7c90a069be --- /dev/null +++ b/docs/generators/php-flight.md @@ -0,0 +1,270 @@ +--- +title: Documentation for the php-flight Generator +--- + +## METADATA + +| Property | Value | Notes | +| -------- | ----- | ----- | +| generator name | php-flight | pass this to the generate command after -g | +| generator stability | EXPERIMENTAL | | +| generator type | SERVER | | +| generator language | PHP | | +| generator default templating engine | mustache | | +| helpTxt | Generates a PHP Flight Framework server library. | | + +## CONFIG OPTIONS +These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details. + +| Option | Description | Values | Default | +| ------ | ----------- | ------ | ------- | +|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false| +|apiPackage|package for generated api classes| |null| +|artifactUrl|artifact URL in generated pom.xml| |null| +|artifactVersion|The version to use in the composer package version field. e.g. 1.2.3| |null| +|composerPackageName|The name to use in the composer package name field. e.g. `vendor/project` (must be lowercase and consist of words separated by `-`, `.` or `_`).| |null| +|developerOrganization|developer organization in generated pom.xml| |null| +|developerOrganizationUrl|developer organization URL in generated pom.xml| |null| +|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
                                                **false**
                                                The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
                                                **true**
                                                Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
                                                |true| +|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true| +|enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|
                                                **false**
                                                No changes to the enum's are made, this is the default option.
                                                **true**
                                                With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.
                                                |false| +|hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true| +|invokerPackage|The main namespace to use for all classes. e.g. Yay\Pets| |null| +|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|
                                                **true**
                                                The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
                                                **false**
                                                The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
                                                |true| +|licenseName|The name of the license| |null| +|modelPackage|package for generated models| |null| +|packageName|The main package name for classes. e.g. GeneratedPetstore| |null| +|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| +|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| +|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| +|srcBasePath|The directory to serve as source root.| |null| +|variableNamingConvention|naming convention of variable name, e.g. camelCase.| |camelCase| + +## IMPORT MAPPING + +| Type/Alias | Imports | +| ---------- | ------- | + + +## INSTANTIATION TYPES + +| Type/Alias | Instantiated By | +| ---------- | --------------- | +|array|array| +|map|array| + + +## LANGUAGE PRIMITIVES + +
                                                  +
                                                • \DateTime
                                                • +
                                                • \SplFileObject
                                                • +
                                                • array
                                                • +
                                                • bool
                                                • +
                                                • boolean
                                                • +
                                                • byte
                                                • +
                                                • float
                                                • +
                                                • int
                                                • +
                                                • integer
                                                • +
                                                • mixed
                                                • +
                                                • number
                                                • +
                                                • object
                                                • +
                                                • string
                                                • +
                                                • void
                                                • +
                                                + +## RESERVED WORDS + +
                                                  +
                                                • __halt_compiler
                                                • +
                                                • _header_accept
                                                • +
                                                • _tempbody
                                                • +
                                                • abstract
                                                • +
                                                • and
                                                • +
                                                • array
                                                • +
                                                • as
                                                • +
                                                • break
                                                • +
                                                • callable
                                                • +
                                                • case
                                                • +
                                                • catch
                                                • +
                                                • class
                                                • +
                                                • clone
                                                • +
                                                • const
                                                • +
                                                • continue
                                                • +
                                                • declare
                                                • +
                                                • default
                                                • +
                                                • die
                                                • +
                                                • do
                                                • +
                                                • echo
                                                • +
                                                • else
                                                • +
                                                • elseif
                                                • +
                                                • empty
                                                • +
                                                • enddeclare
                                                • +
                                                • endfor
                                                • +
                                                • endforeach
                                                • +
                                                • endif
                                                • +
                                                • endswitch
                                                • +
                                                • endwhile
                                                • +
                                                • eval
                                                • +
                                                • exit
                                                • +
                                                • extends
                                                • +
                                                • final
                                                • +
                                                • for
                                                • +
                                                • foreach
                                                • +
                                                • formparams
                                                • +
                                                • function
                                                • +
                                                • global
                                                • +
                                                • goto
                                                • +
                                                • headerparams
                                                • +
                                                • httpbody
                                                • +
                                                • if
                                                • +
                                                • implements
                                                • +
                                                • include
                                                • +
                                                • include_once
                                                • +
                                                • instanceof
                                                • +
                                                • insteadof
                                                • +
                                                • interface
                                                • +
                                                • isset
                                                • +
                                                • list
                                                • +
                                                • namespace
                                                • +
                                                • new
                                                • +
                                                • or
                                                • +
                                                • print
                                                • +
                                                • private
                                                • +
                                                • protected
                                                • +
                                                • public
                                                • +
                                                • queryparams
                                                • +
                                                • require
                                                • +
                                                • require_once
                                                • +
                                                • resourcepath
                                                • +
                                                • return
                                                • +
                                                • static
                                                • +
                                                • switch
                                                • +
                                                • throw
                                                • +
                                                • trait
                                                • +
                                                • try
                                                • +
                                                • unset
                                                • +
                                                • use
                                                • +
                                                • var
                                                • +
                                                • while
                                                • +
                                                • xor
                                                • +
                                                + +## FEATURE SET + + +### Client Modification Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|BasePath|✗|ToolingExtension +|Authorizations|✗|ToolingExtension +|UserAgent|✗|ToolingExtension +|MockServer|✗|ToolingExtension + +### Data Type Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Custom|✗|OAS2,OAS3 +|Int32|✓|OAS2,OAS3 +|Int64|✓|OAS2,OAS3 +|Float|✓|OAS2,OAS3 +|Double|✓|OAS2,OAS3 +|Decimal|✓|ToolingExtension +|String|✓|OAS2,OAS3 +|Byte|✓|OAS2,OAS3 +|Binary|✓|OAS2,OAS3 +|Boolean|✓|OAS2,OAS3 +|Date|✓|OAS2,OAS3 +|DateTime|✓|OAS2,OAS3 +|Password|✓|OAS2,OAS3 +|File|✓|OAS2 +|Uuid|✗| +|Array|✓|OAS2,OAS3 +|Null|✗|OAS3 +|AnyType|✗|OAS2,OAS3 +|Object|✓|OAS2,OAS3 +|Maps|✓|ToolingExtension +|CollectionFormat|✓|OAS2 +|CollectionFormatMulti|✓|OAS2 +|Enum|✓|OAS2,OAS3 +|ArrayOfEnum|✓|ToolingExtension +|ArrayOfModel|✓|ToolingExtension +|ArrayOfCollectionOfPrimitives|✓|ToolingExtension +|ArrayOfCollectionOfModel|✓|ToolingExtension +|ArrayOfCollectionOfEnum|✓|ToolingExtension +|MapOfEnum|✗|ToolingExtension +|MapOfModel|✗|ToolingExtension +|MapOfCollectionOfPrimitives|✓|ToolingExtension +|MapOfCollectionOfModel|✗|ToolingExtension +|MapOfCollectionOfEnum|✗|ToolingExtension + +### Documentation Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Readme|✓|ToolingExtension +|Model|✓|ToolingExtension +|Api|✓|ToolingExtension + +### Global Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Host|✓|OAS2,OAS3 +|BasePath|✓|OAS2,OAS3 +|Info|✓|OAS2,OAS3 +|Schemes|✗|OAS2,OAS3 +|PartialSchemes|✓|OAS2,OAS3 +|Consumes|✓|OAS2 +|Produces|✓|OAS2 +|ExternalDocumentation|✓|OAS2,OAS3 +|Examples|✓|OAS2,OAS3 +|XMLStructureDefinitions|✗|OAS2,OAS3 +|MultiServer|✗|OAS3 +|ParameterizedServer|✗|OAS3 +|ParameterStyling|✗|OAS3 +|Callbacks|✗|OAS3 +|LinkObjects|✗|OAS3 + +### Parameter Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Path|✓|OAS2,OAS3 +|Query|✓|OAS2,OAS3 +|Header|✓|OAS2,OAS3 +|Body|✓|OAS2 +|FormUnencoded|✗|OAS2 +|FormMultipart|✗|OAS2 +|Cookie|✗|OAS3 + +### Schema Support Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Simple|✓|OAS2,OAS3 +|Composite|✓|OAS2,OAS3 +|Polymorphism|✗|OAS2,OAS3 +|Union|✗|OAS3 +|allOf|✗|OAS2,OAS3 +|anyOf|✗|OAS3 +|oneOf|✗|OAS3 +|not|✗|OAS3 + +### Security Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|BasicAuth|✓|OAS2,OAS3 +|ApiKey|✓|OAS2,OAS3 +|OpenIDConnect|✗|OAS3 +|BearerToken|✓|OAS3 +|OAuth2_Implicit|✓|OAS2,OAS3 +|OAuth2_Password|✗|OAS2,OAS3 +|OAuth2_ClientCredentials|✗|OAS2,OAS3 +|OAuth2_AuthorizationCode|✗|OAS2,OAS3 +|SignatureAuth|✗|OAS3 +|AWSV4Signature|✗|ToolingExtension + +### Wire Format Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|JSON|✓|OAS2,OAS3 +|XML|✗|OAS2,OAS3 +|PROTOBUF|✗|ToolingExtension +|Custom|✗|OAS2,OAS3 diff --git a/docs/generators/scala-cask.md b/docs/generators/scala-cask.md new file mode 100644 index 000000000000..802870eef7b5 --- /dev/null +++ b/docs/generators/scala-cask.md @@ -0,0 +1,262 @@ +--- +title: Documentation for the scala-cask Generator +--- + +## METADATA + +| Property | Value | Notes | +| -------- | ----- | ----- | +| generator name | scala-cask | pass this to the generate command after -g | +| generator stability | STABLE | | +| generator type | SERVER | | +| generator language | Scala | | +| generator default templating engine | mustache | | +| helpTxt | Generates a scala-cask server. | | + +## CONFIG OPTIONS +These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details. + +| Option | Description | Values | Default | +| ------ | ----------- | ------ | ------- | +|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false| +|apiPackage|package for generated api classes| |null| +|artifactId|artifactId in generated pom.xml. This also becomes part of the generated library's filename| |null| +|artifactVersion|artifact version in generated pom.xml. This also becomes part of the generated library's filename. If not provided, uses the version from the OpenAPI specification file. If that's also not present, uses the default value of the artifactVersion option.| |null| +|dateLibrary|Option. Date library to use|
                                                **joda**
                                                Joda (for legacy app)
                                                **java8**
                                                Java 8 native JSR310 (preferred for JDK 1.8+)
                                                |java8| +|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
                                                **false**
                                                The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
                                                **true**
                                                Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
                                                |true| +|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true| +|enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|
                                                **false**
                                                No changes to the enum's are made, this is the default option.
                                                **true**
                                                With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.
                                                |false| +|gitRepoId|Git repo ID, e.g. openapi-generator.| |null| +|gitUserId|Git user ID, e.g. openapitools.| |null| +|groupId|groupId in generated pom.xml| |null| +|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|
                                                **true**
                                                The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
                                                **false**
                                                The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
                                                |true| +|modelPackage|package for generated models| |null| +|modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase| +|packageName|packageDescription| |null| +|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| +|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true| +|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true| +|sourceFolder|source folder for generated code| |null| + +## IMPORT MAPPING + +| Type/Alias | Imports | +| ---------- | ------- | +|Array|java.util.List| +|ArrayList|java.util.ArrayList| +|Date|java.util.Date| +|DateTime|org.joda.time.*| +|File|java.io.File| +|HashMap|java.util.HashMap| +|ListBuffer|scala.collection.mutable.ListBuffer| +|ListSet|scala.collection.immutable.ListSet| +|LocalDate|org.joda.time.*| +|LocalDateTime|org.joda.time.*| +|LocalTime|org.joda.time.*| +|Seq|scala.collection.immutable.Seq| +|Set|scala.collection.immutable.Set| +|Timestamp|java.sql.Timestamp| +|URI|java.net.URI| +|UUID|java.util.UUID| + + +## INSTANTIATION TYPES + +| Type/Alias | Instantiated By | +| ---------- | --------------- | +|set|Set| + + +## LANGUAGE PRIMITIVES + +
                                                  +
                                                • Any
                                                • +
                                                • Array
                                                • +
                                                • Boolean
                                                • +
                                                • Byte
                                                • +
                                                • Double
                                                • +
                                                • Float
                                                • +
                                                • Int
                                                • +
                                                • List
                                                • +
                                                • Long
                                                • +
                                                • Map
                                                • +
                                                • Object
                                                • +
                                                • Seq
                                                • +
                                                • String
                                                • +
                                                • boolean
                                                • +
                                                + +## RESERVED WORDS + +
                                                  +
                                                • abstract
                                                • +
                                                • assert
                                                • +
                                                • boolean
                                                • +
                                                • break
                                                • +
                                                • byte
                                                • +
                                                • case
                                                • +
                                                • catch
                                                • +
                                                • char
                                                • +
                                                • class
                                                • +
                                                • const
                                                • +
                                                • continue
                                                • +
                                                • default
                                                • +
                                                • do
                                                • +
                                                • double
                                                • +
                                                • else
                                                • +
                                                • enum
                                                • +
                                                • extends
                                                • +
                                                • final
                                                • +
                                                • finally
                                                • +
                                                • float
                                                • +
                                                • for
                                                • +
                                                • goto
                                                • +
                                                • if
                                                • +
                                                • implements
                                                • +
                                                • import
                                                • +
                                                • instanceof
                                                • +
                                                • int
                                                • +
                                                • interface
                                                • +
                                                • long
                                                • +
                                                • native
                                                • +
                                                • new
                                                • +
                                                • package
                                                • +
                                                • private
                                                • +
                                                • protected
                                                • +
                                                • public
                                                • +
                                                • return
                                                • +
                                                • short
                                                • +
                                                • static
                                                • +
                                                • strictfp
                                                • +
                                                • super
                                                • +
                                                • switch
                                                • +
                                                • synchronized
                                                • +
                                                • this
                                                • +
                                                • throw
                                                • +
                                                • throws
                                                • +
                                                • transient
                                                • +
                                                • try
                                                • +
                                                • type
                                                • +
                                                • void
                                                • +
                                                • volatile
                                                • +
                                                • while
                                                • +
                                                + +## FEATURE SET + + +### Client Modification Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|BasePath|✗|ToolingExtension +|Authorizations|✗|ToolingExtension +|UserAgent|✗|ToolingExtension +|MockServer|✗|ToolingExtension + +### Data Type Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Custom|✗|OAS2,OAS3 +|Int32|✓|OAS2,OAS3 +|Int64|✓|OAS2,OAS3 +|Float|✓|OAS2,OAS3 +|Double|✓|OAS2,OAS3 +|Decimal|✓|ToolingExtension +|String|✓|OAS2,OAS3 +|Byte|✓|OAS2,OAS3 +|Binary|✓|OAS2,OAS3 +|Boolean|✓|OAS2,OAS3 +|Date|✓|OAS2,OAS3 +|DateTime|✓|OAS2,OAS3 +|Password|✓|OAS2,OAS3 +|File|✓|OAS2 +|Uuid|✗| +|Array|✓|OAS2,OAS3 +|Null|✗|OAS3 +|AnyType|✗|OAS2,OAS3 +|Object|✓|OAS2,OAS3 +|Maps|✓|ToolingExtension +|CollectionFormat|✓|OAS2 +|CollectionFormatMulti|✓|OAS2 +|Enum|✓|OAS2,OAS3 +|ArrayOfEnum|✓|ToolingExtension +|ArrayOfModel|✓|ToolingExtension +|ArrayOfCollectionOfPrimitives|✓|ToolingExtension +|ArrayOfCollectionOfModel|✓|ToolingExtension +|ArrayOfCollectionOfEnum|✓|ToolingExtension +|MapOfEnum|✓|ToolingExtension +|MapOfModel|✓|ToolingExtension +|MapOfCollectionOfPrimitives|✓|ToolingExtension +|MapOfCollectionOfModel|✓|ToolingExtension +|MapOfCollectionOfEnum|✓|ToolingExtension + +### Documentation Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Readme|✗|ToolingExtension +|Model|✓|ToolingExtension +|Api|✓|ToolingExtension + +### Global Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Host|✓|OAS2,OAS3 +|BasePath|✓|OAS2,OAS3 +|Info|✓|OAS2,OAS3 +|Schemes|✗|OAS2,OAS3 +|PartialSchemes|✓|OAS2,OAS3 +|Consumes|✓|OAS2 +|Produces|✓|OAS2 +|ExternalDocumentation|✓|OAS2,OAS3 +|Examples|✓|OAS2,OAS3 +|XMLStructureDefinitions|✗|OAS2,OAS3 +|MultiServer|✗|OAS3 +|ParameterizedServer|✗|OAS3 +|ParameterStyling|✗|OAS3 +|Callbacks|✓|OAS3 +|LinkObjects|✗|OAS3 + +### Parameter Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Path|✓|OAS2,OAS3 +|Query|✓|OAS2,OAS3 +|Header|✓|OAS2,OAS3 +|Body|✓|OAS2 +|FormUnencoded|✓|OAS2 +|FormMultipart|✓|OAS2 +|Cookie|✓|OAS3 + +### Schema Support Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|Simple|✓|OAS2,OAS3 +|Composite|✓|OAS2,OAS3 +|Polymorphism|✓|OAS2,OAS3 +|Union|✗|OAS3 +|allOf|✗|OAS2,OAS3 +|anyOf|✗|OAS3 +|oneOf|✗|OAS3 +|not|✗|OAS3 + +### Security Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|BasicAuth|✓|OAS2,OAS3 +|ApiKey|✓|OAS2,OAS3 +|OpenIDConnect|✗|OAS3 +|BearerToken|✓|OAS3 +|OAuth2_Implicit|✓|OAS2,OAS3 +|OAuth2_Password|✓|OAS2,OAS3 +|OAuth2_ClientCredentials|✓|OAS2,OAS3 +|OAuth2_AuthorizationCode|✓|OAS2,OAS3 +|SignatureAuth|✗|OAS3 +|AWSV4Signature|✗|ToolingExtension + +### Wire Format Feature +| Name | Supported | Defined By | +| ---- | --------- | ---------- | +|JSON|✓|OAS2,OAS3 +|XML|✓|OAS2,OAS3 +|PROTOBUF|✗|ToolingExtension +|Custom|✗|OAS2,OAS3 diff --git a/docs/generators/spring.md b/docs/generators/spring.md index 500a265a10a7..9e426fb0f04e 100644 --- a/docs/generators/spring.md +++ b/docs/generators/spring.md @@ -167,6 +167,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS
                                                  +
                                                • _
                                                • abstract
                                                • apiclient
                                                • apiexception
                                                • diff --git a/modules/openapi-generator-cli/pom.xml b/modules/openapi-generator-cli/pom.xml index 1c96f0029cde..34586dfbdaf0 100644 --- a/modules/openapi-generator-cli/pom.xml +++ b/modules/openapi-generator-cli/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 7.5.0-FEDNOT-SNAPSHOT + 7.6.0-SNAPSHOT ../.. 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 0f9ec680e1c6..6ce6a8ffb301 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 @@ -515,11 +515,11 @@ public void execute() { applyModelNameMappingsKvpList(modelNameMappings, configurator); applyEnumNameMappingsKvpList(enumNameMappings, configurator); applyOperationIdNameMappingsKvpList(operationIdNameMappings, configurator); - applyOpenAPINormalizerKvpList(openapiNormalizer, configurator); + applyOpenapiNormalizerKvpList(openapiNormalizer, configurator); applyTypeMappingsKvpList(typeMappings, configurator); applyAdditionalPropertiesKvpList(additionalProperties, configurator); applyLanguageSpecificPrimitivesCsvList(languageSpecificPrimitives, configurator); - applyOpenAPIGeneratorIgnoreListCsvList(openapiGeneratorIgnoreList, configurator); + applyOpenapiGeneratorIgnoreListCsvList(openapiGeneratorIgnoreList, configurator); applyReservedWordsMappingsKvpList(reservedWordsMappings, configurator); applyServerVariablesKvpList(serverVariableOverrides, configurator); diff --git a/modules/openapi-generator-core/pom.xml b/modules/openapi-generator-core/pom.xml index f7d3f3303c79..fd3b6ad2e98f 100644 --- a/modules/openapi-generator-core/pom.xml +++ b/modules/openapi-generator-core/pom.xml @@ -6,7 +6,7 @@ openapi-generator-project org.openapitools - 7.5.0-FEDNOT-SNAPSHOT + 7.6.0-SNAPSHOT ../.. diff --git a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/GeneratorSettings.java b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/GeneratorSettings.java index 1f7e9e824a4c..30106d484765 100644 --- a/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/GeneratorSettings.java +++ b/modules/openapi-generator-core/src/main/java/org/openapitools/codegen/config/GeneratorSettings.java @@ -321,7 +321,7 @@ public Map getOperationIdNameMappings() { * * @return a map of rules */ - public Map getOpenAPINormalizer() { + public Map getOpenapiNormalizer() { return openapiNormalizer; } @@ -346,7 +346,7 @@ public Set getLanguageSpecificPrimitives() { * * @return the openapi generator ignore list */ - public Set getOpenAPIGeneratorIgnoreList() { + public Set getOpenapiGeneratorIgnoreList() { return openapiGeneratorIgnoreList; } @@ -614,14 +614,14 @@ public static Builder newBuilder(GeneratorSettings copy) { if (copy.getOperationIdNameMappings() != null) { builder.operationIdNameMappings.putAll(copy.getOperationIdNameMappings()); } - if (copy.getOpenAPINormalizer() != null) { - builder.openapiNormalizer.putAll(copy.getOpenAPINormalizer()); + if (copy.getOpenapiNormalizer() != null) { + builder.openapiNormalizer.putAll(copy.getOpenapiNormalizer()); } if (copy.getLanguageSpecificPrimitives() != null) { builder.languageSpecificPrimitives.addAll(copy.getLanguageSpecificPrimitives()); } - if (copy.getOpenAPIGeneratorIgnoreList() != null) { - builder.openapiGeneratorIgnoreList.addAll(copy.getOpenAPIGeneratorIgnoreList()); + if (copy.getOpenapiGeneratorIgnoreList() != null) { + builder.openapiGeneratorIgnoreList.addAll(copy.getOpenapiGeneratorIgnoreList()); } if (copy.getReservedWordsMappings() != null) { builder.reservedWordsMappings.putAll(copy.getReservedWordsMappings()); @@ -1152,7 +1152,7 @@ public Builder withOperationIdNameMapping(String key, String value) { * @param openapiNormalizer the {@code openapiNormalizer} to set * @return a reference to this Builder */ - public Builder withOpenAPINormalizer(Map openapiNormalizer) { + public Builder withOpenapiNormalizer(Map openapiNormalizer) { this.openapiNormalizer = openapiNormalizer; return this; } @@ -1164,7 +1164,7 @@ public Builder withOpenAPINormalizer(Map openapiNormalizer) { * @param value The value of the OpenAPI normalizer rule * @return a reference to this Builder */ - public Builder withOpenAPINormalizer(String key, String value) { + public Builder withOpenapiNormalizer(String key, String value) { if (this.openapiNormalizer == null) { this.openapiNormalizer = new HashMap<>(); } @@ -1203,7 +1203,7 @@ public Builder withLanguageSpecificPrimitive(String value) { * @param openapiGeneratorIgnoreList the {@code openapiGeneratorIgnoreList} to set * @return a reference to this Builder */ - public Builder withOpenAPIGeneratorIgnoreList(Set openapiGeneratorIgnoreList) { + public Builder withOpenapiGeneratorIgnoreList(Set openapiGeneratorIgnoreList) { this.openapiGeneratorIgnoreList = openapiGeneratorIgnoreList; return this; } @@ -1214,7 +1214,7 @@ public Builder withOpenAPIGeneratorIgnoreList(Set openapiGeneratorIgnore * @param value The value of entry to set * @return a reference to this Builder */ - public Builder withOpenAPIGeneratorIgnoreList(String value) { + public Builder withOpenapiGeneratorIgnoreList(String value) { if (this.openapiGeneratorIgnoreList == null) { this.openapiGeneratorIgnoreList = new HashSet<>(); } @@ -1390,9 +1390,9 @@ public boolean equals(Object o) { Objects.equals(getModelNameMappings(), that.getModelNameMappings()) && Objects.equals(getEnumNameMappings(), that.getEnumNameMappings()) && Objects.equals(getOperationIdNameMappings(), that.getOperationIdNameMappings()) && - Objects.equals(getOpenAPINormalizer(), that.getOpenAPINormalizer()) && + Objects.equals(getOpenapiNormalizer(), that.getOpenapiNormalizer()) && Objects.equals(getLanguageSpecificPrimitives(), that.getLanguageSpecificPrimitives()) && - Objects.equals(getOpenAPIGeneratorIgnoreList(), that.getOpenAPIGeneratorIgnoreList()) && + Objects.equals(getOpenapiGeneratorIgnoreList(), that.getOpenapiGeneratorIgnoreList()) && Objects.equals(getReservedWordsMappings(), that.getReservedWordsMappings()) && Objects.equals(getGitHost(), that.getGitHost()) && Objects.equals(getGitUserId(), that.getGitUserId()) && @@ -1428,9 +1428,9 @@ public int hashCode() { getModelNameMappings(), getEnumNameMappings(), getOperationIdNameMappings(), - getOpenAPINormalizer(), + getOpenapiNormalizer(), getLanguageSpecificPrimitives(), - getOpenAPIGeneratorIgnoreList(), + getOpenapiGeneratorIgnoreList(), getReservedWordsMappings(), getGitHost(), getGitUserId(), diff --git a/modules/openapi-generator-gradle-plugin/README.adoc b/modules/openapi-generator-gradle-plugin/README.adoc index 00144d2daccf..fb74722df473 100644 --- a/modules/openapi-generator-gradle-plugin/README.adoc +++ b/modules/openapi-generator-gradle-plugin/README.adoc @@ -97,7 +97,7 @@ task validateGoodSpec(type: org.openapitools.generator.gradle.plugin.tasks.Valid [source,group] ---- plugins { - id "org.openapi.generator" version "7.2.0" + id "org.openapi.generator" version "7.5.0" } ---- diff --git a/modules/openapi-generator-gradle-plugin/gradle.properties b/modules/openapi-generator-gradle-plugin/gradle.properties index 058e1378b755..a85cc37ce54e 100644 --- a/modules/openapi-generator-gradle-plugin/gradle.properties +++ b/modules/openapi-generator-gradle-plugin/gradle.properties @@ -1,5 +1,5 @@ # RELEASE_VERSION -openApiGeneratorVersion=7.5.0-SNAPSHOT +openApiGeneratorVersion=7.6.0-SNAPSHOT # /RELEASE_VERSION # BEGIN placeholders diff --git a/modules/openapi-generator-gradle-plugin/pom.xml b/modules/openapi-generator-gradle-plugin/pom.xml index aaec04392fd8..3e84f3d2f731 100644 --- a/modules/openapi-generator-gradle-plugin/pom.xml +++ b/modules/openapi-generator-gradle-plugin/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 7.5.0-SNAPSHOT + 7.6.0-SNAPSHOT ../.. diff --git a/modules/openapi-generator-gradle-plugin/samples/local-spec/gradle.properties b/modules/openapi-generator-gradle-plugin/samples/local-spec/gradle.properties index ac2809b7a732..7a8b3c854c6e 100644 --- a/modules/openapi-generator-gradle-plugin/samples/local-spec/gradle.properties +++ b/modules/openapi-generator-gradle-plugin/samples/local-spec/gradle.properties @@ -1,3 +1,3 @@ # RELEASE_VERSION -openApiGeneratorVersion=7.5.0-SNAPSHOT +openApiGeneratorVersion=7.6.0-SNAPSHOT # /RELEASE_VERSION 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 7e0217a0501c..d9473159a87e 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 @@ -887,7 +887,7 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac if (openapiNormalizer.isPresent) { openapiNormalizer.get().forEach { entry -> - configurator.addOpenAPINormalizer(entry.key, entry.value) + configurator.addOpenapiNormalizer(entry.key, entry.value) } } @@ -917,7 +917,7 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac if (openapiGeneratorIgnoreList.isPresent) { openapiGeneratorIgnoreList.get().forEach { - configurator.addOpenAPIGeneratorIgnoreList(it) + configurator.addOpenapiGeneratorIgnoreList(it) } } diff --git a/modules/openapi-generator-maven-plugin/README.md b/modules/openapi-generator-maven-plugin/README.md index 1700662a76e9..cc8500ceb95c 100644 --- a/modules/openapi-generator-maven-plugin/README.md +++ b/modules/openapi-generator-maven-plugin/README.md @@ -12,7 +12,7 @@ Add to your `build->plugins` section (default phase is `generate-sources` phase) org.openapitools openapi-generator-maven-plugin - 7.2.0 + 7.5.0 diff --git a/modules/openapi-generator-maven-plugin/examples/java-client.xml b/modules/openapi-generator-maven-plugin/examples/java-client.xml index a46e69ef6c6f..1961f1d8f0d7 100644 --- a/modules/openapi-generator-maven-plugin/examples/java-client.xml +++ b/modules/openapi-generator-maven-plugin/examples/java-client.xml @@ -13,7 +13,7 @@ org.openapitools openapi-generator-maven-plugin - 7.5.0-SNAPSHOT + 7.6.0-SNAPSHOT diff --git a/modules/openapi-generator-maven-plugin/examples/kotlin.xml b/modules/openapi-generator-maven-plugin/examples/kotlin.xml index 3203f7500543..2b8f2891b179 100644 --- a/modules/openapi-generator-maven-plugin/examples/kotlin.xml +++ b/modules/openapi-generator-maven-plugin/examples/kotlin.xml @@ -15,7 +15,7 @@ org.openapitools openapi-generator-maven-plugin - 7.5.0-SNAPSHOT + 7.6.0-SNAPSHOT diff --git a/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml b/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml index 680e90d82a98..f1aeef072f2f 100644 --- a/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml +++ b/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml @@ -19,7 +19,7 @@ org.openapitools openapi-generator-maven-plugin - 7.5.0-SNAPSHOT + 7.6.0-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 index 617d2f66938f..7e22c0c81de3 100644 --- a/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml +++ b/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml @@ -13,7 +13,7 @@ org.openapitools openapi-generator-maven-plugin - 7.5.0-SNAPSHOT + 7.6.0-SNAPSHOT diff --git a/modules/openapi-generator-maven-plugin/examples/non-java.xml b/modules/openapi-generator-maven-plugin/examples/non-java.xml index 8aba10c00e5d..bcab0c62aeac 100644 --- a/modules/openapi-generator-maven-plugin/examples/non-java.xml +++ b/modules/openapi-generator-maven-plugin/examples/non-java.xml @@ -13,7 +13,7 @@ org.openapitools openapi-generator-maven-plugin - 7.5.0-SNAPSHOT + 7.6.0-SNAPSHOT diff --git a/modules/openapi-generator-maven-plugin/examples/spring.xml b/modules/openapi-generator-maven-plugin/examples/spring.xml index e16c4615be2a..a5bcbc35d488 100644 --- a/modules/openapi-generator-maven-plugin/examples/spring.xml +++ b/modules/openapi-generator-maven-plugin/examples/spring.xml @@ -20,7 +20,7 @@ org.openapitools openapi-generator-maven-plugin - 7.5.0-SNAPSHOT + 7.6.0-SNAPSHOT diff --git a/modules/openapi-generator-maven-plugin/pom.xml b/modules/openapi-generator-maven-plugin/pom.xml index 2b053b5ae932..29d1eb27ccd6 100644 --- a/modules/openapi-generator-maven-plugin/pom.xml +++ b/modules/openapi-generator-maven-plugin/pom.xml @@ -5,7 +5,7 @@ org.openapitools openapi-generator-project - 7.5.0-FEDNOT-SNAPSHOT + 7.6.0-SNAPSHOT ../.. 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 3b5301ee51ca..6c3b717189be 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 @@ -829,7 +829,7 @@ public void execute() throws MojoExecutionException { // Retained for backwards-compatibility with configOptions -> openapi-normalizer if (openapiNormalizer == null && configOptions.containsKey("openapi-normalizer")) { - applyOpenAPINormalizerKvp(configOptions.get("openapi-normalizer").toString(), + applyOpenapiNormalizerKvp(configOptions.get("openapi-normalizer").toString(), configurator); } @@ -846,7 +846,7 @@ public void execute() throws MojoExecutionException { // Retained for backwards-compatibility with configOptions -> openapi-generator-ignore-list if (openapiGeneratorIgnoreList == null && configOptions.containsKey("openapi-generator-ignore-list")) { - applyOpenAPIGeneratorIgnoreListCsv(configOptions + applyOpenapiGeneratorIgnoreListCsv(configOptions .get("openapi-generator-ignore-list").toString(), configurator); } @@ -919,7 +919,7 @@ public void execute() throws MojoExecutionException { // Apply OpenAPI normalizer rules if (openapiNormalizer != null && (configOptions == null || !configOptions.containsKey("openapi-normalizer"))) { - applyOpenAPINormalizerKvpList(openapiNormalizer, configurator); + applyOpenapiNormalizerKvpList(openapiNormalizer, configurator); } // Apply Type Mappings @@ -936,7 +936,7 @@ public void execute() throws MojoExecutionException { // Apply Language Specific Primitives if (openapiGeneratorIgnoreList != null && (configOptions == null || !configOptions.containsKey("openapi-generator-ignore-list"))) { - applyOpenAPIGeneratorIgnoreListCsvList(openapiGeneratorIgnoreList, configurator); + applyOpenapiGeneratorIgnoreListCsvList(openapiGeneratorIgnoreList, configurator); } // Apply Additional Properties diff --git a/modules/openapi-generator-online/README.md b/modules/openapi-generator-online/README.md index 2c77fa3c69c3..6d731ceffa9c 100644 --- a/modules/openapi-generator-online/README.md +++ b/modules/openapi-generator-online/README.md @@ -54,4 +54,4 @@ The `GENERATOR_HOST` variable is used here to ensure download links generated by ## Environment `GENERATOR_HOST` can be set to force the scheme/host/port used for download link generation. In most cases, this environment variable is not -necessary to be set and the download link will be generated to match the originating request. The variable is provided simply as a fallback. \ No newline at end of file +necessary to be set and the download link will be generated to match the originating request. The variable is provided simply as a fallback. diff --git a/modules/openapi-generator-online/pom.xml b/modules/openapi-generator-online/pom.xml index 1c92546162d0..fee18406f0f7 100644 --- a/modules/openapi-generator-online/pom.xml +++ b/modules/openapi-generator-online/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 7.5.0-SNAPSHOT + 7.6.0-SNAPSHOT ../.. diff --git a/modules/openapi-generator/pom.xml b/modules/openapi-generator/pom.xml index c584343174ad..dbb884301b74 100644 --- a/modules/openapi-generator/pom.xml +++ b/modules/openapi-generator/pom.xml @@ -4,7 +4,7 @@ org.openapitools openapi-generator-project - 7.5.0-FEDNOT-SNAPSHOT + 7.6.0-SNAPSHOT ../.. diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java index 1285c00678d2..1c25a69f5dd3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java @@ -358,8 +358,8 @@ public interface CodegenConfig { boolean getAddSuffixToDuplicateOperationNicknames(); - boolean getUseOpenAPINormalizer(); + boolean getUseOpenapiNormalizer(); - Set getOpenAPIGeneratorIgnoreList(); + Set getOpenapiGeneratorIgnoreList(); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java index 84920eacfd35..017bf79406b0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java @@ -442,6 +442,8 @@ public static enum ENUM_PROPERTY_NAMING_TYPE {camelCase, PascalCase, snake_case, public static final String GENERATE_MARSHAL_JSON = "generateMarshalJSON"; public static final String GENERATE_MARSHAL_JSON_DESC = "Generate MarshalJSON method"; + public static final String GENERATE_UNMARSHAL_JSON = "generateUnmarshalJSON"; + public static final String GENERATE_UNMARSHAL_JSON_DESC = "Generate UnmarshalJSON method"; public static final String MAX_ATTEMPTS_FOR_RETRY = "maxAttemptsForRetry"; public static final String WAIT_TIME_OF_THREAD = "waitTimeMillis"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java index ffa35fda6066..0260d6870525 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java @@ -429,7 +429,7 @@ public CodegenDiscriminator getDiscriminator() { public void setDiscriminator(CodegenDiscriminator discriminator) { this.discriminator = discriminator; - if (discriminator != null && (!discriminator.getMappedModels().isEmpty() || this.vendorExtensions.containsKey("x-discriminator-value"))) { + if (discriminator != null && !discriminator.getMappedModels().isEmpty()) { this.hasDiscriminatorWithNonEmptyMapping = true; } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 2950826dcdc7..a90dc165cb68 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -707,7 +707,7 @@ public Map updateAllModels(Map objs) { * Removes importToRemove from the imports of objs, if present. * This is useful to remove imports that are already present in operations-related template files, to avoid importing the same thing twice. * - * @param objs imports will be removed from this objs' imports collection + * @param objs imports will be removed from this objs' imports collection * @param importToRemove the import statement to be removed */ protected void removeImport(OperationsMap objs, String importToRemove) { @@ -1092,7 +1092,7 @@ public void preprocessOpenAPI(OpenAPI openAPI) { addOneOfNameExtension(s, n); } } else if (ModelUtils.isArraySchema(s)) { - Schema items = ((ArraySchema) s).getItems(); + Schema items = ModelUtils.getSchemaItems(s); if (ModelUtils.isComposedSchema(items)) { addOneOfNameExtension(items, nOneOf); addOneOfInterfaceModel(items, nOneOf); @@ -2065,8 +2065,7 @@ public String toInstantiationType(Schema schema) { } return inner; } else if (ModelUtils.isArraySchema(schema)) { - ArraySchema arraySchema = (ArraySchema) schema; - String inner = getSchemaType(getSchemaItems(arraySchema)); + String inner = getSchemaType(ModelUtils.getSchemaItems(schema)); String parentType; if (ModelUtils.isSet(schema)) { parentType = "set"; @@ -2303,7 +2302,7 @@ public String toDefaultParameterValue(Schema schema) { * Any non-null value will cause {{#defaultValue} check to pass. * * @param codegenProperty Codegen Property - * @param schema Parameter schema + * @param schema Parameter schema * @return string presentation of the default value of the parameter */ public String toDefaultParameterValue(CodegenProperty codegenProperty, Schema schema) { @@ -2330,7 +2329,7 @@ public String toDefaultValueWithParam(String name, Schema schema) { * Return null if you do NOT want a default value. * Any non-null value will cause {{#defaultValue} check to pass. * - * @param schema Property schema + * @param schema Property schema * @param codegenProperty Codegen property * @return string presentation of the default value of the property */ @@ -2372,15 +2371,6 @@ public String getSchemaType(Schema schema) { } - protected Schema getSchemaItems(ArraySchema schema) { - Schema items = schema.getItems(); - if (items == null) { - LOGGER.error("Undefined array inner type for `{}`. Default to String.", schema.getName()); - items = new StringSchema().description("TODO default missing array inner type to string"); - schema.setItems(items); - } - return items; - } protected Schema getSchemaAdditionalProperties(Schema schema) { Schema inner = ModelUtils.getAdditionalProperties(schema); @@ -3018,6 +3008,7 @@ protected String toTestCaseName(String specTestCaseName) { /** * A method that allows generators to pre-process test example payloads * This can be useful if one needs to change how values like null in string are represented + * * @param data the test data payload * @return the updated test data payload */ @@ -3028,6 +3019,7 @@ protected Object processTestExampleData(Object data) { /** * Processes any test cases if they exist in the components.x-test-examples vendor extensions * If they exist then cast them to java class instances and return them back in a map + * * @param refToTestCases the component schema name that the test cases are for */ private HashMap extractSchemaTestCases(String refToTestCases) { @@ -3064,7 +3056,7 @@ private HashMap extractSchemaTestCases(String refToTestC /** * Sets the booleans that define the model's type * - * @param model the model to update + * @param model the model to update * @param schema the model's schema */ protected void updateModelForString(CodegenModel model, Schema schema) { @@ -3322,7 +3314,6 @@ protected void setAddProps(Schema schema, IJsonSchemaValidationProperties proper * @param sc The Schema that may contain the discriminator * @param discPropName The String that is the discriminator propertyName in the schema * @param visitedSchemas A set of visited schema names - * */ private CodegenProperty discriminatorFound(String composedSchemaName, Schema sc, String discPropName, Set visitedSchemas) { if (visitedSchemas.contains(composedSchemaName)) { // recursive schema definition found @@ -3409,7 +3400,7 @@ private CodegenProperty discriminatorFound(String composedSchemaName, Schema sc, /** * Recursively look in Schema sc for the discriminator and return it * - * @param sc The Schema that may contain the discriminator + * @param sc The Schema that may contain the discriminator * @param visitedSchemas An array list of visited schemas */ private Discriminator recursiveGetDiscriminator(Schema sc, ArrayList visitedSchemas) { @@ -3629,9 +3620,9 @@ protected List getAllOfDescendants(String thisSchemaName) { Map vendorExtensions = cs.getExtensions(); String mappingName = Optional.ofNullable(vendorExtensions) - .map(ve -> ve.get("x-discriminator-value")) - .map(discriminatorValue -> (String) discriminatorValue) - .orElse(currentSchemaName); + .map(ve -> ve.get("x-discriminator-value")) + .map(discriminatorValue -> (String) discriminatorValue) + .orElse(currentSchemaName); MappedModel mm = new MappedModel(mappingName, toModelName(currentSchemaName), !mappingName.equals(currentSchemaName)); descendentSchemas.add(mm); } @@ -3658,11 +3649,11 @@ protected CodegenDiscriminator createDiscriminator(String schemaName, Schema sch // the future.. String propertyType = Optional.ofNullable(schema.getProperties()) - .map(p -> (Schema) p.get(discriminatorPropertyName)) - .map(Schema::get$ref) - .map(ModelUtils::getSimpleRef) - .map(this::toModelName) - .orElseGet(() -> typeMapping.get("string")); + .map(p -> (Schema) p.get(discriminatorPropertyName)) + .map(Schema::get$ref) + .map(ModelUtils::getSimpleRef) + .map(this::toModelName) + .orElseGet(() -> typeMapping.get("string")); discriminator.setPropertyType(propertyType); // check to see if the discriminator property is an enum string @@ -3953,8 +3944,8 @@ public CodegenProperty fromProperty(String name, Schema p, boolean required) { * This method was kept when required was added to the fromProperty signature * to ensure that the change was non-breaking * - * @param name name of the property - * @param p OAS property schema + * @param name name of the property + * @param p OAS property schema * @return Codegen Property object */ public CodegenProperty fromProperty(String name, Schema p) { @@ -3970,9 +3961,9 @@ public CodegenProperty fromProperty(String name, Schema p) { * Any subsequent processing of the CodegenModel return value must be idempotent * for a given (String name, Schema schema). * - * @param name name of the property - * @param p OAS property schema - * @param required true if the property is required in the next higher object schema, false otherwise + * @param name name of the property + * @param p OAS property schema + * @param required true if the property is required in the next higher object schema, false otherwise * @param schemaIsFromAdditionalProperties true if the property is a required property defined by additional properties schema * If this is the actual additionalProperties schema not defining a required property, then * the value should be false @@ -3983,7 +3974,7 @@ public CodegenProperty fromProperty(String name, Schema p, boolean required, boo LOGGER.error("Undefined property/schema for `{}`. Default to type:string.", name); return null; } - LOGGER.debug("debugging fromProperty for {} : {}", name, p); + LOGGER.debug("debugging fromProperty for {}: {}", name, p); NamedSchema ns = new NamedSchema(name, p, required, schemaIsFromAdditionalProperties); CodegenProperty cpc = schemaCodegenPropertyCache.get(ns); if (cpc != null) { @@ -4190,8 +4181,7 @@ public CodegenProperty fromProperty(String name, Schema p, boolean required, boo // handle inner property String itemName = getItemsName(p, name); - ArraySchema arraySchema = (ArraySchema) p; - Schema innerSchema = unaliasSchema(getSchemaItems(arraySchema)); + Schema innerSchema = unaliasSchema(ModelUtils.getSchemaItems(p)); CodegenProperty cp = fromProperty(itemName, innerSchema, false); updatePropertyForArray(property, cp); } else if (ModelUtils.isTypeObjectSchema(p)) { @@ -4501,8 +4491,7 @@ protected void handleMethodResponse(Operation operation, CodegenProperty cm = fromProperty("response", responseSchema, false); if (ModelUtils.isArraySchema(responseSchema)) { - ArraySchema as = (ArraySchema) responseSchema; - CodegenProperty innerProperty = fromProperty("response", getSchemaItems(as), false); + CodegenProperty innerProperty = fromProperty("response", ModelUtils.getSchemaItems(responseSchema), false); op.returnBaseType = innerProperty.baseType; } else if (ModelUtils.isMapSchema(responseSchema)) { CodegenProperty innerProperty = fromProperty("response", ModelUtils.getAdditionalProperties(responseSchema), false); @@ -4753,8 +4742,8 @@ public CodegenOperation fromOperation(String path, if (contentType != null) { contentType = contentType.toLowerCase(Locale.ROOT); } - if (!(this instanceof RustAxumServerCodegen) && contentType != null && - (contentType.startsWith("application/x-www-form-urlencoded") || + if (contentType != null && + ((!(this instanceof RustAxumServerCodegen) && contentType.startsWith("application/x-www-form-urlencoded")) || contentType.startsWith("multipart"))) { // process form parameters formParams = fromRequestBodyToFormParameters(requestBody, imports); @@ -5027,8 +5016,7 @@ public CodegenResponse fromResponse(String responseCode, ApiResponse response) { r.isArray = true; r.containerType = cp.containerType; r.containerTypeMapped = typeMapping.get(cp.containerType); - ArraySchema as = (ArraySchema) responseSchema; - CodegenProperty items = fromProperty("response", getSchemaItems(as), false); + CodegenProperty items = fromProperty("response", ModelUtils.getSchemaItems(responseSchema), false); r.setItems(items); CodegenProperty innerCp = items; @@ -5404,8 +5392,7 @@ public CodegenParameter fromParameter(Parameter parameter, Set imports) } addVarsRequiredVarsAdditionalProps(parameterSchema, codegenParameter); } else if (ModelUtils.isArraySchema(parameterSchema)) { - final ArraySchema arraySchema = (ArraySchema) parameterSchema; - Schema inner = getSchemaItems(arraySchema); + Schema inner = ModelUtils.getSchemaItems(parameterSchema); collectionFormat = getCollectionFormat(parameter); // default to csv: @@ -5922,10 +5909,10 @@ protected void addImport(Set importsToBeAddedTo, String type) { /** * Add the model name of the child schema in a composed schema to the set of imports * - * @param composed composed schema + * @param composed composed schema * @param childSchema composed schema - * @param model codegen model - * @param modelName model name + * @param model codegen model + * @param modelName model name */ protected void addImport(Schema composed, Schema childSchema, CodegenModel model, String modelName) { if (composed == null || childSchema == null) { @@ -6808,12 +6795,12 @@ protected List> buildEnumVars(List values, String da String enumValue = isDataTypeString(dataType) ? enumUnknownDefaultCaseName : // This is a dummy value that attempts to avoid collisions with previously specified cases. - // Int.max / 192 - // The number 192 that is used to calculate this random value, is the Swift Evolution proposal for frozen/non-frozen enums. - // [SE-0192](https://github.com/apple/swift-evolution/blob/master/proposals/0192-non-exhaustive-enums.md) - // Since this functionality was born in the Swift 5 generator and latter on broth to all generators - // https://github.com/OpenAPITools/openapi-generator/pull/11013 - String.valueOf(11184809); + // Int.max / 192 + // The number 192 that is used to calculate this random value, is the Swift Evolution proposal for frozen/non-frozen enums. + // [SE-0192](https://github.com/apple/swift-evolution/blob/master/proposals/0192-non-exhaustive-enums.md) + // Since this functionality was born in the Swift 5 generator and latter on broth to all generators + // https://github.com/OpenAPITools/openapi-generator/pull/11013 + String.valueOf(11184809); enumVar.put("name", toEnumVarName(enumName, dataType)); enumVar.put("value", toEnumValue(enumValue, dataType)); @@ -7217,7 +7204,9 @@ public CodegenParameter fromFormProperty(String name, Schema propertySchema, Set codegenParameter.nameInPascalCase = camelize(codegenParameter.paramName); codegenParameter.nameInSnakeCase = CaseFormat.UPPER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, codegenParameter.nameInPascalCase); codegenParameter.nameInLowerCase = codegenParameter.paramName.toLowerCase(Locale.ROOT); - + codegenParameter.isContainer = codegenProperty.isContainer; + codegenParameter.containerType = codegenProperty.containerType; + codegenParameter.containerTypeMapped = codegenProperty.containerTypeMapped; codegenParameter.dataFormat = codegenProperty.dataFormat; // non-array/map updateCodegenPropertyEnum(codegenProperty); @@ -7284,19 +7273,27 @@ public CodegenParameter fromFormProperty(String name, Schema propertySchema, Set } } } else if (ModelUtils.isTypeObjectSchema(ps)) { - if (ModelUtils.isFreeFormObject(ps)) { + if (ModelUtils.isMapSchema(ps)) { + codegenParameter.isMap = true; + codegenParameter.additionalProperties = codegenProperty.additionalProperties; + codegenParameter.setAdditionalPropertiesIsAnyType(codegenProperty.getAdditionalPropertiesIsAnyType()); + codegenParameter.items = codegenProperty.items; + codegenParameter.isPrimitiveType = false; + codegenParameter.items = codegenProperty.items; + codegenParameter.mostInnerItems = codegenProperty.mostInnerItems; + } else if (ModelUtils.isFreeFormObject(ps)) { codegenParameter.isFreeFormObject = true; } } else if (ModelUtils.isNullType(ps)) { } else if (ModelUtils.isAnyType(ps)) { // any schema with no type set, composed schemas often do this } else if (ModelUtils.isArraySchema(ps)) { - Schema inner = getSchemaItems((ArraySchema) ps); + Schema inner = ModelUtils.getSchemaItems(ps); CodegenProperty arrayInnerProperty = fromProperty("inner", inner, false); + codegenParameter.isArray = true; codegenParameter.items = arrayInnerProperty; codegenParameter.mostInnerItems = arrayInnerProperty.mostInnerItems; codegenParameter.isPrimitiveType = false; - codegenParameter.isContainer = true; // hoist items data into the array property // TODO this hoisting code is generator specific and should be isolated into updateFormPropertyForArray codegenParameter.baseType = arrayInnerProperty.dataType; @@ -7572,11 +7569,10 @@ protected void updateRequestBodyForArray(CodegenParameter codegenParameter, Sche if (ModelUtils.isGenerateAliasAsModel(schema) && StringUtils.isNotBlank(name)) { this.addBodyModelSchema(codegenParameter, name, schema, imports, bodyParameterName, true); } else { - final ArraySchema arraySchema = (ArraySchema) schema; - Schema inner = getSchemaItems(arraySchema); - CodegenProperty codegenProperty = fromProperty("property", arraySchema, false); + Schema inner = ModelUtils.getSchemaItems(schema); + CodegenProperty codegenProperty = fromProperty("property", schema, false); if (codegenProperty == null) { - throw new RuntimeException("CodegenProperty cannot be null. arraySchema for debugging: " + arraySchema); + throw new RuntimeException("CodegenProperty cannot be null. arraySchema for debugging: " + schema); } imports.add(codegenProperty.baseType); @@ -7609,7 +7605,7 @@ protected void updateRequestBodyForArray(CodegenParameter codegenParameter, Sche codegenParameter.items = codegenProperty.items; codegenParameter.mostInnerItems = codegenProperty.mostInnerItems; - codegenParameter.dataType = getTypeDeclaration(arraySchema); + codegenParameter.dataType = getTypeDeclaration(schema); codegenParameter.baseType = getSchemaType(inner); codegenParameter.isContainer = Boolean.TRUE; codegenParameter.isNullable = codegenProperty.isNullable; @@ -7988,6 +7984,7 @@ protected String getItemsName(Schema containingSchema, String containingSchemaNa protected String getAdditionalPropertiesName() { return "additional_properties"; } + private void addJsonSchemaForBodyRequestInCaseItsNotPresent(CodegenParameter codegenParameter, RequestBody body) { if (codegenParameter.jsonSchema == null) codegenParameter.jsonSchema = Json.pretty(body); @@ -8254,8 +8251,8 @@ public void addOneOfNameExtension(Schema schema, String name) { /** * Add a given ComposedSchema as an interface model to be generated, assuming it has `oneOf` defined * - * @param cs ComposedSchema object to create as interface model - * @param type name to use for the generated interface model + * @param cs ComposedSchema object to create as interface model + * @param type name to use for the generated interface model */ public void addOneOfInterfaceModel(Schema cs, String type) { if (cs.getOneOf() == null) { @@ -8445,7 +8442,7 @@ private List getComposedProperties(List xOfCollection, // in other sub-schemas of allOf/anyOf/oneOf cp.vendorExtensions.putIfAbsent("x-duplicated-data-type", true); } else { - if(isTypeErasedGenerics()) { + if (isTypeErasedGenerics()) { dataTypeSet.add(cp.baseType); } else { dataTypeSet.add(cp.dataType); @@ -8476,13 +8473,17 @@ public List getSupportedVendorExtensions() { } @Override - public boolean getUseInlineModelResolver() { return true; } + public boolean getUseInlineModelResolver() { + return true; + } @Override - public boolean getUseOpenAPINormalizer() { return true; } + public boolean getUseOpenapiNormalizer() { + return true; + } @Override - public Set getOpenAPIGeneratorIgnoreList() { + public Set getOpenapiGeneratorIgnoreList() { return openapiGeneratorIgnoreList; } @@ -8496,7 +8497,9 @@ public boolean isTypeErasedGenerics() { And convert special characters like newline, tab, carriage return Into strings that can be rendered in the language that the generator will output to */ - protected String handleSpecialCharacters(String name) { return name; } + protected String handleSpecialCharacters(String name) { + return name; + } /** * Used to ensure that null or Schema is returned given an input Boolean/Schema/null diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java index 8760af0bc7d0..b65a5fbd5d68 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java @@ -265,7 +265,7 @@ void configureGeneratorProperties() { // normalize the spec try { - if (config.getUseOpenAPINormalizer()) { + if (config.getUseOpenapiNormalizer()) { SemVer version = new SemVer(openAPI.getOpenapi()); if (version.atLeast("3.1.0")) { config.openapiNormalizer().put("NORMALIZE_31SPEC", "true"); @@ -929,8 +929,8 @@ private boolean apiFilePreCheck(String filename, String generator, String templa /* * Generate .openapi-generator-ignore if the option openapiGeneratorIgnoreFile is enabled. */ - private void generateOpenAPIGeneratorIgnoreFile() { - if (config.getOpenAPIGeneratorIgnoreList() == null || config.getOpenAPIGeneratorIgnoreList().isEmpty()) { + private void generateOpenapiGeneratorIgnoreFile() { + if (config.getOpenapiGeneratorIgnoreList() == null || config.getOpenapiGeneratorIgnoreList().isEmpty()) { return; } @@ -982,7 +982,7 @@ private void generateOpenAPIGeneratorIgnoreFile() { Writer fileWriter = Files.newBufferedWriter(ignoreFile.toPath(), StandardCharsets.UTF_8); fileWriter.write(header); // add entries provided by the users - for (String entry : config.getOpenAPIGeneratorIgnoreList()) { + for (String entry : config.getOpenapiGeneratorIgnoreList()) { fileWriter.write(entry); fileWriter.write("\n"); } @@ -1219,7 +1219,7 @@ public List generate() { processUserDefinedTemplates(); // generate .openapi-generator-ignore if the option openapiGeneratorIgnoreFile is enabled - generateOpenAPIGeneratorIgnoreFile(); + generateOpenapiGeneratorIgnoreFile(); List files = new ArrayList<>(); // models diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java index f36457cc115d..7ccb89967959 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/InlineModelResolver.java @@ -338,10 +338,9 @@ private void gatherInlineModels(Schema schema, String modelPrefix) { return; } // Check array items - if (schema instanceof ArraySchema) { - ArraySchema array = (ArraySchema) schema; - Schema items = array.getItems(); - if (items == null && array.getPrefixItems() == null) { + if (ModelUtils.isArraySchema(schema)) { + Schema items = ModelUtils.getSchemaItems(schema); + if (items == null && schema.getPrefixItems() == null) { LOGGER.debug("Incorrect array schema with no items, prefixItems: {}", schema.toString()); return; } @@ -357,7 +356,7 @@ private void gatherInlineModels(Schema schema, String modelPrefix) { if (isModelNeeded(items)) { // If this schema should be split into its own model, do so - array.setItems(this.makeSchemaInComponents(schemaName, items)); + schema.setItems(this.makeSchemaInComponents(schemaName, items)); } } // Check allOf, anyOf, oneOf for inline models @@ -771,9 +770,8 @@ private void flattenProperties(OpenAPI openAPI, Map properties, for (Map.Entry propertiesEntry : properties.entrySet()) { String key = propertiesEntry.getKey(); Schema property = propertiesEntry.getValue(); - if (property instanceof ObjectSchema && ((ObjectSchema) property).getProperties() != null - && ((ObjectSchema) property).getProperties().size() > 0) { - ObjectSchema op = (ObjectSchema) property; + if (ModelUtils.isObjectSchema(property)) { + Schema op = property; String modelName = resolveModelName(op.getTitle(), path + "_" + key); Schema model = modelFromProperty(openAPI, op, modelName); String existing = matchGenerated(model); @@ -788,11 +786,10 @@ private void flattenProperties(OpenAPI openAPI, Map properties, propsToUpdate.put(key, schema); modelsToAdd.put(modelName, model); } - } else if (property instanceof ArraySchema) { - ArraySchema ap = (ArraySchema) property; - Schema inner = ap.getItems(); - if (inner instanceof ObjectSchema) { - ObjectSchema op = (ObjectSchema) inner; + } else if (ModelUtils.isArraySchema(property)) { + Schema inner = ModelUtils.getSchemaItems(property); + if (ModelUtils.isObjectSchema(inner)) { + Schema op = inner; if (op.getProperties() != null && op.getProperties().size() > 0) { flattenProperties(openAPI, op.getProperties(), path); String modelName = resolveModelName(op.getTitle(), path + "_" + key); @@ -801,12 +798,12 @@ private void flattenProperties(OpenAPI openAPI, Map properties, if (existing != null) { Schema schema = new Schema().$ref(existing); schema.setRequired(op.getRequired()); - ap.setItems(schema); + property.setItems(schema); } else { modelName = addSchemas(modelName, innerModel); Schema schema = new Schema().$ref(modelName); schema.setRequired(op.getRequired()); - ap.setItems(schema); + property.setItems(schema); } } } else if (ModelUtils.isComposedSchema(inner)) { @@ -815,14 +812,14 @@ private void flattenProperties(OpenAPI openAPI, Map properties, innerModelName = addSchemas(innerModelName, inner); Schema schema = new Schema().$ref(innerModelName); schema.setRequired(inner.getRequired()); - ap.setItems(schema); + property.setItems(schema); } else { LOGGER.debug("Schema not yet handled in model resolver: {}", inner); } } else if (ModelUtils.isMapSchema(property)) { Schema inner = ModelUtils.getAdditionalProperties(property); - if (inner instanceof ObjectSchema) { - ObjectSchema op = (ObjectSchema) inner; + if (ModelUtils.isObjectSchema(inner)) { + Schema op = inner; if (op.getProperties() != null && op.getProperties().size() > 0) { flattenProperties(openAPI, op.getProperties(), path); String modelName = resolveModelName(op.getTitle(), path + "_" + key); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java index d120b4d7b262..ece6f10b7540 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java @@ -499,7 +499,7 @@ public Schema normalizeSchema(Schema schema, Set visitedSchemas) { } if (StringUtils.isNotEmpty(schema.get$ref())) { - // not need to process $ref + // no need to process $ref return schema; } @@ -509,9 +509,10 @@ public Schema normalizeSchema(Schema schema, Set visitedSchemas) { visitedSchemas.add(schema); } - if (schema instanceof ArraySchema) { // array - normalizeArraySchema(schema); - normalizeSchema(schema.getItems(), visitedSchemas); + if (ModelUtils.isArraySchema(schema)) { // array + Schema result = normalizeArraySchema(schema); + normalizeSchema(result.getItems(), visitedSchemas); + return result; } else if (schema.getAdditionalProperties() instanceof Schema) { // map normalizeMapSchema(schema); normalizeSchema((Schema) schema.getAdditionalProperties(), visitedSchemas); @@ -566,7 +567,8 @@ public Schema normalizeSchema(Schema schema, Set visitedSchemas) { } private Schema normalizeArraySchema(Schema schema) { - return processSetArraytoNullable(schema); + Schema result = processNormalize31Spec(schema, new HashSet<>()); + return processSetArraytoNullable(result); } private Schema normalizeMapSchema(Schema schema) { @@ -594,7 +596,7 @@ private void normalizeProperties(Map properties, Set vis } for (Map.Entry propertiesEntry : properties.entrySet()) { Schema property = propertiesEntry.getValue(); - Schema newProperty = normalizeSchema(property, visitedSchemas); + Schema newProperty = normalizeSchema(property, new HashSet<>()); propertiesEntry.setValue(newProperty); } } @@ -888,7 +890,7 @@ public boolean isNullTypeSchema(Schema schema) { if (schema.getTypes() != null && !schema.getTypes().isEmpty()) { // 3.1 spec - if (schema.getTypes().size() ==1) { // 1 type only + if (schema.getTypes().size() == 1) { // 1 type only String type = (String) schema.getTypes().iterator().next(); return type == null || "null".equals(type); } else { // more than 1 type so must not be just null @@ -900,6 +902,11 @@ public boolean isNullTypeSchema(Schema schema) { if (Boolean.TRUE.equals(schema.getNullable())) { return true; } + + // for `type: null` + if (schema.getTypes() == null && schema.get$ref() == null) { + return true; + } } else { // 3.0.x or 2.x spec if ((schema.getType() == null || schema.getType().equals("null")) && schema.get$ref() == null) { return true; @@ -936,7 +943,13 @@ private Schema processSimplifyOneOf(Schema schema) { if (oneOfSchemas.size() == 6) { TreeSet ts = new TreeSet<>(); for (Schema s: oneOfSchemas) { - ts.add(s.getType()); + s = ModelUtils.getReferencedSchema(openAPI, s); + String type = ModelUtils.getType(s); + if (type == null) { + LOGGER.debug("Error null type found in schema when simplifying any type with 6 sub-schemas: {}", s); + } else { + ts.add(type); + } } if (ts.equals(anyTypeTreeSet)) { @@ -1061,7 +1074,13 @@ private Schema processSimplifyAnyOf(Schema schema) { if (anyOfSchemas.size() == 6) { TreeSet ts = new TreeSet<>(); for (Schema s: anyOfSchemas) { - ts.add(s.getType()); + s = ModelUtils.getReferencedSchema(openAPI, s); + String type = ModelUtils.getType(s); + if (type == null) { + LOGGER.debug("Error null type found in schema when simplifying any type with 6 sub-schemas: {}", s); + } else { + ts.add(type); + } } if (ts.equals(anyTypeTreeSet)) { @@ -1222,7 +1241,7 @@ private Schema processNormalize31Spec(Schema schema, Set visitedSchemas) // only one item (type) left if (schema.getTypes().size() == 1) { String type = String.valueOf(schema.getTypes().iterator().next()); - if ("array".equals(type)) { + if (ModelUtils.isArraySchema(schema)) { ArraySchema as = new ArraySchema(); as.setDescription(schema.getDescription()); as.setDefault(schema.getDefault()); 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 bee2393d753a..90a35cd5641c 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 @@ -145,14 +145,14 @@ public static CodegenConfigurator fromFile(String configFile, Module... modules) if(generatorSettings.getOperationIdNameMappings() != null) { configurator.operationIdNameMappings.putAll(generatorSettings.getOperationIdNameMappings()); } - if(generatorSettings.getOpenAPINormalizer() != null) { - configurator.openapiNormalizer.putAll(generatorSettings.getOpenAPINormalizer()); + if(generatorSettings.getOpenapiNormalizer() != null) { + configurator.openapiNormalizer.putAll(generatorSettings.getOpenapiNormalizer()); } if(generatorSettings.getLanguageSpecificPrimitives() != null) { configurator.languageSpecificPrimitives.addAll(generatorSettings.getLanguageSpecificPrimitives()); } - if(generatorSettings.getOpenAPIGeneratorIgnoreList() != null) { - configurator.openapiGeneratorIgnoreList.addAll(generatorSettings.getOpenAPIGeneratorIgnoreList()); + if(generatorSettings.getOpenapiGeneratorIgnoreList() != null) { + configurator.openapiGeneratorIgnoreList.addAll(generatorSettings.getOpenapiGeneratorIgnoreList()); } if(generatorSettings.getReservedWordsMappings() != null) { configurator.reservedWordsMappings.putAll(generatorSettings.getReservedWordsMappings()); @@ -268,9 +268,9 @@ public CodegenConfigurator addOperationIdNameMapping(String key, String value) { return this; } - public CodegenConfigurator addOpenAPINormalizer(String key, String value) { + public CodegenConfigurator addOpenapiNormalizer(String key, String value) { this.openapiNormalizer.put(key, value); - generatorSettingsBuilder.withOpenAPINormalizer(key, value); + generatorSettingsBuilder.withOpenapiNormalizer(key, value); return this; } @@ -286,9 +286,9 @@ public CodegenConfigurator addLanguageSpecificPrimitive(String value) { return this; } - public CodegenConfigurator addOpenAPIGeneratorIgnoreList(String value) { + public CodegenConfigurator addOpenapiGeneratorIgnoreList(String value) { this.openapiGeneratorIgnoreList.add(value); - generatorSettingsBuilder.withOpenAPIGeneratorIgnoreList(value); + generatorSettingsBuilder.withOpenapiGeneratorIgnoreList(value); return this; } @@ -482,9 +482,9 @@ public CodegenConfigurator setOperationIdNameMappings(Map operat return this; } - public CodegenConfigurator setOpenAPINormalizer(Map openapiNormalizer) { + public CodegenConfigurator setOpenapiNormalizer(Map openapiNormalizer) { this.openapiNormalizer = openapiNormalizer; - generatorSettingsBuilder.withOpenAPINormalizer(openapiNormalizer); + generatorSettingsBuilder.withOpenapiNormalizer(openapiNormalizer); return this; } @@ -515,10 +515,10 @@ public CodegenConfigurator setLanguageSpecificPrimitives( return this; } - public CodegenConfigurator setOpenAPIGeneratorIgnoreList( + public CodegenConfigurator setOpenapiGeneratorIgnoreList( Set openapiGeneratorIgnoreList) { this.openapiGeneratorIgnoreList = openapiGeneratorIgnoreList; - generatorSettingsBuilder.withOpenAPIGeneratorIgnoreList(openapiGeneratorIgnoreList); + generatorSettingsBuilder.withOpenapiGeneratorIgnoreList(openapiGeneratorIgnoreList); return this; } @@ -779,9 +779,9 @@ public ClientOptInput toClientOptInput() { config.modelNameMapping().putAll(generatorSettings.getModelNameMappings()); config.enumNameMapping().putAll(generatorSettings.getEnumNameMappings()); config.operationIdNameMapping().putAll(generatorSettings.getOperationIdNameMappings()); - config.openapiNormalizer().putAll(generatorSettings.getOpenAPINormalizer()); + config.openapiNormalizer().putAll(generatorSettings.getOpenapiNormalizer()); config.languageSpecificPrimitives().addAll(generatorSettings.getLanguageSpecificPrimitives()); - config.openapiGeneratorIgnoreList().addAll(generatorSettings.getOpenAPIGeneratorIgnoreList()); + config.openapiGeneratorIgnoreList().addAll(generatorSettings.getOpenapiGeneratorIgnoreList()); config.reservedWordsMappings().putAll(generatorSettings.getReservedWordsMappings()); config.additionalProperties().putAll(generatorSettings.getAdditionalProperties()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfiguratorUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfiguratorUtils.java index 962b1f4df617..42f423984060 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfiguratorUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/config/CodegenConfiguratorUtils.java @@ -185,16 +185,16 @@ public static void applyOperationIdNameMappingsKvp(String operationIdNameMapping } } - public static void applyOpenAPINormalizerKvpList(List openapiNormalizer, CodegenConfigurator configurator) { + public static void applyOpenapiNormalizerKvpList(List openapiNormalizer, CodegenConfigurator configurator) { for (String propString : openapiNormalizer) { - applyOpenAPINormalizerKvp(propString, configurator); + applyOpenapiNormalizerKvp(propString, configurator); } } - public static void applyOpenAPINormalizerKvp(String openapiNormalizer, CodegenConfigurator configurator) { + public static void applyOpenapiNormalizerKvp(String openapiNormalizer, CodegenConfigurator configurator) { final Map map = createMapFromKeyValuePairs(openapiNormalizer); for (Map.Entry entry : map.entrySet()) { - configurator.addOpenAPINormalizer(entry.getKey().trim(), entry.getValue().trim()); + configurator.addOpenapiNormalizer(entry.getKey().trim(), entry.getValue().trim()); } } @@ -250,16 +250,16 @@ public static void applyLanguageSpecificPrimitivesCsv(String languageSpecificPri } } - public static void applyOpenAPIGeneratorIgnoreListCsvList(List openapiGeneratorIgnoreList, CodegenConfigurator configurator) { + public static void applyOpenapiGeneratorIgnoreListCsvList(List openapiGeneratorIgnoreList, CodegenConfigurator configurator) { for (String propString : openapiGeneratorIgnoreList) { - applyOpenAPIGeneratorIgnoreListCsv(propString, configurator); + applyOpenapiGeneratorIgnoreListCsv(propString, configurator); } } - public static void applyOpenAPIGeneratorIgnoreListCsv(String openapiGeneratorIgnoreList, CodegenConfigurator configurator) { + public static void applyOpenapiGeneratorIgnoreListCsv(String openapiGeneratorIgnoreList, CodegenConfigurator configurator) { final Set set = createSetFromCsvList(openapiGeneratorIgnoreList); for (String item : set) { - configurator.addOpenAPIGeneratorIgnoreList(item); + configurator.addOpenapiGeneratorIgnoreList(item); } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/ExampleGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/ExampleGenerator.java index f4e54796d37c..21560e2b69fb 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/ExampleGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/ExampleGenerator.java @@ -84,10 +84,9 @@ private List> generateFromResponseSchema(Schema responseSche } if (ModelUtils.isArraySchema(responseSchema)) { // array of schema - ArraySchema as = (ArraySchema) responseSchema; - if (as.getItems() != null) { // array of primitive types + if (ModelUtils.getSchemaItems(responseSchema) != null) { // array of primitive types return generate((Map) responseSchema.getExample(), - new ArrayList<>(producesInfo), as); + new ArrayList<>(producesInfo), responseSchema); } else { // TODO log warning message as such case is not handled at the moment return null; @@ -248,9 +247,9 @@ private Object resolvePropertyToExample(String propertyName, String mediaType, S } return Boolean.TRUE; } else if (ModelUtils.isArraySchema(property)) { - Schema innerType = ((ArraySchema) property).getItems(); + Schema innerType = ModelUtils.getSchemaItems(property); if (innerType != null) { - int arrayLength = null == ((ArraySchema) property).getMaxItems() ? 2 : ((ArraySchema) property).getMaxItems(); + int arrayLength = null == property.getMaxItems() ? 2 : property.getMaxItems(); // avoid memory issues by limiting to max. 5 items arrayLength = Math.min(arrayLength, 5); Object[] objectProperties = new Object[arrayLength]; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/XmlExampleGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/XmlExampleGenerator.java index 3151c0bffd94..b636c1f69a32 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/XmlExampleGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/XmlExampleGenerator.java @@ -128,8 +128,7 @@ protected String toXml(String name, Schema schema, int indent, Collection postProcessAllModels(Map objs) List allOf = composedSchemas.getAllOf(); if (allOf != null) { for (CodegenProperty property : allOf) { - property.name = patchPropertyName(model, property.baseType); + property.name = patchPropertyName(model, camelize(property.baseType)); patchPropertyVendorExtensions(property); } } @@ -594,7 +594,7 @@ public Map postProcessAllModels(Map objs) if (anyOf != null) { removePropertiesDeclaredInComposedTypes(objs, model, anyOf); for (CodegenProperty property : anyOf) { - property.name = patchPropertyName(model, property.baseType); + property.name = patchPropertyName(model, camelize(property.baseType)); property.isNullable = true; patchPropertyVendorExtensions(property); } @@ -604,7 +604,7 @@ public Map postProcessAllModels(Map objs) if (oneOf != null) { removePropertiesDeclaredInComposedTypes(objs, model, oneOf); for (CodegenProperty property : oneOf) { - property.name = patchPropertyName(model, property.baseType); + property.name = patchPropertyName(model, camelize(property.baseType)); property.isNullable = true; patchPropertyVendorExtensions(property); } @@ -1433,12 +1433,12 @@ public String getSchemaType(Schema p) { * @param arr The input array property * @return The type declaration when the type is an array of arrays. */ - private String getArrayTypeDeclaration(ArraySchema arr) { + private String getArrayTypeDeclaration(Schema arr) { // TODO: collection type here should be fully qualified namespace to avoid model conflicts // This supports arrays of arrays. String arrayType = typeMapping.get("array"); StringBuilder instantiationType = new StringBuilder(arrayType); - Schema items = arr.getItems(); + Schema items = ModelUtils.getSchemaItems(arr); String nestedType = getTypeDeclaration(items); // TODO: We may want to differentiate here between generics and primitive arrays. instantiationType.append("<").append(nestedType).append(">"); @@ -1448,7 +1448,7 @@ private String getArrayTypeDeclaration(ArraySchema arr) { @Override public String toInstantiationType(Schema p) { if (ModelUtils.isArraySchema(p)) { - return getArrayTypeDeclaration((ArraySchema) p); + return getArrayTypeDeclaration(p); } return super.toInstantiationType(p); } @@ -1456,7 +1456,7 @@ public String toInstantiationType(Schema p) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - return getArrayTypeDeclaration((ArraySchema) p); + return getArrayTypeDeclaration(p); } else if (ModelUtils.isMapSchema(p)) { // Should we also support maps of maps? Schema inner = ModelUtils.getAdditionalProperties(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java index 62c55f904d80..5bf7fd5df307 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractDartCodegen.java @@ -512,7 +512,7 @@ public String getTypeDeclaration(Schema p) { Schema schema = unaliasSchema(p); Schema target = ModelUtils.isGenerateAliasAsModel() ? p : schema; if (ModelUtils.isArraySchema(target)) { - Schema items = getSchemaItems((ArraySchema) schema); + Schema items = ModelUtils.getSchemaItems(schema); return getSchemaType(target) + "<" + getTypeDeclaration(items) + ">"; } if (ModelUtils.isMapSchema(target)) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java index 8f071ddc40c2..479fe4c99849 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractEiffelCodegen.java @@ -293,8 +293,7 @@ public String toApiDocFilename(String name) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return "LIST [" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); @@ -578,8 +577,7 @@ public String toInstantiationType(Schema p) { // String inner = toModelName(getSchemaType(additionalProperties2)); // return instantiationTypes.get("map") + " [" + inner + "]"; // } else if (ModelUtils.isArraySchema(p)) { -// ArraySchema ap = (ArraySchema) p; -// String inner = toModelName(getSchemaType(ap.getItems())); +// String inner = toModelName(getSchemaType(ModelUtils.getSchemaItems(p))); // return instantiationTypes.get("array") + " [" + inner + "]"; // } else { // return null; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java index a17f4abc27a1..713efe56087c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractFSharpCodegen.java @@ -855,12 +855,12 @@ public String getSchemaType(Schema p) { * @param arr The input array property * @return The type declaration when the type is an array of arrays. */ - private String getArrayTypeDeclaration(ArraySchema arr) { + private String getArrayTypeDeclaration(Schema arr) { // TODO: collection type here should be fully qualified namespace to avoid model conflicts // This supports arrays of arrays. String arrayType = typeMapping.get("array"); StringBuilder instantiationType = new StringBuilder(arrayType); - Schema items = arr.getItems(); + Schema items = ModelUtils.getSchemaItems(arr); String nestedType = getTypeDeclaration(items); // TODO: We may want to differentiate here between generics and primitive arrays. return nestedType + "[]"; @@ -869,7 +869,7 @@ private String getArrayTypeDeclaration(ArraySchema arr) { @Override public String toInstantiationType(Schema p) { if (ModelUtils.isArraySchema(p)) { - return getArrayTypeDeclaration((ArraySchema) p); + return getArrayTypeDeclaration(p); } return super.toInstantiationType(p); } @@ -877,7 +877,7 @@ public String toInstantiationType(Schema p) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - return getArrayTypeDeclaration((ArraySchema) p); + return getArrayTypeDeclaration(p); } else if (ModelUtils.isMapSchema(p)) { // Should we also support maps of maps? Schema inner = ModelUtils.getAdditionalProperties(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java index 11e4c3f8fe6d..ed02f152fa19 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGoCodegen.java @@ -48,6 +48,8 @@ public abstract class AbstractGoCodegen extends DefaultCodegen implements Codege protected boolean generateInterfaces = false; protected boolean withGoMod = false; protected boolean generateMarshalJSON = true; + protected boolean generateUnmarshalJSON = true; + protected String packageName = "openapi"; protected Set numberTypes; @@ -360,8 +362,7 @@ public String toApiTestFilename(String name) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); // In OAS 3.0.x, the array "items" attribute is required. // In OAS >= 3.1, the array "items" attribute is optional such that the OAS // specification is aligned with the JSON schema specification. @@ -776,7 +777,11 @@ public ModelsMap postProcessModels(ModelsMap objs) { } if (generateMarshalJSON) { - model.vendorExtensions.put("x-go-generate-marshal-json", true); + model.vendorExtensions.putIfAbsent("x-go-generate-marshal-json", true); + } + + if (generateUnmarshalJSON) { + model.vendorExtensions.putIfAbsent("x-go-generate-unmarshal-json", true); } } @@ -933,6 +938,10 @@ public void setGenerateMarshalJSON(boolean generateMarshalJSON) { this.generateMarshalJSON = generateMarshalJSON; } + public void setGenerateUnmarshalJSON(boolean generateUnmarshalJSON) { + this.generateUnmarshalJSON = generateUnmarshalJSON; + } + @Override public String toDefaultValue(Schema schema) { schema = unaliasSchema(schema); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java index 056fd5a51a7b..2d92ab1614f6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractGraphQLCodegen.java @@ -273,8 +273,7 @@ public String toApiName(String name) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Object ap = p.getAdditionalProperties(); 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 2303c7c1b75b..9d102824c730 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 @@ -192,7 +192,7 @@ public AbstractJavaCodegen() { "ApiClient", "ApiException", "ApiResponse", "Configuration", "StringUtil", // language reserved words - "abstract", "continue", "for", "new", "switch", "assert", + "_", "abstract", "continue", "for", "new", "switch", "assert", "default", "if", "package", "synchronized", "boolean", "do", "goto", "private", "this", "break", "double", "implements", "protected", "throw", "byte", "else", "import", "public", "throws", "case", "enum", "instanceof", "return", "transient", @@ -946,7 +946,7 @@ public String getTypeDeclaration(Schema p) { Schema schema = unaliasSchema(p); Schema target = ModelUtils.isGenerateAliasAsModel() ? p : schema; if (ModelUtils.isArraySchema(target)) { - Schema items = getSchemaItems((ArraySchema) schema); + Schema items = ModelUtils.getSchemaItems(schema); return getSchemaType(target) + "<" + getBeanValidation(items) + getTypeDeclaration(items) + ">"; } else if (ModelUtils.isMapSchema(target)) { // Note: ModelUtils.isMapSchema(p) returns true when p is a composed schema that also defines @@ -999,6 +999,10 @@ private String getBeanValidation(Schema items) { return getNumberBeanValidation(items); } + if (ModelUtils.isLongSchema(items)) { + return getLongBeanValidation(items); + } + if (ModelUtils.isIntegerSchema(items)) { return getIntegerBeanValidation(items); } @@ -1021,6 +1025,21 @@ private String getIntegerBeanValidation(Schema items) { return ""; } + private String getLongBeanValidation(Schema items) { + if (items.getMinimum() != null && items.getMaximum() != null) { + return String.format(Locale.ROOT, "@Min(%sL) @Max(%sL)", items.getMinimum(), items.getMaximum()); + } + + if (items.getMinimum() != null) { + return String.format(Locale.ROOT, "@Min(%sL)", items.getMinimum()); + } + + if (items.getMaximum() != null) { + return String.format(Locale.ROOT, "@Max(%sL)", items.getMaximum()); + } + return ""; + } + private String getNumberBeanValidation(Schema items) { if (items.getMinimum() != null && items.getMaximum() != null) { return String.format(Locale.ROOT, "@DecimalMin(value = \"%s\", inclusive = %s) @DecimalMax(value = \"%s\", inclusive = %s)", @@ -1908,10 +1927,9 @@ public String toEnumVarName(String value, String datatype) { // string String var = value.replaceAll("\\W+", "_").toUpperCase(Locale.ROOT); if (var.matches("\\d.*")) { - return "_" + var; - } else { - return var; + var = "_" + var; } + return this.toVarName(var); } @Override diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJuliaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJuliaCodegen.java index 6fec46385629..b1210465b89d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJuliaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJuliaCodegen.java @@ -346,8 +346,7 @@ public String toModelName(final String name) { @Override public String getTypeDeclaration(Schema schema) { if (ModelUtils.isArraySchema(schema)) { - ArraySchema ap = (ArraySchema) schema; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(schema); return getSchemaType(schema) + "{" + getTypeDeclaration(inner) + "}"; } else if (ModelUtils.isSet(schema)) { Schema inner = ModelUtils.getAdditionalProperties(schema); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java index d7708e5d28c8..9485bb2dd7ee 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java @@ -359,7 +359,7 @@ public String getTypeDeclaration(Schema p) { Schema schema = unaliasSchema(p); Schema target = ModelUtils.isGenerateAliasAsModel() ? p : schema; if (ModelUtils.isArraySchema(target)) { - Schema items = getSchemaItems((ArraySchema) schema); + Schema items = ModelUtils.getSchemaItems( schema); return getSchemaType(target) + "<" + getTypeDeclaration(items) + ">"; } else if (ModelUtils.isMapSchema(target)) { // Note: ModelUtils.isMapSchema(p) returns true when p is a composed schema that also defines @@ -683,6 +683,11 @@ public String toModelImport(String name) { */ @Override public String toModelName(final String name) { + // obtain the name from modelNameMapping directly if provided + if (modelNameMapping.containsKey(name)) { + return modelNameMapping.get(name); + } + // memoization if (schemaKeyToModelNameCache.containsKey(name)) { return schemaKeyToModelNameCache.get(name); @@ -901,7 +906,7 @@ public String toEnumValue(String value, String datatype) { } else if ("kotlin.Float".equals(datatype)) { return value + "f"; } else { - return "\"" + escapeText(value) + "\""; + return "\"" + value + "\""; } } @@ -1104,7 +1109,7 @@ private String toArrayDefaultValue(CodegenProperty cp, Schema schema) { } StringBuilder defaultContent = new StringBuilder(); - Schema itemsSchema = getSchemaItems((ArraySchema) schema); + Schema itemsSchema = ModelUtils.getSchemaItems(schema); _default.elements().forEachRemaining((element) -> { String defaultValue = element.asText(); if (defaultValue != null) { 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 19dddf4a3715..b8ac658b892c 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 @@ -355,11 +355,10 @@ public String toApiDocFilename(String name) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); if (inner == null) { LOGGER.warn("{}(array property) does not have a proper inner type defined.Default to string", - ap.getName()); + p.getName()); inner = new StringSchema().description("TODO default missing array inner type to string"); } return getTypeDeclaration(inner) + "[]"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonCodegen.java index 5d6aeed51de2..7808c7ffb29a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonCodegen.java @@ -491,8 +491,7 @@ private String toExampleValueRecursive(Schema schema, List includedSchem if (StringUtils.isNotBlank(schema.getTitle()) && !"null".equals(schema.getTitle())) { includedSchemas.add(schema); } - ArraySchema arrayschema = (ArraySchema) schema; - example = "[\n" + indentationString + toExampleValueRecursive(arrayschema.getItems(), includedSchemas, indentation + 1) + "\n" + indentationString + "]"; + example = "[\n" + indentationString + toExampleValueRecursive(ModelUtils.getSchemaItems(schema), includedSchemas, indentation + 1) + "\n" + indentationString + "]"; } else if (ModelUtils.isMapSchema(schema)) { if (StringUtils.isNotBlank(schema.getTitle()) && !"null".equals(schema.getTitle())) { includedSchemas.add(schema); @@ -693,8 +692,7 @@ public String getTypeDeclaration(Schema p) { p = ModelUtils.unaliasSchema(openAPI, p); if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getSchemaType(p) + "[" + getCollectionItemTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); @@ -1002,6 +1000,11 @@ private ModelsMap postProcessModelsMap(ModelsMap objs) { // set the extensions if the key is absent model.getVendorExtensions().putIfAbsent("x-py-readonly", readOnlyFields); + // remove the items of postponedModelImports in modelImports to avoid circular imports error + if (!modelImports.isEmpty() && !postponedModelImports.isEmpty()){ + modelImports.removeAll(postponedModelImports); + } + // import models one by one if (!modelImports.isEmpty()) { Set modelsToImport = new TreeSet<>(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java index a171b8f77513..d24fbcabb955 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java @@ -351,8 +351,7 @@ public String modelFileFolder() { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonPydanticV1Codegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonPydanticV1Codegen.java index eceec06007f2..617da587f84c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonPydanticV1Codegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonPydanticV1Codegen.java @@ -454,8 +454,7 @@ private String toExampleValueRecursive(Schema schema, List includedSchem if (StringUtils.isNotBlank(schema.getTitle()) && !"null".equals(schema.getTitle())) { includedSchemas.add(schema); } - ArraySchema arrayschema = (ArraySchema) schema; - example = "[\n" + indentationString + toExampleValueRecursive(arrayschema.getItems(), includedSchemas, indentation + 1) + "\n" + indentationString + "]"; + example = "[\n" + indentationString + toExampleValueRecursive(ModelUtils.getSchemaItems(schema), includedSchemas, indentation + 1) + "\n" + indentationString + "]"; } else if (ModelUtils.isMapSchema(schema)) { if (StringUtils.isNotBlank(schema.getTitle()) && !"null".equals(schema.getTitle())) { includedSchemas.add(schema); @@ -656,8 +655,7 @@ public String getTypeDeclaration(Schema p) { p = ModelUtils.unaliasSchema(openAPI, p); if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); @@ -1004,6 +1002,11 @@ private ModelsMap postProcessModelsMap(ModelsMap objs) { model.getVendorExtensions().putIfAbsent("x-py-datetime-imports", datetimeImports); model.getVendorExtensions().putIfAbsent("x-py-readonly", readOnlyFields); + // remove the items of postponedModelImports in modelImports to avoid circular imports error + if (!modelImports.isEmpty() && !postponedModelImports.isEmpty()){ + modelImports.removeAll(postponedModelImports); + } + // import models one by one if (!modelImports.isEmpty()) { Set modelsToImport = new TreeSet<>(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRubyCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRubyCodegen.java index 2e6c90b9c357..b3a43938e7be 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRubyCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRubyCodegen.java @@ -119,7 +119,7 @@ public String escapeReservedWord(String name) { @Override public String getTypeDeclaration(Schema schema) { if (ModelUtils.isArraySchema(schema)) { - Schema inner = ((ArraySchema) schema).getItems(); + Schema inner = ModelUtils.getSchemaItems(schema); return getSchemaType(schema) + "<" + getTypeDeclaration(inner) + ">"; } else if (ModelUtils.isMapSchema(schema)) { Schema inner = ModelUtils.getAdditionalProperties(schema); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRustCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRustCodegen.java index d8631cf78237..adcc6264fd83 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRustCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractRustCodegen.java @@ -236,8 +236,7 @@ public String sanitizeIdentifier(String name, CasingType casingType, String esca @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); String innerType = getTypeDeclaration(inner); return typeMapping.get("array") + "<" + innerType + ">"; } else if (ModelUtils.isMapSchema(p)) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java index d5bf542c0b8a..9b746340c5be 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java @@ -371,7 +371,7 @@ public String getTypeDeclaration(Schema p) { Schema schema = unaliasSchema(p); Schema target = ModelUtils.isGenerateAliasAsModel() ? p : schema; if (ModelUtils.isArraySchema(target)) { - Schema items = getSchemaItems((ArraySchema) schema); + Schema items = ModelUtils.getSchemaItems(schema); return getSchemaType(target) + "[" + getTypeDeclaration(items) + "]"; } else if (ModelUtils.isMapSchema(target)) { Schema inner = ModelUtils.getAdditionalProperties(target); @@ -404,9 +404,8 @@ public String toInstantiationType(Schema p) { String inner = getSchemaType(ModelUtils.getAdditionalProperties(p)); return instantiationTypes.get("map") + "[String, " + inner + "]"; } else if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - String inner = getSchemaType(ap.getItems()); - return (ModelUtils.isSet(ap) ? instantiationTypes.get("set") : instantiationTypes.get("array")) + "[" + inner + "]"; + String inner = getSchemaType(ModelUtils.getSchemaItems(p)); + return (ModelUtils.isSet(p) ? instantiationTypes.get("set") : instantiationTypes.get("array")) + "[" + inner + "]"; } else { return null; } @@ -433,10 +432,9 @@ public String toDefaultValue(Schema p) { String inner = getSchemaType(ModelUtils.getAdditionalProperties(p)); return "new HashMap[String, " + inner + "]() "; } else if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - String inner = getSchemaType(ap.getItems()); + String inner = getSchemaType(ModelUtils.getSchemaItems(p)); String genericType; - if (ModelUtils.isSet(ap)) { + if (ModelUtils.isSet(p)) { genericType = instantiationTypes.get("set"); } else { genericType = instantiationTypes.get("array"); @@ -475,8 +473,7 @@ public String toDefaultValue(Schema p) { public CodegenProperty fromProperty(String name, Schema p, boolean required) { CodegenProperty prop = super.fromProperty(name, p, required); if (ModelUtils.isArraySchema(p)) { - ArraySchema as = (ArraySchema) p; - if (ModelUtils.isSet(as)) { + if (ModelUtils.isSet(p)) { prop.containerType = "set"; } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java index 1bfae967efa3..e751790abcf2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java @@ -624,7 +624,7 @@ public String toModelFilename(String name) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - Schema items = getSchemaItems((ArraySchema) p); + Schema items = ModelUtils.getSchemaItems(p); return getSchemaType(p) + "<" + getTypeDeclaration(unaliasSchema(items)) + ">"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = getSchemaAdditionalProperties(p); @@ -647,8 +647,7 @@ protected String getParameterDataType(Parameter parameter, Schema p) { // handle enums of various data types Schema inner; if (ModelUtils.isArraySchema(p)) { - ArraySchema mp1 = (ArraySchema) p; - inner = mp1.getItems(); + inner = ModelUtils.getSchemaItems(p); return this.getSchemaType(p) + "<" + this.getParameterDataType(parameter, inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { inner = ModelUtils.getAdditionalProperties(p); @@ -1177,8 +1176,7 @@ protected List getTypesFromSchemas(List schemas) { return filteredSchemas.stream().map(schema -> { String schemaType = getSchemaType(schema); if (ModelUtils.isArraySchema(schema)) { - ArraySchema ap = (ArraySchema) schema; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(schema); schemaType = schemaType + "<" + getSchemaType(inner) + ">"; } return schemaType; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java index 993a48aa769e..9436c7482c9a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java @@ -221,8 +221,7 @@ public String toModelDocFilename(String name) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ApexClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ApexClientCodegen.java index 8018d38da342..7db300702521 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ApexClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ApexClientCodegen.java @@ -223,7 +223,7 @@ public String toModelName(String name) { public String toDefaultValue(Schema p) { String out = null; if (ModelUtils.isArraySchema(p)) { - Schema inner = ((ArraySchema) p).getItems(); + Schema inner = ModelUtils.getSchemaItems(p); out = String.format( Locale.ROOT, "new List<%s>()", diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java index c51225bbec07..a38e556de493 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java @@ -429,8 +429,7 @@ public String toApiDocFilename(String name) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java index f084de1cc735..00e3754848b6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java @@ -1515,8 +1515,7 @@ public String toInstantiationType(Schema schema) { } return instantiationTypes.get("map") + ""; } else if (ModelUtils.isArraySchema(schema)) { - ArraySchema arraySchema = (ArraySchema) schema; - String inner = getSchemaType(arraySchema.getItems()); + String inner = getSchemaType(ModelUtils.getSchemaItems(schema)); return instantiationTypes.get("array") + "<" + inner + ">"; } else { return null; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpReducedClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpReducedClientCodegen.java index 7275873f2163..44c30344ccc5 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpReducedClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpReducedClientCodegen.java @@ -1091,8 +1091,7 @@ public String toInstantiationType(Schema schema) { } return instantiationTypes.get("map") + ""; } else if (ModelUtils.isArraySchema(schema)) { - ArraySchema arraySchema = (ArraySchema) schema; - String inner = getSchemaType(arraySchema.getItems()); + String inner = getSchemaType(ModelUtils.getSchemaItems(schema)); return instantiationTypes.get("array") + "<" + inner + ">"; } else { return null; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ClojureClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ClojureClientCodegen.java index 127fc108ef64..8af296e05e00 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ClojureClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ClojureClientCodegen.java @@ -165,10 +165,8 @@ public String getHelp() { @Override public String getTypeDeclaration(Schema p) { - if (p instanceof ArraySchema) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); - + if (ModelUtils.isArraySchema(p)) { + Schema inner = ModelUtils.getSchemaItems(p); return "(s/coll-of " + getTypeDeclaration(inner) + ")"; } else if (ModelUtils.isMapSchema(p)) { Object ap = p.getAdditionalProperties(); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ConfluenceWikiCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ConfluenceWikiCodegen.java index 22cdb199c959..b4ff2e32d2ab 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ConfluenceWikiCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ConfluenceWikiCodegen.java @@ -108,8 +108,7 @@ public String getHelp() { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java index aceefd0f3c4b..fe823fc600c6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java @@ -381,8 +381,7 @@ public String getTypeDeclaration(Schema p) { String openAPIType = getSchemaType(p); if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">"; } if (ModelUtils.isMapSchema(p)) { @@ -474,8 +473,7 @@ public String toDefaultValue(Schema p) { String inner = getSchemaType(ModelUtils.getAdditionalProperties(p)); return "std::map()"; } else if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - String inner = getSchemaType(ap.getItems()); + String inner = getSchemaType(ModelUtils.getSchemaItems(p)); if (!languageSpecificPrimitives.contains(inner)) { inner = "std::shared_ptr<" + inner + ">"; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtAbstractCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtAbstractCodegen.java index 09a45e7a1431..76e66f62792a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtAbstractCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQtAbstractCodegen.java @@ -189,8 +189,7 @@ public String getTypeDeclaration(Schema p) { String openAPIType = getSchemaType(p); if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); @@ -232,8 +231,7 @@ public String toDefaultValue(Schema p) { Schema inner = ModelUtils.getAdditionalProperties(p); return "QMap()"; } else if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return "QList<" + getTypeDeclaration(inner) + ">()"; } else if (ModelUtils.isStringSchema(p)) { return "QString(\"\")"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java index ca90e4b89560..518247ec8d96 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java @@ -111,6 +111,8 @@ public CppRestSdkClientCodegen() { .excludeParameterFeatures( ParameterFeature.Cookie ) + .includeDataTypeFeatures( + DataTypeFeature.AnyType) ); apiPackage = "org.openapitools.client.api"; @@ -174,6 +176,7 @@ public CppRestSdkClientCodegen() { importMapping.put("std::string", "#include "); importMapping.put("HttpContent", "#include \"HttpContent.h\""); importMapping.put("Object", "#include \"Object.h\""); + importMapping.put("AnyType", "#include \"AnyType.h\""); importMapping.put("utility::string_t", "#include "); importMapping.put("utility::datetime", "#include "); } @@ -214,11 +217,14 @@ public void processOpts() { importMapping.put("HttpContent", "#include \"" + packageName + "/" + "HttpContent.h\""); importMapping.put("Object", "#include \"" + packageName + "/" + "Object.h\""); + importMapping.put("AnyType", "#include \"" + packageName + "/" + "AnyType.h\""); supportingFiles.add(new SupportingFile("modelbase-header.mustache", getHeaderFolder(), "ModelBase.h")); supportingFiles.add(new SupportingFile("modelbase-source.mustache", getSourceFolder(), "ModelBase.cpp")); supportingFiles.add(new SupportingFile("object-header.mustache", getHeaderFolder(), "Object.h")); supportingFiles.add(new SupportingFile("object-source.mustache", getSourceFolder(), "Object.cpp")); + supportingFiles.add(new SupportingFile("anytype-header.mustache", getHeaderFolder(), "AnyType.h")); + supportingFiles.add(new SupportingFile("anytype-source.mustache", getSourceFolder(), "AnyType.cpp")); supportingFiles.add(new SupportingFile("apiclient-header.mustache", getHeaderFolder(), "ApiClient.h")); supportingFiles.add(new SupportingFile("apiclient-source.mustache", getSourceFolder(), "ApiClient.cpp")); supportingFiles.add(new SupportingFile("apiconfiguration-header.mustache", getHeaderFolder(), "ApiConfiguration.h")); @@ -367,8 +373,7 @@ public String getTypeDeclaration(Schema p) { String openAPIType = getSchemaType(p); if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); @@ -407,8 +412,7 @@ public String toDefaultValue(Schema p) { String inner = getSchemaType(ModelUtils.getAdditionalProperties(p)); return "std::map()"; } else if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - String inner = getSchemaType(ap.getItems()); + String inner = getSchemaType(ModelUtils.getSchemaItems(p)); if (!languageSpecificPrimitives.contains(inner)) { inner = "std::shared_ptr<" + inner + ">"; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java index 9fd2c4ae691a..5808719fd559 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java @@ -379,8 +379,7 @@ public String getTypeDeclaration(Schema p) { String openAPIType = getSchemaType(p); if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); @@ -469,12 +468,10 @@ public String toDefaultValue(Schema p) { String inner = getSchemaType(ModelUtils.getAdditionalProperties(p)); return "std::map()"; } else if (ModelUtils.isSet(p)) { - ArraySchema ap = (ArraySchema) p; - String inner = getSchemaType(ap.getItems()); + String inner = getSchemaType(ModelUtils.getSchemaItems(p)); return "std::set<" + inner + ">()"; } else if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - String inner = getSchemaType(ap.getItems()); + String inner = getSchemaType(ModelUtils.getSchemaItems(p)); return "std::vector<" + inner + ">()"; } else if (ModelUtils.isModel(p)) { String modelName = getTypeDeclaration(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerDeprecatedCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerDeprecatedCodegen.java index bb5941040ad9..cd79aa682b58 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerDeprecatedCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerDeprecatedCodegen.java @@ -351,8 +351,7 @@ public String getTypeDeclaration(Schema p) { String openAPIType = getSchemaType(p); if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getSchemaType(p) + "<" + getTypeDeclaration(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); @@ -433,8 +432,7 @@ public String toDefaultValue(Schema p) { String inner = getSchemaType(ModelUtils.getAdditionalProperties(p)); return "std::map()"; } else if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - String inner = getSchemaType(ap.getItems()); + String inner = getSchemaType(ModelUtils.getSchemaItems(p)); if (!languageSpecificPrimitives.contains(inner)) { inner = "std::shared_ptr<" + inner + ">"; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppUE4ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppUE4ClientCodegen.java index 099734ab37cd..54aa49b51886 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppUE4ClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppUE4ClientCodegen.java @@ -416,8 +416,7 @@ public String getTypeDeclaration(Schema p) { String openAPIType = getSchemaType(p); if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - return getSchemaType(p) + "<" + getTypeDeclaration(ap.getItems()) + ">"; + return getSchemaType(p) + "<" + getTypeDeclaration(ModelUtils.getSchemaItems(p)) + ">"; } else if (ModelUtils.isMapSchema(p)) { return getSchemaType(p) + ""; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java index ff88ffad1104..ac13c05d3181 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java @@ -814,7 +814,7 @@ public String escapeReservedWord(String name) { @Override public String getTypeDeclaration(Schema schema) { if (ModelUtils.isArraySchema(schema)) { - Schema inner = ((ArraySchema) schema).getItems(); + Schema inner = ModelUtils.getSchemaItems(schema); return getSchemaType(schema) + "(" + getTypeDeclaration(inner) + ")"; } else if (ModelUtils.isMapSchema(schema)) { Schema inner = ModelUtils.getAdditionalProperties(schema); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java index 37118de3b13a..658560e51da6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java @@ -557,8 +557,7 @@ public String toOperationId(String operationId) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java index 2648e67cfbfb..c27645f7a68d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElmClientCodegen.java @@ -244,8 +244,7 @@ public String toEnumVarName(String value, String datatype) { @Override public String toInstantiationType(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - String inner = getSchemaType(ap.getItems()); + String inner = getSchemaType(ModelUtils.getSchemaItems(p)); return instantiationTypes.get("array") + " " + inner; } else { return null; @@ -464,8 +463,7 @@ public String getSchemaType(Schema p) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getTypeDeclaration(inner); } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java index f1eafd8ce7a3..cd57040f7300 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ErlangProperCodegen.java @@ -141,7 +141,7 @@ public ErlangProperCodegen() { public CodegenModel fromModel(String name, Schema model) { CodegenModel cm = super.fromModel(name, model); if(ModelUtils.isArraySchema(model)) { - return new CodegenArrayModel(cm, (ArraySchema) model); + return new CodegenArrayModel(cm, model); } else { return cm; } @@ -156,12 +156,9 @@ public String getTypeDeclaration(String name) { public String getTypeDeclaration(Schema schema) { String typeDeclaration = super.getSchemaType(schema); if(ModelUtils.isArraySchema(schema)) { - ArraySchema arraySchema = (ArraySchema) schema; - String complexType = getSchemaType(arraySchema.getItems()); - + String complexType = getSchemaType(ModelUtils.getSchemaItems(schema)); StringBuilder sb = new StringBuilder("list("); sb.append(complexType); - return sb.append(")").toString(); } else if (typeMapping.containsKey(typeDeclaration)) { return typeMapping.get(typeDeclaration); @@ -174,8 +171,7 @@ public String getTypeDeclaration(Schema schema) { public String getSchemaType(Schema schema) { String schemaType = super.getSchemaType(schema); if(ModelUtils.isArraySchema(schema)) { - ArraySchema arraySchema = (ArraySchema) schema; - String complexType = getSchemaType(arraySchema.getItems()); + String complexType = getSchemaType(ModelUtils.getSchemaItems(schema)); StringBuilder sb = new StringBuilder("list("); sb.append(complexType); @@ -446,7 +442,7 @@ class CodegenArrayModel extends CodegenModel { Integer minItems; Integer maxItems; - public CodegenArrayModel(CodegenModel cm, ArraySchema schema) { + public CodegenArrayModel(CodegenModel cm, Schema schema) { super(); // Copy all fields of CodegenModel diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java index f079b4507867..060dfc277d73 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java @@ -150,6 +150,7 @@ public GoClientCodegen() { this.setDisallowAdditionalPropertiesIfNotPresent(true); cliOptions.add(CliOption.newBoolean(WITH_GO_MOD, "Generate go.mod and go.sum", true)); cliOptions.add(CliOption.newBoolean(CodegenConstants.GENERATE_MARSHAL_JSON, CodegenConstants.GENERATE_MARSHAL_JSON_DESC, true)); + cliOptions.add(CliOption.newBoolean(CodegenConstants.GENERATE_UNMARSHAL_JSON, CodegenConstants.GENERATE_UNMARSHAL_JSON_DESC, true)); this.setWithGoMod(true); } @@ -287,6 +288,11 @@ public void processOpts() { setGenerateMarshalJSON(Boolean.parseBoolean(additionalProperties.get(CodegenConstants.GENERATE_MARSHAL_JSON).toString())); } + if (additionalProperties.containsKey(CodegenConstants.GENERATE_UNMARSHAL_JSON)) { + setGenerateUnmarshalJSON(Boolean.parseBoolean(additionalProperties.get(CodegenConstants.GENERATE_UNMARSHAL_JSON).toString())); + } + + // add lambda for mustache templates to handle oneOf/anyOf naming // e.g. []string => ArrayOfString additionalProperties.put("lambda.type-to-name", (Mustache.Lambda) (fragment, writer) -> writer.write(typeToName(fragment.execute()))); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GraphQLNodeJSExpressServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GraphQLNodeJSExpressServerCodegen.java index 8b8214259ff2..8a32d2ccf5fb 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GraphQLNodeJSExpressServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GraphQLNodeJSExpressServerCodegen.java @@ -124,8 +124,7 @@ public void processOpts() { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); // IMPORTANT NOTE we add the braces within template because there we have the possibility to differentiate // between some specific types for GraphQL: diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java index 0e79940195c8..a879e5b28a46 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellHttpClientCodegen.java @@ -653,8 +653,7 @@ public Map postProcessSupportingFileData(Map obj @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); @@ -687,8 +686,7 @@ public String toInstantiationType(Schema p) { String inner = getSchemaType(additionalProperties2); return "(Map.Map Text " + inner + ")"; } else if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - return getSchemaType(ap.getItems()); + return getSchemaType(ModelUtils.getSchemaItems(p)); } else { return null; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java index 8a4a191afa6e..c1fd7e15adaa 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellServantCodegen.java @@ -333,13 +333,14 @@ public void preprocessOpenAPI(OpenAPI openAPI) { /** * Internal method to set the generateToSchema parameter. - * + *

                                                  * Basically we're generating ToSchema instances (generically) for all schemas. * However, if any of the contained datatypes doesn't have the ToSchema instance, * we cannot generate it for its "ancestor" type. * This is the case with the "Data.Aeson.Value" type: it doesn't (and cannot) have * a Swagger-compatible ToSchema instance. So we have to detect its presence "downstream" * the current schema, and if we find it we just don't generate any ToSchema instance. + * * @param model */ private void setGenerateToSchema(CodegenModel model) { @@ -356,7 +357,7 @@ private void setGenerateToSchema(CodegenModel model) { List children = model.getChildren(); if (children != null) { - for(CodegenModel child : children) { + for (CodegenModel child : children) { setGenerateToSchema(child); } } @@ -372,8 +373,7 @@ private void setGenerateToSchema(CodegenModel model) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); @@ -419,8 +419,7 @@ public String toInstantiationType(Schema p) { String inner = getSchemaType(additionalProperties2); return "(Map.Map Text " + inner + ")"; } else if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - String inner = getSchemaType(ap.getItems()); + String inner = getSchemaType(ModelUtils.getSchemaItems(p)); // Return only the inner type; the wrapping with QueryList is done // somewhere else, where we have access to the collection format. return inner; @@ -514,7 +513,7 @@ public CodegenOperation fromOperation(String resourcePath, String httpMethod, Op // Query parameters appended to routes for (CodegenParameter param : op.queryParams) { String paramType = param.dataType; - if (param.contentType == "application/json") { + if ("application/json".equals(param.contentType)) { if (param.isArray) { paramType = "[JSONQueryParam " + paramType.substring(1, paramType.length() - 1) + "]"; } else { @@ -556,7 +555,7 @@ public CodegenOperation fromOperation(String resourcePath, String httpMethod, Op path.add("Header \"" + param.baseName + "\" " + param.dataType); String paramType = param.dataType; - if (param.contentType == "application/json") { + if ("application/json".equals(param.contentType)) { if (param.isArray) { paramType = "(JSONQueryParam " + paramType.substring(1, paramType.length() - 1) + ")"; } else { @@ -723,5 +722,7 @@ public void postProcessFile(File file, String fileType) { } @Override - public GeneratorLanguage generatorLanguage() { return GeneratorLanguage.HASKELL; } + public GeneratorLanguage generatorLanguage() { + return GeneratorLanguage.HASKELL; + } } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellYesodServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellYesodServerCodegen.java index eb55671fceb3..0bd106d632e5 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellYesodServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/HaskellYesodServerCodegen.java @@ -295,8 +295,7 @@ public void preprocessOpenAPI(OpenAPI openAPI) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); @@ -342,8 +341,7 @@ public String toInstantiationType(Schema p) { String inner = getSchemaType(additionalProperties2); return "(Map.Map Text " + inner + ")"; } else if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - String inner = getSchemaType(ap.getItems()); + String inner = getSchemaType(ModelUtils.getSchemaItems(p)); // Return only the inner type; the wrapping with QueryList is done // somewhere else, where we have access to the collection format. return inner; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JMeterClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JMeterClientCodegen.java index 5779f9631234..3d8ac3561f8a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JMeterClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JMeterClientCodegen.java @@ -210,8 +210,7 @@ public String apiFileFolder() { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java index a69084590fd6..dcf4f15722b0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java @@ -182,10 +182,10 @@ public JavaClientCodegen() { .includeDocumentationFeatures(DocumentationFeature.Readme) .includeGlobalFeatures(GlobalFeature.ParameterizedServer) .includeSecurityFeatures(SecurityFeature.OAuth2_AuthorizationCode, - SecurityFeature.OAuth2_ClientCredentials, - SecurityFeature.OAuth2_Password, - SecurityFeature.SignatureAuth,//jersey only - SecurityFeature.AWSV4Signature)//okhttp-gson only + SecurityFeature.OAuth2_ClientCredentials, + SecurityFeature.OAuth2_Password, + SecurityFeature.SignatureAuth,//jersey only + SecurityFeature.AWSV4Signature)//okhttp-gson only ); outputFolder = "generated-code" + File.separator + "java"; @@ -222,7 +222,7 @@ public JavaClientCodegen() { cliOptions.add(CliOption.newBoolean(SUPPORT_STREAMING, "Support streaming endpoint (beta)", this.supportStreaming)); cliOptions.add(CliOption.newBoolean(CodegenConstants.WITH_AWSV4_SIGNATURE_COMMENT, CodegenConstants.WITH_AWSV4_SIGNATURE_COMMENT_DESC + " (only available for okhttp-gson library)", this.withAWSV4Signature)); cliOptions.add(CliOption.newString(GRADLE_PROPERTIES, "Append additional Gradle properties to the gradle.properties file")); - cliOptions.add(CliOption.newString(ERROR_OBJECT_TYPE, "Error Object type. (This option is for okhttp-gson-next-gen only)")); + cliOptions.add(CliOption.newString(ERROR_OBJECT_TYPE, "Error Object type. (This option is for okhttp-gson only)")); cliOptions.add(CliOption.newString(CONFIG_KEY, "Config key in @RegisterRestClient. Default to none. Only `microprofile` supports this option.")); cliOptions.add(CliOption.newBoolean(CodegenConstants.USE_ONEOF_DISCRIMINATOR_LOOKUP, CodegenConstants.USE_ONEOF_DISCRIMINATOR_LOOKUP_DESC + " Only jersey2, jersey3, native, okhttp-gson support this option.")); cliOptions.add(CliOption.newString(MICROPROFILE_REST_CLIENT_VERSION, "Version of MicroProfile Rest Client API.")); @@ -472,15 +472,13 @@ public void processOpts() { if (additionalProperties.containsKey(CodegenConstants.MAX_ATTEMPTS_FOR_RETRY)) { this.setMaxAttemptsForRetry(Integer.parseInt(additionalProperties.get(CodegenConstants.MAX_ATTEMPTS_FOR_RETRY).toString())); - } - else { + } else { additionalProperties.put(CodegenConstants.MAX_ATTEMPTS_FOR_RETRY, maxAttemptsForRetry); } if (additionalProperties.containsKey(CodegenConstants.WAIT_TIME_OF_THREAD)) { this.setWaitTimeMillis(Long.parseLong((additionalProperties.get(CodegenConstants.WAIT_TIME_OF_THREAD).toString()))); - } - else { + } else { additionalProperties.put(CodegenConstants.WAIT_TIME_OF_THREAD, waitTimeMillis); } writePropertyBack(USE_ENUM_CASE_INSENSITIVE, useEnumCaseInsensitive); @@ -1264,11 +1262,11 @@ public void setUseEnumCaseInsensitive(boolean useEnumCaseInsensitive) { } public void setMaxAttemptsForRetry(int maxAttemptsForRetry) { - this.maxAttemptsForRetry= maxAttemptsForRetry; + this.maxAttemptsForRetry = maxAttemptsForRetry; } public void setWaitTimeMillis(long waitTimeMillis) { - this.waitTimeMillis= waitTimeMillis; + this.waitTimeMillis = waitTimeMillis; } /** diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java index 69627170d693..373ac795d862 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java @@ -38,6 +38,7 @@ public class JavaJAXRSSpecServerCodegen extends AbstractJavaJAXRSServerCodegen { public static final String GENERATE_POM = "generatePom"; public static final String USE_SWAGGER_ANNOTATIONS = "useSwaggerAnnotations"; public static final String USE_MICROPROFILE_OPENAPI_ANNOTATIONS = "useMicroProfileOpenAPIAnnotations"; + public static final String USE_MUTINY = "useMutiny"; public static final String OPEN_API_SPEC_FILE_LOCATION = "openApiSpecFileLocation"; public static final String GENERATE_BUILDERS = "generateBuilders"; @@ -53,6 +54,7 @@ public class JavaJAXRSSpecServerCodegen extends AbstractJavaJAXRSServerCodegen { private boolean generateBuilders = false; private boolean useSwaggerAnnotations = true; private boolean useMicroProfileOpenAPIAnnotations = false; + private boolean useMutiny = false; protected boolean useGzipFeature = false; private boolean useJackson = false; @@ -120,6 +122,7 @@ public JavaJAXRSSpecServerCodegen() { cliOptions.add(CliOption.newBoolean(USE_MICROPROFILE_OPENAPI_ANNOTATIONS, "Whether to generate Microprofile OpenAPI annotations. Only valid when library is set to quarkus.", useMicroProfileOpenAPIAnnotations)); cliOptions.add(CliOption.newString(OPEN_API_SPEC_FILE_LOCATION, "Location where the file containing the spec will be generated in the output folder. No file generated when set to null or empty string.")); cliOptions.add(CliOption.newBoolean(SUPPORT_ASYNC, "Wrap responses in CompletionStage type, allowing asynchronous computation (requires JAX-RS 2.1).", supportAsync)); + cliOptions.add(CliOption.newBoolean(USE_MUTINY, "Whether to use Smallrye Mutiny instead of CompletionStage for asynchronous computation. Only valid when library is set to quarkus.", useMutiny)); } @Override @@ -167,6 +170,12 @@ public void processOpts() { writePropertyBack(USE_MICROPROFILE_OPENAPI_ANNOTATIONS, useMicroProfileOpenAPIAnnotations); } + if (QUARKUS_LIBRARY.equals(library)) { + if (additionalProperties.containsKey(USE_MUTINY)) { + useMutiny = Boolean.parseBoolean(additionalProperties.get(USE_MUTINY).toString()); + } + writePropertyBack(USE_MUTINY, useMutiny); + } if (additionalProperties.containsKey(GENERATE_BUILDERS)) { generateBuilders = Boolean.parseBoolean(additionalProperties.get(GENERATE_BUILDERS).toString()); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java index ed04eb222b73..9676b9bf34ca 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptApolloClientCodegen.java @@ -17,11 +17,13 @@ package org.openapitools.codegen.languages; import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.examples.Example; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.ComposedSchema; import io.swagger.v3.oas.models.media.Schema; +import io.swagger.v3.oas.models.parameters.Parameter; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; @@ -610,8 +612,7 @@ public String toApiImport(String name) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); @@ -672,10 +673,10 @@ public String toDefaultValueWithParam(String name, Schema p) { public void setParameterExampleValue(CodegenParameter p) { String example; - if (p.defaultValue == null) { - example = p.example; - } else { + if (p.example == null) { example = p.defaultValue; + } else { + example = p.example; } String type = p.baseType; @@ -741,6 +742,24 @@ public void setParameterExampleValue(CodegenParameter p) { p.example = example; } + @Override + public void setParameterExampleValue(CodegenParameter codegenParameter, Parameter parameter) { + Schema schema = parameter.getSchema(); + + if (parameter.getExample() != null) { + codegenParameter.example = parameter.getExample().toString(); + } else if (parameter.getExamples() != null && !parameter.getExamples().isEmpty()) { + Example example = parameter.getExamples().values().iterator().next(); + if (example.getValue() != null) { + codegenParameter.example = example.getValue().toString(); + } + } else if (schema != null && schema.getExample() != null) { + codegenParameter.example = schema.getExample().toString(); + } + + setParameterExampleValue(codegenParameter); + } + protected String setPropertyExampleValue(CodegenProperty p) { String example; @@ -872,9 +891,9 @@ public CodegenModel fromModel(String name, Schema model) { codegenModel = JavascriptApolloClientCodegen.reconcileInlineEnums(codegenModel, parentCodegenModel); } if (ModelUtils.isArraySchema(model)) { - ArraySchema am = (ArraySchema) model; - if (codegenModel != null && am.getItems() != null) { - String itemType = getSchemaType(am.getItems()); + Schema inner = ModelUtils.getSchemaItems(model); + if (codegenModel != null && inner != null) { + String itemType = getSchemaType(inner); codegenModel.vendorExtensions.put("x-is-array", true); codegenModel.vendorExtensions.put("x-item-type", itemType); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java index cbd5d088c951..1eaede84d600 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java @@ -18,11 +18,13 @@ package org.openapitools.codegen.languages; import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.examples.Example; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; import io.swagger.v3.oas.models.media.ArraySchema; import io.swagger.v3.oas.models.media.ComposedSchema; import io.swagger.v3.oas.models.media.Schema; +import io.swagger.v3.oas.models.parameters.Parameter; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; @@ -610,8 +612,7 @@ public String toApiImport(String name) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); @@ -672,10 +673,10 @@ public String toDefaultValueWithParam(String name, Schema p) { public void setParameterExampleValue(CodegenParameter p) { String example; - if (p.defaultValue == null) { - example = p.example; - } else { + if (p.example == null) { example = p.defaultValue; + } else { + example = p.example; } String type = p.baseType; @@ -741,6 +742,24 @@ public void setParameterExampleValue(CodegenParameter p) { p.example = example; } + @Override + public void setParameterExampleValue(CodegenParameter codegenParameter, Parameter parameter) { + Schema schema = parameter.getSchema(); + + if (parameter.getExample() != null) { + codegenParameter.example = parameter.getExample().toString(); + } else if (parameter.getExamples() != null && !parameter.getExamples().isEmpty()) { + Example example = parameter.getExamples().values().iterator().next(); + if (example.getValue() != null) { + codegenParameter.example = example.getValue().toString(); + } + } else if (schema != null && schema.getExample() != null) { + codegenParameter.example = schema.getExample().toString(); + } + + setParameterExampleValue(codegenParameter); + } + protected String setPropertyExampleValue(CodegenProperty p) { String example; @@ -874,9 +893,8 @@ public CodegenModel fromModel(String name, Schema model) { } } if (ModelUtils.isArraySchema(model)) { - ArraySchema am = (ArraySchema) model; - if (codegenModel != null && am.getItems() != null) { - String itemType = getSchemaType(am.getItems()); + if (codegenModel != null && ModelUtils.getSchemaItems(model) != null) { + String itemType = getSchemaType(ModelUtils.getSchemaItems(model)); codegenModel.vendorExtensions.put("x-is-array", true); codegenModel.vendorExtensions.put("x-item-type", itemType); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java index 38b57b1a7c15..69eb6243f775 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClosureAngularClientCodegen.java @@ -225,8 +225,7 @@ public String toModelFilename(String name) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getSchemaType(p) + ""; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JetbrainsHttpClientClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JetbrainsHttpClientClientCodegen.java index 3722014699fd..6f3f393534f7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JetbrainsHttpClientClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JetbrainsHttpClientClientCodegen.java @@ -109,11 +109,11 @@ public void processOpts() { var additionalProperties = additionalProperties(); - if(additionalProperties.containsKey(BODY_VARIABLES)) { + if (additionalProperties.containsKey(BODY_VARIABLES)) { bodyVariables = Arrays.asList(additionalProperties.get(BODY_VARIABLES).toString().split("-")); } - if(additionalProperties.containsKey(CUSTOM_HEADERS)) { + if (additionalProperties.containsKey(CUSTOM_HEADERS)) { customHeaders = Arrays.asList(additionalProperties.get(CUSTOM_HEADERS).toString().split("&")); } } @@ -138,15 +138,15 @@ public void execute(Template.Fragment fragment, Writer writer) throws IOExceptio @Override public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { - OperationsMap results = super.postProcessOperationsWithModels(objs, allModels); + OperationsMap results = super.postProcessOperationsWithModels(objs, allModels); OperationMap ops = results.getOperations(); List opList = ops.getOperation(); - for(CodegenOperation codegenOperation : opList) { + for (CodegenOperation codegenOperation : opList) { List requests = getRequests(codegenOperation); - if(requests != null) { + if (requests != null) { codegenOperation.vendorExtensions.put("requests", requests); //Adding to each operation for now, we may be smarter later on codegenOperation.vendorExtensions.put("customHeaders", customHeaders); @@ -158,7 +158,7 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List getRequests(CodegenOperation codegenOperation) { List items = new ArrayList<>(); - if(codegenOperation.getHasBodyParam()) { + if (codegenOperation.getHasBodyParam()) { // operation with bodyParam if (requestParameterGeneration.equalsIgnoreCase("Schema")) { // get from schema @@ -173,7 +173,7 @@ List getRequests(CodegenOperation codegenOperation) { // find in components/examples for (Map.Entry entry : codegenOperation.bodyParam.getContent().get("application/json").getExamples().entrySet()) { String exampleRef = entry.getValue().get$ref(); - if(exampleRef != null){ + if (exampleRef != null) { Example example = this.openAPI.getComponents().getExamples().get(extractExampleByName(exampleRef)); String exampleAsString = getJsonFromExample(example); items.add(new RequestItem(example.getSummary(), exampleAsString)); @@ -200,11 +200,11 @@ List getRequests(CodegenOperation codegenOperation) { } private List handleCustomVariablesInRequests(List items) { - if(!bodyVariables.isEmpty()){ - for(var item : items){ - for(var customVariable: bodyVariables){ + if (!bodyVariables.isEmpty()) { + for (var item : items) { + for (var customVariable : bodyVariables) { var body = item.getBody(); - if(body != null){ + if (body != null) { body = body.replace(customVariable, "{{" + customVariable + "}}"); item.setBody(body); } @@ -269,7 +269,7 @@ public String getJsonFromSchema(CodegenParameter codegenParameter) { ret = ret + JSON_ESCAPE_DOUBLE_QUOTE + codegenProperty.baseName + JSON_ESCAPE_DOUBLE_QUOTE + ": " + JSON_ESCAPE_DOUBLE_QUOTE + "<" + getType(codegenProperty) + ">" + JSON_ESCAPE_DOUBLE_QUOTE; - if(counter < numVars) { + if (counter < numVars) { // add comma unless last attribute ret = ret + "," + JSON_ESCAPE_NEW_LINE + " "; } @@ -283,9 +283,9 @@ public String getJsonFromSchema(CodegenParameter codegenParameter) { } public String getType(CodegenProperty codegenProperty) { - if(codegenProperty.isNumeric) { + if (codegenProperty.isNumeric) { return "number"; - } else if(codegenProperty.isDate) { + } else if (codegenProperty.isDate) { return "date"; } else { return "string"; @@ -316,14 +316,14 @@ public String extractExampleByName(String ref) { public String getJsonFromExample(Example example) { String ret = ""; - if(example == null) { + if (example == null) { return ret; } - if(example.getValue() instanceof ObjectNode) { - ret = convertToJson((ObjectNode)example.getValue()); - } else if(example.getValue() instanceof LinkedHashMap) { - ret = convertToJson((LinkedHashMap)example.getValue()); + if (example.getValue() instanceof ObjectNode) { + ret = convertToJson((ObjectNode) example.getValue()); + } else if (example.getValue() instanceof LinkedHashMap) { + ret = convertToJson((LinkedHashMap) example.getValue()); } return ret; @@ -350,9 +350,9 @@ private String traverseMap(LinkedHashMap linkedHashMap, String r String key = mapElement.getKey(); Object value = mapElement.getValue(); - if(value instanceof String) { + if (value instanceof String) { // unescape double quotes already escaped - value = ((String)value).replace("\\\"", "\""); + value = ((String) value).replace("\\\"", "\""); ret = ret + JSON_ESCAPE_DOUBLE_QUOTE + key + JSON_ESCAPE_DOUBLE_QUOTE + ": " + JSON_ESCAPE_DOUBLE_QUOTE + value + JSON_ESCAPE_DOUBLE_QUOTE; @@ -369,20 +369,21 @@ private String traverseMap(LinkedHashMap linkedHashMap, String r for (int i = 0; i < items.size(); i++) { jsonBuilder.append(JSON_ESCAPE_DOUBLE_QUOTE).append(items.get(i)).append(JSON_ESCAPE_DOUBLE_QUOTE); - if (i < items.size() - 1) {jsonBuilder.append(",");} + if (i < items.size() - 1) { + jsonBuilder.append(","); + } } jsonBuilder.append("]"); - ret = ret + JSON_ESCAPE_DOUBLE_QUOTE + key + JSON_ESCAPE_DOUBLE_QUOTE + ": " + jsonBuilder ; - } - else { + ret = ret + JSON_ESCAPE_DOUBLE_QUOTE + key + JSON_ESCAPE_DOUBLE_QUOTE + ": " + jsonBuilder; + } else { LOGGER.warn("Value type unrecognised: " + value.getClass()); //WARNING: here we are undoing what is done in "add comma unless last attribute" // This is meant to avoid dangling commas if we encounter an unknown type ret = ret.substring(0, ret.length() - 3); } - if(counter < numVars ) { + if (counter < numVars) { // add comma unless last attribute ret = ret + "," + JSON_ESCAPE_NEW_LINE + " "; } @@ -394,4 +395,13 @@ private String traverseMap(LinkedHashMap linkedHashMap, String r return ret; } -} + @Override + public String escapeUnsafeCharacters(String input) { + return input; + } + + @Override + public String escapeQuotationMark(String input) { + return input; + } +} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java index c2dd6a40516e..d550c452f328 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java @@ -578,9 +578,14 @@ private void processJava8Date(String dateLibrary) { private void processKotlinxDate() { additionalProperties.put(DateLibrary.KOTLINX_DATETIME.value, true); - typeMapping.put("date-time", "kotlinx.datetime.Instant"); + typeMapping.put("date-time", "Instant"); + typeMapping.put("date", "LocalDate"); + typeMapping.put("DateTime", "Instant"); + typeMapping.put("Date", "LocalDate"); + importMapping.put("Instant", "kotlinx.datetime.Instant"); + importMapping.put("LocalDate", "kotlinx.datetime.LocalDate"); } private void processJVMRetrofit2Library(String infrastructureFolder) { @@ -957,7 +962,7 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List items = getSchemaItems((ArraySchema) p); + Schema items = ModelUtils.getSchemaItems(p); return getTypeDeclaration(unaliasSchema(items)) + "[]"; } else if (ModelUtils.isMapSchema(p)) { return "~Object+"; @@ -544,8 +544,7 @@ public String getTypeDeclaration(Schema p) { protected String getParameterDataType(Parameter parameter, Schema p) { // handle enums of various data types if (ModelUtils.isArraySchema(p)) { - ArraySchema mp1 = (ArraySchema) p; - Schema inner = mp1.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getParameterDataType(parameter, inner) + "[]"; } else if (ModelUtils.isMapSchema(p)) { return "~Object+"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java index 71486156b332..bed1cec85ecc 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java @@ -275,8 +275,7 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List schemas) collectEnumSchemas(pName, (Schema) schema.getAdditionalProperties()); } - if (schema instanceof ArraySchema) { - ArraySchema s = (ArraySchema) schema; - if (s.getItems() != null) { + if (ModelUtils.isArraySchema(schema)) { + if (ModelUtils.getSchemaItems(schema) != null) { String pName = parentName != null ? parentName + "_" + sName : sName; - collectEnumSchemas(pName, s.getItems()); + collectEnumSchemas(pName, ModelUtils.getSchemaItems(schema)); } } } @@ -581,11 +580,10 @@ public String toApiDocFilename(String name) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); if (inner == null) { LOGGER.warn("{}(array property) does not have a proper inner type defined.Default to string", - ap.getName()); + p.getName()); inner = new StringSchema().description("TODO default missing array inner type to string"); } return getTypeDeclaration(inner) + " list"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java index bd46543760fc..391b8eb46b94 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ObjcClientCodegen.java @@ -370,8 +370,7 @@ public String getSchemaType(Schema p) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); String innerTypeDeclaration = getTypeDeclaration(inner); if (innerTypeDeclaration.endsWith("*")) { innerTypeDeclaration = innerTypeDeclaration.substring(0, innerTypeDeclaration.length() - 1); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PerlClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PerlClientCodegen.java index f5d72b984d74..19a552bb22ce 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PerlClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PerlClientCodegen.java @@ -261,8 +261,7 @@ public String modelDocFileFolder() { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpDataTransferClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpDataTransferClientCodegen.java index d6171c79a4f4..d15f92edf7a8 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpDataTransferClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpDataTransferClientCodegen.java @@ -271,7 +271,7 @@ protected Schema convertParameterToSchema(OpenAPI openAPI, Parameter parameter) Schema parameterSchema = ModelUtils.getReferencedSchema(openAPI, parameter.getSchema()); // array if (ModelUtils.isArraySchema(parameterSchema)) { - Schema itemSchema = ((ArraySchema) parameterSchema).getItems(); + Schema itemSchema = ModelUtils.getSchemaItems(parameterSchema); ArraySchema arraySchema = new ArraySchema(); arraySchema.setMinItems(parameterSchema.getMinItems()); arraySchema.setMaxItems(parameterSchema.getMaxItems()); @@ -419,7 +419,7 @@ protected void generateContainerSchemas(OpenAPI openAPI, Set visitedSche } } else if (ModelUtils.isArraySchema(schema)) { //Recursively process schema of array items - generateContainerSchemas(openAPI, visitedSchemas, ((ArraySchema) schema).getItems()); + generateContainerSchemas(openAPI, visitedSchemas, ModelUtils.getSchemaItems(schema)); isContainer = Boolean.TRUE; } else if (ModelUtils.isMapSchema(schema)) { //Recursively process schema of map items diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpFlightServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpFlightServerCodegen.java new file mode 100644 index 000000000000..d6155803e0ee --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpFlightServerCodegen.java @@ -0,0 +1,326 @@ +/* + * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech) + * + * 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 + * + * https://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 static org.openapitools.codegen.utils.StringUtils.camelize; + +import io.swagger.v3.oas.models.Operation; +import io.swagger.v3.oas.models.servers.Server; + +import java.io.File; +import java.util.Arrays; +import java.util.EnumSet; +import java.util.HashSet; +import java.util.List; +import java.util.Objects; + +import org.apache.commons.lang3.StringUtils; +import org.openapitools.codegen.CliOption; +import org.openapitools.codegen.CodegenConstants; +import org.openapitools.codegen.CodegenModel; +import org.openapitools.codegen.CodegenOperation; +import org.openapitools.codegen.CodegenProperty; +import org.openapitools.codegen.CodegenType; +import org.openapitools.codegen.SupportingFile; +import org.openapitools.codegen.meta.GeneratorMetadata; +import org.openapitools.codegen.meta.Stability; +import org.openapitools.codegen.meta.features.DataTypeFeature; +import org.openapitools.codegen.meta.features.DocumentationFeature; +import org.openapitools.codegen.meta.features.GlobalFeature; +import org.openapitools.codegen.meta.features.ParameterFeature; +import org.openapitools.codegen.meta.features.SchemaSupportFeature; +import org.openapitools.codegen.meta.features.SecurityFeature; +import org.openapitools.codegen.meta.features.WireFormatFeature; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class PhpFlightServerCodegen extends AbstractPhpCodegen { + + private final Logger LOGGER = LoggerFactory.getLogger(PhpFlightServerCodegen.class); + + // Type-hintable primitive types + // ref: http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration + protected HashSet typeHintable = new HashSet<>( + Arrays.asList( + "array", + "bool", + "float", + "int", + "string" + ) + ); + + public PhpFlightServerCodegen() { + super(); + + modifyFeatureSet(features -> features + .includeDocumentationFeatures(DocumentationFeature.Readme) + .wireFormatFeatures(EnumSet.of(WireFormatFeature.JSON)) + .securityFeatures(EnumSet.of( + SecurityFeature.BasicAuth, + SecurityFeature.BearerToken, + SecurityFeature.ApiKey, + SecurityFeature.OAuth2_Implicit)) + .excludeDataTypeFeatures( + DataTypeFeature.MapOfCollectionOfEnum, + DataTypeFeature.MapOfEnum, + DataTypeFeature.MapOfCollectionOfModel, + DataTypeFeature.MapOfModel) + .excludeParameterFeatures( + ParameterFeature.FormMultipart, + ParameterFeature.FormUnencoded, + ParameterFeature.Cookie) + .excludeGlobalFeatures( + GlobalFeature.XMLStructureDefinitions, + GlobalFeature.Callbacks, + GlobalFeature.LinkObjects, + GlobalFeature.ParameterStyling + ) + .excludeSchemaSupportFeatures( + SchemaSupportFeature.Polymorphism + ) + ); + + generatorMetadata = GeneratorMetadata.newBuilder(generatorMetadata) + .stability(Stability.EXPERIMENTAL) + .build(); + + embeddedTemplateDir = templateDir = "php-flight"; + + // clear import mapping (from default generator) as slim does not use it + // at the moment + importMapping.clear(); + + srcBasePath = ""; + + defaultIncludes = new HashSet<>( + Arrays.asList( + "\\DateTime" + ) + ); + + variableNamingConvention = "camelCase"; + artifactVersion = "1.0.0"; + setInvokerPackage("OpenAPIServer"); + testPackage = invokerPackage + "\\Test"; + apiPackage = invokerPackage + "\\" + apiDirName; + modelPackage = invokerPackage + "\\" + modelDirName; + outputFolder = "generated-code" + File.separator + "php-flight"; + + // no doc files + modelDocTemplateFiles.clear(); + apiDocTemplateFiles.clear(); + apiTestTemplateFiles.clear(); + + embeddedTemplateDir = templateDir = "php-flight"; + + cliOptions.add(new CliOption(CodegenConstants.HIDE_GENERATION_TIMESTAMP, CodegenConstants.HIDE_GENERATION_TIMESTAMP_DESC) + .defaultValue(Boolean.TRUE.toString())); + cliOptions.stream().filter(o -> Objects.equals(o.getOpt(), VARIABLE_NAMING_CONVENTION)).findFirst().ifPresent(o -> o.defaultValue("camelCase")); + } + + @Override + public CodegenType getTag() { + return CodegenType.SERVER; + } + + @Override + public String getName() { + return "php-flight"; + } + + @Override + public String getHelp() { + return "Generates a PHP Flight Framework server library."; + } + + @Override + public String apiFileFolder() { + if (apiPackage.startsWith(invokerPackage + "\\")) { + // need to strip out invokerPackage from path + return (outputFolder + File.separator + toSrcPath(StringUtils.removeStart(apiPackage, invokerPackage + "\\"), srcBasePath)); + } + return (outputFolder + File.separator + toSrcPath(apiPackage, srcBasePath)); + } + + @Override + public String modelFileFolder() { + if (modelPackage.startsWith(invokerPackage + "\\")) { + // need to strip out invokerPackage from path + return (outputFolder + File.separator + toSrcPath(StringUtils.removeStart(modelPackage, invokerPackage + "\\"), srcBasePath)); + } + return (outputFolder + File.separator + toSrcPath(modelPackage, srcBasePath)); + } + + @Override + public void processOpts() { + super.processOpts(); + + inlineSchemaOption.put("RESOLVE_INLINE_ENUMS", "true"); + + // add trailing slash for mustache templates + additionalProperties.put("relativeSrcBasePath", srcBasePath.isEmpty() ? "" : srcBasePath + "/"); + additionalProperties.put("modelSrcPath", "." + "/" + toSrcPath(modelPackage, srcBasePath)); + additionalProperties.put("apiSrcPath", "." + "/" + toSrcPath(apiPackage, srcBasePath)); + additionalProperties.put("testSrcPath", "." + "/" + toSrcPath(testPackage, srcBasePath)); + additionalProperties.put("escapedModelPackage", modelPackage.replace("\\", "\\\\")); + + if (additionalProperties.containsKey("testPackage")) { + // Update model package to contain the specified model package name and the invoker package + testPackage = invokerPackage + "\\" + (String) additionalProperties.get("testPackage"); + } + additionalProperties.put("testPackage", testPackage); + + supportingFiles.add(new SupportingFile("composer.mustache", "", "composer.json")); + supportingFiles.add(new SupportingFile("phpunit.mustache", "", "phpunit.xml.dist")); + supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); + supportingFiles.add(new SupportingFile("register_routes.mustache", toSrcPath(invokerPackage, srcBasePath), "RegisterRoutes.php")); + supportingFiles.add(new SupportingFile("register_routes_test.mustache", toSrcPath(testPackage, srcBasePath), "RegisterRoutesTest.php")); + } + + @Override + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + OperationMap operations = objs.getOperations(); + List operationList = operations.getOperation(); + operationList.forEach(operation -> { + operation.vendorExtensions.put("x-path", mapToFlightPath(operation.path)); + String returnType = operation.responses.stream().filter(r -> r.is2xx && r.dataType != null).map(r -> this.getTypeHint(r.dataType, false, false)).filter(t -> !t.isEmpty()).map(t -> t + "|null").findFirst().orElse("void"); + operation.vendorExtensions.put("x-return-type", returnType); + operation.vendorExtensions.put("x-return-type-is-void", returnType.equals("void")); + operation.vendorExtensions.put("x-return-type-comment", + operation.responses.stream().filter(r -> r.is2xx && r.dataType != null).map(r -> this.getTypeHint(r.dataType, true, false)).filter(t -> !t.isEmpty()).map(t -> t + "|null").findFirst().orElse("void")); + operation.vendorExtensions.put("x-nonFormParams", operation.allParams.stream().filter(p -> !p.isFormParam).toArray()); + + operation.allParams.forEach(param -> { + param.vendorExtensions.put("x-parameter-type", param.required ? getTypeHint(param.dataType, false, false) : getTypeHintNullable(param.dataType, false)); + String commentType = param.required ? getTypeHint(param.dataType, true, false) : getTypeHintNullable(param.dataType, false); + param.vendorExtensions.put("x-comment-type", commentType); + param.vendorExtensions.put("x-comment-type-escaped", commentType.replace("\\", "\\\\")); + }); + }); + escapeMediaType(operationList); + return objs; + } + + private String mapToFlightPath(String path) { + return path.replaceAll("\\{([^}]+)}", "@$1"); + } + + @Override + public ModelsMap postProcessModels(ModelsMap objs) { + objs = super.postProcessModels(objs); + + ModelMap models = objs.getModels().get(0); + CodegenModel model = models.getModel(); + + // Simplify model var type + for (CodegenProperty var : model.vars) { + if (var.dataType != null) { + // Determine if the parameter type is supported as a type hint and make it available + // to the templating engine + var.vendorExtensions.put("x-parameter-type", var.required ? getTypeHint(var.dataType, false, true) : getTypeHintNullable(var.dataType, true)); + var.vendorExtensions.put("x-comment-type", var.required ? getTypeHint(var.dataType, true, true) : getTypeHintNullableForComments(var.dataType, true)); + } + } + + return objs; + } + + protected String getTypeHintNullable(String type, boolean modelContext) { + String typeHint = getTypeHint(type, false, modelContext); + if (!typeHint.equals("")) { + return "?" + typeHint; + } + + return typeHint; + } + + protected String getTypeHintNullableForComments(String type, boolean modelContext) { + String typeHint = getTypeHint(type, true, modelContext); + if (!typeHint.equals("")) { + return typeHint + "|null"; + } + + return typeHint; + } + + protected String getTypeHint(String type, boolean forComments, boolean modelContext) { + // Type hint array types + if (type.endsWith("[]")) { + if (forComments) { + //Make type hints for array in comments. Call getTypeHint recursive for extractSimpleName for models + String typeWithoutArray = type.substring(0, type.length() - 2); + return this.getTypeHint(typeWithoutArray, true, modelContext) + "[]"; + } else { + return "array"; + } + } + + // Check if the type is a native type that is type hintable in PHP + if (typeHintable.contains(type)) { + return type; + } + + // Default includes are referenced by their fully-qualified class name (including namespace) + if (defaultIncludes.contains(type)) { + return type; + } + + // Model classes are assumed to be imported and we reference them by their class name + if (isModelClass(type)) { + // This parameter is an instance of a model + return modelContext ? extractSimpleName(type) : type; + } + + // PHP does not support type hinting for this parameter data type + return ""; + } + + protected Boolean isModelClass(String type) { + return Boolean.valueOf(type.contains(modelPackage())); + } + + @Override + public String toApiName(String name) { + if (name.length() == 0) { + return toAbstractName("DefaultApi"); + } + return toAbstractName(camelize(name) + "Api"); + } + + @Override + public String toApiTestFilename(String name) { + if (name.length() == 0) { + return "DefaultApiTest"; + } + return camelize(name) + "ApiTest"; + } + + @Override + public CodegenOperation fromOperation(String path, + String httpMethod, + Operation operation, + List servers) { + CodegenOperation op = super.fromOperation(path, httpMethod, operation, servers); + op.path = encodePath(path); + return op; + } +} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java index d7f8b7222e18..b08df67221fd 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpMezzioPathHandlerServerCodegen.java @@ -248,7 +248,7 @@ protected Schema convertParameterToSchema(OpenAPI openAPI, Parameter parameter) Schema parameterSchema = ModelUtils.getReferencedSchema(openAPI, queryParameter.getSchema()); // array if (ModelUtils.isArraySchema(parameterSchema)) { - Schema itemSchema = ((ArraySchema) parameterSchema).getItems(); + Schema itemSchema = ModelUtils.getSchemaItems(parameterSchema); ArraySchema arraySchema = new ArraySchema(); arraySchema.setMinItems(parameterSchema.getMinItems()); arraySchema.setMaxItems(parameterSchema.getMaxItems()); @@ -397,7 +397,7 @@ protected void generateContainerSchemas(OpenAPI openAPI, Set visitedSche } } else if (ModelUtils.isArraySchema(schema)) { //Recursively process schema of array items - generateContainerSchemas(openAPI, visitedSchemas, ((ArraySchema) schema).getItems()); + generateContainerSchemas(openAPI, visitedSchemas, ModelUtils.getSchemaItems(schema)); isContainer = Boolean.TRUE; } else if (ModelUtils.isMapSchema(schema)) { //Recursively process schema of map items diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpNextgenClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpNextgenClientCodegen.java index 3c57a89f4abf..8136c9d3003d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpNextgenClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpNextgenClientCodegen.java @@ -27,6 +27,7 @@ import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.model.OperationMap; import org.openapitools.codegen.model.OperationsMap; +import org.openapitools.codegen.utils.ModelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -198,7 +199,10 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List linkedHashMap, String r } else if (value instanceof Integer) { ret = ret + JSON_ESCAPE_DOUBLE_QUOTE + key + JSON_ESCAPE_DOUBLE_QUOTE + ": " + value; + } else if (value instanceof Boolean) { + ret = ret + JSON_ESCAPE_DOUBLE_QUOTE + key + JSON_ESCAPE_DOUBLE_QUOTE + ": " + + value; } else if (value instanceof LinkedHashMap) { String in = ret + JSON_ESCAPE_DOUBLE_QUOTE + key + JSON_ESCAPE_DOUBLE_QUOTE + ": "; ret = traverseMap(((LinkedHashMap) value), in); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java index 10487e805c69..edf53eb51745 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PowerShellClientCodegen.java @@ -998,8 +998,7 @@ public String getSchemaType(Schema p) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getTypeDeclaration(inner) + "[]"; } else if (ModelUtils.isMapSchema(p)) { return "System.Collections.Hashtable"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java index 13a356a47d34..f1ca476646ae 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ProtobufSchemaCodegen.java @@ -608,8 +608,7 @@ public String toModelImport(String name) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java index 6132cc3a6e21..5fb5d415ee4b 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonFastAPIServerCodegen.java @@ -223,8 +223,7 @@ public String toModelImport(String name) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java index cb71b2fdaf60..8e1d295dcd1a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RClientCodegen.java @@ -535,8 +535,7 @@ public String toApiName(String name) { @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustAxumServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustAxumServerCodegen.java index e484122421ff..1efb600d2785 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustAxumServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustAxumServerCodegen.java @@ -682,8 +682,7 @@ public CodegenParameter fromRequestBody(RequestBody body, Set imports, S @Override public String toInstantiationType(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return instantiationTypes.get("array") + "<" + getSchemaType(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java index 649ecb814fcf..78669ce2fbae 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustClientCodegen.java @@ -270,10 +270,10 @@ public CodegenModel fromModel(String name, Schema model) { @Override public ModelsMap postProcessModels(ModelsMap objs) { - // Remove the discriminator field from the model, serde will take care of this for (ModelMap model : objs.getModels()) { CodegenModel cm = model.getModel(); + // Remove the discriminator field from the model, serde will take care of this if (cm.discriminator != null) { String reserved_var_name = cm.discriminator.getPropertyBaseName(); @@ -284,6 +284,14 @@ public ModelsMap postProcessModels(ModelsMap objs) { } } } + + // Flag structs with byteArrays in them so that we can annotate them with the serde_as macro + for (CodegenProperty cp : cm.vars) { + if (cp.isByteArray) { + cm.vendorExtensions.put("x-rust-has-byte-array", true); + break; + } + } } // process enum in models return postProcessModelsEnum(objs); @@ -537,6 +545,11 @@ public void postProcessModelProperty(CodegenModel model, CodegenProperty propert if (property.isNullable && !property.required) { additionalProperties.put("serdeWith", true); } + + // If a property is a base64-encoded byte array, use `serde_with` for deserialization. + if (property.isByteArray) { + additionalProperties.put("serdeWith", true); + } } @Override diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java index 0b0b8b070aea..3ad87d03aff4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java @@ -981,8 +981,7 @@ public CodegenParameter fromRequestBody(RequestBody body, Set imports, S @Override public String toInstantiationType(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return instantiationTypes.get("array") + "<" + getSchemaType(inner) + ">"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); @@ -1000,21 +999,21 @@ public CodegenModel fromModel(String name, Schema model) { CodegenModel mdl = super.fromModel(name, model); if (ModelUtils.isArraySchema(model)) { - ArraySchema am = (ArraySchema) model; + Schema inner = ModelUtils.getSchemaItems(model); String xmlName = null; // Detect XML list where the inner item is defined directly. - if ((am.getItems() != null) && - (am.getItems().getXml() != null)) { - xmlName = am.getItems().getXml().getName(); + if ((inner != null) && + (inner.getXml() != null)) { + xmlName = inner.getXml().getName(); } // Detect XML list where the inner item is a reference. - if (am.getXml() != null && am.getXml().getWrapped() && - am.getItems() != null && - !StringUtils.isEmpty(am.getItems().get$ref())) { + if (model.getXml() != null && model.getXml().getWrapped() && + inner != null && + !StringUtils.isEmpty(inner.get$ref())) { Schema inner_schema = allDefinitions.get( - ModelUtils.getSimpleRef(am.getItems().get$ref())); + ModelUtils.getSimpleRef(inner.get$ref())); if (inner_schema.getXml() != null && inner_schema.getXml().getName() != null) { diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaClientCodegen.java index c1fa721d5f54..a5df2e22ba49 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaClientCodegen.java @@ -295,9 +295,8 @@ public String toDefaultValue(Schema p) { String inner = getSchemaType(ModelUtils.getAdditionalProperties(p)); return "Map[String, " + inner + "].empty "; } else if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - String inner = getSchemaType(ap.getItems()); - if (ModelUtils.isSet(ap)) { + String inner = getSchemaType(ModelUtils.getSchemaItems(p)); + if (ModelUtils.isSet(p)) { return "Set[" + inner + "].empty "; } return "Seq[" + inner + "].empty "; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaCaskServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaCaskServerCodegen.java new file mode 100644 index 000000000000..554be3d6307a --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaCaskServerCodegen.java @@ -0,0 +1,857 @@ +/* + * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech) + * + * 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 + * + * https://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 io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.media.Schema; +import org.apache.commons.io.FileUtils; +import org.openapitools.codegen.*; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationsMap; +import org.openapitools.codegen.serializer.SerializerUtils; +import org.openapitools.codegen.utils.ModelUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.nio.charset.StandardCharsets; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static org.openapitools.codegen.utils.StringUtils.camelize; + +public class ScalaCaskServerCodegen extends AbstractScalaCodegen implements CodegenConfig { + public static final String PROJECT_NAME = "projectName"; + + private final Logger LOGGER = LoggerFactory.getLogger(ScalaCaskServerCodegen.class); + + public CodegenType getTag() { + return CodegenType.SERVER; + } + + public String getName() { + return "scala-cask"; + } + + public String getHelp() { + return "Generates a scala-cask server."; + } + + protected String artifactVersion = "0.0.1"; + + static String ApiServiceTemplate = "apiService.mustache"; + + public ScalaCaskServerCodegen() { + super(); + + outputFolder = "generated-code/scala-cask"; + + embeddedTemplateDir = templateDir = "scala-cask"; + apiPackage = "Apis"; + modelPackage = "Models"; + supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); + + outputFolder = "generated-code/cask"; + + modelTestTemplateFiles.put("modelTest.mustache", ".scala"); + modelTemplateFiles.put("model.mustache", ".scala"); + modelTemplateFiles.put("modelData.mustache", "Data.scala"); + + apiTemplateFiles.put("api.mustache", ".scala"); + apiTemplateFiles.put("apiRoutes.mustache", ".scala"); + apiTemplateFiles.put(ApiServiceTemplate, "Service.scala"); + + embeddedTemplateDir = templateDir = "scala-cask"; + + setReservedWordsLowerCase( + Arrays.asList( + "abstract", "continue", "for", "new", "switch", "assert", + "default", "if", "package", "synchronized", "boolean", "do", "goto", "private", + "this", "break", "double", "implements", "protected", "throw", "byte", "else", + "import", "public", "throws", "case", "enum", "instanceof", "return", "transient", + "catch", "extends", "int", "short", "try", "char", "final", "interface", "static", + "void", "class", "finally", "long", "strictfp", "volatile", "const", "float", + "native", "super", "while", "type") + ); + + defaultIncludes = new HashSet( + Arrays.asList("double", + "Int", + "Long", + "Float", + "Double", + "char", + "float", + "String", + "boolean", + "Boolean", + "Double", + "Integer", + "Long", + "Float", + "List", + "Set", + "Map") + ); + + typeMapping.put("integer", "Int"); + typeMapping.put("long", "Long"); + //TODO binary should be mapped to byte array + // mapped to String as a workaround + typeMapping.put("binary", "String"); + + cliOptions.add(new CliOption(CodegenConstants.GROUP_ID, CodegenConstants.GROUP_ID_DESC)); + cliOptions.add(new CliOption(CodegenConstants.ARTIFACT_ID, CodegenConstants.ARTIFACT_ID_DESC)); + cliOptions.add(new CliOption(CodegenConstants.ARTIFACT_VERSION, CodegenConstants.ARTIFACT_VERSION_DESC)); + cliOptions.add(new CliOption(CodegenConstants.GIT_REPO_ID, CodegenConstants.GIT_REPO_ID_DESC)); + cliOptions.add(new CliOption(CodegenConstants.GIT_USER_ID, CodegenConstants.GIT_USER_ID_DESC)); + cliOptions.add(new CliOption(CodegenConstants.PACKAGE_NAME, CodegenConstants.PACKAGE_DESCRIPTION)); + } + + @Override + public String toDefaultValue(Schema p) { + if (ModelUtils.isMapSchema(p)) { + String inner = getSchemaType(ModelUtils.getAdditionalProperties(p)); + return "Map[String, " + inner + "]() "; + } + return super.toDefaultValue(p); + } + + @Override + public String testPackage() { + return "jvm/src/test/scala"; + } + + public String toModelTestFilename(String name) { + String n = super.toModelTestFilename(name); + return (modelPackage + "." + n).replace('.', '/'); + } + + private String ensureProp(String key, String defaultValue) { + if (additionalProperties.containsKey(key) && !additionalProperties.get(key).toString().trim().isEmpty()) { + return (String) additionalProperties.get(key); + } else { + additionalProperties.put(key, defaultValue); + return defaultValue; + } + } + + @Override + public void processOpts() { + super.processOpts(); + + final String groupId = ensureProp(CodegenConstants.GROUP_ID, "org.openapitools"); + ensureProp(CodegenConstants.ARTIFACT_ID, "caskgen"); + artifactVersion = ensureProp(CodegenConstants.ARTIFACT_VERSION, "0.0.1"); + + gitRepoId = ensureProp(CodegenConstants.GIT_REPO_ID, ""); + gitUserId = ensureProp(CodegenConstants.GIT_USER_ID, ""); + + String basePackage = ensureProp(CodegenConstants.PACKAGE_NAME, groupId + ".server"); + apiPackage = ensureProp(CodegenConstants.API_PACKAGE, basePackage + ".api"); + modelPackage = ensureProp(CodegenConstants.MODEL_PACKAGE, basePackage + ".model"); + + + final String apiPath = "jvm/src/main/scala/" + apiPackage.replace('.', '/'); + final String modelPath = "shared/src/main/scala/" + modelPackage.replace('.', '/'); + + final List appFullPath = Arrays.stream(apiPath.split("/")).collect(Collectors.toList()); + final String appFolder = String.join("/", appFullPath.subList(0, appFullPath.size() - 1)); + + additionalProperties.put("appName", "Cask App"); + additionalProperties.put("appDescription", "A cask service"); + additionalProperties.put("infoUrl", "https://openapi-generator.tech"); + additionalProperties.put("infoEmail", infoEmail); + additionalProperties.put("licenseInfo", "All rights reserved"); + additionalProperties.put("licenseUrl", "http://apache.org/licenses/LICENSE-2.0.html"); + additionalProperties.put(CodegenConstants.INVOKER_PACKAGE, invokerPackage); + additionalProperties.put("openbrackets", "{{"); + additionalProperties.put("closebrackets", "}}"); + + supportingFiles.add(new SupportingFile("example.mustache", "example", "Server.scala")); + supportingFiles.add(new SupportingFile("Dockerfile.mustache", "example", "Dockerfile")); + supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); + supportingFiles.add(new SupportingFile("build.sbt.mustache", "", "build.sbt")); + supportingFiles.add(new SupportingFile("buildAndPublish.yml.mustache", "", ".github/workflows/buildAndPublish.yml")); + supportingFiles.add(new SupportingFile("build.sc.mustache", "", "build.sc")); + supportingFiles.add(new SupportingFile(".scalafmt.conf.mustache", "", ".scalafmt.conf")); + supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore")); + supportingFiles.add(new SupportingFile("appPackage.mustache", appFolder, "package.scala")); + supportingFiles.add(new SupportingFile("apiPackage.mustache", apiPath, "package.scala")); + supportingFiles.add(new SupportingFile("modelPackage.mustache", modelPath, "package.scala")); + supportingFiles.add(new SupportingFile("exampleApp.mustache", appFolder, "ExampleApp.scala")); + supportingFiles.add(new SupportingFile("baseApp.mustache", appFolder, "BaseApp.scala")); + supportingFiles.add(new SupportingFile("openapiRoute.mustache", apiPath, "OpenApiRoutes.scala")); + supportingFiles.add(new SupportingFile("appRoutes.mustache", appFolder, "AppRoutes.scala")); + supportingFiles.add(new SupportingFile("project/build.properties", "project", "build.properties")); + supportingFiles.add(new SupportingFile("project/plugins.sbt", "project", "plugins.sbt")); + + + instantiationTypes.put("array", "Seq"); + instantiationTypes.put("map", "Map"); + + importMapping = new HashMap(); + importMapping.put("BigDecimal", "scala.math.BigDecimal"); + importMapping.put("UUID", "java.util.UUID"); + importMapping.put("File", "java.io.File"); + importMapping.put("Date", "java.time.LocalDate as Date"); + importMapping.put("Timestamp", "java.sql.Timestamp"); + importMapping.put("Map", "Map"); + importMapping.put("HashMap", "Map"); + importMapping.put("Array", "Seq"); + importMapping.put("ArrayList", "Seq"); + importMapping.put("List", "Seq"); + importMapping.put("DateTime", "java.time.LocalDateTime"); + importMapping.put("LocalDateTime", "java.time.LocalDateTime"); + importMapping.put("LocalDate", "java.time.LocalDate"); + importMapping.put("OffsetDateTime", "java.time.OffsetDateTime"); + importMapping.put("LocalTime", "java.time.LocalTime"); + } + + static boolean consumesMimetype(CodegenOperation op, String mimetype) { + // people don't always/often specify the 'consumes' property, so we assume true when + // the optional 'consumes' is null or empty + boolean defaultRetValue = true; + + final List> consumes = op.consumes; + if (consumes != null) { + for (Map c : consumes) { + final String mt = c.get("mediaType"); + if (mt.equalsIgnoreCase(mimetype)) { + return true; + } + } + return false; + } else { + return defaultRetValue; + } + } + + + static String formatMap(Map map) { + StringBuilder mapAsString = new StringBuilder("{"); + for (Object key : map.keySet().stream().sorted().collect(Collectors.toList())) { + mapAsString.append(key + " -- " + map.get(key) + ",\n"); + } + if (mapAsString.length() > 1) { + mapAsString.delete(mapAsString.length() - 2, mapAsString.length()); + } + mapAsString.append("}"); + return mapAsString.toString(); + } + + @Override + public String toApiName(String name) { + if (name.isEmpty()) { + return "DefaultApi"; + } + name = sanitizeName(name); + return camelize(name); + } + + @Override + public String apiFilename(String templateName, String tag) { + String suffix = apiTemplateFiles().get(templateName); + String fn = toApiFilename(tag); + if (templateName.equals(ApiServiceTemplate)) { + return apiFileFolder() + '/' + fn + suffix; + } else { + return apiFileFolder() + '/' + fn + "Routes" + suffix; + } + } + + @Override + public String apiFileFolder() { + return outputFolder + "/jvm/" + sourceFolder + "/" + apiPackage().replace('.', File.separatorChar); + } + + @Override + public String modelFileFolder() { + return outputFolder + "/shared/" + sourceFolder + "/" + modelPackage().replace('.', File.separatorChar); + } + + static String capitalise(String p) { + if (p.length() < 2) { + return p.toUpperCase(Locale.ROOT); + } else { + String first = "" + p.charAt(0); + return first.toUpperCase(Locale.ROOT) + p.substring(1); + } + } + + + // thanks FlaskConnectionCodeGen + private static List> getOperations(Map objs) { + List> result = new ArrayList>(); + Map apiInfo = (Map) objs.get("apiInfo"); + List> apis = (List>) apiInfo.get("apis"); + for (Map api : apis) { + Map operations = (Map) api.get("operations"); + result.add(operations); + } + return result; + } + + @Override + public Map postProcessSupportingFileData(Map objs) { + List> operations = getOperations(objs); + for (int i = 0; i < operations.size(); i++) { + operations.get(i).put("hasMore", i < operations.size() - 1); + } + objs.put("operations", operations); + return super.postProcessSupportingFileData(objs); + } + + protected String getResourceFolder() { + String src = getSourceFolder(); + + List parts = Arrays.stream(src.split("/", -1)).collect(Collectors.toList()); + if (parts.isEmpty()) { + return "resources"; + } else { + String srcMain = String.join("/", parts.subList(0, parts.size() - 1)); + return srcMain + "/resources"; + } + } + + @Override + public void processOpenAPI(OpenAPI openAPI) { + String jsonOpenAPI = SerializerUtils.toJsonString(openAPI); + + try { + String outputFile = getOutputDir() + "/jvm/" + getResourceFolder() + "/openapi.json"; + FileUtils.writeStringToFile(new File(outputFile), jsonOpenAPI, StandardCharsets.UTF_8); + LOGGER.info("wrote file to {}", outputFile); + } catch (Exception e) { + LOGGER.error(e.getMessage(), e); + } + } + + + public static class ParamPart { + final CodegenParameter param; + final String name; + final boolean isParam; + + // flag for if there are more path parts + boolean hasMore; + // flag for if there are more path parts which are parameters + boolean hasMoreParams; + + final String conversion; + + public ParamPart(String name, CodegenParameter param) { + this.name = name; + this.param = param; + this.isParam = param != null; + this.hasMore = true; + this.conversion = !isParam || param.isString ? "" : ".to" + param.dataType; + } + } + + /** + * Cask will compile but 'initialize' can throw a route overlap exception: + *

                                                  + * {{{ + * Routes overlap with wildcards: get /user/logout, get /user/:username, get /user/login + * }}} + *

                                                  + * Note: The same error persists even if the suffixes are unique: + * {{{ + * Routes overlap with wildcards: get /user/logout/3, get /user/:username/1, get /user/login/2 + * }}} + *

                                                  + * To fix this, we need to identify and resolve conflicts in our generated code. + *

                                                  + * # How do we identify conflicts? + *

                                                  + *

                                                  + * 1. group routes by their non-param prefixes. + *

                                                  + * 2. add an "x-annotation" vendor extension for operations + *

                                                  + * 3. add a list of "RouteGroups" which can manually delegate as per below + *

                                                  + *

                                                  + * # How do we resolve conflicts? + *

                                                  + * We leave out the cask route annotation on the conflicting operations, e.g. : + * {{{ + * //conflict: @cask.get("/user/:username") + * def getUserByName(username: String, request: cask.Request) = ... + * }}} + *

                                                  + * and we introduce a new discriminator function to "manually" call those conflicts: + * {{{ + * + * @cask.get("/user", subpath = true) + * def userRouteDescriminator(request: cask.Request) = { + * request.remainingPathSegments match { + * case Seq("logout") => logoutUser(request) + * case Seq("login") => loginUser(request) + * case Seq(param) => getUserByName(param, request) + * } + * } + * }}} + */ + public static class OperationGroup { + List operations = new ArrayList<>(); + final String pathPrefix; + final String httpMethod; + final String caskAnnotation; + final String methodName; + + // TODO - multiple operations may have the same query params, so we'll need to somehow merge them (and take the right type) + public boolean hasGroupQueryParams() { + return operations.stream().flatMap(op -> op.queryParams.stream()).count() > 0; + } + + /** + * This is invoked from `scala-cask/apiRoutesQueryParamsTyped.mustache` + * + * @return the CodegenParameters + */ + public List getGroupQueryParams() { + List list = operations.stream().flatMap(op -> op.queryParams.stream()).map(p -> { + final CodegenParameter copy = p.copy(); + copy.vendorExtensions.put("x-default-value", defaultValue(p)); + copy.required = false; // all our query params are optional for our work-around as it's a super-set of a few different routes + copy.dataType = asScalaDataType(copy, false, true, true); + copy.defaultValue = defaultValue(copy); + return copy; + } + ).collect(Collectors.toList()); + + return list; + } + + @Override + public String toString() { + List ops = operations.stream().map(o -> o.path + "\n").collect(Collectors.toList()); + return httpMethod + " " + pathPrefix + " w/ " + operations.size() + " operations:\n" + String.join("", ops); + } + + public OperationGroup(String httpMethod, String pathPrefix) { + this.httpMethod = httpMethod; + this.pathPrefix = pathPrefix; + caskAnnotation = "@cask." + httpMethod.toLowerCase(Locale.ROOT); + + List stripped = Arrays.stream(pathPrefix.split("/", -1)) + .map(ScalaCaskServerCodegen::capitalise).collect(Collectors.toList()); + + methodName = "routeWorkAroundFor" + capitalise(httpMethod) + String.join("", stripped); + } + + public void add(CodegenOperation op) { + if (!op.path.startsWith(pathPrefix)) { + throw new IllegalArgumentException("inconsistent path: " + pathPrefix); + } + if (!op.httpMethod.equals(httpMethod)) { + throw new IllegalArgumentException("inconsistent method: " + httpMethod); + } + + final List pathParts = new ArrayList<>(); + final List parts = Arrays.stream(op.path.substring(pathPrefix.length()).split("/", -1)).filter(p -> !p.isEmpty()).collect(Collectors.toList()); + for (int i = 0; i < parts.size(); i++) { + String p = parts.get(i); + ScalaCaskServerCodegen.ParamPart pp = hasBrackets(p) ? new ScalaCaskServerCodegen.ParamPart(chompBrackets(p), pathParamForName(op, chompBrackets(p))) : new ScalaCaskServerCodegen.ParamPart(p, null); + pathParts.add(pp); + } + + List paramPathParts = pathParts.stream().filter(p -> p.isParam).collect(Collectors.toList()); + if (!paramPathParts.isEmpty()) { + final String lastParamName = paramPathParts.get(paramPathParts.size() - 1).name; + paramPathParts.forEach(p -> p.hasMoreParams = !p.name.equals(lastParamName)); + } + if (!pathParts.isEmpty()) { + pathParts.get(pathParts.size() - 1).hasMore = false; + } + + op.vendorExtensions.put("x-path-remaining", pathParts); + op.vendorExtensions.put("x-has-path-remaining", !paramPathParts.isEmpty()); + operations.add(op); + } + + public boolean contains(CodegenOperation op) { + return operations.contains(op); + } + + public void updateAnnotations() { + operations.forEach(op -> { + String annotation = op.vendorExtensions.get("x-annotation").toString(); + String conflicts = String.join(", ", operations.stream().map(o -> o.path).collect(Collectors.toList())); + op.vendorExtensions.put("x-annotation", "// conflicts with [" + conflicts + "] after" + pathPrefix + ", ignoring " + annotation); + }); + operations = operations.stream().sorted((a, b) -> a.pathParams.size() - b.pathParams.size()).collect(Collectors.toList()); + } + } + + + static List group(List operationList) { + Map groupedByPrefix = new HashMap<>(); + operationList.forEach(op -> { + String prefix = nonParamPathPrefix(op); + String key = op.httpMethod + " " + prefix; + if (!op.pathParams.isEmpty()) { + final ScalaCaskServerCodegen.OperationGroup group = groupedByPrefix.getOrDefault(key, new ScalaCaskServerCodegen.OperationGroup(op.httpMethod, prefix)); + group.add(op); + groupedByPrefix.put(key, group); + } + }); + return groupedByPrefix.values().stream().collect(Collectors.toList()); + } + + static String nonParamPathPrefix(CodegenOperation op) { + if (op.pathParams.isEmpty()) { + return op.path; + } + + final String firstParam = op.pathParams.stream().findFirst().get().paramName; + final int i = op.path.indexOf(firstParam); + final String path = chompSuffix(op.path.substring(0, i - 1), "/"); + return path; + } + + static List createRouteGroups(List operationList) { + + List groups = group(operationList); + operationList.forEach((op) -> { + // for the usage/call site + final String scalaPath = pathWithBracketPlaceholdersRemovedAndXPathIndexAdded(op); + op.vendorExtensions.put("x-cask-path", scalaPath); + + final String annotation = "@cask." + op.httpMethod.toLowerCase(Locale.ROOT); + op.vendorExtensions.put("x-annotation", annotation); + + for (final ScalaCaskServerCodegen.OperationGroup group : groups) { + if (!group.contains(op)) { + if (op.path.startsWith(group.pathPrefix) && op.httpMethod.equalsIgnoreCase(group.httpMethod)) { + group.add(op); + } + } + } + }); + + List trimmed = groups.stream().filter(g -> g.operations.size() > 1).map(g -> { + g.updateAnnotations(); + return g; + }).collect(Collectors.toList()); + return trimmed; + } + + @Override + public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { + final Map operations = (Map) objs.get("operations"); + final List operationList = (List) operations.get("operation"); + + objs.put("route-groups", createRouteGroups(operationList)); + + operationList.forEach(ScalaCaskServerCodegen::postProcessOperation); + return objs; + } + + @Override + public ModelsMap postProcessModels(ModelsMap objs) { + objs.getModels().stream().map(ModelMap::getModel).forEach(this::postProcessModel); + return objs; + } + + private void setDefaultValueForCodegenProperty(CodegenProperty p) { + + if (p.defaultValue == null || p.defaultValue.trim().isEmpty()) { + if (p.getIsEnumOrRef()) { + p.defaultValue = "null"; + } else { + p.defaultValue = defaultValueNonOption(p); + } + } else if (p.defaultValue.contains("Seq.empty")) { + p.defaultValue = "Nil"; + } + } + + private void postProcessModel(CodegenModel model) { + model.getAllVars().forEach(this::setDefaultValueForCodegenProperty); + model.getVars().forEach(this::setDefaultValueForCodegenProperty); + + model.getVars().forEach(ScalaCaskServerCodegen::postProcessProperty); + model.getAllVars().forEach(ScalaCaskServerCodegen::postProcessProperty); + } + + private static void postProcessOperation(CodegenOperation op) { + // force http method to lower case + op.httpMethod = op.httpMethod.toLowerCase(Locale.ROOT); + + /* Put in 'x-consumes-json' and 'x-consumes-xml' */ + op.vendorExtensions.put("x-consumes-json", consumesMimetype(op, "application/json")); + op.vendorExtensions.put("x-consumes-xml", consumesMimetype(op, "application/xml")); + + op.bodyParams.stream().filter((b) -> b.isBodyParam).forEach((p) -> { + p.vendorExtensions.put("x-consumes-json", consumesMimetype(op, "application/json")); + p.vendorExtensions.put("x-consumes-xml", consumesMimetype(op, "application/xml")); + }); + + /* put in 'x-container-type' to help with unmarshalling from json */ + op.allParams.forEach((p) -> p.vendorExtensions.put("x-container-type", containerType(p.dataType))); + op.bodyParams.forEach((p) -> p.vendorExtensions.put("x-container-type", containerType(p.dataType))); + + final String paramList = op.allParams.stream().map((p) -> p.paramName).collect(Collectors.joining(", ")); + op.vendorExtensions.put("x-param-list", paramList); + + final Stream typed = op.allParams.stream().map((p) -> p.paramName + " : " + asScalaDataType(p, p.required, false)); + op.vendorExtensions.put("x-param-list-typed", String.join(", ", typed.collect(Collectors.toList()))); + + final Stream typedJson = op.allParams.stream().map((p) -> p.paramName + " : " + asScalaDataType(p, p.required, true)); + op.vendorExtensions.put("x-param-list-typed-json", String.join(", ", typedJson.collect(Collectors.toList()))); + + // for the declaration site + op.vendorExtensions.put("x-cask-path-typed", routeArgs(op)); + op.vendorExtensions.put("x-query-args", queryArgs(op)); + + List responses = op.responses.stream().map(r -> r.dataType).filter(Objects::nonNull).collect(Collectors.toList()); + op.vendorExtensions.put("x-response-type", responses.isEmpty() ? "Unit" : String.join(" | ", responses)); + } + + private static void postProcessProperty(CodegenProperty p) { + p.vendorExtensions.put("x-datatype-model", asScalaDataType(p, p.required, false)); + p.vendorExtensions.put("x-defaultValue-model", defaultValue(p, p.required, p.defaultValue)); + String dataTypeData = asScalaDataType(p, p.required, true); + p.vendorExtensions.put("x-datatype-data", dataTypeData); + + + p.vendorExtensions.put("x-containertype-data", containerType(dataTypeData)); + + p.vendorExtensions.put("x-defaultValue-data", defaultValueNonOption(p, p.defaultValue)); + + // the 'asModel' logic for modelData.mustache + // + // if it's optional (not required), then wrap the value in Option() + // ... unless it's a map or array, in which case it can just be empty + // + p.vendorExtensions.put("x-wrap-in-optional", !p.required && !p.isArray && !p.isMap); + + // if it's an array or optional, we need to map it as a model -- unless it's a map, + // in which case we have to map the values + boolean hasItemModel = p.items != null && p.items.isModel; + boolean isObjectArray = p.isArray && hasItemModel; + boolean isOptionalObj = !p.required && p.isModel; + p.vendorExtensions.put("x-map-asModel", (isOptionalObj || isObjectArray) && !p.isMap); + + // when deserialising map objects, the logic is tricky. + p.vendorExtensions.put("x-deserialize-asModelMap", p.isMap && hasItemModel); + + // for some reason, an openapi spec with pattern field like this: + // pattern: '^[A-Za-z]+$' + // will result in the pattern property text of + // pattern: '/^[A-Za-z]+$/' + if (p.pattern != null && p.pattern.startsWith("/") && p.pattern.endsWith("/")) { + p.pattern = p.pattern.substring(1, p.pattern.length() - 1); + } + + } + + + /** + * Cask path params use the :pathParam syntax rather than the {pathParam} syntax + * + * @param op + * @return + */ + private static String pathWithBracketPlaceholdersRemovedAndXPathIndexAdded(CodegenOperation op) { + String[] items = op.path.split("/", -1); + String scalaPath = ""; + for (int i = 0; i < items.length; ++i) { + final String nextPart = hasBrackets(items[i]) ? ":" + chompBrackets(items[i]) : items[i]; + if (i != items.length - 1) { + scalaPath = scalaPath + nextPart + "/"; + } else { + scalaPath = scalaPath + nextPart; + } + } + return scalaPath; + } + + private static CodegenParameter pathParamForName(CodegenOperation op, String pathParam) { + final CodegenParameter param = op.pathParams.stream().filter(p -> p.paramName.equals(pathParam)).findFirst().get(); + if (param == null) { + throw new RuntimeException("Bug: path param " + pathParam + " not found"); + } + return param; + } + + /** + * The path placeholders as well as query parameters + * + * @param op the codegen operations + * @return a list of both the path and query parameters as typed arguments (e.g. "aPathArg : Int, request: cask.Request, aQueryArg : Option[Long]") + */ + private static String routeArgs(CodegenOperation op) { + final Stream pathParamNames = Arrays.stream(op.path.split("/", -1)).filter(ScalaCaskServerCodegen::hasBrackets).map(p -> { + final CodegenParameter param = pathParamForName(op, chompBrackets(p)); + return param.paramName + " : " + asScalaDataType(param, param.required, true); + }); + + + final List pathList = pathParamNames.collect(Collectors.toList()); + + // we always include the cask request + pathList.add("request: cask.Request"); + + final Stream queryParams = op.queryParams.stream().map(p -> { + p.vendorExtensions.put("x-default-value", defaultValue(p)); + return p.paramName + " : " + asScalaDataType(p, p.required, true, true); + }); + pathList.addAll(queryParams.collect(Collectors.toList())); + return pathList.isEmpty() ? "" : (String.join(", ", pathList)); + } + + private static String defaultValue(CodegenParameter p) { + return defaultValue(p, p.required, p.defaultValue); + } + + private static String defaultValue(IJsonSchemaValidationProperties p, boolean required, String fallbackDefaultValue) { + if (!required && !(p.getIsArray() || p.getIsMap())) { + return "None"; + } + return defaultValueNonOption(p, fallbackDefaultValue); + } + + private static String defaultValueNonOption(IJsonSchemaValidationProperties p, String fallbackDefaultValue) { + if (p.getIsArray()) { + if (p.getUniqueItems()) { + return "Set.empty"; + } + return "Nil"; + } + if (p.getIsMap()) { + return "Map.empty"; + } + if (p.getIsNumber()) { + return "0"; + } + if (p.getIsEnum()) { + return fallbackDefaultValue; + } + if (p.getIsBoolean()) { + return "false"; + } + if (p.getIsUuid()) { + return "java.util.UUID.randomUUID()"; + } + if (p.getIsString()) { + return "\"\""; + } + return fallbackDefaultValue; + } + + private static String defaultValueNonOption(CodegenProperty p) { + if (p.getIsArray()) { + return "Nil"; + } + if (p.getIsMap()) { + return "Map.empty"; + } + if (p.isNumber || p.isNumeric) { + return "0"; + } + if (p.isBoolean) { + return "false"; + } + if (p.isUuid) { + return "java.util.UUID.randomUUID()"; + } + if (p.isModel) { + return "null"; + } + if (p.isDate || p.isDateTime) { + return "null"; + } + if (p.isString) { + return "\"\""; + } + return p.defaultValue; + } + + private static String queryArgs(final CodegenOperation op) { + final List list = op.queryParams.stream().map(p -> p.paramName).collect(Collectors.toList()); + final String prefix = list.isEmpty() ? "" : ", "; + return prefix + String.join(", ", list); + } + + /** + * For our model classes, we have two variants: + *

                                                  + * 1) a {model}.scala one which is a validated, model class + * 2) a {model}Data.scala one which is just our data-transfer-object (DTO) which is written primarily for e.g. json serialisation + *

                                                  + * The data variant can have nulls and other non-scala things, but they know how to create validated model objects. + *

                                                  + * This 'asScalaDataType' is used to ensure the type hierarchy is correct for both the model and data varients. + *

                                                  + * e.g. consider this example: + * ``` + * case class Foo(bar : Bar, bazz :List[Bazz]) + * case class Bar(x : Option[String] = None) + * case class Bazz(y : Int) + *

                                                  + * // vs + *

                                                  + * case class FooData(bar : BarData, bazz :List[BazzData]) + * case class BarData(x : String = "") + * case class BazzData(y : Int) + * ``` + */ + private static String asScalaDataType(final IJsonSchemaValidationProperties param, boolean required, boolean useJason) { + return asScalaDataType(param, required, useJason, !useJason); + } + + private static String asScalaDataType(final IJsonSchemaValidationProperties param, boolean required, boolean useJason, boolean allowOptional) { + String dataType = (param.getIsModel() && useJason) ? param.getDataType() + "Data" : param.getDataType(); + + final String dataSuffix = useJason && param.getItems() != null && param.getItems().getIsModel() ? "Data" : ""; + if (dataType.startsWith("List[")) { + dataType = dataType.replace("List[", "Seq["); + dataType = dataType.replace("]", dataSuffix + "]"); + } else if (dataType.startsWith("Set[")) { + dataType = dataType.replace("]", dataSuffix + "]"); + } else if (!required && allowOptional) { + dataType = "Option[" + dataType + "]"; + } + return dataType; + } + + private static String chompBrackets(String str) { + return str.replace("{", "").replace("}", ""); + } + + private static String chompSuffix(String str, String suffix) { + return str.endsWith(suffix) ? chompSuffix(str.substring(0, str.length() - suffix.length()), suffix) : str; + } + + private static boolean hasBrackets(String str) { + return str.matches("^\\{(.*)\\}$"); + } + + static String containerType(String dataType) { + String fixedForList = dataType.replaceAll(".*\\[(.*)\\]", "$1"); + + // if it is a map, we want the value type + final String[] parts = fixedForList.split(","); + return parts[parts.length - 1]; + } +} diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java index 9b68bc73649c..7427c4ce786e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaFinchServerCodegen.java @@ -261,8 +261,7 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List parameters, @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return getSchemaType(p) + "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaHttp4sServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaHttp4sServerCodegen.java index 1b633ac99187..d97f772e642c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaHttp4sServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaHttp4sServerCodegen.java @@ -711,8 +711,7 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objsI, List" : "[" + getTypeDeclaration(inner) + "]"; } else if (ModelUtils.isMapSchema(p)) { Schema inner = ModelUtils.getAdditionalProperties(p); @@ -794,8 +792,7 @@ public String toInstantiationType(Schema p) { if (ModelUtils.isMapSchema(p)) { return getSchemaType(ModelUtils.getAdditionalProperties(p)); } else if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - String inner = getSchemaType(ap.getItems()); + String inner = getSchemaType(ModelUtils.getSchemaItems(p)); return ModelUtils.isSet(p) ? "Set<" + inner + ">" : "[" + inner + "]"; } return null; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SwiftCombineClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SwiftCombineClientCodegen.java index 29e276e674e1..74b199979395 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SwiftCombineClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SwiftCombineClientCodegen.java @@ -289,7 +289,7 @@ public String getTypeDeclaration(Schema p) { Schema schema = ModelUtils.unaliasSchema(this.openAPI, p, importMapping); Schema target = ModelUtils.isGenerateAliasAsModel() ? p : schema; if (ModelUtils.isArraySchema(target)) { - Schema items = getSchemaItems((ArraySchema) schema); + Schema items = ModelUtils.getSchemaItems(schema); return ModelUtils.isSet(target) && ModelUtils.isObjectSchema(items) ? "Set<" + getTypeDeclaration(items) + ">" : "[" + getTypeDeclaration(items) + "]"; } else if (ModelUtils.isMapSchema(target)) { // Note: ModelUtils.isMapSchema(p) returns true when p is a composed schema that also defines @@ -422,8 +422,7 @@ public String toInstantiationType(Schema p) { if (ModelUtils.isMapSchema(p)) { return getSchemaType(ModelUtils.getAdditionalProperties(p)); } else if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - String inner = getSchemaType(ap.getItems()); + String inner = getSchemaType(ModelUtils.getSchemaItems(p)); return ModelUtils.isSet(p) ? "Set<" + inner + ">" : "[" + inner + "]"; } return null; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java index 696bf349ca5f..4e78a623b0e7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptClientCodegen.java @@ -482,7 +482,7 @@ private String getHttpLibForFramework(String object) { public String getTypeDeclaration(Schema p) { Schema inner; if (ModelUtils.isArraySchema(p)) { - inner = ((ArraySchema) p).getItems(); + inner = ModelUtils.getSchemaItems(p); return this.getSchemaType(p) + "<" + this.getTypeDeclaration(unaliasSchema(inner)) + ">"; } else if (ModelUtils.isMapSchema(p)) { inner = getSchemaAdditionalProperties(p); @@ -787,8 +787,7 @@ private String toExampleValueRecursive(String modelName, Schema schema, Object o } return fullPrefix + example + closeChars; } else if (ModelUtils.isArraySchema(schema)) { - ArraySchema arrayschema = (ArraySchema) schema; - Schema itemSchema = arrayschema.getItems(); + Schema itemSchema = ModelUtils.getSchemaItems(schema); String itemModelName = getModelName(itemSchema); if (objExample instanceof Iterable && itemModelName == null) { // If the example is already a list, return it directly instead of wrongly wrap it in another list @@ -919,8 +918,7 @@ private Object exampleFromStringOrArraySchema(Schema sc, Object currentExample, } else if (simpleStringSchema(schema)) { return propName + "_example"; } else if (ModelUtils.isArraySchema(schema)) { - ArraySchema arraySchema = (ArraySchema) schema; - Schema itemSchema = arraySchema.getItems(); + Schema itemSchema = ModelUtils.getSchemaItems(schema); example = getObjectExample(itemSchema); if (example != null) { return example; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java index 0b1883308223..6bc75f0e6390 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptFetchClientCodegen.java @@ -340,6 +340,12 @@ public ModelsMap postProcessModels(ModelsMap objs) { this.processCodeGenModel(cm); } + // Add supporting file only if we plan to generate files in /models + if (!objs.isEmpty() && !addedModelIndex) { + addedModelIndex = true; + supportingFiles.add(new SupportingFile("models.index.mustache", modelPackage().replace('.', File.separatorChar), "index.ts")); + } + return objs; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java index b80b2e9b8b6b..c4068a21fef3 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java @@ -337,7 +337,7 @@ protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Sc Schema additionalProperties = ModelUtils.getAdditionalProperties(schema); codegenModel.additionalPropertiesType = getSchemaType(additionalProperties); if ("array".equalsIgnoreCase(codegenModel.additionalPropertiesType)) { - codegenModel.additionalPropertiesType += '<' + getSchemaType(((ArraySchema) additionalProperties).getItems()) + '>'; + codegenModel.additionalPropertiesType += '<' + getSchemaType((ModelUtils.getSchemaItems(additionalProperties))) + '>'; } addImport(codegenModel, codegenModel.additionalPropertiesType); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/XojoClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/XojoClientCodegen.java index 9359f41d5ee4..2f05000f345d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/XojoClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/XojoClientCodegen.java @@ -235,8 +235,7 @@ private static CodegenModel reconcileProperties(CodegenModel codegenModel, @Override public String getTypeDeclaration(Schema p) { if (ModelUtils.isArraySchema(p)) { - ArraySchema ap = (ArraySchema) p; - Schema inner = ap.getItems(); + Schema inner = ModelUtils.getSchemaItems(p); return super.getTypeDeclaration(inner); } return super.getTypeDeclaration(p); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java index 99f2d70ee6f7..bbaf74bf4245 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java @@ -20,6 +20,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.v3.core.util.AnnotationsUtils; +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.PathItem; @@ -356,8 +357,8 @@ private static void visitSchema(OpenAPI openAPI, Schema schema, String mimeType, visitSchema(openAPI, s, mimeType, visitedSchemas, visitor); } } - } else if (schema instanceof ArraySchema) { - Schema itemsSchema = ((ArraySchema) schema).getItems(); + } else if (ModelUtils.isArraySchema(schema)) { + Schema itemsSchema = ModelUtils.getSchemaItems(schema); if (itemsSchema != null) { visitSchema(openAPI, itemsSchema, mimeType, visitedSchemas, visitor); } @@ -459,7 +460,7 @@ public static boolean isObjectSchema(Schema schema) { return (schema instanceof ObjectSchema) || // must not be a map - (SchemaTypeUtil.OBJECT_TYPE.equals(schema.getType()) && !(schema instanceof MapSchema)) || + (SchemaTypeUtil.OBJECT_TYPE.equals(schema.getType()) && !(ModelUtils.isMapSchema(schema))) || // must have at least one property (schema.getType() == null && schema.getProperties() != null && !schema.getProperties().isEmpty()); } @@ -508,10 +509,6 @@ public static boolean isComposedSchema(Schema schema) { * @return true if the specified schema is a Composed schema. */ public static boolean isComplexComposedSchema(Schema schema) { - if (!(schema instanceof ComposedSchema)) { - return false; - } - int count = 0; if (schema.getAllOf() != null && !schema.getAllOf().isEmpty()) { @@ -594,7 +591,44 @@ public static boolean isMapSchema(Schema schema) { * @return true if the specified schema is an Array schema. */ public static boolean isArraySchema(Schema schema) { - return (schema instanceof ArraySchema); + if (schema == null) { + return false; + } + + if (schema instanceof JsonSchema) { // 3.1 spec + if (schema.getTypes() != null && schema.getTypes().contains("array")) { + return true; + } else { + return false; + } + } else { // 3.0 spec + return (schema instanceof ArraySchema) || "array".equals(schema.getType()); + } + + } + + /** + * Return the schema in the array's item. Null if schema is not an array. + * + * @param schema the OAS schema + * @return item schema. + */ + public static Schema getSchemaItems(Schema schema) { + if (!isArraySchema(schema)) { + return null; + } + + Schema items = schema.getItems(); + if (items == null) { + if (schema instanceof JsonSchema) { // 3.1 spec + // do nothing as the schema may contain prefixItems only + } else { // 3.0 spec, default to string + LOGGER.error("Undefined array inner type for `{}`. Default to String.", schema.getName()); + items = new StringSchema().description("TODO default missing array inner type to string"); + schema.setItems(items); + } + } + return items; } public static boolean isSet(Schema schema) { @@ -1272,7 +1306,7 @@ public static boolean hasSelfReference(OpenAPI openAPI, } } } else if (isArraySchema(schema)) { - Schema itemsSchema = ((ArraySchema) schema).getItems(); + Schema itemsSchema = ModelUtils.getSchemaItems(schema); if (itemsSchema != null) { return hasSelfReference(openAPI, itemsSchema, visitedSchemaNames); } @@ -2092,6 +2126,25 @@ public static boolean hasAnyOf(Schema schema) { return false; } + /** + * Returns schema type. + * For 3.1 spec, return the first one. + * + * @param schema the schema + * @return schema type + */ + public static String getType(Schema schema) { + if (schema == null) { + return null; + } + + if (schema instanceof JsonSchema) { + return String.valueOf(schema.getTypes().iterator().next()); + } else { + return schema.getType(); + } + } + /** * Returns true if any of the common attributes of the schema (e.g. readOnly, default, maximum, etc) is defined. * diff --git a/modules/openapi-generator/src/main/resources/Java/RFC3339DateFormat.mustache b/modules/openapi-generator/src/main/resources/Java/RFC3339DateFormat.mustache index 311616a4ef11..d35040f054af 100644 --- a/modules/openapi-generator/src/main/resources/Java/RFC3339DateFormat.mustache +++ b/modules/openapi-generator/src/main/resources/Java/RFC3339DateFormat.mustache @@ -11,6 +11,7 @@ import java.text.DecimalFormat; import java.util.GregorianCalendar; import java.util.TimeZone; +{{>generatedAnnotation}} public class RFC3339DateFormat extends DateFormat { private static final long serialVersionUID = 1L; private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC"); @@ -43,4 +44,4 @@ public class RFC3339DateFormat extends DateFormat { public Object clone() { return super.clone(); } -} \ No newline at end of file +} diff --git a/modules/openapi-generator/src/main/resources/Java/ServerConfiguration.mustache b/modules/openapi-generator/src/main/resources/Java/ServerConfiguration.mustache index 8b4cf59ff0a5..9197771174e2 100644 --- a/modules/openapi-generator/src/main/resources/Java/ServerConfiguration.mustache +++ b/modules/openapi-generator/src/main/resources/Java/ServerConfiguration.mustache @@ -5,6 +5,7 @@ import java.util.Map; /** * Representing a Server configuration. */ +{{>generatedAnnotation}} public class ServerConfiguration { public String URL; public String description; diff --git a/modules/openapi-generator/src/main/resources/Java/ServerVariable.mustache b/modules/openapi-generator/src/main/resources/Java/ServerVariable.mustache index 1978b1eb95ef..284cbcbc67f0 100644 --- a/modules/openapi-generator/src/main/resources/Java/ServerVariable.mustache +++ b/modules/openapi-generator/src/main/resources/Java/ServerVariable.mustache @@ -5,6 +5,7 @@ import java.util.HashSet; /** * Representing a Server Variable for server URL template substitution. */ +{{>generatedAnnotation}} public class ServerVariable { public String description; public String defaultValue; diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pojo.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pojo.mustache index 5b0f260635d1..f9f13cac22f8 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pojo.mustache @@ -62,7 +62,7 @@ public class {{classname}} {{#parent}}extends {{{.}}}{{/parent}}{{#vendorExtensi {{#jsonb}}@JsonbCreator{{/jsonb}}{{#jackson}}@JsonCreator{{/jackson}} public {{classname}}( {{#readOnlyVars}} - {{#jsonb}}@JsonbProperty(value = "{{baseName}}"{{^required}}, nillable = true{{/required}}){{/jsonb}}{{#jackson}}@JsonProperty(JSON_PROPERTY_{{nameInSnakeCase}}{{#required}}, required = true{{/required}}){{/jackson}} {{{datatypeWithEnum}}} {{name}}{{^-last}}, {{/-last}} + {{#jsonb}}@JsonbProperty(value = "{{baseName}}"{{^required}}, nillable = true{{/required}}){{/jsonb}}{{#jackson}}@JsonProperty(value = JSON_PROPERTY_{{nameInSnakeCase}}{{#required}}, required = true{{/required}}){{/jackson}} {{{datatypeWithEnum}}} {{name}}{{^-last}}, {{/-last}} {{/readOnlyVars}} ) { {{#readOnlyVars}} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/native/ApiResponse.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/native/ApiResponse.mustache index 1e277319a936..e2f8f6cd44a5 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/native/ApiResponse.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/native/ApiResponse.mustache @@ -14,6 +14,7 @@ import java.util.TreeMap; * * @param The type of data that is deserialized from response body */ +{{>generatedAnnotation}} public class ApiResponse { final private int statusCode; final private Map> headers; diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/native/JSON.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/native/JSON.mustache index 5f53904810fd..7a0951095059 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/native/JSON.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/native/JSON.mustache @@ -81,6 +81,7 @@ public class JSON { /** * Helper class to register the discriminator mappings. */ + {{>generatedAnnotation}} private static class ClassDiscriminatorMapping { // The model class name. Class modelClass; diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/native/api.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/native/api.mustache index 21b8c3edccd1..7255bd4cf5f5 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/native/api.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/native/api.mustache @@ -540,6 +540,7 @@ public class {{classname}} { } return localVarRequestBuilder; } + {{#vendorExtensions.x-group-parameters}} {{#hasParams}} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache index b031a2404941..53dddf3269cd 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/ApiClient.mustache @@ -652,6 +652,29 @@ public class ApiClient { throw new RuntimeException("No AWS4 authentication configured!"); } + /** + * Helper method to set credentials for AWSV4 Signature + * + * @param accessKey Access Key + * @param secretKey Secret Key + * @param sessionToken Session Token + * @param region Region + * @param service Service to access to + */ + public void setAWS4Configuration(String accessKey, String secretKey, String sessionToken, String region, String service) { + {{#withAWSV4Signature}} + for (Authentication auth : authentications.values()) { + if (auth instanceof AWS4Auth) { + ((AWS4Auth) auth).setCredentials(accessKey, secretKey, sessionToken); + ((AWS4Auth) auth).setRegion(region); + ((AWS4Auth) auth).setService(service); + return; + } + } + {{/withAWSV4Signature}} + throw new RuntimeException("No AWS4 authentication configured!"); + } + /** * Set the User-Agent header's value (by adding to the default header map). * diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/anyof_model.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/anyof_model.mustache index 1569eed43e43..33d93192d4cd 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/anyof_model.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/anyof_model.mustache @@ -54,8 +54,8 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im {{/isArray}} {{#isArray}} - final Type typeInstance = new TypeToken>(){}.getType(); - final TypeAdapter<{{{dataType}}}> adapter{{complexType}}List = (TypeAdapter>) gson.getDelegateAdapter(this, TypeToken.get(typeInstance)); + final Type typeInstance = new TypeToken<{{{dataType}}}>(){}.getType(); + final TypeAdapter<{{{dataType}}}> adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}} = (TypeAdapter<{{{dataType}}}>) gson.getDelegateAdapter(this, TypeToken.get(typeInstance)); {{/isArray}} {{/anyOf}} {{/composedSchemas}} @@ -74,30 +74,32 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im // check if the actual instance is of the type `{{{dataType}}}` if (value.getActualInstance() instanceof {{#isArray}}List{{/isArray}}{{^isArray}}{{{dataType}}}{{/isArray}}) { {{#isPrimitiveType}} - JsonPrimitive primitive = adapter{{{dataType}}}.toJsonTree(({{{dataType}}})value.getActualInstance()).getAsJsonPrimitive(); - elementAdapter.write(out, primitive); - return; + JsonPrimitive primitive = adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}}.toJsonTree(({{{dataType}}})value.getActualInstance()).getAsJsonPrimitive(); + elementAdapter.write(out, primitive); + return; {{/isPrimitiveType}} + {{^isPrimitiveType}} {{#isArray}} - List list = (List) value.getActualInstance(); - if(list.get(0) instanceof {{complexType}}) { - JsonArray array = adapter{{{complexType}}}List.toJsonTree(({{{dataType}}})value.getActualInstance()).getAsJsonArray(); - elementAdapter.write(out, array); - return; - } + List list = (List) value.getActualInstance(); + if (list.get(0) instanceof {{{items.dataType}}}) { + JsonArray array = adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}}.toJsonTree(({{{dataType}}})value.getActualInstance()).getAsJsonArray(); + elementAdapter.write(out, array); + return; + } {{/isArray}} + {{/isPrimitiveType}} {{^isArray}} {{^isPrimitiveType}} - JsonElement element = adapter{{{dataType}}}.toJsonTree(({{{dataType}}})value.getActualInstance()); - elementAdapter.write(out, element); - return; + JsonElement element = adapter{{{dataType}}}.toJsonTree(({{{dataType}}})value.getActualInstance()); + elementAdapter.write(out, element); + return; {{/isPrimitiveType}} {{/isArray}} } {{/vendorExtensions.x-duplicated-data-type}} {{/anyOf}} {{/composedSchemas}} - throw new IOException("Failed to serialize as the type doesn't match anyOf schemae: {{#anyOf}}{{{.}}}{{^-last}}, {{/-last}}{{/anyOf}}"); + throw new IOException("Failed to serialize as the type doesn't match anyOf schemas: {{#anyOf}}{{{.}}}{{^-last}}, {{/-last}}{{/anyOf}}"); } @Override @@ -114,63 +116,66 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im {{^hasVars}} // deserialize {{{dataType}}} try { - // validate the JSON object to see if any exception is thrown + // validate the JSON object to see if any exception is thrown + {{^isArray}} {{#isNumber}} - if(!jsonElement.getAsJsonPrimitive().isNumber()) { - throw new IllegalArgumentException(String.format("Expected json element to be of type Number in the JSON string but got `%s`", jsonElement.toString())); - } - actualAdapter = adapter{{{dataType}}}; + if (!jsonElement.getAsJsonPrimitive().isNumber()) { + throw new IllegalArgumentException(String.format("Expected json element to be of type Number in the JSON string but got `%s`", jsonElement.toString())); + } + actualAdapter = adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}}; {{/isNumber}} {{^isNumber}} {{#isPrimitiveType}} - if(!jsonElement.getAsJsonPrimitive().is{{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}}()) { - throw new IllegalArgumentException(String.format("Expected json element to be of type {{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}} in the JSON string but got `%s`", jsonElement.toString())); - } - actualAdapter = adapter{{{dataType}}}; + if (!jsonElement.getAsJsonPrimitive().is{{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}}()) { + throw new IllegalArgumentException(String.format("Expected json element to be of type {{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}} in the JSON string but got `%s`", jsonElement.toString())); + } + actualAdapter = adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}}; {{/isPrimitiveType}} + {{/isNumber}} + {{^isNumber}} {{^isPrimitiveType}} - {{^isArray}} - {{{dataType}}}.validateJsonElement(jsonElement); - actualAdapter = adapter{{{dataType}}}; - {{/isArray}} + {{{dataType}}}.validateJsonElement(jsonElement); + actualAdapter = adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}}; {{/isPrimitiveType}} {{/isNumber}} + {{/isArray}} {{#isArray}} - if (!jsonElement.isJsonArray()) { - throw new IllegalArgumentException(String.format("Expected json element to be a array type in the JSON string but got `%s`", jsonElement.toString())); - } + if (!jsonElement.isJsonArray()) { + throw new IllegalArgumentException(String.format("Expected json element to be a array type in the JSON string but got `%s`", jsonElement.toString())); + } - JsonArray array = jsonElement.getAsJsonArray(); - // validate array items - for(JsonElement element : array) { - {{#items}} - {{#isNumber}} - if(!jsonElement.getAsJsonPrimitive().isNumber()) { - throw new IllegalArgumentException(String.format("Expected json element to be of type Number in the JSON string but got `%s`", jsonElement.toString())); + JsonArray array = jsonElement.getAsJsonArray(); + // validate array items + for(JsonElement element : array) { + {{#items}} + {{#isNumber}} + if (!jsonElement.getAsJsonPrimitive().isNumber()) { + throw new IllegalArgumentException(String.format("Expected json element to be of type Number in the JSON string but got `%s`", jsonElement.toString())); + } + {{/isNumber}} + {{^isNumber}} + {{#isPrimitiveType}} + if (!element.getAsJsonPrimitive().is{{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}}()) { + throw new IllegalArgumentException(String.format("Expected array items to be of type {{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}} in the JSON string but got `%s`", jsonElement.toString())); + } + {{/isPrimitiveType}} + {{/isNumber}} + {{^isNumber}} + {{^isPrimitiveType}} + {{{dataType}}}.validateJsonElement(element); + {{/isPrimitiveType}} + {{/isNumber}} + {{/items}} } - actualAdapter = adapter{{{dataType}}}; - {{/isNumber}} - {{^isNumber}} - {{#isPrimitiveType}} - if(!element.getAsJsonPrimitive().is{{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}}()) { - throw new IllegalArgumentException(String.format("Expected array items to be of type {{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}} in the JSON string but got `%s`", jsonElement.toString())); - } - {{/isPrimitiveType}} - {{^isPrimitiveType}} - {{{dataType}}}.validateJsonElement(element); - {{/isPrimitiveType}} - {{/isNumber}} - {{/items}} - } - actualAdapter = adapter{{{complexType}}}List; + actualAdapter = adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}}; {{/isArray}} - {{classname}} ret = new {{classname}}(); - ret.setActualInstance(actualAdapter.fromJsonTree(jsonElement)); - return ret; + {{classname}} ret = new {{classname}}(); + ret.setActualInstance(actualAdapter.fromJsonTree(jsonElement)); + return ret; } catch (Exception e) { - // deserialization failed, continue - errorMessages.add(String.format("Deserialization for {{{dataType}}} failed with `%s`.", e.getMessage())); - log.log(Level.FINER, "Input data does not match schema '{{{dataType}}}'", e); + // deserialization failed, continue + errorMessages.add(String.format("Deserialization for {{{dataType}}} failed with `%s`.", e.getMessage())); + log.log(Level.FINER, "Input data does not match schema '{{{dataType}}}'", e); } {{/hasVars}} {{#hasVars}} @@ -182,7 +187,6 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im {{classname}} ret = new {{classname}}(); ret.setActualInstance(actualAdapter.fromJsonTree(jsonElement)); return ret; - log.log(Level.FINER, "Input data matches schema '{{{.}}}'"); } catch (Exception e) { // deserialization failed, continue errorMessages.add(String.format("Deserialization for {{{.}}} failed with `%s`.", e.getMessage())); @@ -250,10 +254,10 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im if (instance instanceof {{#isArray}}List{{/isArray}}{{^isArray}}{{{dataType}}}{{/isArray}}) { {{#isArray}} List list = (List) instance; - if(list.get(0) instanceof {{complexType}}) { - super.setActualInstance(instance); - return; - } + if (list.get(0) instanceof {{{items.dataType}}}) { + super.setActualInstance(instance); + return; + } {{/isArray}} {{^isArray}} super.setActualInstance(instance); @@ -273,6 +277,7 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im * * @return The actual instance ({{#anyOf}}{{{.}}}{{^-last}}, {{/-last}}{{/anyOf}}) */ + @SuppressWarnings("unchecked") @Override public Object getActualInstance() { return super.getActualInstance(); @@ -288,105 +293,108 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im * @return The actual instance of `{{{dataType}}}` * @throws ClassCastException if the instance is not `{{{dataType}}}` */ - public {{{dataType}}} get{{#isArray}}{{complexType}}List{{/isArray}}{{^isArray}}{{{dataType}}}{{/isArray}}() throws ClassCastException { + public {{{dataType}}} get{{#isArray}}{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}}{{/isArray}}{{^isArray}}{{{dataType}}}{{/isArray}}() throws ClassCastException { return ({{{dataType}}})super.getActualInstance(); } {{/vendorExtensions.x-duplicated-data-type}} {{/anyOf}} {{/composedSchemas}} - /** - * Validates the JSON Element and throws an exception if issues found - * - * @param jsonElement JSON Element - * @throws IOException if the JSON Element is invalid with respect to {{classname}} - */ - public static void validateJsonElement(JsonElement jsonElement) throws IOException { - // validate anyOf schemas one by one - ArrayList errorMessages = new ArrayList<>(); - {{#composedSchemas}} - {{#anyOf}} - {{^vendorExtensions.x-duplicated-data-type}} - // validate the json string with {{{dataType}}} - try { - {{^hasVars}} - {{#isNumber}} - if(!jsonElement.getAsJsonPrimitive().isNumber()) { - throw new IllegalArgumentException(String.format("Expected json element to be of type Number in the JSON string but got `%s`", jsonElement.toString())); - } - {{/isNumber}} - {{^isNumber}} - {{#isPrimitiveType}} - if(!jsonElement.getAsJsonPrimitive().is{{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}}()) { - throw new IllegalArgumentException(String.format("Expected json element to be of type {{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}} in the JSON string but got `%s`", jsonElement.toString())); - } - {{/isPrimitiveType}} - {{^isPrimitiveType}} - {{^isArray}} - {{{dataType}}}.validateJsonElement(jsonElement); - {{/isArray}} - {{/isPrimitiveType}} - {{/isNumber}} - {{#isArray}} - if (!jsonElement.isJsonArray()) { - throw new IllegalArgumentException(String.format("Expected json element to be a array type in the JSON string but got `%s`", jsonElement.toString())); - } - JsonArray array = jsonElement.getAsJsonArray(); - // validate array items - for(JsonElement element : array) { - {{#items}} + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to {{classname}} + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + // validate anyOf schemas one by one + ArrayList errorMessages = new ArrayList<>(); + {{#composedSchemas}} + {{#anyOf}} + {{^vendorExtensions.x-duplicated-data-type}} + // validate the json string with {{{dataType}}} + try { + {{^hasVars}} + {{^isArray}} {{#isNumber}} - if(!jsonElement.getAsJsonPrimitive().isNumber()) { - throw new IllegalArgumentException(String.format("Expected json element to be of type Number in the JSON string but got `%s`", jsonElement.toString())); - } + if (!jsonElement.getAsJsonPrimitive().isNumber()) { + throw new IllegalArgumentException(String.format("Expected json element to be of type Number in the JSON string but got `%s`", jsonElement.toString())); + } {{/isNumber}} {{^isNumber}} {{#isPrimitiveType}} - if(!element.getAsJsonPrimitive().is{{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}}()) { - throw new IllegalArgumentException(String.format("Expected array items to be of type {{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}} in the JSON string but got `%s`", jsonElement.toString())); - } + if (!jsonElement.getAsJsonPrimitive().is{{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}}()) { + throw new IllegalArgumentException(String.format("Expected json element to be of type {{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}} in the JSON string but got `%s`", jsonElement.toString())); + } {{/isPrimitiveType}} + {{/isNumber}} + {{^isNumber}} {{^isPrimitiveType}} - {{{dataType}}}.validateJsonElement(element); + {{{dataType}}}.validateJsonElement(jsonElement); {{/isPrimitiveType}} {{/isNumber}} - {{/items}} - } - {{/isArray}} - {{/hasVars}} - {{#hasVars}} - {{{.}}}.validateJsonElement(jsonElement); - return; - {{/hasVars}} - return; - } catch (Exception e) { - errorMessages.add(String.format("Deserialization for {{{dataType}}} failed with `%s`.", e.getMessage())); - // continue to the next one + {{/isArray}} + {{#isArray}} + if (!jsonElement.isJsonArray()) { + throw new IllegalArgumentException(String.format("Expected json element to be a array type in the JSON string but got `%s`", jsonElement.toString())); + } + JsonArray array = jsonElement.getAsJsonArray(); + // validate array items + for(JsonElement element : array) { + {{#items}} + {{#isNumber}} + if (!jsonElement.getAsJsonPrimitive().isNumber()) { + throw new IllegalArgumentException(String.format("Expected json element to be of type Number in the JSON string but got `%s`", jsonElement.toString())); + } + {{/isNumber}} + {{^isNumber}} + {{#isPrimitiveType}} + if (!element.getAsJsonPrimitive().is{{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}}()) { + throw new IllegalArgumentException(String.format("Expected array items to be of type {{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}} in the JSON string but got `%s`", jsonElement.toString())); + } + {{/isPrimitiveType}} + {{/isNumber}} + {{^isNumber}} + {{^isPrimitiveType}} + {{{dataType}}}.validateJsonElement(element); + {{/isPrimitiveType}} + {{/isNumber}} + {{/items}} + } + {{/isArray}} + {{/hasVars}} + {{#hasVars}} + {{{.}}}.validateJsonElement(jsonElement); + return; + {{/hasVars}} + return; + } catch (Exception e) { + errorMessages.add(String.format("Deserialization for {{{dataType}}} failed with `%s`.", e.getMessage())); + // continue to the next one + } + {{/vendorExtensions.x-duplicated-data-type}} + {{/anyOf}} + {{/composedSchemas}} + throw new IOException(String.format("The JSON string is invalid for {{classname}} with anyOf schemas: {{#anyOf}}{{{.}}}{{^-last}}, {{/-last}}{{/anyOf}}. no class match the result, expected at least 1. Detailed failure message for anyOf schemas: %s. JSON: %s", errorMessages, jsonElement.toString())); } - {{/vendorExtensions.x-duplicated-data-type}} - {{/anyOf}} - {{/composedSchemas}} - throw new IOException(String.format("The JSON string is invalid for {{classname}} with anyOf schemas: {{#anyOf}}{{{.}}}{{^-last}}, {{/-last}}{{/anyOf}}. no class match the result, expected at least 1. Detailed failure message for anyOf schemas: %s. JSON: %s", errorMessages, jsonElement.toString())); - - } - /** - * Create an instance of {{classname}} given an JSON string - * - * @param jsonString JSON string - * @return An instance of {{classname}} - * @throws IOException if the JSON string is invalid with respect to {{classname}} - */ - public static {{{classname}}} fromJson(String jsonString) throws IOException { - return JSON.getGson().fromJson(jsonString, {{{classname}}}.class); - } + /** + * Create an instance of {{classname}} given an JSON string + * + * @param jsonString JSON string + * @return An instance of {{classname}} + * @throws IOException if the JSON string is invalid with respect to {{classname}} + */ + public static {{{classname}}} fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, {{{classname}}}.class); + } - /** - * Convert an instance of {{classname}} to an JSON string - * - * @return JSON string - */ - public String toJson() { - return JSON.getGson().toJson(this); - } + /** + * Convert an instance of {{classname}} to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } } diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/auth/AWS4Auth.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/auth/AWS4Auth.mustache index a9ee5ff646c8..24bfb4c1f91a 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/auth/AWS4Auth.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/auth/AWS4Auth.mustache @@ -16,6 +16,7 @@ import java.util.stream.Collectors; import software.amazon.awssdk.auth.credentials.AnonymousCredentialsProvider; import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; +import software.amazon.awssdk.auth.credentials.AwsSessionCredentials; import software.amazon.awssdk.auth.credentials.AwsCredentials; import software.amazon.awssdk.auth.signer.Aws4Signer; import software.amazon.awssdk.auth.signer.params.Aws4SignerParams; @@ -41,6 +42,10 @@ public class AWS4Auth implements Authentication { this.credentials = AwsBasicCredentials.create(accessKey, secretKey); } + public void setCredentials(String accessKey, String secretKey, String sessionToken) { + this.credentials = AwsSessionCredentials.create(accessKey, secretKey, sessionToken); + } + public void setRegion(String region) { this.region = region; } diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/oneof_model.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/oneof_model.mustache index b2ab54955d44..4a34934dce77 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/oneof_model.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/oneof_model.mustache @@ -54,8 +54,8 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im {{/isArray}} {{#isArray}} - final Type typeInstance = new TypeToken>(){}.getType(); - final TypeAdapter<{{{dataType}}}> adapter{{complexType}}List = (TypeAdapter>) gson.getDelegateAdapter(this, TypeToken.get(typeInstance)); + final Type typeInstance = new TypeToken<{{{dataType}}}>(){}.getType(); + final TypeAdapter<{{{dataType}}}> adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}} = (TypeAdapter<{{{dataType}}}>) gson.getDelegateAdapter(this, TypeToken.get(typeInstance)); {{/isArray}} {{/oneOf}} {{/composedSchemas}} @@ -74,23 +74,25 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im // check if the actual instance is of the type `{{{dataType}}}` if (value.getActualInstance() instanceof {{#isArray}}List{{/isArray}}{{^isArray}}{{{dataType}}}{{/isArray}}) { {{#isPrimitiveType}} - JsonPrimitive primitive = adapter{{{dataType}}}.toJsonTree(({{{dataType}}})value.getActualInstance()).getAsJsonPrimitive(); - elementAdapter.write(out, primitive); - return; + JsonPrimitive primitive = adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}}.toJsonTree(({{{dataType}}})value.getActualInstance()).getAsJsonPrimitive(); + elementAdapter.write(out, primitive); + return; {{/isPrimitiveType}} + {{^isPrimitiveType}} {{#isArray}} - List list = (List) value.getActualInstance(); - if(list.get(0) instanceof {{complexType}}) { - JsonArray array = adapter{{{complexType}}}List.toJsonTree(({{{dataType}}})value.getActualInstance()).getAsJsonArray(); - elementAdapter.write(out, array); - return; - } + List list = (List) value.getActualInstance(); + if (list.get(0) instanceof {{{items.dataType}}}) { + JsonArray array = adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}}.toJsonTree(({{{dataType}}})value.getActualInstance()).getAsJsonArray(); + elementAdapter.write(out, array); + return; + } {{/isArray}} + {{/isPrimitiveType}} {{^isArray}} {{^isPrimitiveType}} - JsonElement element = adapter{{{dataType}}}.toJsonTree(({{{dataType}}})value.getActualInstance()); - elementAdapter.write(out, element); - return; + JsonElement element = adapter{{{dataType}}}.toJsonTree(({{{dataType}}})value.getActualInstance()); + elementAdapter.write(out, element); + return; {{/isPrimitiveType}} {{/isArray}} } @@ -139,62 +141,65 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im {{^hasVars}} // deserialize {{{dataType}}} try { - // validate the JSON object to see if any exception is thrown + // validate the JSON object to see if any exception is thrown + {{^isArray}} {{#isNumber}} - if(!jsonElement.getAsJsonPrimitive().isNumber()) { - throw new IllegalArgumentException(String.format("Expected json element to be of type Number in the JSON string but got `%s`", jsonElement.toString())); - } - actualAdapter = adapter{{{dataType}}}; + if (!jsonElement.getAsJsonPrimitive().isNumber()) { + throw new IllegalArgumentException(String.format("Expected json element to be of type Number in the JSON string but got `%s`", jsonElement.toString())); + } + actualAdapter = adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}}; {{/isNumber}} {{^isNumber}} {{#isPrimitiveType}} - if(!jsonElement.getAsJsonPrimitive().is{{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}}()) { - throw new IllegalArgumentException(String.format("Expected json element to be of type {{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}} in the JSON string but got `%s`", jsonElement.toString())); - } - actualAdapter = adapter{{{dataType}}}; + if (!jsonElement.getAsJsonPrimitive().is{{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}}()) { + throw new IllegalArgumentException(String.format("Expected json element to be of type {{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}} in the JSON string but got `%s`", jsonElement.toString())); + } + actualAdapter = adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}}; {{/isPrimitiveType}} + {{/isNumber}} + {{^isNumber}} {{^isPrimitiveType}} - {{^isArray}} - {{{dataType}}}.validateJsonElement(jsonElement); - actualAdapter = adapter{{{dataType}}}; - {{/isArray}} + {{{dataType}}}.validateJsonElement(jsonElement); + actualAdapter = adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}}; {{/isPrimitiveType}} {{/isNumber}} + {{/isArray}} {{#isArray}} - if (!jsonElement.isJsonArray()) { - throw new IllegalArgumentException(String.format("Expected json element to be a array type in the JSON string but got `%s`", jsonElement.toString())); - } + if (!jsonElement.isJsonArray()) { + throw new IllegalArgumentException(String.format("Expected json element to be a array type in the JSON string but got `%s`", jsonElement.toString())); + } - JsonArray array = jsonElement.getAsJsonArray(); - // validate array items - for(JsonElement element : array) { - {{#items}} - {{#isNumber}} - if(!jsonElement.getAsJsonPrimitive().isNumber()) { - throw new IllegalArgumentException(String.format("Expected json element to be of type Number in the JSON string but got `%s`", jsonElement.toString())); + JsonArray array = jsonElement.getAsJsonArray(); + // validate array items + for(JsonElement element : array) { + {{#items}} + {{#isNumber}} + if (!jsonElement.getAsJsonPrimitive().isNumber()) { + throw new IllegalArgumentException(String.format("Expected json element to be of type Number in the JSON string but got `%s`", jsonElement.toString())); + } + {{/isNumber}} + {{^isNumber}} + {{#isPrimitiveType}} + if (!element.getAsJsonPrimitive().is{{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}}()) { + throw new IllegalArgumentException(String.format("Expected array items to be of type {{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}} in the JSON string but got `%s`", jsonElement.toString())); + } + {{/isPrimitiveType}} + {{/isNumber}} + {{^isNumber}} + {{^isPrimitiveType}} + {{{dataType}}}.validateJsonElement(element); + {{/isPrimitiveType}} + {{/isNumber}} + {{/items}} } - actualAdapter = adapter{{{dataType}}}; - {{/isNumber}} - {{^isNumber}} - {{#isPrimitiveType}} - if(!element.getAsJsonPrimitive().is{{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}}()) { - throw new IllegalArgumentException(String.format("Expected array items to be of type {{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}} in the JSON string but got `%s`", jsonElement.toString())); - } - {{/isPrimitiveType}} - {{^isPrimitiveType}} - {{{dataType}}}.validateJsonElement(element); - {{/isPrimitiveType}} - {{/isNumber}} - {{/items}} - } - actualAdapter = adapter{{{complexType}}}List; + actualAdapter = adapter{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}}; {{/isArray}} - match++; - log.log(Level.FINER, "Input data matches schema '{{{dataType}}}'"); + match++; + log.log(Level.FINER, "Input data matches schema '{{{dataType}}}'"); } catch (Exception e) { - // deserialization failed, continue - errorMessages.add(String.format("Deserialization for {{{dataType}}} failed with `%s`.", e.getMessage())); - log.log(Level.FINER, "Input data does not match schema '{{{dataType}}}'", e); + // deserialization failed, continue + errorMessages.add(String.format("Deserialization for {{{dataType}}} failed with `%s`.", e.getMessage())); + log.log(Level.FINER, "Input data does not match schema '{{{dataType}}}'", e); } {{/hasVars}} {{#hasVars}} @@ -278,10 +283,10 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im if (instance instanceof {{#isArray}}List{{/isArray}}{{^isArray}}{{{dataType}}}{{/isArray}}) { {{#isArray}} List list = (List) instance; - if(list.get(0) instanceof {{complexType}}) { - super.setActualInstance(instance); - return; - } + if (list.get(0) instanceof {{{items.dataType}}}) { + super.setActualInstance(instance); + return; + } {{/isArray}} {{^isArray}} super.setActualInstance(instance); @@ -301,6 +306,7 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im * * @return The actual instance ({{#oneOf}}{{{.}}}{{^-last}}, {{/-last}}{{/oneOf}}) */ + @SuppressWarnings("unchecked") @Override public Object getActualInstance() { return super.getActualInstance(); @@ -316,107 +322,111 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im * @return The actual instance of `{{{dataType}}}` * @throws ClassCastException if the instance is not `{{{dataType}}}` */ - public {{{dataType}}} get{{#isArray}}{{complexType}}List{{/isArray}}{{^isArray}}{{{dataType}}}{{/isArray}}() throws ClassCastException { + public {{{dataType}}} get{{#isArray}}{{#sanitizeGeneric}}{{{dataType}}}{{/sanitizeGeneric}}{{/isArray}}{{^isArray}}{{{dataType}}}{{/isArray}}() throws ClassCastException { return ({{{dataType}}})super.getActualInstance(); } {{/vendorExtensions.x-duplicated-data-type}} {{/oneOf}} {{/composedSchemas}} - /** - * Validates the JSON Element and throws an exception if issues found - * - * @param jsonElement JSON Element - * @throws IOException if the JSON Element is invalid with respect to {{classname}} - */ - public static void validateJsonElement(JsonElement jsonElement) throws IOException { - // validate oneOf schemas one by one - int validCount = 0; - ArrayList errorMessages = new ArrayList<>(); - {{#composedSchemas}} - {{#oneOf}} - {{^vendorExtensions.x-duplicated-data-type}} - // validate the json string with {{{dataType}}} - try { - {{^hasVars}} - {{#isNumber}} - if(!jsonElement.getAsJsonPrimitive().isNumber()) { - throw new IllegalArgumentException(String.format("Expected json element to be of type Number in the JSON string but got `%s`", jsonElement.toString())); - } - {{/isNumber}} - {{^isNumber}} - {{#isPrimitiveType}} - if(!jsonElement.getAsJsonPrimitive().is{{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}}()) { - throw new IllegalArgumentException(String.format("Expected json element to be of type {{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}} in the JSON string but got `%s`", jsonElement.toString())); - } - {{/isPrimitiveType}} - {{^isPrimitiveType}} - {{^isArray}} - {{{dataType}}}.validateJsonElement(jsonElement); - {{/isArray}} - {{/isPrimitiveType}} - {{/isNumber}} - {{#isArray}} - if (!jsonElement.isJsonArray()) { - throw new IllegalArgumentException(String.format("Expected json element to be a array type in the JSON string but got `%s`", jsonElement.toString())); - } - JsonArray array = jsonElement.getAsJsonArray(); - // validate array items - for(JsonElement element : array) { - {{#items}} + /** + * Validates the JSON Element and throws an exception if issues found + * + * @param jsonElement JSON Element + * @throws IOException if the JSON Element is invalid with respect to {{classname}} + */ + public static void validateJsonElement(JsonElement jsonElement) throws IOException { + // validate oneOf schemas one by one + int validCount = 0; + ArrayList errorMessages = new ArrayList<>(); + {{#composedSchemas}} + {{#oneOf}} + {{^vendorExtensions.x-duplicated-data-type}} + // validate the json string with {{{dataType}}} + try { + {{^hasVars}} + {{^isArray}} {{#isNumber}} - if(!jsonElement.getAsJsonPrimitive().isNumber()) { - throw new IllegalArgumentException(String.format("Expected json element to be of type Number in the JSON string but got `%s`", jsonElement.toString())); - } + if (!jsonElement.getAsJsonPrimitive().isNumber()) { + throw new IllegalArgumentException(String.format("Expected json element to be of type Number in the JSON string but got `%s`", jsonElement.toString())); + } {{/isNumber}} {{^isNumber}} {{#isPrimitiveType}} - if(!element.getAsJsonPrimitive().is{{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}}()) { - throw new IllegalArgumentException(String.format("Expected array items to be of type {{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}} in the JSON string but got `%s`", jsonElement.toString())); - } + if (!jsonElement.getAsJsonPrimitive().is{{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}}()) { + throw new IllegalArgumentException(String.format("Expected json element to be of type {{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}} in the JSON string but got `%s`", jsonElement.toString())); + } {{/isPrimitiveType}} + {{/isNumber}} + {{^isNumber}} {{^isPrimitiveType}} - {{{dataType}}}.validateJsonElement(element); + {{{dataType}}}.validateJsonElement(jsonElement); {{/isPrimitiveType}} {{/isNumber}} - {{/items}} - } - {{/isArray}} - {{/hasVars}} - {{#hasVars}} - {{{.}}}.validateJsonElement(jsonElement); - validCount++; - {{/hasVars}} - validCount++; - } catch (Exception e) { - errorMessages.add(String.format("Deserialization for {{{dataType}}} failed with `%s`.", e.getMessage())); - // continue to the next one - } - {{/vendorExtensions.x-duplicated-data-type}} - {{/oneOf}} - {{/composedSchemas}} - if (validCount != 1) { - throw new IOException(String.format("The JSON string is invalid for {{classname}} with oneOf schemas: {{#oneOf}}{{{.}}}{{^-last}}, {{/-last}}{{/oneOf}}. %d class(es) match the result, expected 1. Detailed failure message for oneOf schemas: %s. JSON: %s", validCount, errorMessages, jsonElement.toString())); + {{/isArray}} + {{#isArray}} + if (!jsonElement.isJsonArray()) { + throw new IllegalArgumentException(String.format("Expected json element to be a array type in the JSON string but got `%s`", jsonElement.toString())); + } + JsonArray array = jsonElement.getAsJsonArray(); + // validate array items + for(JsonElement element : array) { + {{#items}} + {{#isNumber}} + if (!jsonElement.getAsJsonPrimitive().isNumber()) { + throw new IllegalArgumentException(String.format("Expected json element to be of type Number in the JSON string but got `%s`", jsonElement.toString())); + } + {{/isNumber}} + {{^isNumber}} + {{#isPrimitiveType}} + if (!element.getAsJsonPrimitive().is{{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}}()) { + throw new IllegalArgumentException(String.format("Expected array items to be of type {{#isBoolean}}Boolean{{/isBoolean}}{{#isString}}String{{/isString}}{{^isString}}{{^isBoolean}}Number{{/isBoolean}}{{/isString}} in the JSON string but got `%s`", jsonElement.toString())); + } + {{/isPrimitiveType}} + {{/isNumber}} + {{^isNumber}} + {{^isPrimitiveType}} + {{{dataType}}}.validateJsonElement(element); + {{/isPrimitiveType}} + {{/isNumber}} + {{/items}} + } + {{/isArray}} + {{/hasVars}} + {{#hasVars}} + {{{.}}}.validateJsonElement(jsonElement); + validCount++; + {{/hasVars}} + validCount++; + } catch (Exception e) { + errorMessages.add(String.format("Deserialization for {{{dataType}}} failed with `%s`.", e.getMessage())); + // continue to the next one + } + {{/vendorExtensions.x-duplicated-data-type}} + {{/oneOf}} + {{/composedSchemas}} + if (validCount != 1) { + throw new IOException(String.format("The JSON string is invalid for {{classname}} with oneOf schemas: {{#oneOf}}{{{.}}}{{^-last}}, {{/-last}}{{/oneOf}}. %d class(es) match the result, expected 1. Detailed failure message for oneOf schemas: %s. JSON: %s", validCount, errorMessages, jsonElement.toString())); + } } - } - /** - * Create an instance of {{classname}} given an JSON string - * - * @param jsonString JSON string - * @return An instance of {{classname}} - * @throws IOException if the JSON string is invalid with respect to {{classname}} - */ - public static {{{classname}}} fromJson(String jsonString) throws IOException { - return JSON.getGson().fromJson(jsonString, {{{classname}}}.class); - } + /** + * Create an instance of {{classname}} given an JSON string + * + * @param jsonString JSON string + * @return An instance of {{classname}} + * @throws IOException if the JSON string is invalid with respect to {{classname}} + */ + public static {{{classname}}} fromJson(String jsonString) throws IOException { + return JSON.getGson().fromJson(jsonString, {{{classname}}}.class); + } - /** - * Convert an instance of {{classname}} to an JSON string - * - * @return JSON string - */ - public String toJson() { - return JSON.getGson().toJson(this); - } + /** + * Convert an instance of {{classname}} to an JSON string + * + * @return JSON string + */ + public String toJson() { + return JSON.getGson().toJson(this); + } } diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/beanValidation.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/beanValidation.mustache index 6bed33003cbd..e427a43a0acd 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/beanValidation.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/beanValidation.mustache @@ -1,2 +1 @@ -{{#required}}{{^isReadOnly}} @NotNull -{{/isReadOnly}}{{/required}}{{>beanValidationCore}} \ No newline at end of file +{{#required}}{{^isReadOnly}}@NotNull {{/isReadOnly}}{{/required}}{{#isContainer}}{{^isPrimitiveType}}{{^isEnum}}@Valid {{/isEnum}}{{/isPrimitiveType}}{{/isContainer}}{{^isContainer}}{{^isPrimitiveType}}@Valid {{/isPrimitiveType}}{{/isContainer}}{{>beanValidationCore}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/api.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/api.mustache index d45774cacc21..8f40dc3a9e7f 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/api.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/api.mustache @@ -15,8 +15,13 @@ import io.swagger.annotations.*; {{/useSwaggerAnnotations}} {{#supportAsync}} +{{#useMutiny}} +import io.smallrye.mutiny.Uni; +{{/useMutiny}} +{{^useMutiny}} import java.util.concurrent.CompletionStage; import java.util.concurrent.CompletableFuture; +{{/useMutiny}} {{/supportAsync}} import java.io.InputStream; diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/apiMethod.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/apiMethod.mustache index 96c81be32634..5bd7a3e4e607 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/apiMethod.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/apiMethod.mustache @@ -40,6 +40,6 @@ {{^vendorExtensions.x-java-is-response-void}}@org.eclipse.microprofile.openapi.annotations.media.Content(schema = @org.eclipse.microprofile.openapi.annotations.media.Schema(implementation = {{{baseType}}}.class{{#vendorExtensions.x-microprofile-open-api-return-schema-container}}, type = {{{.}}} {{/vendorExtensions.x-microprofile-open-api-return-schema-container}}{{#vendorExtensions.x-microprofile-open-api-return-unique-items}}, uniqueItems = true {{/vendorExtensions.x-microprofile-open-api-return-unique-items}})){{/vendorExtensions.x-java-is-response-void}} }){{^-last}},{{/-last}}{{/responses}} }){{/hasProduces}}{{/useMicroProfileOpenAPIAnnotations}} - public {{#supportAsync}}CompletionStage<{{/supportAsync}}Response{{#supportAsync}}>{{/supportAsync}} {{nickname}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>cookieParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{^-last}},{{/-last}}{{/allParams}}) { - return {{#supportAsync}}CompletableFuture.supplyAsync(() -> {{/supportAsync}}Response.ok().entity("magic!").build(){{#supportAsync}}){{/supportAsync}}; + public {{#supportAsync}}{{#useMutiny}}Uni{{/useMutiny}}{{^useMutiny}}CompletionStage{{/useMutiny}}<{{/supportAsync}}Response{{#supportAsync}}>{{/supportAsync}} {{nickname}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>cookieParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{^-last}},{{/-last}}{{/allParams}}) { + return {{#supportAsync}}{{#useMutiny}}Uni.createFrom().item({{/useMutiny}}{{^useMutiny}}CompletableFuture.supplyAsync(() -> {{/useMutiny}}{{/supportAsync}}Response.ok().entity("magic!").build(){{#supportAsync}}){{/supportAsync}}; } \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/pom.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/pom.mustache index d8fffd4846f9..ef91cc3dfb27 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/pom.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/pom.mustache @@ -44,6 +44,9 @@ {{#useSwaggerAnnotations}} 1.6.10 {{/useSwaggerAnnotations}} +{{#useMutiny}} + 1.2.1 +{{/useMutiny}} @@ -109,6 +112,14 @@ provided {{/useSwaggerAnnotations}} +{{#useMutiny}} + + io.smallrye + smallrye-rest-client + ${smallrye.rest.client.version} + test + +{{/useMutiny}} diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/returnAsyncTypeInterface.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/returnAsyncTypeInterface.mustache new file mode 100644 index 000000000000..93f1098e48da --- /dev/null +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/returnAsyncTypeInterface.mustache @@ -0,0 +1 @@ +{{#useMutiny}}Uni{{/useMutiny}}{{^useMutiny}}CompletionStage{{/useMutiny}}<{{#returnResponse}}Response{{/returnResponse}}{{^returnResponse}}{{#returnContainer}}{{#isMap}}Map{{/isMap}}{{#isArray}}{{{returnContainer}}}<{{{returnBaseType}}}>{{/isArray}}{{/returnContainer}}{{^returnContainer}}{{{returnBaseType}}}{{/returnContainer}}{{/returnResponse}}> \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/pojo.mustache index c7b55b1afa91..5bcfd364feef 100644 --- a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/pojo.mustache @@ -32,7 +32,7 @@ public class {{classname}} {{#parent}}extends {{{.}}}{{/parent}} {{#vendorExtens {{#vendorExtensions.x-field-extra-annotation}} {{{vendorExtensions.x-field-extra-annotation}}} {{/vendorExtensions.x-field-extra-annotation}} - private {{#useBeanValidation}}@Valid {{/useBeanValidation}}{{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}}; + private {{#isContainer}}{{#useBeanValidation}}@Valid {{/useBeanValidation}}{{/isContainer}}{{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}}; {{/vars}} {{#generateBuilders}} {{^additionalProperties}} @@ -72,7 +72,7 @@ public class {{classname}} {{#parent}}extends {{{.}}}{{/parent}} {{#vendorExtens @ApiModelProperty({{#example}}example = "{{{.}}}", {{/example}}{{#required}}required = {{required}}, {{/required}}value = "{{{description}}}"){{/useSwaggerAnnotations}}{{#useMicroProfileOpenAPIAnnotations}} @org.eclipse.microprofile.openapi.annotations.media.Schema({{#example}}example = "{{{.}}}", {{/example}}{{#required}}required = {{required}}, {{/required}}description = "{{{description}}}"){{/useMicroProfileOpenAPIAnnotations}} @JsonProperty("{{baseName}}") -{{#useBeanValidation}}{{>beanValidation}}{{/useBeanValidation}} public {{>beanValidatedType}} {{getter}}() { + {{#useBeanValidation}}{{>beanValidation}}{{/useBeanValidation}}public {{>beanValidatedType}} {{getter}}() { return {{name}}; } diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/api.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/api.mustache index d31c02dddb22..d6609ff960c0 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/api.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/api.mustache @@ -260,7 +260,7 @@ public interface {{classname}} { } // Override this method - {{#jdk8-default-interface}}default {{/jdk8-default-interface}} {{>responseType}} {{operationId}}({{#allParams}}{{^isFile}}{{^isBodyParam}}{{>optionalDataType}}{{/isBodyParam}}{{#isBodyParam}}{{^reactive}}{{{dataType}}}{{/reactive}}{{#reactive}}{{^isArray}}Mono<{{{dataType}}}>{{/isArray}}{{#isArray}}Flux<{{{baseType}}}>{{/isArray}}{{/reactive}}{{/isBodyParam}}{{/isFile}}{{#isFile}}{{#reactive}}Flux{{/reactive}}{{^reactive}}MultipartFile{{/reactive}}{{/isFile}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}{{#reactive}}{{#hasParams}}, {{/hasParams}}{{#springFoxDocumentationProvider}}@ApiIgnore{{/springFoxDocumentationProvider}} final ServerWebExchange exchange{{/reactive}}{{#vendorExtensions.x-spring-paginated}}{{#hasParams}}, {{/hasParams}}{{^hasParams}}{{#reactive}}, {{/reactive}}{{/hasParams}}{{#springFoxDocumentationProvider}}@ApiIgnore{{/springFoxDocumentationProvider}}final Pageable pageable{{/vendorExtensions.x-spring-paginated}}){{#unhandledException}} throws Exception{{/unhandledException}} { + {{#jdk8-default-interface}}default {{/jdk8-default-interface}} {{>responseType}} {{operationId}}({{#allParams}}{{^isFile}}{{^isBodyParam}}{{>optionalDataType}}{{/isBodyParam}}{{#isBodyParam}}{{^reactive}}{{>optionalDataType}}{{/reactive}}{{#reactive}}{{^isArray}}Mono<{{{dataType}}}>{{/isArray}}{{#isArray}}Flux<{{{baseType}}}>{{/isArray}}{{/reactive}}{{/isBodyParam}}{{/isFile}}{{#isFile}}{{#reactive}}Flux{{/reactive}}{{^reactive}}MultipartFile{{/reactive}}{{/isFile}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}{{#reactive}}{{#hasParams}}, {{/hasParams}}{{#springFoxDocumentationProvider}}@ApiIgnore{{/springFoxDocumentationProvider}} final ServerWebExchange exchange{{/reactive}}{{#vendorExtensions.x-spring-paginated}}{{#hasParams}}, {{/hasParams}}{{^hasParams}}{{#reactive}}, {{/reactive}}{{/hasParams}}{{#springFoxDocumentationProvider}}@ApiIgnore{{/springFoxDocumentationProvider}}final Pageable pageable{{/vendorExtensions.x-spring-paginated}}){{#unhandledException}} throws Exception{{/unhandledException}} { {{/delegate-method}} {{^isDelegate}} {{>methodBody}} diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/apiDelegate.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/apiDelegate.mustache index 31e69a208f3a..5b10c93fa73c 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/apiDelegate.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/apiDelegate.mustache @@ -66,7 +66,7 @@ public interface {{classname}}Delegate { {{#isDeprecated}} @Deprecated {{/isDeprecated}} - {{#jdk8-default-interface}}default {{/jdk8-default-interface}}{{>responseType}} {{operationId}}({{#allParams}}{{^isFile}}{{^isBodyParam}}{{>optionalDataType}}{{/isBodyParam}}{{#isBodyParam}}{{^reactive}}{{{dataType}}}{{/reactive}}{{#reactive}}{{^isArray}}Mono<{{{dataType}}}>{{/isArray}}{{#isArray}}Flux<{{{baseType}}}>{{/isArray}}{{/reactive}}{{/isBodyParam}}{{/isFile}}{{#isFile}}{{#isArray}}List<{{/isArray}}{{#reactive}}Flux{{/reactive}}{{^reactive}}MultipartFile{{/reactive}}{{#isArray}}>{{/isArray}}{{/isFile}} {{paramName}}{{^-last}}, + {{#jdk8-default-interface}}default {{/jdk8-default-interface}}{{>responseType}} {{operationId}}({{#allParams}}{{^isFile}}{{^isBodyParam}}{{>optionalDataType}}{{/isBodyParam}}{{#isBodyParam}}{{^reactive}}{{>optionalDataType}}{{/reactive}}{{#reactive}}{{^isArray}}Mono<{{{dataType}}}>{{/isArray}}{{#isArray}}Flux<{{{baseType}}}>{{/isArray}}{{/reactive}}{{/isBodyParam}}{{/isFile}}{{#isFile}}{{#isArray}}List<{{/isArray}}{{#reactive}}Flux{{/reactive}}{{^reactive}}MultipartFile{{/reactive}}{{#isArray}}>{{/isArray}}{{/isFile}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}{{#reactive}}{{#hasParams}}, {{/hasParams}}ServerWebExchange exchange{{/reactive}}{{#vendorExtensions.x-spring-paginated}}{{#hasParams}}, {{/hasParams}}{{^hasParams}}{{#reactive}}, {{/reactive}}{{/hasParams}}final Pageable pageable{{/vendorExtensions.x-spring-paginated}}){{#unhandledException}} throws Exception{{/unhandledException}}{{^jdk8-default-interface}};{{/jdk8-default-interface}}{{#jdk8-default-interface}} { {{>methodBody}} 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 11c50f7c1703..3521954fc48b 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 @@ -91,6 +91,7 @@ org.openapitools.codegen.languages.OpenAPIYamlGenerator org.openapitools.codegen.languages.PlantumlDocumentationCodegen org.openapitools.codegen.languages.PerlClientCodegen org.openapitools.codegen.languages.PhpClientCodegen +org.openapitools.codegen.languages.PhpFlightServerCodegen org.openapitools.codegen.languages.PhpNextgenClientCodegen org.openapitools.codegen.languages.PhpLaravelServerCodegen org.openapitools.codegen.languages.PhpLumenServerCodegen @@ -115,6 +116,7 @@ org.openapitools.codegen.languages.RustClientCodegen org.openapitools.codegen.languages.RustServerCodegen org.openapitools.codegen.languages.ScalatraServerCodegen org.openapitools.codegen.languages.ScalaAkkaClientCodegen +org.openapitools.codegen.languages.ScalaCaskServerCodegen org.openapitools.codegen.languages.ScalaPekkoClientCodegen org.openapitools.codegen.languages.ScalaAkkaHttpServerCodegen org.openapitools.codegen.languages.ScalaFinchServerCodegen diff --git a/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/anytype-header.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/anytype-header.mustache new file mode 100644 index 000000000000..16206ff3bcc4 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/anytype-header.mustache @@ -0,0 +1,46 @@ +{{>licenseInfo}} +/* + * AnyType.h + * + * This is the implementation of an any JSON type. + */ + +#ifndef {{modelHeaderGuardPrefix}}_AnyType_H_ +#define {{modelHeaderGuardPrefix}}_AnyType_H_ + +{{{defaultInclude}}} +#include "{{packageName}}/Object.h" + +#include +#include + +{{#modelNamespaceDeclarations}} +namespace {{this}} { +{{/modelNamespaceDeclarations}} + +class {{declspec}} AnyType : public Object { +public: + AnyType(); + virtual ~AnyType(); + + ///////////////////////////////////////////// + /// ModelBase overrides + void validate() override; + + web::json::value toJson() const override; + bool fromJson(const web::json::value &json) override; + + void toMultipart(std::shared_ptr multipart, + const utility::string_t &namePrefix) const override; + bool fromMultiPart(std::shared_ptr multipart, + const utility::string_t &namePrefix) override; + +private: + web::json::value m_value; +}; + +{{#modelNamespaceDeclarations}} +} +{{/modelNamespaceDeclarations}} + +#endif /* {{modelHeaderGuardPrefix}}_AnyType_H_ */ diff --git a/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/anytype-source.mustache b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/anytype-source.mustache new file mode 100644 index 000000000000..8f9421ab3fe3 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/anytype-source.mustache @@ -0,0 +1,40 @@ +{{>licenseInfo}} +#include "{{packageName}}/AnyType.h" + +{{#modelNamespaceDeclarations}} +namespace {{this}} { +{{/modelNamespaceDeclarations}} + +AnyType::AnyType() { m_value = web::json::value::null(); } + +AnyType::~AnyType() {} + +void AnyType::validate() {} + +web::json::value AnyType::toJson() const { return m_value; } + +bool AnyType::fromJson(const web::json::value &val) { + m_value = val; + m_IsSet = true; + return isSet(); +} + +void AnyType::toMultipart(std::shared_ptr multipart, + const utility::string_t &prefix) const { + if (m_value.is_object()) { + return Object::toMultipart(multipart, prefix); + } + throw std::runtime_error("AnyType::toMultipart: unsupported type"); +} + +bool AnyType::fromMultiPart(std::shared_ptr multipart, + const utility::string_t &prefix) { + if (m_value.is_object()) { + return Object::fromMultiPart(multipart, prefix); + } + return false; +} + +{{#modelNamespaceDeclarations}} +} +{{/modelNamespaceDeclarations}} diff --git a/modules/openapi-generator/src/main/resources/csharp/HttpSigningConfiguration.mustache b/modules/openapi-generator/src/main/resources/csharp/HttpSigningConfiguration.mustache index 33791a908579..9566e1f1aed5 100644 --- a/modules/openapi-generator/src/main/resources/csharp/HttpSigningConfiguration.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/HttpSigningConfiguration.mustache @@ -82,7 +82,7 @@ namespace {{packageName}}.Client /// Path /// Request options /// Http signed headers - internal Dictionary GetHttpSignedHeader(string basePath,string method, string path, RequestOptions requestOptions) + public Dictionary GetHttpSignedHeader(string basePath,string method, string path, RequestOptions requestOptions) { const string HEADER_REQUEST_TARGET = "(request-target)"; //The time when the HTTP signature expires. The API server should reject HTTP requests diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ClientUtils.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ClientUtils.mustache index 9eea09d438e7..ae83297b1d50 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ClientUtils.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/ClientUtils.mustache @@ -158,7 +158,7 @@ using System.Runtime.CompilerServices; /// The parameter (header, path, query, form). /// The DateTime serialization format. /// Formatted string. - public static string{{nrt?}} ParameterToString(object obj, string{{nrt?}} format = ISO8601_DATETIME_FORMAT) + public static string{{nrt?}} ParameterToString(object{{nrt?}} obj, string{{nrt?}} format = ISO8601_DATETIME_FORMAT) { if (obj is DateTime dateTime) // Return a formatted date string - Can be customized with Configuration.DateTimeFormat diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/JsonConverter.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/JsonConverter.mustache index d8707d906a43..067a6f9b64ca 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/JsonConverter.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/JsonConverter.mustache @@ -105,7 +105,7 @@ { {{#oneOf}} Utf8JsonReader utf8JsonReader{{name}} = utf8JsonReader; - OpenAPIClientUtils.TryDeserialize<{{{datatypeWithEnum}}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}}>(ref utf8JsonReader{{name}}, jsonSerializerOptions, out {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}); + ClientUtils.TryDeserialize<{{{datatypeWithEnum}}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}}>(ref utf8JsonReader{{name}}, jsonSerializerOptions, out {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}); {{^-last}} {{/-last}} @@ -134,7 +134,7 @@ { {{#anyOf}} Utf8JsonReader utf8JsonReader{{name}} = utf8JsonReader; - OpenAPIClientUtils.TryDeserialize<{{{datatypeWithEnum}}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}}>(ref utf8JsonReader{{name}}, jsonSerializerOptions, out {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}); + ClientUtils.TryDeserialize<{{{datatypeWithEnum}}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}}>(ref utf8JsonReader{{name}}, jsonSerializerOptions, out {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}); {{^-last}} {{/-last}} @@ -300,14 +300,14 @@ {{/-last}} {{/required}} - return new {{classname}}({{#lambda.joinWithComma}}{{#model.composedSchemas.anyOf}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}ParsedValue{{#required}}.Value{{^isNullable}}{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{nrt!}}{{/vendorExtensions.x-is-value-type}}{{/isNullable}}{{/required}} {{/model.composedSchemas.anyOf}}{{#allVars}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#required}}.Value{{nrt!}}{{^isNullable}}{{#vendorExtensions.x-is-value-type}}.Value{{nrt!}}{{/vendorExtensions.x-is-value-type}}{{/isNullable}}{{/required}} {{/allVars}}{{/lambda.joinWithComma}}); + return new {{classname}}({{#lambda.joinWithComma}}{{#model.composedSchemas.anyOf}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}ParsedValue{{#required}}.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{nrt!}}{{/vendorExtensions.x-is-value-type}}{{/required}} {{/model.composedSchemas.anyOf}}{{#allVars}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#required}}.Value{{nrt!}}{{^isNullable}}{{#vendorExtensions.x-is-value-type}}.Value{{nrt!}}{{/vendorExtensions.x-is-value-type}}{{/isNullable}}{{/required}} {{/allVars}}{{/lambda.joinWithComma}}); {{/composedSchemas.oneOf}} {{^model.discriminator}} {{#composedSchemas}} {{#oneOf}} {{^vendorExtensions.x-duplicated-data-type}} if ({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} != null) - return new {{classname}}({{#lambda.joinWithComma}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#vendorExtensions.x-is-value-type}}{{^isNullable}}.Value{{/isNullable}}{{/vendorExtensions.x-is-value-type}} {{#model.composedSchemas.anyOf}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#vendorExtensions.x-is-value-type}}{{^isNullable}}.Value{{/isNullable}}{{/vendorExtensions.x-is-value-type}} {{/model.composedSchemas.anyOf}}{{#allVars}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#required}}ParsedValue{{/required}} {{/allVars}}{{/lambda.joinWithComma}}); + return new {{classname}}({{#lambda.joinWithComma}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#vendorExtensions.x-is-value-type}}.Value{{/vendorExtensions.x-is-value-type}} {{#model.composedSchemas.anyOf}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#vendorExtensions.x-is-value-type}}{{^isNullable}}.Value{{/isNullable}}{{/vendorExtensions.x-is-value-type}} {{/model.composedSchemas.anyOf}}{{#allVars}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#required}}ParsedValue{{/required}} {{/allVars}}{{/lambda.joinWithComma}}); {{/vendorExtensions.x-duplicated-data-type}} {{#-last}} diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/api.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/api.mustache index cdb97b18b821..ac482b8d2742 100644 --- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/api.mustache +++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/api.mustache @@ -423,9 +423,7 @@ namespace {{packageName}}.{{apiPackage}} {{#-first}} {{/-first}} - {{/required}} - {{#required}} - parseQueryStringLocalVar["{{baseName}}"] = {{paramName}}{{#isNullable}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}}{{/isNullable}}.ToString(); + parseQueryStringLocalVar["{{baseName}}"] = ClientUtils.ParameterToString({{paramName}}); {{/required}} {{/queryParams}} @@ -438,7 +436,8 @@ namespace {{packageName}}.{{apiPackage}} {{#queryParams}} {{^required}} if ({{paramName}}.IsSet) - parseQueryStringLocalVar["{{baseName}}"] = {{paramName}}.Value{{#isNullable}}{{nrt?}}{{^nrt}}{{#vendorExtensions.x-is-value-type}}?{{/vendorExtensions.x-is-value-type}}{{/nrt}}{{/isNullable}}.ToString(); + // here too + parseQueryStringLocalVar["{{baseName}}"] = ClientUtils.ParameterToString({{paramName}}.Value); {{/required}} {{#-last}} diff --git a/modules/openapi-generator/src/main/resources/go-gin-server/go.mod.mustache b/modules/openapi-generator/src/main/resources/go-gin-server/go.mod.mustache index 1b225bbafefa..640f93d74485 100644 --- a/modules/openapi-generator/src/main/resources/go-gin-server/go.mod.mustache +++ b/modules/openapi-generator/src/main/resources/go-gin-server/go.mod.mustache @@ -24,7 +24,7 @@ require ( github.com/ugorji/go/codec v1.2.11 // indirect golang.org/x/arch v0.3.0 // indirect golang.org/x/crypto v0.9.0 // indirect - golang.org/x/net v0.10.0 // indirect + golang.org/x/net v0.23.0 // indirect golang.org/x/sys v0.8.0 // indirect golang.org/x/text v0.9.0 // indirect google.golang.org/protobuf v1.33.0 // indirect diff --git a/modules/openapi-generator/src/main/resources/go-server/partial_header.mustache b/modules/openapi-generator/src/main/resources/go-server/partial_header.mustache index 07920e304137..7dbaef28be2d 100644 --- a/modules/openapi-generator/src/main/resources/go-server/partial_header.mustache +++ b/modules/openapi-generator/src/main/resources/go-server/partial_header.mustache @@ -1,3 +1,5 @@ +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + /* {{#appName}} * {{{.}}} @@ -13,5 +15,4 @@ {{#infoEmail}} * Contact: {{{.}}} {{/infoEmail}} - * Generated by: OpenAPI Generator (https://openapi-generator.tech) */ diff --git a/modules/openapi-generator/src/main/resources/go/model_simple.mustache b/modules/openapi-generator/src/main/resources/go/model_simple.mustache index f5a6b6c53ef4..cf9ecac947f5 100644 --- a/modules/openapi-generator/src/main/resources/go/model_simple.mustache +++ b/modules/openapi-generator/src/main/resources/go/model_simple.mustache @@ -3,16 +3,14 @@ var _ MappedNullable = &{{classname}}{} // {{classname}} {{{description}}}{{^description}}struct for {{{classname}}}{{/description}} type {{classname}} struct { -{{#parent}} -{{^isMap}} +{{#parentModel.name}} {{^isArray}} - {{{parent}}} + {{{parentModel.name}}} {{/isArray}} -{{/isMap}} {{#isArray}} - Items {{{parent}}} + Items {{{parentModel.name}}} {{/isArray}} -{{/parent}} +{{/parentModel.name}} {{#vars}} {{^-first}} {{/-first}} @@ -339,6 +337,7 @@ func (o {{classname}}) ToMap() (map[string]interface{}, error) { return toSerialize, nil } +{{#vendorExtensions.x-go-generate-unmarshal-json}} {{#isAdditionalPropertiesTrue}} func (o *{{{classname}}}) UnmarshalJSON(data []byte) (err error) { {{/isAdditionalPropertiesTrue}} @@ -516,4 +515,5 @@ func (o *{{{classname}}}) UnmarshalJSON(data []byte) (err error) { } {{/isArray}} +{{/vendorExtensions.x-go-generate-unmarshal-json}} {{>nullable_model}} diff --git a/modules/openapi-generator/src/main/resources/htmlDocs2/index.mustache b/modules/openapi-generator/src/main/resources/htmlDocs2/index.mustache index 65c210b79292..2865781b099c 100644 --- a/modules/openapi-generator/src/main/resources/htmlDocs2/index.mustache +++ b/modules/openapi-generator/src/main/resources/htmlDocs2/index.mustache @@ -445,48 +445,49 @@

                                                  - {{#schema}} -
                                                  -
                                                  - -
                                                  - + var view = new JSONSchemaView(schema, 3); + $('#responses-{{baseName}}-{{nickname}}-{{code}}-schema-data').val(JSON.stringify(schema)); + var result = $('#responses-{{baseName}}-{{nickname}}-schema-{{code}}'); + result.empty(); + result.append(view.render()); + }); +
                                                  - {{#examples}} -
                                                  -
                                                  {{example}}
                                                  -
                                                  - {{/examples}} - {{/schema}} + +
                                                  + {{#examples}} +
                                                  +
                                                  {{example}}
                                                  +
                                                  + {{/examples}} {{#hasHeaders}}
                                                  diff --git a/modules/openapi-generator/src/main/resources/java-undertow-server/pom.mustache b/modules/openapi-generator/src/main/resources/java-undertow-server/pom.mustache index c0cfd07749b1..77db3bd6efa0 100644 --- a/modules/openapi-generator/src/main/resources/java-undertow-server/pom.mustache +++ b/modules/openapi-generator/src/main/resources/java-undertow-server/pom.mustache @@ -29,7 +29,7 @@ 1.4.134.13.22.1.0-beta.124 - 2.3.5.Final + 2.3.12.Final2.2.04.5.134.1.2 diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/api.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/api.mustache index 8576bee5b430..d99122333d66 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/api.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/api.mustache @@ -59,10 +59,10 @@ import kotlinx.serialization.* {{/imports}} {{#operations}} -{{#x-koltin-import-models}} -import {{{packageName}}}.models.* +{{#x-kotlin-import-models}} +import {{{modelPackage}}}.* -{{/x-koltin-import-models}} +{{/x-kotlin-import-models}} {{#x-kotlin-multipart-import}} {{^isMultipart}} import okhttp3.MultipartBody diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache index 0badd27d0c18..249f8edbb632 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/multiplatform/api.mustache @@ -99,13 +99,13 @@ import kotlinx.serialization.encoding.* {{/hasBodyParam}} val localVariableQuery = mutableMapOf>(){{#queryParams}} - {{{paramName}}}?.apply { localVariableQuery["{{baseName}}"] = {{#isContainer}}toMultiValue(this, "{{collectionFormat}}"){{/isContainer}}{{^isContainer}}listOf("${{{paramName}}}"){{/isContainer}} }{{/queryParams}} + {{{paramName}}}?.apply { localVariableQuery["{{baseName}}"] = {{#isContainer}}toMultiValue(this, "{{collectionFormat}}"){{/isContainer}}{{^isContainer}}listOf({{^isEnum}}"${{{paramName}}}"{{/isEnum}}{{#isEnum}}"${ {{paramName}}.value }"{{/isEnum}}){{/isContainer}} }{{/queryParams}} val localVariableHeaders = mutableMapOf(){{#headerParams}} {{{paramName}}}?.apply { localVariableHeaders["{{baseName}}"] = {{#isContainer}}this.joinToString(separator = collectionDelimiter("{{collectionFormat}}")){{/isContainer}}{{^isContainer}}this.toString(){{/isContainer}} }{{/headerParams}} val localVariableConfig = RequestConfig( RequestMethod.{{httpMethod}}, - "{{path}}"{{#pathParams}}.replace("{" + "{{baseName}}" + "}", {{#isContainer}}{{paramName}}.joinToString(","){{/isContainer}}{{^isContainer}}"${{{paramName}}}"{{/isContainer}}){{/pathParams}}, + "{{path}}"{{#pathParams}}.replace("{" + "{{baseName}}" + "}", {{#isContainer}}{{paramName}}.joinToString(","){{/isContainer}}{{^isContainer}}{{^isEnum}}"${{{paramName}}}"{{/isEnum}}{{#isEnum}}"${ {{paramName}}.value }"{{/isEnum}}{{/isContainer}}){{/pathParams}}, query = localVariableQuery, headers = localVariableHeaders, requiresAuthentication = {{#hasAuthMethods}}true{{/hasAuthMethods}}{{^hasAuthMethods}}false{{/hasAuthMethods}}, diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/apiDelegate.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/apiDelegate.mustache index 3b2955ac1687..b1203ff381b4 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/apiDelegate.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/apiDelegate.mustache @@ -30,7 +30,7 @@ interface {{classname}}Delegate { /** * @see {{classname}}#{{operationId}} */ - {{#reactive}}{{^isArray}}suspend {{/isArray}}{{/reactive}}fun {{operationId}}({{#allParams}}{{paramName}}: {{^isFile}}{{^reactive}}{{>optionalDataType}}{{/reactive}}{{#reactive}}{{^isArray}}{{>optionalDataType}}{{/isArray}}{{#isArray}}{{#isBodyParam}}Flow<{{{baseType}}}>{{/isBodyParam}}{{^isBodyParam}}{{>optionalDataType}}{{/isBodyParam}}{{/isArray}}{{/reactive}}{{/isFile}}{{#isFile}}Resource?{{/isFile}}{{^-last}}, + {{#reactive}}{{^isArray}}suspend {{/isArray}}{{/reactive}}fun {{operationId}}({{#allParams}}{{{paramName}}}: {{^isFile}}{{^reactive}}{{>optionalDataType}}{{/reactive}}{{#reactive}}{{^isArray}}{{>optionalDataType}}{{/isArray}}{{#isArray}}{{#isBodyParam}}Flow<{{{baseType}}}>{{/isBodyParam}}{{^isBodyParam}}{{>optionalDataType}}{{/isBodyParam}}{{/isArray}}{{/reactive}}{{/isFile}}{{#isFile}}Resource?{{/isFile}}{{^-last}}, {{/-last}}{{/allParams}}): {{#responseWrapper}}{{.}}<{{/responseWrapper}}ResponseEntity<{{>returnTypes}}>{{#responseWrapper}}>{{/responseWrapper}} { {{>methodBody}} } diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/apiInterface.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/apiInterface.mustache index 39434479d1b7..ce47ed8fdbef 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/apiInterface.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/apiInterface.mustache @@ -107,7 +107,7 @@ interface {{classname}} { return {{>returnValue}} {{/isDelegate}} {{#isDelegate}} - return getDelegate().{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) + return getDelegate().{{operationId}}({{#allParams}}{{{paramName}}}{{^-last}}, {{/-last}}{{/allParams}}) {{/isDelegate}} }{{/skipDefaultInterface}} {{/operation}} diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/cookieParams.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/cookieParams.mustache index deff1572afe1..028264a18bcf 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/cookieParams.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/cookieParams.mustache @@ -1 +1 @@ -{{#isCookieParam}}{{#useBeanValidation}}{{>beanValidationQueryParams}}{{/useBeanValidation}}@CookieValue(name = "{{baseName}}"{{^required}}, required = false{{/required}}{{#defaultValue}}, defaultValue = "{{{.}}}"{{/defaultValue}}) {{paramName}}: {{>optionalDataType}}{{/isCookieParam}} \ No newline at end of file +{{#isCookieParam}}{{#useBeanValidation}}{{>beanValidationQueryParams}}{{/useBeanValidation}}@CookieValue(name = "{{baseName}}"{{^required}}, required = false{{/required}}{{#defaultValue}}, defaultValue = "{{{.}}}"{{/defaultValue}}) {{{paramName}}}: {{>optionalDataType}}{{/isCookieParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/dataClass.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/dataClass.mustache index 20c6889710e2..695dbaee2602 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/dataClass.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/dataClass.mustache @@ -5,6 +5,9 @@ {{/vars}} */{{#discriminator}} {{>typeInfoAnnotation}}{{/discriminator}} +{{#additionalModelTypeAnnotations}} + {{{.}}} +{{/additionalModelTypeAnnotations}} {{#discriminator}}interface {{classname}}{{/discriminator}}{{^discriminator}}{{#hasVars}}data {{/hasVars}}class {{classname}}( {{#requiredVars}} {{>dataClassReqVar}}{{^-last}}, diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/formParams.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/formParams.mustache index 745b71b179c0..6d725334a165 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/formParams.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/formParams.mustache @@ -1 +1 @@ -{{#isFormParam}}{{^isFile}}{{#swagger2AnnotationLibrary}}@Parameter(description = "{{{description}}}"{{#required}}, required = true{{/required}}{{#allowableValues}}{{#defaultValue}}, schema = Schema(allowableValues = [{{#values}}"{{{.}}}"{{^-last}}, {{/-last}}{{/values}}]{{^isContainer}}, defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/isContainer}}){{/defaultValue}}{{/allowableValues}}{{#allowableValues}}{{^defaultValue}}, schema = Schema(allowableValues = [{{#values}}"{{{.}}}"{{^-last}}, {{/-last}}{{/values}}]){{/defaultValue}}{{/allowableValues}}{{^allowableValues}}{{#defaultValue}}{{^isContainer}}, schema = Schema(defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}){{/isContainer}}{{/defaultValue}}{{/allowableValues}}){{/swagger2AnnotationLibrary}}{{#swagger1AnnotationLibrary}}@ApiParam(value = "{{{description}}}"{{#required}}, required = true{{/required}}{{#allowableValues}}, allowableValues = "{{#values}}{{{.}}}{{^-last}}, {{/-last}}{{/values}}"{{/allowableValues}}{{#defaultValue}}, defaultValue = "{{{.}}}"{{/defaultValue}}){{/swagger1AnnotationLibrary}} @RequestParam(value = "{{baseName}}"{{#required}}, required = true{{/required}}{{^required}}, required = false{{/required}}) {{paramName}}: {{>optionalDataType}} {{/isFile}}{{#isFile}}{{#swagger2AnnotationLibrary}}@Parameter(description = "{{{description}}}"){{/swagger2AnnotationLibrary}}{{#swagger1AnnotationLibrary}}@ApiParam(value = "file detail"){{/swagger1AnnotationLibrary}} {{#useBeanValidation}}@Valid{{/useBeanValidation}} @RequestPart("{{baseName}}"{{#required}}, required = true{{/required}}{{^required}}, required = false{{/required}}) {{paramName}}: {{>optionalDataType}}{{/isFile}}{{/isFormParam}} \ No newline at end of file +{{#isFormParam}}{{^isFile}}{{#swagger2AnnotationLibrary}}@Parameter(description = "{{{description}}}"{{#required}}, required = true{{/required}}{{#allowableValues}}{{#defaultValue}}, schema = Schema(allowableValues = [{{#values}}"{{{.}}}"{{^-last}}, {{/-last}}{{/values}}]{{^isContainer}}, defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/isContainer}}){{/defaultValue}}{{/allowableValues}}{{#allowableValues}}{{^defaultValue}}, schema = Schema(allowableValues = [{{#values}}"{{{.}}}"{{^-last}}, {{/-last}}{{/values}}]){{/defaultValue}}{{/allowableValues}}{{^allowableValues}}{{#defaultValue}}{{^isContainer}}, schema = Schema(defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}){{/isContainer}}{{/defaultValue}}{{/allowableValues}}){{/swagger2AnnotationLibrary}}{{#swagger1AnnotationLibrary}}@ApiParam(value = "{{{description}}}"{{#required}}, required = true{{/required}}{{#allowableValues}}, allowableValues = "{{#values}}{{{.}}}{{^-last}}, {{/-last}}{{/values}}"{{/allowableValues}}{{#defaultValue}}, defaultValue = "{{{.}}}"{{/defaultValue}}){{/swagger1AnnotationLibrary}} @RequestParam(value = "{{baseName}}"{{#required}}, required = true{{/required}}{{^required}}, required = false{{/required}}) {{{paramName}}}: {{>optionalDataType}} {{/isFile}}{{#isFile}}{{#swagger2AnnotationLibrary}}@Parameter(description = "{{{description}}}"){{/swagger2AnnotationLibrary}}{{#swagger1AnnotationLibrary}}@ApiParam(value = "file detail"){{/swagger1AnnotationLibrary}} {{#useBeanValidation}}@Valid{{/useBeanValidation}} @RequestPart("{{baseName}}"{{#required}}, required = true{{/required}}{{^required}}, required = false{{/required}}) {{{paramName}}}: {{>optionalDataType}}{{/isFile}}{{/isFormParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/headerParams.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/headerParams.mustache index 53c8e620d2a4..ed62c902c3d4 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/headerParams.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/headerParams.mustache @@ -1 +1 @@ -{{#isHeaderParam}}{{#useBeanValidation}}{{>beanValidationCore}}{{/useBeanValidation}}{{#swagger2AnnotationLibrary}}@Parameter(description = "{{{description}}}", `in` = ParameterIn.HEADER{{#required}}, required = true{{/required}}{{#allowableValues}}{{#defaultValue}}, schema = Schema(allowableValues = [{{#values}}"{{{.}}}"{{^-last}}, {{/-last}}{{/values}}]{{^isContainer}}, defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/isContainer}}){{/defaultValue}}{{/allowableValues}}{{#allowableValues}}{{^defaultValue}}, schema = Schema(allowableValues = [{{#values}}"{{{.}}}"{{^-last}}, {{/-last}}{{/values}}]){{/defaultValue}}{{/allowableValues}}{{^allowableValues}}{{#defaultValue}}{{^isContainer}}, schema = Schema(defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}){{/isContainer}}{{/defaultValue}}{{/allowableValues}}){{/swagger2AnnotationLibrary}}{{#swagger1AnnotationLibrary}}@ApiParam(value = "{{{description}}}"{{#required}}, required = true{{/required}}{{#allowableValues}}, allowableValues = "{{#values}}{{{.}}}{{^-last}}, {{/-last}}{{/values}}"{{/allowableValues}}{{#defaultValue}}, defaultValue = "{{{.}}}"{{/defaultValue}}){{/swagger1AnnotationLibrary}} @RequestHeader(value = "{{baseName}}", required = {{#required}}true{{/required}}{{^required}}false{{/required}}) {{paramName}}: {{>optionalDataType}}{{/isHeaderParam}} \ No newline at end of file +{{#isHeaderParam}}{{#useBeanValidation}}{{>beanValidationCore}}{{/useBeanValidation}}{{#swagger2AnnotationLibrary}}@Parameter(description = "{{{description}}}", `in` = ParameterIn.HEADER{{#required}}, required = true{{/required}}{{#allowableValues}}{{#defaultValue}}, schema = Schema(allowableValues = [{{#values}}"{{{.}}}"{{^-last}}, {{/-last}}{{/values}}]{{^isContainer}}, defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/isContainer}}){{/defaultValue}}{{/allowableValues}}{{#allowableValues}}{{^defaultValue}}, schema = Schema(allowableValues = [{{#values}}"{{{.}}}"{{^-last}}, {{/-last}}{{/values}}]){{/defaultValue}}{{/allowableValues}}{{^allowableValues}}{{#defaultValue}}{{^isContainer}}, schema = Schema(defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}){{/isContainer}}{{/defaultValue}}{{/allowableValues}}){{/swagger2AnnotationLibrary}}{{#swagger1AnnotationLibrary}}@ApiParam(value = "{{{description}}}"{{#required}}, required = true{{/required}}{{#allowableValues}}, allowableValues = "{{#values}}{{{.}}}{{^-last}}, {{/-last}}{{/values}}"{{/allowableValues}}{{#defaultValue}}, defaultValue = "{{{.}}}"{{/defaultValue}}){{/swagger1AnnotationLibrary}} @RequestHeader(value = "{{baseName}}", required = {{#required}}true{{/required}}{{^required}}false{{/required}}) {{{paramName}}}: {{>optionalDataType}}{{/isHeaderParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/pathParams.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/pathParams.mustache index 18137b282cce..8d5b61c8b051 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/pathParams.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/pathParams.mustache @@ -1 +1 @@ -{{#isPathParam}}{{#useBeanValidation}}{{>beanValidationPathParams}}{{/useBeanValidation}}{{#swagger2AnnotationLibrary}}@Parameter(description = "{{{description}}}"{{#required}}, required = true{{/required}}{{#allowableValues}}{{#defaultValue}}, schema = Schema(allowableValues = [{{#enumVars}}"{{#lambdaEscapeInNormalString}}{{{value}}}{{/lambdaEscapeInNormalString}}"{{^-last}}, {{/-last}}{{/enumVars}}]{{^isContainer}}, defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/isContainer}}{{/defaultValue}}{{/allowableValues}}{{#allowableValues}}{{^defaultValue}}, schema = Schema(allowableValues = [{{#enumVars}}"{{#lambdaEscapeInNormalString}}{{{value}}}{{/lambdaEscapeInNormalString}}"{{^-last}}, {{/-last}}{{/enumVars}}]){{/defaultValue}}{{/allowableValues}}{{^allowableValues}}{{#defaultValue}}{{^isContainer}}, schema = Schema(defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/isContainer}}{{/defaultValue}}{{/allowableValues}}){{/swagger2AnnotationLibrary}}{{#swagger1AnnotationLibrary}}@ApiParam(value = "{{{description}}}"{{#required}}, required = true{{/required}}{{#allowableValues}}, allowableValues = "{{#enumVars}}{{#lambda.escapeDoubleQuote}}{{{value}}}{{/lambda.escapeDoubleQuote}}{{^-last}}, {{/-last}}{{/enumVars}}"{{/allowableValues}}{{#defaultValue}}, defaultValue = "{{{.}}}"{{/defaultValue}}){{/swagger1AnnotationLibrary}} @PathVariable("{{baseName}}") {{paramName}}: {{>optionalDataType}}{{/isPathParam}} \ No newline at end of file +{{#isPathParam}}{{#useBeanValidation}}{{>beanValidationPathParams}}{{/useBeanValidation}}{{#swagger2AnnotationLibrary}}@Parameter(description = "{{{description}}}"{{#required}}, required = true{{/required}}{{#allowableValues}}{{#defaultValue}}, schema = Schema(allowableValues = [{{#enumVars}}"{{#lambdaEscapeInNormalString}}{{{value}}}{{/lambdaEscapeInNormalString}}"{{^-last}}, {{/-last}}{{/enumVars}}]{{^isContainer}}, defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/isContainer}}{{/defaultValue}}{{/allowableValues}}{{#allowableValues}}{{^defaultValue}}, schema = Schema(allowableValues = [{{#enumVars}}"{{#lambdaEscapeInNormalString}}{{{value}}}{{/lambdaEscapeInNormalString}}"{{^-last}}, {{/-last}}{{/enumVars}}]){{/defaultValue}}{{/allowableValues}}{{^allowableValues}}{{#defaultValue}}{{^isContainer}}, schema = Schema(defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/isContainer}}{{/defaultValue}}{{/allowableValues}}){{/swagger2AnnotationLibrary}}{{#swagger1AnnotationLibrary}}@ApiParam(value = "{{{description}}}"{{#required}}, required = true{{/required}}{{#allowableValues}}, allowableValues = "{{#enumVars}}{{#lambda.escapeDoubleQuote}}{{{value}}}{{/lambda.escapeDoubleQuote}}{{^-last}}, {{/-last}}{{/enumVars}}"{{/allowableValues}}{{#defaultValue}}, defaultValue = "{{{.}}}"{{/defaultValue}}){{/swagger1AnnotationLibrary}} @PathVariable("{{baseName}}") {{{paramName}}}: {{>optionalDataType}}{{/isPathParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/queryParams.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/queryParams.mustache index 3c254c53ff06..2bf764c99633 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/queryParams.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/queryParams.mustache @@ -1 +1 @@ -{{#isQueryParam}}{{#useBeanValidation}}{{>beanValidationQueryParams}}{{/useBeanValidation}}{{#swagger2AnnotationLibrary}}@Parameter(description = "{{{description}}}"{{#required}}, required = true{{/required}}{{#allowableValues}}{{#defaultValue}}, schema = Schema(allowableValues = [{{#values}}"{{{.}}}"{{^-last}}, {{/-last}}{{/values}}]{{^isContainer}}, defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/isContainer}}){{/defaultValue}}{{/allowableValues}}{{#allowableValues}}{{^defaultValue}}, schema = Schema(allowableValues = [{{#values}}"{{{.}}}"{{^-last}}, {{/-last}}{{/values}}]){{/defaultValue}}{{/allowableValues}}{{^allowableValues}}{{#defaultValue}}{{^isContainer}}, schema = Schema(defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}){{/isContainer}}{{/defaultValue}}{{/allowableValues}}){{/swagger2AnnotationLibrary}}{{#swagger1AnnotationLibrary}}@ApiParam(value = "{{{description}}}"{{#required}}, required = true{{/required}}{{#allowableValues}}, allowableValues = "{{#values}}{{{.}}}{{^-last}}, {{/-last}}{{/values}}"{{/allowableValues}}{{^isContainer}}{{#defaultValue}}, defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/defaultValue}}{{/isContainer}}){{/swagger1AnnotationLibrary}}{{#useBeanValidation}} @Valid{{/useBeanValidation}}{{^isModel}} @RequestParam(value = "{{baseName}}"{{#required}}, required = true{{/required}}{{^required}}, required = false{{/required}}{{^isContainer}}{{#defaultValue}}, defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/defaultValue}}{{/isContainer}}){{/isModel}}{{#isDate}} @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE){{/isDate}}{{#isDateTime}} @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE_TIME){{/isDateTime}} {{paramName}}: {{>optionalDataType}}{{/isQueryParam}} \ No newline at end of file +{{#isQueryParam}}{{#useBeanValidation}}{{>beanValidationQueryParams}}{{/useBeanValidation}}{{#swagger2AnnotationLibrary}}@Parameter(description = "{{{description}}}"{{#required}}, required = true{{/required}}{{#allowableValues}}{{#defaultValue}}, schema = Schema(allowableValues = [{{#values}}"{{{.}}}"{{^-last}}, {{/-last}}{{/values}}]{{^isContainer}}, defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/isContainer}}){{/defaultValue}}{{/allowableValues}}{{#allowableValues}}{{^defaultValue}}, schema = Schema(allowableValues = [{{#values}}"{{{.}}}"{{^-last}}, {{/-last}}{{/values}}]){{/defaultValue}}{{/allowableValues}}{{^allowableValues}}{{#defaultValue}}{{^isContainer}}, schema = Schema(defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}){{/isContainer}}{{/defaultValue}}{{/allowableValues}}){{/swagger2AnnotationLibrary}}{{#swagger1AnnotationLibrary}}@ApiParam(value = "{{{description}}}"{{#required}}, required = true{{/required}}{{#allowableValues}}, allowableValues = "{{#values}}{{{.}}}{{^-last}}, {{/-last}}{{/values}}"{{/allowableValues}}{{^isContainer}}{{#defaultValue}}, defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/defaultValue}}{{/isContainer}}){{/swagger1AnnotationLibrary}}{{#useBeanValidation}} @Valid{{/useBeanValidation}}{{^isModel}} @RequestParam(value = "{{baseName}}"{{#required}}, required = true{{/required}}{{^required}}, required = false{{/required}}{{^isContainer}}{{#defaultValue}}, defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/defaultValue}}{{/isContainer}}){{/isModel}}{{#isDate}} @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE){{/isDate}}{{#isDateTime}} @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE_TIME){{/isDateTime}} {{{paramName}}}: {{>optionalDataType}}{{/isQueryParam}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/serviceImpl.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/serviceImpl.mustache index 75f4fda598cc..57f092399067 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-spring/serviceImpl.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-spring/serviceImpl.mustache @@ -11,7 +11,7 @@ import org.springframework.stereotype.Service class {{classname}}ServiceImpl : {{classname}}Service { {{#operation}} - override {{#reactive}}{{^isArray}}suspend {{/isArray}}{{/reactive}}fun {{operationId}}({{#allParams}}{{paramName}}: {{^isBodyParam}}{{>optionalDataType}}{{/isBodyParam}}{{#isBodyParam}}{{^reactive}}{{>optionalDataType}}{{/reactive}}{{#reactive}}{{^isArray}}{{>optionalDataType}}{{/isArray}}{{#isArray}}Flow<{{{baseType}}}>{{/isArray}}{{/reactive}}{{/isBodyParam}}{{^-last}}, {{/-last}}{{/allParams}}): {{>returnTypes}} { + override {{#reactive}}{{^isArray}}suspend {{/isArray}}{{/reactive}}fun {{operationId}}({{#allParams}}{{{paramName}}}: {{^isBodyParam}}{{>optionalDataType}}{{/isBodyParam}}{{#isBodyParam}}{{^reactive}}{{>optionalDataType}}{{/reactive}}{{#reactive}}{{^isArray}}{{>optionalDataType}}{{/isArray}}{{#isArray}}Flow<{{{baseType}}}>{{/isArray}}{{/reactive}}{{/isBodyParam}}{{^-last}}, {{/-last}}{{/allParams}}): {{>returnTypes}} { TODO("Implement me") } {{/operation}} diff --git a/modules/openapi-generator/src/main/resources/php-flight/README.mustache b/modules/openapi-generator/src/main/resources/php-flight/README.mustache new file mode 100644 index 000000000000..d510c3a55354 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-flight/README.mustache @@ -0,0 +1,10 @@ +## Requirements + +PHP 8.1 and later + +## Installation & Usage + +1. Set up flight as usual - see [Flight documentation](https://docs.flightphp.com/install) +2. Generate using the OpenAPI generator +3. Subclass some/all generated `Abstract*Api` and overwrite the methods you'd like handled. When implementing the `*Stream` methods, make sure to stream the response and not implement the non-stream method. +4. Register routes for your subclassed apis: `RegisterRoutes::registerRoutes(new MyApiHandler());` diff --git a/modules/openapi-generator/src/main/resources/php-flight/api.mustache b/modules/openapi-generator/src/main/resources/php-flight/api.mustache new file mode 100644 index 000000000000..a0b146bd07dc --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-flight/api.mustache @@ -0,0 +1,57 @@ +licenseInfo}} + +namespace {{apiPackage}}; + + +{{#operations}}abstract class {{classname}} +{ + + {{#operation}} + /** + * Operation {{{operationId}}} + * Path: {{{path}}} + * + {{#summary}} + * {{{summary}}} + * + {{/summary}} + {{#vendorExtensions.x-nonFormParams}} + * @param {{vendorExtensions.x-parameter-type}} ${{paramName}} {{description}} {{#required}}(required){{/required}}{{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}{{#isDeprecated}} (deprecated){{/isDeprecated}} + {{/vendorExtensions.x-nonFormParams}} + * + * @return {{vendorExtensions.x-return-type-comment}} + {{#isDeprecated}} + * @deprecated + {{/isDeprecated}} + */ + public function {{operationId}}({{#vendorExtensions.x-nonFormParams}}{{vendorExtensions.x-parameter-type}} ${{paramName}}{{^-last}}, {{/-last}}{{/vendorExtensions.x-nonFormParams}}): {{vendorExtensions.x-return-type}} + { + throw new \Exception('Not implemented'); + } + + {{#returnContainer}} + /** + * Operation {{{operationId}}} (stream) + * + {{#summary}} + * {{{summary}}} + * + {{/summary}} + {{#vendorExtensions.x-nonFormParams}} + * @param {{vendorExtensions.x-parameter-type}} ${{paramName}} {{description}} {{#required}}(required){{/required}}{{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}{{#isDeprecated}} (deprecated){{/isDeprecated}} +{{/vendorExtensions.x-nonFormParams}} + * + {{#isDeprecated}} + * @deprecated + {{/isDeprecated}} + */ + public function {{operationId}}Stream({{#vendorExtensions.x-nonFormParams}}{{vendorExtensions.x-parameter-type}} ${{paramName}}{{^-last}}, {{/-last}}{{/vendorExtensions.x-nonFormParams}}): void + { + throw new \Exception('Not implemented'); + } + {{/returnContainer}} +{{/operation}} +} +{{/operations}} diff --git a/modules/openapi-generator/src/main/resources/php-flight/composer.mustache b/modules/openapi-generator/src/main/resources/php-flight/composer.mustache new file mode 100644 index 000000000000..d922daab923e --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-flight/composer.mustache @@ -0,0 +1,39 @@ +{ + {{#composerPackageName}} + "name": "{{{.}}}", + {{/composerPackageName}} + "description": "{{appDescription}}.", + "keywords": ["openapi", "php", "framework", "flightphp"], + {{#artifactVersion}} + "version": "{{.}}", + {{/artifactVersion}} + "homepage": "{{{artifactUrl}}}", + "license": "{{{licenseName}}}", + "authors": [ + { + "name": "{{{developerOrganization}}}", + "homepage": "{{{developerOrganizationUrl}}}" + } + ], + "type": "library", + "require": { + "php": "^8.1.0", + "flightphp/core": "^3.5.1", + "ext-json": "*" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "config": { + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true + }, + "autoload": { + "psr-4": { + "{{escapedInvokerPackage}}\\": "" + } + }, + "minimum-stability": "dev", + "prefer-stable": true +} diff --git a/modules/openapi-generator/src/main/resources/php-flight/gitignore b/modules/openapi-generator/src/main/resources/php-flight/gitignore new file mode 100644 index 000000000000..931a98c71bd1 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-flight/gitignore @@ -0,0 +1,28 @@ +# ref: https://github.com/github/gitignore/blob/master/Composer.gitignore + +composer.phar +/vendor/ + +# Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control +# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file +# composer.lock + +# phplint tool creates cache file which is not necessary in a codebase +/.phplint-cache + +# Do not commit local PHPUnit config +/phpunit.xml +/.phpunit.result.cache + +# Do not commit local PHP_CodeSniffer config +/phpcs.xml + +# Application config may contain sensitive data +/config/**/*.* +!/config/.htaccess +!/config/dev/default.inc.php +!/config/prod/default.inc.php + +# Logs folder +/logs/**/*.* +!/logs/.htaccess diff --git a/modules/openapi-generator/src/main/resources/php-flight/licenseInfo.mustache b/modules/openapi-generator/src/main/resources/php-flight/licenseInfo.mustache new file mode 100644 index 000000000000..c10b59eaab8a --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-flight/licenseInfo.mustache @@ -0,0 +1,23 @@ +/** + {{#appName}} + * {{{.}}} + {{/appName}} + * PHP version 8.x + * + * @package {{invokerPackage}} + * @author OpenAPI Generator team + * @link https://github.com/openapitools/openapi-generator + */ + +/** + {{#appDescription}} + * {{{.}}} + {{/appDescription}} + {{#version}} + * The version of the OpenAPI document: {{{.}}} + {{/version}} + {{#infoEmail}} + * Contact: {{{.}}} + {{/infoEmail}} + * Generated by: https://github.com/openapitools/openapi-generator.git + */ \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/php-flight/model.mustache b/modules/openapi-generator/src/main/resources/php-flight/model.mustache new file mode 100644 index 000000000000..c0fd08c25c56 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-flight/model.mustache @@ -0,0 +1,31 @@ +partial_header}} + +namespace {{modelPackage}}; + +/** + * Class representing the {{classname}} model. + * +{{#description}} + * {{.}} + * +{{/description}} + * @package {{modelPackage}} + * @author OpenAPI Generator team + */ +{{#isEnum}}{{>model_enum}}{{/isEnum}} +{{^isEnum}}{{>model_generic}}{{/isEnum}} +{{/model}}{{/models}} diff --git a/modules/openapi-generator/src/main/resources/php-flight/model_enum.mustache b/modules/openapi-generator/src/main/resources/php-flight/model_enum.mustache new file mode 100644 index 000000000000..b12428b10e2d --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-flight/model_enum.mustache @@ -0,0 +1,8 @@ +enum {{classname}}: {{dataType}} +{ +{{#allowableValues}} + {{#enumVars}} + case {{{name}}} = {{{value}}}; + {{/enumVars}} +{{/allowableValues}} +} diff --git a/modules/openapi-generator/src/main/resources/php-flight/model_generic.mustache b/modules/openapi-generator/src/main/resources/php-flight/model_generic.mustache new file mode 100644 index 000000000000..9748119501dc --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-flight/model_generic.mustache @@ -0,0 +1,90 @@ +class {{classname}} {{#parentSchema}}extends {{{parent}}} {{/parentSchema}} implements \JsonSerializable +{ + {{#vars}}{{>model_variables}} + {{/vars}} + /** + * Constructor + * +{{#vars}} + * @param {{vendorExtensions.x-comment-type}} ${{name}} +{{/vars}} + */ + public function __construct({{#vars}}{{vendorExtensions.x-parameter-type}} ${{name}}{{^-last}}, {{/-last}}{{/vars}}) + { + {{#vars}} + $this->{{name}} = ${{name}}; + {{/vars}} + } + + public static function fromArray(array $data): self + { + return new self( + {{#vars}} + {{#isDateTime}} + isset($data['{{baseName}}']) ? new \DateTime($data['{{baseName}}']) : null{{^last}}, {{/last}} + {{/isDateTime}} + {{#isEnum}} + isset($data['{{baseName}}']) ? {{enumName}}::tryFrom($data['{{baseName}}']) : null{{^last}}, {{/last}} + {{/isEnum}} + {{#isEnumRef}} + isset($data['{{baseName}}']) ? {{complexType}}::tryFrom($data['{{baseName}}']) : null{{^last}}, {{/last}} + {{/isEnumRef}} + {{#isModel}} + isset($data['{{baseName}}']) ? {{complexType}}::fromArray($data['{{baseName}}']) : null{{^last}}, {{/last}} + {{/isModel}} + {{#isArray}} + {{#items.isEnumRef}} + isset($data['{{baseName}}']) ? array_map(fn($item) => {{items.complexType}}::tryFrom($item), $data['{{baseName}}']) : null{{^last}}, {{/last}} + {{/items.isEnumRef}} + {{#items.isModel}} + isset($data['{{baseName}}']) ? array_map(fn($item) => {{items.complexType}}::fromArray($item), $data['{{baseName}}']) : null{{^last}}, {{/last}} + {{/items.isModel}} + {{#items.isDateTime}} + isset($data['{{baseName}}']) ? array_map(fn($item) => new \DateTime($item), $data['{{baseName}}']) : null{{^last}}, {{/last}} + {{/items.isDateTime}} + {{^items.isEnumRef}} + {{^items.isModel}} + {{^items.isDateTime}} + $data['{{baseName}}'] ?? null{{^last}}, {{/last}} + {{/items.isDateTime}} + {{/items.isModel}} + {{/items.isEnumRef}} + {{/isArray}} + {{^isEnumRef}} + {{^isEnum}} + {{^isModel}} + {{^isArray}} + {{^isDateTime}} + $data['{{baseName}}'] ?? null{{^last}}, {{/last}} + {{/isDateTime}} + {{/isArray}} + {{/isModel}} + {{/isEnum}} + {{/isEnumRef}} + {{/vars}} + ); + } + + public function jsonSerialize(): mixed { + return [ + {{#vars}} + {{#isDateTime}} + '{{baseName}}' => $this->{{name}}?->format('c'){{^last}}, {{/last}} + {{/isDateTime}} + {{#isArray}} + {{#items.isDateTime}} + '{{baseName}}' => $this->{{name}} ? array_map(fn($item) => $item->format('c'), $this->{{name}}) : null{{^last}}, {{/last}} + {{/items.isDateTime}} + {{^items.isDateTime}} + '{{baseName}}' => $this->{{name}}{{^last}}, {{/last}} + {{/items.isDateTime}} + {{/isArray}} + {{^isDateTime}} + {{^isArray}} + '{{baseName}}' => $this->{{name}}{{^last}}, {{/last}} + {{/isArray}} + {{/isDateTime}} + {{/vars}} + ]; + } +} diff --git a/modules/openapi-generator/src/main/resources/php-flight/model_variables.mustache b/modules/openapi-generator/src/main/resources/php-flight/model_variables.mustache new file mode 100644 index 000000000000..259ce295ea70 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-flight/model_variables.mustache @@ -0,0 +1,113 @@ + /** + {{#description}} + * {{.}} + * + {{/description}} + * @var {{{vendorExtensions.x-comment-type}}} + * @SerializedName("{{baseName}}") +{{#required}} + * @Assert\NotNull() + {{^isPrimitiveType}} + * @Assert\Valid() + {{/isPrimitiveType}} +{{/required}} +{{#isEnum}} + {{#isContainer}} + * @Assert\All({ + {{#items}} + * @Assert\Choice({ {{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}} }) + {{/items}} + * }) + {{/isContainer}} + {{^isContainer}} + * @Assert\Choice({ {{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}} }) + {{/isContainer}} +{{/isEnum}} +{{#isContainer}} + * @Assert\All({ + {{#items}} + * @Assert\Type("{{dataType}}") + {{/items}} + * }) + {{#isMap}} + {{#items}} + * @Type("array") + {{/items}} + {{/isMap}} + {{^isMap}} + {{#items}} + {{#isEnumRef}} + * @Accessor(getter="getSerialized{{nameInPascalCase}}") + * @Type("array") + {{/isEnumRef}} + {{^isEnumRef}} + * @Type("array<{{dataType}}>") + {{/isEnumRef}} + {{/items}} + {{/isMap}} +{{/isContainer}} +{{^isContainer}} + {{#isDate}} + * @Assert\Type("\Date") + * @Type("DateTime<'Y-m-d'>") + {{/isDate}} + {{#isDateTime}} + * @Assert\Type("\DateTime")) + * @Type("DateTime") + {{/isDateTime}} + {{#isEnumRef}} + * @Accessor(getter="getSerialized{{nameInPascalCase}}") + * @Type("string") + {{/isEnumRef}} + {{^isDate}} + {{^isDateTime}} + {{^isEnumRef}} + * @Assert\Type("{{dataType}}") + * @Type("{{dataType}}") + {{/isEnumRef}} + {{/isDateTime}} + {{/isDate}} +{{/isContainer}} +{{#hasValidation}} + {{#maxLength}} + * @Assert\Length( + * max = {{.}} + * ) + {{/maxLength}} + {{#minLength}} + * @Assert\Length( + * min = {{.}} + * ) + {{/minLength}} + {{#minimum}} + {{#exclusiveMinimum}} + * @Assert\GreaterThan({{minimum}}) + {{/exclusiveMinimum}} + {{^exclusiveMinimum}} + * @Assert\GreaterThanOrEqual({{minimum}}) + {{/exclusiveMinimum}} + {{/minimum}} + {{#maximum}} + {{#exclusiveMaximum}} + * @Assert\LessThan({{maximum}}) + {{/exclusiveMaximum}} + {{^exclusiveMaximum}} + * @Assert\LessThanOrEqual({{maximum}}) + {{/exclusiveMaximum}} + {{/maximum}} + {{#pattern}} + * @Assert\Regex("/{{.}}/") + {{/pattern}} + {{#maxItems}} + * @Assert\Count( + * max = {{.}} + * ) + {{/maxItems}} + {{#minItems}} + * @Assert\Count( + * min = {{.}} + * ) + {{/minItems}} +{{/hasValidation}} + */ + public {{{vendorExtensions.x-parameter-type}}} ${{name}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}; diff --git a/modules/openapi-generator/src/main/resources/php-flight/partial_header.mustache b/modules/openapi-generator/src/main/resources/php-flight/partial_header.mustache new file mode 100644 index 000000000000..01bb4a845c99 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-flight/partial_header.mustache @@ -0,0 +1,14 @@ +/** + {{#appName}} + * {{{.}}} + * + {{/appName}} + {{#appDescription}} + * {{{.}}} + * + {{/appDescription}} + * {{#version}}The version of the OpenAPI document: {{{.}}}{{/version}} + * {{#infoEmail}}Contact: {{{.}}}{{/infoEmail}} + * Generated by: https://github.com/openapitools/openapi-generator.git + * + */ diff --git a/modules/openapi-generator/src/main/resources/php-flight/phpunit.mustache b/modules/openapi-generator/src/main/resources/php-flight/phpunit.mustache new file mode 100644 index 000000000000..f7df0c08377d --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-flight/phpunit.mustache @@ -0,0 +1,28 @@ + + + + + {{#lambda.forwardslash}}{{apiSrcPath}}{{/lambda.forwardslash}} + {{#lambda.forwardslash}}{{modelSrcPath}}{{/lambda.forwardslash}} + . + + + {{#lambda.forwardslash}}{{testSrcPath}}{{/lambda.forwardslash}} + + + + + {{#lambda.forwardslash}}{{testSrcPath}}{{/lambda.forwardslash}} + + + + + + diff --git a/modules/openapi-generator/src/main/resources/php-flight/register_routes.mustache b/modules/openapi-generator/src/main/resources/php-flight/register_routes.mustache new file mode 100644 index 000000000000..c66e90b42b98 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-flight/register_routes.mustache @@ -0,0 +1,85 @@ +licenseInfo}} + +namespace {{invokerPackage}}; +{{#apiInfo}} + +class RegisterRoutes { + + static public function registerRoutes({{#apis}}\{{apiPackage}}\{{classname}}{{^-last}}|{{/-last}}{{/apis}} $handler): void + { + $reflectionClass = new \ReflectionClass($handler); + + {{#apis}} + {{#operations}} + {{#operation}} + if (declaresMethod($reflectionClass, '{{operationId}}') && declaresMethod($reflectionClass, '{{operationId}}Stream')) { + throw new \Exception('Operation {{operationId}} cannot be both streaming and non-streaming'); + } + if (declaresMethod($reflectionClass, '{{operationId}}')) { + \Flight::route('{{httpMethod}} {{vendorExtensions.x-path}}', function ({{#pathParams}}string ${{paramName}}{{^-last}}, {{/-last}}{{/pathParams}}) use ($handler) { + $r = \Flight::request(); + {{^vendorExtensions.x-return-type-is-void}}$result = {{/vendorExtensions.x-return-type-is-void}}$handler->{{operationId}}( + {{#vendorExtensions.x-nonFormParams}} + parseParam({{#isBodyParam}}json_decode($r->getBody(), true){{/isBodyParam}}{{#isQueryParam}}$r->query['{{baseName}}'] ?? null{{/isQueryParam}}{{#isPathParam}}${{paramName}}{{/isPathParam}}{{#isHeaderParam}}$r->getHeader('{{baseName}}'){{/isHeaderParam}}, '{{vendorExtensions.x-comment-type-escaped}}'){{^-last}}, {{/-last}} + {{/vendorExtensions.x-nonFormParams}} + ); + {{^vendorExtensions.x-return-type-is-void}} + if ($result === null) { + \Flight::halt(204); + } else { + \Flight::json($result); + } + {{/vendorExtensions.x-return-type-is-void}} + {{#vendorExtensions.x-return-type-is-void}} + \Flight::halt(204); + {{/vendorExtensions.x-return-type-is-void}} + }); + } + {{#returnContainer}} + if (declaresMethod($reflectionClass, '{{operationId}}Stream')) { + \Flight::route('{{httpMethod}} {{vendorExtensions.x-path}}', function ({{#pathParams}}string ${{paramName}}{{^-last}}, {{/-last}}{{/pathParams}}) use ($handler) { + $r = \Flight::request(); + $handler->{{operationId}}Stream( + {{#vendorExtensions.x-nonFormParams}} + parseParam({{#isBodyParam}}json_decode($r->getBody(), true){{/isBodyParam}}{{#isQueryParam}}$r->query['{{baseName}}'] ?? null{{/isQueryParam}}{{#isPathParam}}${{paramName}}{{/isPathParam}}{{#isHeaderParam}}$r->getHeader('{{baseName}}'){{/isHeaderParam}}, '{{vendorExtensions.x-comment-type-escaped}}'){{^-last}}, {{/-last}} + {{/vendorExtensions.x-nonFormParams}} + ); + // ignore return value: streaming expected + })->streamWithHeaders(['Content-Type' => 'application/json']); + } + {{/returnContainer}} + + {{/operation}} + {{/operations}} + {{/apis}} + } +} + +{{/apiInfo}} + +function parseParam(mixed $param, string $type) +{ + $nonNullType = str_replace('?', '', $type); + if ($param === null) { + return null; + } elseif ($nonNullType === 'int') { + return intval($param); + } elseif ($nonNullType === 'float') { + return floatval($param); + } elseif ($nonNullType === 'bool') { + return filter_var($param, FILTER_VALIDATE_BOOLEAN); + } elseif (str_ends_with($type, '[]')) { + return array_map(fn($el) => parseParam($el, substr($type, 0, -2)), $param); + } elseif (str_starts_with($nonNullType, '\\{{escapedModelPackage}}')) { + return new $nonNullType($param); + } else { + return $param; + } +} + +function declaresMethod(\ReflectionClass $reflectionClass, string $methodName): bool +{ + return $reflectionClass->hasMethod($methodName) && $reflectionClass->getMethod($methodName)->getDeclaringClass()->getName() === $reflectionClass->getName(); +} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/php-flight/register_routes_test.mustache b/modules/openapi-generator/src/main/resources/php-flight/register_routes_test.mustache new file mode 100644 index 000000000000..c50fbade9c5b --- /dev/null +++ b/modules/openapi-generator/src/main/resources/php-flight/register_routes_test.mustache @@ -0,0 +1,31 @@ +licenseInfo}} + +{{#apiInfo}} +namespace {{testPackage}}; + +class RegisterRoutesTest extends \PHPUnit\Framework\TestCase { +{{#apis}} + public function testRegisterRoutes{{classname}}(): void + { + $handler = new class extends \{{apiPackage}}\{{classname}} { + {{#operations}} + {{#operation}} + {{#-first}} + public function {{operationId}}({{#vendorExtensions.x-nonFormParams}}{{^isFormParam}}{{vendorExtensions.x-parameter-type}} ${{paramName}}{{^-last}}, {{/-last}}{{/isFormParam}}{{/vendorExtensions.x-nonFormParams}}): {{vendorExtensions.x-return-type}} + { + {{^vendorExtensions.x-return-type-is-void}} + return null; + {{/vendorExtensions.x-return-type-is-void}} + } + {{/-first}} + {{/operation}} + {{/operations}} + }; + \{{invokerPackage}}\RegisterRoutes::registerRoutes($handler); + $this->assertTrue(true); + } +{{/apis}} +} +{{/apiInfo}} diff --git a/modules/openapi-generator/src/main/resources/php-nextgen/ObjectSerializer.mustache b/modules/openapi-generator/src/main/resources/php-nextgen/ObjectSerializer.mustache index 8c8b10a39343..b48c1b911ecb 100644 --- a/modules/openapi-generator/src/main/resources/php-nextgen/ObjectSerializer.mustache +++ b/modules/openapi-generator/src/main/resources/php-nextgen/ObjectSerializer.mustache @@ -377,7 +377,6 @@ class ObjectSerializer * @param mixed $data object or primitive to be deserialized * @param string $class class name is passed as a string * @param string[]|null $httpHeaders HTTP headers - * @param string|null $discriminator discriminator if polymorphism is used * * @return mixed a single or an array of $class instances */ diff --git a/modules/openapi-generator/src/main/resources/php-symfony/Controller.mustache b/modules/openapi-generator/src/main/resources/php-symfony/Controller.mustache index b74fa68699ca..455b5586ef7a 100644 --- a/modules/openapi-generator/src/main/resources/php-symfony/Controller.mustache +++ b/modules/openapi-generator/src/main/resources/php-symfony/Controller.mustache @@ -92,7 +92,7 @@ class Controller extends AbstractController $json = $this->exceptionToArray($exception); $json['statusCode'] = $statusCode; - return new Response(json_encode($json, 15, 512), $statusCode, $headers); + return new Response(json_encode($json, 15), $statusCode, $headers); } /** @@ -219,7 +219,7 @@ class Controller extends AbstractController public static function isContentTypeAllowed(Request $request, array $consumes = []): bool { if (!empty($consumes) && $consumes[0] !== '*/*') { - $currentFormat = $request->getContentType(); + $currentFormat = $request->getContentTypeFormat(); foreach ($consumes as $mimeType) { // canonize mime type if (is_string($mimeType) && false !== $pos = strpos($mimeType, ';')) { @@ -230,7 +230,7 @@ class Controller extends AbstractController // add custom format to request $format = $mimeType; $request->setFormat($format, $format); - $currentFormat = $request->getContentType(); + $currentFormat = $request->getContentTypeFormat(); } if ($format === $currentFormat) { diff --git a/modules/openapi-generator/src/main/resources/php-symfony/api_controller.mustache b/modules/openapi-generator/src/main/resources/php-symfony/api_controller.mustache index 715374267713..9dd5c4ef18ab 100644 --- a/modules/openapi-generator/src/main/resources/php-symfony/api_controller.mustache +++ b/modules/openapi-generator/src/main/resources/php-symfony/api_controller.mustache @@ -101,6 +101,10 @@ class {{controllerName}} extends Controller // HTTP basic authentication required $security{{name}} = $request->headers->get('authorization'); {{/isBasicBasic}} + {{#isBasicBearer}} + // HTTP bearer authentication required + $security{{name}} = $request->headers->get('authorization'); + {{/isBasicBearer}} {{#isOAuth}} // Oauth required $security{{name}} = $request->headers->get('authorization'); @@ -148,7 +152,7 @@ class {{controllerName}} extends Controller {{#allParams}} {{^isFile}} {{#isBodyParam}} - $inputFormat = $request->getMimeType($request->getContentType()); + $inputFormat = $request->getMimeType($request->getContentTypeFormat()); ${{paramName}} = $this->deserialize(${{paramName}}, '{{#isContainer}}{{#items}}array<{{dataType}}>{{/items}}{{/isContainer}}{{^isContainer}}{{#isEnumRef}}\{{modelPackage}}\{{dataType}}{{/isEnumRef}}{{^isEnumRef}}{{dataType}}{{/isEnumRef}}{{/isContainer}}', $inputFormat); {{/isBodyParam}} {{^isBodyParam}} @@ -178,17 +182,12 @@ class {{controllerName}} extends Controller {{#returnType}}$result = {{/returnType}}$handler->{{operationId}}({{#allParams}}${{paramName}}, {{/allParams}}$responseCode, $responseHeaders); - // Find default response message - $message = '{{#responses}}{{#isDefault}}{{message}}{{/isDefault}}{{/responses}}'; - - // Find a more specific message, if available - switch ($responseCode) { + $message = match($responseCode) { {{#responses}} - case {{code}}: - $message = '{{message}}'; - break; + {{code}} => '{{message}}', {{/responses}} - } + default => '{{#responses}}{{#isDefault}}{{message}}{{/isDefault}}{{/responses}}', + }; return new Response( {{#returnType}}$result !== null ?$this->serialize($result, $responseFormat):''{{/returnType}}{{^returnType}}''{{/returnType}}, diff --git a/modules/openapi-generator/src/main/resources/php-symfony/composer.mustache b/modules/openapi-generator/src/main/resources/php-symfony/composer.mustache index 2e66acfed8dd..026bd4fb3acb 100644 --- a/modules/openapi-generator/src/main/resources/php-symfony/composer.mustache +++ b/modules/openapi-generator/src/main/resources/php-symfony/composer.mustache @@ -24,19 +24,19 @@ } ], "require": { - "php": ">=7.4.0|>=8.0.2", + "php": ">=8.1", "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "symfony/validator": "^5.0|^6.0", - "jms/serializer-bundle": "^4.0", - "symfony/framework-bundle": "^5.0|^6.0" + "symfony/validator": "^6.4|^7.0", + "jms/serializer-bundle": "^5.4", + "symfony/framework-bundle": "^6.4|^7.0" }, "require-dev": { - "phpunit/phpunit": "^9.5", - "friendsofphp/php-cs-fixer": "^2.16.3", - "symfony/browser-kit": "^5.0|^6.0", - "symfony/yaml": "^5.0|^6.0", + "phpunit/phpunit": "^10.5|^11.0", + "friendsofphp/php-cs-fixer": "*", + "symfony/browser-kit": "^6.4|7.0", + "symfony/yaml": "^6.4|^7.0", "hoa/regex": "~1.0" }, "autoload": { diff --git a/modules/openapi-generator/src/main/resources/php-symfony/serialization/JmsSerializer.mustache b/modules/openapi-generator/src/main/resources/php-symfony/serialization/JmsSerializer.mustache index 62f167951e1e..e5ff50c3f7fe 100644 --- a/modules/openapi-generator/src/main/resources/php-symfony/serialization/JmsSerializer.mustache +++ b/modules/openapi-generator/src/main/resources/php-symfony/serialization/JmsSerializer.mustache @@ -47,14 +47,11 @@ class JmsSerializer implements SerializerInterface private function convertFormat(string $format): ?string { - switch ($format) { - case 'application/json': - return 'json'; - case 'application/xml': - return 'xml'; - } - - return null; + return match($format) { + 'application/json' => 'json', + 'application/xml' => 'xml', + default => null, + }; } private function deserializeString($data, string $type) @@ -132,22 +129,13 @@ class JmsSerializer implements SerializerInterface } // Parse the string using the correct separator - switch ($format) { - case 'csv': - $data = explode(',', $data); - break; - case 'ssv': - $data = explode(' ', $data); - break; - case 'tsv': - $data = explode("\t", $data); - break; - case 'pipes': - $data = explode('|', $data); - break; - default; - $data = []; - } + $data = match($format) { + 'csv' => explode(',', $data), + 'ssv' => explode(' ', $data), + 'tsv' => explode("\t", $data), + 'pipes' => explode('|', $data), + default => [], + }; // Deserialize each of the array elements foreach ($data as $key => $item) { diff --git a/modules/openapi-generator/src/main/resources/php-symfony/testing/ControllerTest.mustache b/modules/openapi-generator/src/main/resources/php-symfony/testing/ControllerTest.mustache index e4d5039db846..ac285dd0fca8 100644 --- a/modules/openapi-generator/src/main/resources/php-symfony/testing/ControllerTest.mustache +++ b/modules/openapi-generator/src/main/resources/php-symfony/testing/ControllerTest.mustache @@ -55,7 +55,7 @@ class ControllerTest extends TestCase ); } - public function dataProviderIsContentTypeAllowed(): array + public static function dataProviderIsContentTypeAllowed(): array { return [ 'usual JSON content type' => [ diff --git a/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache b/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache index 938e213aabb0..6fe5101c306a 100644 --- a/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache +++ b/modules/openapi-generator/src/main/resources/php/ObjectSerializer.mustache @@ -387,7 +387,6 @@ class ObjectSerializer * @param mixed $data object or primitive to be deserialized * @param string $class class name is passed as a string * @param string[] $httpHeaders HTTP headers - * @param string $discriminator discriminator if polymorphism is used * * @return object|array|null a single or an array of $class instances */ diff --git a/modules/openapi-generator/src/main/resources/powershell/api_client.mustache b/modules/openapi-generator/src/main/resources/powershell/api_client.mustache index 6594994bc60a..f760c7d5f56b 100644 --- a/modules/openapi-generator/src/main/resources/powershell/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/powershell/api_client.mustache @@ -36,7 +36,10 @@ function Invoke-{{{apiNamePrefix}}}ApiClient { $Configuration = Get-{{{apiNamePrefix}}}Configuration $RequestUri = $Configuration["BaseUrl"] + $Uri + $DefaultHeaders = $Configuration["DefaultHeaders"] + # should make sure that SkipCertificateCheck is not set for PowerShell 5 $SkipCertificateCheck = $Configuration["SkipCertificateCheck"] + $Proxy = $Configuration["Proxy"] # cookie parameters foreach ($Parameter in $CookieParameters.GetEnumerator()) { @@ -56,19 +59,17 @@ function Invoke-{{{apiNamePrefix}}}ApiClient { $HeaderParameters['Accept'] = $Accept } - [string]$MultiPartBoundary = $null - $ContentType= SelectHeaders -Headers $ContentTypes + # Content-Type and multipart handling + $ContentType = SelectHeaders -Headers $ContentTypes if ($ContentType) { $HeaderParameters['Content-Type'] = $ContentType if ($ContentType -eq 'multipart/form-data') { - [string]$MultiPartBoundary = [System.Guid]::NewGuid() - $MultiPartBoundary = "---------------------------$MultiPartBoundary" - $HeaderParameters['Content-Type'] = "$ContentType; boundary=$MultiPartBoundary" + $MultiPart = $true } } # add default headers if any - foreach ($header in $Configuration["DefaultHeaders"].GetEnumerator()) { + foreach ($header in $DefaultHeaders.GetEnumerator()) { $HeaderParameters[$header.Name] = $header.Value } @@ -89,30 +90,7 @@ function Invoke-{{{apiNamePrefix}}}ApiClient { # include form parameters in the request body if ($FormParameters -and $FormParameters.Count -gt 0) { - if (![string]::IsNullOrEmpty($MultiPartBoundary)) { - $RequestBody = "" - $LF = "`r`n" - $FormParameters.Keys | ForEach-Object { - $value = $FormParameters[$_] - $isFile = $value.GetType().FullName -eq "System.IO.FileInfo" - - $RequestBody += "--$MultiPartBoundary$LF" - $RequestBody += "Content-Disposition: form-data; name=`"$_`"" - if ($isFile) { - $fileName = $value.Name - $RequestBody += "; filename=`"$fileName`"$LF" - $RequestBody += "Content-Type: application/octet-stream$LF$LF" - $RequestBody += Get-Content -Path $value.FullName - } else { - $RequestBody += "$LF$LF" - $RequestBody += ([string]$value) - } - $RequestBody += "$LF--$MultiPartBoundary" - } - $RequestBody += "--" - } else { - $RequestBody = $FormParameters - } + $RequestBody = $FormParameters } if ($Body -or $IsBodyNullable) { @@ -141,54 +119,55 @@ function Invoke-{{{apiNamePrefix}}}ApiClient { } {{/hasHttpSignatureMethods}} + # use splatting to pass parameters + $Params = @{} + $Params.Uri = $UriBuilder.Uri + $Params.Method = $Method + $Params.Headers = $HeaderParameters + $Params.ErrorAction = 'Stop' + if ($SkipCertificateCheck -eq $true) { - if ($null -eq $Configuration["Proxy"]) { - # skip certification check, no proxy - $Response = Invoke-WebRequest -Uri $UriBuilder.Uri ` - -Method $Method ` - -Headers $HeaderParameters ` - -Body $RequestBody ` - -ErrorAction Stop ` - -UseBasicParsing ` - -SkipCertificateCheck - } else { - # skip certification check, use proxy - $Response = Invoke-WebRequest -Uri $UriBuilder.Uri ` - -Method $Method ` - -Headers $HeaderParameters ` - -Body $RequestBody ` - -ErrorAction Stop ` - -UseBasicParsing ` - -SkipCertificateCheck ` - -Proxy $Configuration["Proxy"].GetProxy($UriBuilder.Uri) ` - -ProxyUseDefaultCredentials + $Params.SkipCertificateCheck = $true + } + + if ($null -ne $Proxy) { + $effectiveProxy = $Proxy.GetProxy($UriBuilder.Uri) + # do not set proxy if it is null or same as target Uri + if ($null -ne $effectiveProxy -and $effectiveProxy.AbsoluteUri -ne $UriBuilder.Uri) { + $Params.Proxy = $effectiveProxy.AbsoluteUri + $Params.ProxyUseDefaultCredentials = $true } - } else { - if ($null -eq $Configuration["Proxy"]) { - # perform certification check, no proxy - $Response = Invoke-WebRequest -Uri $UriBuilder.Uri ` - -Method $Method ` - -Headers $HeaderParameters ` - -Body $RequestBody ` - -ErrorAction Stop ` - -UseBasicParsing + } + + # use Invoke-RestApi if Content-Type is 'multipart/form-data', Invoke-WebRequest otherwise + if ($MultiPart) { + if ($PSVersionTable.PSVersion.Major -eq 5) { + # preset null return values as not supported by Invoke-RestMethod on PS5 + $ResponseHeaders = $null + $ResponseStatusCode = $null } else { - # perform certification check, use proxy - $Response = Invoke-WebRequest -Uri $UriBuilder.Uri ` - -Method $Method ` - -Headers $HeaderParameters ` - -Body $RequestBody ` - -ErrorAction Stop ` - -UseBasicParsing ` - -Proxy $Configuration["Proxy"].GetProxy($UriBuilder.Uri) ` - -ProxyUseDefaultCredentials + # preset return variables + $Params.ResponseHeadersVariable = "ResponseHeaders" + $Params.StatusCodeVariable = "ResponseStatusCode" } - } + $Params.Form = $FormParameters + $Response = Invoke-RestMethod @Params + + return @{ + Response = $Response + StatusCode = $ResponseStatusCode + Headers = $ResponseHeaders + } + } else { + $Params.Body = $RequestBody + $Params.UseBasicParsing = $true + $Response = Invoke-WebRequest @Params - return @{ - Response = DeserializeResponse -Response $Response.Content -ReturnType $ReturnType -ContentTypes $Response.Headers["Content-Type"] - StatusCode = $Response.StatusCode - Headers = $Response.Headers + return @{ + Response = DeserializeResponse -Response $Response.Content -ReturnType $ReturnType -ContentTypes $Response.Headers["Content-Type"] + StatusCode = $Response.StatusCode + Headers = $Response.Headers + } } } diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/model_doc.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/model_doc.mustache index deb49f248848..1a745348960a 100644 --- a/modules/openapi-generator/src/main/resources/python-fastapi/model_doc.mustache +++ b/modules/openapi-generator/src/main/resources/python-fastapi/model_doc.mustache @@ -26,7 +26,7 @@ print {{classname}}.to_json() # convert the object into a dict {{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}_dict = {{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}_instance.to_dict() # create an instance of {{classname}} from a dict -{{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}_form_dict = {{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}.from_dict({{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}_dict) +{{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}_from_dict = {{classname}}.from_dict({{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}_dict) ``` {{/isEnum}} [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/requirements.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/requirements.mustache index d8e19d7ac0f3..f33ba924deca 100644 --- a/modules/openapi-generator/src/main/resources/python-fastapi/requirements.mustache +++ b/modules/openapi-generator/src/main/resources/python-fastapi/requirements.mustache @@ -5,7 +5,7 @@ async-generator==1.10 certifi==2023.7.22 chardet==4.0.0 click==7.1.2 -dnspython==2.1.0 +dnspython==2.6.1 email-validator==2.0.0 fastapi==0.109.2 graphene==2.1.8 @@ -14,7 +14,7 @@ graphql-relay==2.0.1 h11==0.12.0 httptools==0.1.2 httpx==0.24.1 -idna==2.10 +idna==3.7 itsdangerous==1.1.0 Jinja2==2.11.3 MarkupSafe==2.0.1 diff --git a/modules/openapi-generator/src/main/resources/python-pydantic-v1/model_doc.mustache b/modules/openapi-generator/src/main/resources/python-pydantic-v1/model_doc.mustache index dd54470b3be5..1f8d55555f73 100644 --- a/modules/openapi-generator/src/main/resources/python-pydantic-v1/model_doc.mustache +++ b/modules/openapi-generator/src/main/resources/python-pydantic-v1/model_doc.mustache @@ -25,7 +25,7 @@ print {{classname}}.to_json() # convert the object into a dict {{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}_dict = {{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}_instance.to_dict() # create an instance of {{classname}} from a dict -{{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}_form_dict = {{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}.from_dict({{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}_dict) +{{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}_from_dict = {{classname}}.from_dict({{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}_dict) ``` {{/isEnum}} [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/modules/openapi-generator/src/main/resources/python/api_client.mustache b/modules/openapi-generator/src/main/resources/python/api_client.mustache index 67395798dde6..97b8f8d84c72 100644 --- a/modules/openapi-generator/src/main/resources/python/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/python/api_client.mustache @@ -358,6 +358,8 @@ class ApiClient: """ if obj is None: return None + elif isinstance(obj, Enum): + return obj.value elif isinstance(obj, SecretStr): return obj.get_secret_value() elif isinstance(obj, self.PRIMITIVE_TYPES): diff --git a/modules/openapi-generator/src/main/resources/python/model_doc.mustache b/modules/openapi-generator/src/main/resources/python/model_doc.mustache index eff8f21e3e0b..6099ddf1954a 100644 --- a/modules/openapi-generator/src/main/resources/python/model_doc.mustache +++ b/modules/openapi-generator/src/main/resources/python/model_doc.mustache @@ -26,7 +26,7 @@ print({{classname}}.to_json()) # convert the object into a dict {{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}_dict = {{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}_instance.to_dict() # create an instance of {{classname}} from a dict -{{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}_form_dict = {{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}.from_dict({{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}_dict) +{{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}_from_dict = {{classname}}.from_dict({{#lambda.snakecase}}{{classname}}{{/lambda.snakecase}}_dict) ``` {{/isEnum}} [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/modules/openapi-generator/src/main/resources/rust-axum/Cargo.mustache b/modules/openapi-generator/src/main/resources/rust-axum/Cargo.mustache index d313de7116bb..47bdeba6b61c 100644 --- a/modules/openapi-generator/src/main/resources/rust-axum/Cargo.mustache +++ b/modules/openapi-generator/src/main/resources/rust-axum/Cargo.mustache @@ -42,7 +42,7 @@ conversion = [ async-trait = "0.1" axum = { version = "0.7" } axum-extra = { version = "0.9", features = ["cookie", "multipart"] } -base64 = "0.21" +base64 = "0.22" bytes = "1" chrono = { version = "0.4", features = ["serde"] } frunk = { version = "0.4", optional = true } @@ -62,7 +62,7 @@ tokio = { version = "1", default-features = false, features = [ ] } tracing = { version = "0.1", features = ["attributes"] } uuid = { version = "1", features = ["serde"] } -validator = { version = "0.16", features = ["derive"] } +validator = { version = "0.18", features = ["derive"] } [dev-dependencies] tracing-subscriber = "0.3" diff --git a/modules/openapi-generator/src/main/resources/rust-axum/lib.mustache b/modules/openapi-generator/src/main/resources/rust-axum/lib.mustache index ef07e5afa963..d96088f86a4a 100644 --- a/modules/openapi-generator/src/main/resources/rust-axum/lib.mustache +++ b/modules/openapi-generator/src/main/resources/rust-axum/lib.mustache @@ -1,5 +1,13 @@ -#![allow(missing_docs, trivial_casts, unused_variables, unused_mut, unused_imports, unused_extern_crates, non_camel_case_types)] -#![allow(unused_imports, unused_attributes)] +#![allow( + missing_docs, + trivial_casts, + unused_variables, + unused_mut, + unused_extern_crates, + non_camel_case_types, + unused_imports, + unused_attributes +)] #![allow(clippy::derive_partial_eq_without_eq, clippy::disallowed_names)] use async_trait::async_trait; diff --git a/modules/openapi-generator/src/main/resources/rust-axum/models.mustache b/modules/openapi-generator/src/main/resources/rust-axum/models.mustache index f4760d0a9b71..44ed4ed6bf4b 100644 --- a/modules/openapi-generator/src/main/resources/rust-axum/models.mustache +++ b/modules/openapi-generator/src/main/resources/rust-axum/models.mustache @@ -36,10 +36,10 @@ use crate::{models, types::*}; {{/maxLength}} {{#pattern}} {{^isByteArray}} - regex = "RE_{{#lambda.uppercase}}{{{operationIdCamelCase}}}HeaderParams_{{{paramName}}}{{/lambda.uppercase}}", + regex(path = *RE_{{#lambda.uppercase}}{{{operationIdCamelCase}}}HeaderParams_{{{paramName}}}{{/lambda.uppercase}}), {{/isByteArray}} {{#isByteArray}} - custom ="validate_byte_{{#lambda.lowercase}}{{{operationIdCamelCase}}}HeaderParams_{{{paramName}}}{{/lambda.lowercase}}" + custom(function = "validate_byte_{{#lambda.lowercase}}{{{operationIdCamelCase}}}HeaderParams_{{{paramName}}}{{/lambda.lowercase}}"), {{/isByteArray}} {{/pattern}} {{#maximum}} @@ -128,10 +128,10 @@ use crate::{models, types::*}; {{/maxLength}} {{#pattern}} {{^isByteArray}} - regex = "RE_{{#lambda.uppercase}}{{{operationIdCamelCase}}}PathParams_{{{paramName}}}{{/lambda.uppercase}}", + regex(path = *RE_{{#lambda.uppercase}}{{{operationIdCamelCase}}}PathParams_{{{paramName}}}{{/lambda.uppercase}}), {{/isByteArray}} {{#isByteArray}} - custom ="validate_byte_{{#lambda.lowercase}}{{{operationIdCamelCase}}}PathParams_{{{paramName}}}{{/lambda.lowercase}}" + custom(function = "validate_byte_{{#lambda.lowercase}}{{{operationIdCamelCase}}}PathParams_{{{paramName}}}{{/lambda.lowercase}}"), {{/isByteArray}} {{/pattern}} {{#maximum}} @@ -232,10 +232,10 @@ use crate::{models, types::*}; {{/maxLength}} {{#pattern}} {{^isByteArray}} - regex = "RE_{{#lambda.uppercase}}{{{operationIdCamelCase}}}QueryParams_{{{paramName}}}{{/lambda.uppercase}}", + regex(path = *RE_{{#lambda.uppercase}}{{{operationIdCamelCase}}}QueryParams_{{{paramName}}}{{/lambda.uppercase}}), {{/isByteArray}} {{#isByteArray}} - custom ="validate_byte_{{#lambda.lowercase}}{{{operationIdCamelCase}}}QueryParams_{{{paramName}}}{{/lambda.lowercase}}" + custom(function = "validate_byte_{{#lambda.lowercase}}{{{operationIdCamelCase}}}QueryParams_{{{paramName}}}{{/lambda.lowercase}}"), {{/isByteArray}} {{/pattern}} {{#maximum}} @@ -639,10 +639,10 @@ pub struct {{{classname}}} { {{/maxLength}} {{#pattern}} {{^isByteArray}} - regex = "RE_{{#lambda.uppercase}}{{{classname}}}_{{{name}}}{{/lambda.uppercase}}", + regex(path = *RE_{{#lambda.uppercase}}{{{classname}}}_{{{name}}}{{/lambda.uppercase}}), {{/isByteArray}} {{#isByteArray}} - custom ="validate_byte_{{#lambda.lowercase}}{{{classname}}}_{{{name}}}{{/lambda.lowercase}}" + custom(function = "validate_byte_{{#lambda.lowercase}}{{{classname}}}_{{{name}}}{{/lambda.lowercase}}"), {{/isByteArray}} {{/pattern}} {{#maximum}} diff --git a/modules/openapi-generator/src/main/resources/rust-axum/server-operation-validate.mustache b/modules/openapi-generator/src/main/resources/rust-axum/server-operation-validate.mustache index 6bacec901701..54a0ab28e35a 100644 --- a/modules/openapi-generator/src/main/resources/rust-axum/server-operation-validate.mustache +++ b/modules/openapi-generator/src/main/resources/rust-axum/server-operation-validate.mustache @@ -22,10 +22,10 @@ {{/maxLength}} {{#pattern}} {{#isString}} - regex = "RE_{{#lambda.uppercase}}{{{operationIdCamelCase}}}BodyValidator{{/lambda.uppercase}}", + regex(path = *RE_{{#lambda.uppercase}}{{{operationIdCamelCase}}}BodyValidator{{/lambda.uppercase}}), {{/isString}} {{^isString}} - custom ="validate_byte_{{#lambda.lowercase}}{{{operationIdCamelCase}}}BodyValidator{{/lambda.lowercase}}", + custom(function = "validate_byte_{{#lambda.lowercase}}{{{operationIdCamelCase}}}BodyValidator{{/lambda.lowercase}}"), {{/isString}} {{/pattern}} {{#maximum}} @@ -59,7 +59,7 @@ {{^x-consumes-plain-text}} {{^hasValidation}} {{^isMap}} - #[validate] + #[validate(nested)] {{/isMap}} {{/hasValidation}} body: &'a {{{dataType}}}, @@ -218,4 +218,4 @@ Ok(( {{/x-consumes-multipart}} {{/x-consumes-multipart-related}} )) -} +} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/rust/Cargo.mustache b/modules/openapi-generator/src/main/resources/rust/Cargo.mustache index 8c2510345b33..d6fa2e3efcb6 100644 --- a/modules/openapi-generator/src/main/resources/rust/Cargo.mustache +++ b/modules/openapi-generator/src/main/resources/rust/Cargo.mustache @@ -35,7 +35,7 @@ homepage = "{{.}} serde = "^1.0" serde_derive = "^1.0" {{#serdeWith}} -serde_with = "^2.0" +serde_with = { version = "^3", default-features = false, features = ["base64", "std", "macros"] } {{/serdeWith}} serde_json = "^1.0" url = "^2.2" diff --git a/modules/openapi-generator/src/main/resources/rust/model.mustache b/modules/openapi-generator/src/main/resources/rust/model.mustache index d3dfc6300477..7c2c1bcd0080 100644 --- a/modules/openapi-generator/src/main/resources/rust/model.mustache +++ b/modules/openapi-generator/src/main/resources/rust/model.mustache @@ -2,7 +2,9 @@ use crate::models; {{#models}} {{#model}} - +{{^isEnum}}{{#vendorExtensions.x-rust-has-byte-array}} +use serde_with::serde_as; +{{/vendorExtensions.x-rust-has-byte-array}}{{/isEnum}} {{#description}} /// {{{classname}}} : {{{description}}} {{/description}} @@ -85,15 +87,18 @@ impl Default for {{classname}} { {{!-- for non-enum schemas --}} {{^isEnum}} {{^discriminator}} -{{#oneOf.isEmpty}} -#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] +{{#vendorExtensions.x-rust-has-byte-array}}#[serde_as] +{{/vendorExtensions.x-rust-has-byte-array}}{{#oneOf.isEmpty}}#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)] pub struct {{{classname}}} { {{#vars}} {{#description}} /// {{{.}}} {{/description}} + {{#isByteArray}} + {{#required}}#[serde_as(as = "serde_with::base64::Base64")]{{/required}}{{^required}}#[serde_as(as = "Option")]{{/required}} + {{/isByteArray}} #[serde(rename = "{{{baseName}}}"{{^required}}{{#isNullable}}, default, with = "::serde_with::rust::double_option"{{/isNullable}}{{/required}}{{^required}}, skip_serializing_if = "Option::is_none"{{/required}}{{#required}}{{#isNullable}}, deserialize_with = "Option::deserialize"{{/isNullable}}{{/required}})] - pub {{{name}}}: {{#isNullable}}Option<{{/isNullable}}{{^required}}Option<{{/required}}{{#isEnum}}{{#isArray}}{{#uniqueItems}}std::collections::HashSet<{{/uniqueItems}}{{^uniqueItems}}Vec<{{/uniqueItems}}{{/isArray}}{{{enumName}}}{{#isArray}}>{{/isArray}}{{/isEnum}}{{^isEnum}}{{#isModel}}{{^avoidBoxedModels}}Box<{{/avoidBoxedModels}}{{{dataType}}}{{^avoidBoxedModels}}>{{/avoidBoxedModels}}{{/isModel}}{{^isModel}}{{{dataType}}}{{/isModel}}{{/isEnum}}{{#isNullable}}>{{/isNullable}}{{^required}}>{{/required}}, + pub {{{name}}}: {{#isNullable}}Option<{{/isNullable}}{{^required}}Option<{{/required}}{{#isEnum}}{{#isArray}}{{#uniqueItems}}std::collections::HashSet<{{/uniqueItems}}{{^uniqueItems}}Vec<{{/uniqueItems}}{{/isArray}}{{{enumName}}}{{#isArray}}>{{/isArray}}{{/isEnum}}{{^isEnum}}{{#isModel}}{{^avoidBoxedModels}}Box<{{/avoidBoxedModels}}{{{dataType}}}{{^avoidBoxedModels}}>{{/avoidBoxedModels}}{{/isModel}}{{^isModel}}{{#isByteArray}}Vec{{/isByteArray}}{{^isByteArray}}{{{dataType}}}{{/isByteArray}}{{/isModel}}{{/isEnum}}{{#isNullable}}>{{/isNullable}}{{^required}}>{{/required}}, {{/vars}} } @@ -101,7 +106,7 @@ impl {{{classname}}} { {{#description}} /// {{{.}}} {{/description}} - pub fn new({{#requiredVars}}{{{name}}}: {{#isNullable}}Option<{{/isNullable}}{{#isEnum}}{{#isArray}}{{#uniqueItems}}std::collections::HashSet<{{/uniqueItems}}{{^uniqueItems}}Vec<{{/uniqueItems}}{{/isArray}}{{{enumName}}}{{#isArray}}>{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#isNullable}}>{{/isNullable}}{{^-last}}, {{/-last}}{{/requiredVars}}) -> {{{classname}}} { + pub fn new({{#requiredVars}}{{{name}}}: {{#isNullable}}Option<{{/isNullable}}{{#isEnum}}{{#isArray}}{{#uniqueItems}}std::collections::HashSet<{{/uniqueItems}}{{^uniqueItems}}Vec<{{/uniqueItems}}{{/isArray}}{{{enumName}}}{{#isArray}}>{{/isArray}}{{/isEnum}}{{^isEnum}}{{#isByteArray}}Vec{{/isByteArray}}{{^isByteArray}}{{{dataType}}}{{/isByteArray}}{{/isEnum}}{{#isNullable}}>{{/isNullable}}{{^-last}}, {{/-last}}{{/requiredVars}}) -> {{{classname}}} { {{{classname}}} { {{#vars}} {{{name}}}{{^required}}: None{{/required}}{{#required}}{{#isModel}}{{^avoidBoxedModels}}: {{^isNullable}}Box::new({{{name}}}){{/isNullable}}{{#isNullable}}if let Some(x) = {{{name}}} {Some(Box::new(x))} else {None}{{/isNullable}}{{/avoidBoxedModels}}{{/isModel}}{{/required}}, diff --git a/modules/openapi-generator/src/main/resources/scala-cask/.scalafmt.conf.mustache b/modules/openapi-generator/src/main/resources/scala-cask/.scalafmt.conf.mustache new file mode 100644 index 000000000000..e150d4c409d2 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/.scalafmt.conf.mustache @@ -0,0 +1,4 @@ +version = 3.6.1 +align.preset = more // For pretty alignment. +maxColumn = 100 +runner.dialect = scala3 \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/scala-cask/Dockerfile.mustache b/modules/openapi-generator/src/main/resources/scala-cask/Dockerfile.mustache new file mode 100644 index 000000000000..0c5487539733 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/Dockerfile.mustache @@ -0,0 +1,13 @@ +FROM virtuslab/scala-cli:latest as build +WORKDIR /app +COPY ./Server.scala /app/ +# note: this assumes a published server stub jar. +# If you've published this locally, you would need to copy those into this image, +# perhaps by using coursier fetch +RUN scala-cli --power package /app/Server.scala --assembly -o app.jar + +# The main image +FROM openjdk:23-slim +WORKDIR /app +COPY --from=build /app/app.jar /app/ +ENTRYPOINT ["java", "-jar", "/app/app.jar"] diff --git a/modules/openapi-generator/src/main/resources/scala-cask/README.mustache b/modules/openapi-generator/src/main/resources/scala-cask/README.mustache new file mode 100644 index 000000000000..39e65480193a --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/README.mustache @@ -0,0 +1,96 @@ +# REST Service + +This project contains the data models and REST services, generated from the [openapi-generator](https://github.com/OpenAPITools/openapi-generator) project. + +The server implementation is based on Li's excellent [cask](https://com-lihaoyi.github.io/cask/) library. + +# How to use this code + +This code was designed so that it can be packaged up and semantically-versioned alongside your open-api schema. + +That approach supports having separate "contract" repositories for microservice projects, where the pipeline for the +contract repo might produce versioned jar artefacts which can then easily be brought in / referenced by a separate service project which simply +implements the business logic. + +You can read more about this approach [here](https://github.com/kindservices/contract-first-rest) + +# How to implement your business logic +There are a few options for using this code/applying your business logic for the services. + +## Option 1 (preferred): Package and publish this boilerplate +Typically, OpenApi templates are written to generate code which co-exists alongside the handwritten business logic. + +While that works, it's also not ideal: + * You have to ensure the generated code isn't checked in + * Team members, build pipelines, etc all have to regenerate and recompile the same boilerplate code over and over + * People can encounter IDE issues with generated code + +Instead, you have the option of simply packaging/publishing this generated code, and then allowing service implementations +to simply bring in the published code as a dependency. + +The steps to do that are: + +### Build/Publish +This project is built using [sbt](https://www.scala-sbt.org/download/), so you can run `sbt publish` (or `sbt publishLocal`) + +Or, for a zero-install docker build: +```bash +docker run -it --rm -v $(pwd):/app -w /app sbtscala/scala-sbt:eclipse-temurin-17.0.4_1.7.1_3.2.0 sbt publishLocal +``` + +### Create a new separate implementation project +Once published, you can create your server implementation in a new, clean, separate project based on [the example](./example) + +This means all the boilerplate endpoint and model code is brought in as "just another jar", and you're free to +create a greenfield project in whatever language (scala, java, kotlin) and build system of your choosing. + +We show a simple, minimalistic example of a starting point in [the example project](./example) + +## Option 2: Extend this generated example +You can configure this project (for instance, setting up your own .gitignore rules and scripts) to leave the generated code as-is +and provide your implementation alongside the generated code. + +The place to start is by providing your own implementation of the Services defined in the `api` package - +perhaps by creating your 'MyService.scala' code in a new `impl` package. + +You then have several options for how to wire those in: + +1) Create a new BaseApp instance to create your own Main entry point +Follow the pattern in App.scala, but by passing your own implementations to BaseApp, +ensuring you call `start` to start the server + +```bash +@main def run() = BaseApp(/* your services here/*).start() +``` + +2) Extend either BaseApp class or mix in the AppRoutes trait +You can create your own main entry point with further control of the main cask app by extending +the BaseApp or otherwise creating your own CaskApp which mixes in the AppRoutes + +```bash +object MyApp extends BaseApp(/* your services here/*) { + // any overrides, new routes, etc here + start() +} +``` + + +# Customising the generated code + +A typical config.yml used to alter the generated code may look like this: +``` +groupId: "ex.amp.le" +artifactId: "pets-test" +apiPackage: "ex.ample.api" +modelPackage: "ex.ample.model" +``` + +Which you would then pass to the generator like this: +``` +docker run --rm \ +-v ${PWD}:/local openapitools/openapi-generator-cli generate \ +-i https://raw.githubusercontent.com/OAI/OpenAPI-Specification/main/examples/v3.0/petstore.yaml \ +-g scala-cask \ +-c /local/config.yml \ +-o /local/path/to/output_dir +``` diff --git a/modules/openapi-generator/src/main/resources/scala-cask/api.mustache b/modules/openapi-generator/src/main/resources/scala-cask/api.mustache new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/modules/openapi-generator/src/main/resources/scala-cask/apiPackage.mustache b/modules/openapi-generator/src/main/resources/scala-cask/apiPackage.mustache new file mode 100644 index 000000000000..6acc47b31000 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/apiPackage.mustache @@ -0,0 +1,155 @@ +{{>licenseInfo}} +package {{apiPackage}} + + +import cask.FormEntry +import io.undertow.server.handlers.form.{FormData, FormParserFactory} + +import java.io.File +import scala.jdk.CollectionConverters.* +import java.time.LocalDate +import java.util.UUID +import scala.reflect.ClassTag +import scala.util.* + +// needed for BigDecimal params +given cask.endpoints.QueryParamReader.SimpleParam[BigDecimal](BigDecimal.apply) + +// a parsed value from an HTTP request +opaque type Parsed[A] = Either[String, A] + +object Parsed { + def apply[A](value: A): Parsed[A] = Right(value) + + def eval[A](value: => A): Parsed[A] = Try(value) match { + case Failure(exp) => Left(s"Error: ${exp.getMessage}") + case Success(ok) => Right(ok) + } + + def fromTry[A](value : Try[A]) = value match { + case Failure(err) => Left(err.getMessage) + case Success(ok) => Right(ok) + } + + def fail[A](msg: String): Parsed[A] = Left(msg) + + def optionalValue(map: Map[String, collection.Seq[String]], key: String): Parsed[Option[String]] = { + map.get(key) match { + case Some(Seq(only: String)) => Parsed(Option(only)) + case Some(Seq()) => Parsed(None) + case Some(many) => Parsed.fail(s"${many.size} values set for '$key'") + case None => Parsed(None) + } + } + + def singleValue(map: Map[String, collection.Seq[String]], key : String): Parsed[String] = { + map.get(key) match { + case Some(Seq(only : String)) => Parsed(only) + case Some(Seq()) => Parsed("") + case Some(many) => Parsed.fail(s"${many.size} values set for '$key'") + case None => Parsed.fail(s"required '$key' was not set") + } + } + + def manyValues(map: Map[String, collection.Seq[String]], key : String, required: Boolean): Parsed[List[String]] = { + map.get(key) match { + case Some(many) => Parsed(many.toList) + case None if required => Parsed.fail(s"required '$key' was not set") + case None => Parsed(Nil) + } + } +} + +extension[A] (parsed: Parsed[A]) { + def toEither: Either[String, A] = parsed + + def asLong(using ev : A =:= String): Parsed[Long] = as[Long](_.toLongOption) + def asBoolean(using ev : A =:= String): Parsed[Boolean] = as[Boolean](_.toBooleanOption) + def asInt(using ev : A =:= String): Parsed[Int] = as[Int](_.toIntOption) + def asByte(using ev : A =:= String): Parsed[Byte] = as[Byte](_.toByteOption) + def asUuid(using ev : A =:= String): Parsed[UUID] = as[UUID](x => Try(UUID.fromString(x)).toOption) + def asFloat(using ev : A =:= String): Parsed[Float] = as[Float](_.toFloatOption) + def asDouble(using ev : A =:= String): Parsed[Double] = as[Double](_.toDoubleOption) + def asDate(using ev: A =:= String): Parsed[LocalDate] = as[LocalDate](x => Try(LocalDate.parse(x)).toOption) + + private def as[B : ClassTag](f : String => Option[B])(using ev : A =:= String): Parsed[B] = parsed.flatMap { str => + f(ev(str)) match { + case None => Parsed.fail(s"'$str' cannot be parsed as a ${implicitly[ClassTag[B]].runtimeClass}") + case Some(x) => Parsed(x) + } + } + + + def mapError(f : String => String) : Parsed[A] = parsed match { + case Left(msg) => Left(f(msg)) + case right => right + } + + def map[B](f: A => B): Parsed[B] = parsed match { + case Right(value) => Right(f(value)) + case Left(err) => Left(err) + } + def flatMap[B](f : A => Parsed[B]): Parsed[B] = parsed match { + case Right(value) => f(value) + case Left(err) => Left(err) + } +} + + +extension (request: cask.Request) { + + def formSingleValueRequired(paramName: String): Parsed[String] = { + val data = formDataForKey(paramName).map(_.getValue).toSeq + Parsed.singleValue(Map(paramName -> data), paramName) + } + def formSingleValueOptional(paramName: String): Parsed[Option[String]] = { + val data = formDataForKey(paramName).map(_.getValue).toSeq + Parsed.optionalValue(Map(paramName -> data), paramName) + } + + def formValueAsFileOptional(paramName: String): Parsed[Option[File]] = { + val data = formDataForKey(paramName) + data.map(_.getFileItem.getFile.toFile).toSeq match { + case Seq() => Parsed(None) + case Seq(file) => Parsed(Option(file)) + case many => Parsed.fail(s"${many.size} file values set for '$paramName'") + } + } + + def formValueAsFileRequired(paramName: String): Parsed[File] = { + val data = formDataForKey(paramName) + data.map(_.getFileItem.getFile.toFile).toSeq match { + case Seq() => Parsed.fail(s"No file form data was submitted for '$paramName'. The submitted form keys were: ${formDataKeys.mkString(",")}") + case Seq(file) => Parsed(file) + case many => Parsed.fail(s"${many.size} file values set for '$paramName'") + } + } + + def formManyValues(paramName: String, required: Boolean): Parsed[List[String]] = { + val data = formDataForKey(paramName).map(_.getValue).toSeq + Parsed.manyValues(Map(paramName -> data), paramName, required) + } + + def formData: FormData = FormParserFactory.builder().build().createParser(request.exchange).parseBlocking() + + def formDataKeys: Iterator[String] = formData.iterator().asScala + + def formDataForKey(paramName: String): Iterable[FormData.FormValue] = formData.get(paramName).asScala + + def headerSingleValueOptional(paramName: String): Parsed[Option[String]] = Parsed.optionalValue(request.headers, paramName) + def headerSingleValueRequired(paramName: String): Parsed[String] = Parsed.singleValue(request.headers, paramName) + + def headerManyValues(paramName: String, required: Boolean): Parsed[List[String]] = Parsed.manyValues(request.headers, paramName, required) + + def bodyAsString = new String(request.readAllBytes(), "UTF-8") + + def pathValue(index: Int, paramName: String, required : Boolean): Parsed[String] = { + request + .remainingPathSegments + .lift(index) match { + case Some(value) => Right(value) + case None if required => Left(s"'$paramName'' is a required path parameter at path position $index") + case None => Right("") + } + } +} diff --git a/modules/openapi-generator/src/main/resources/scala-cask/apiRoutes.mustache b/modules/openapi-generator/src/main/resources/scala-cask/apiRoutes.mustache new file mode 100644 index 000000000000..db3cdd65cb44 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/apiRoutes.mustache @@ -0,0 +1,61 @@ +//> using scala "3.3.1" +//> using lib "com.lihaoyi::cask:0.8.3" +//> using lib "com.lihaoyi::scalatags:0.12.0" +{{>licenseInfo}} + +// this is generated from apiRoutes.mustache +package {{apiPackage}} + +import {{modelPackage}}.* + +import upickle.default.{ReadWriter => RW, macroRW} +import upickle.default.* + +{{#imports}}import {{import}} +{{/imports}} + +class {{classname}}Routes(service : {{classname}}Service) extends cask.Routes { + +{{#route-groups}} + // route group for {{methodName}} + {{caskAnnotation}}("{{pathPrefix}}", true) + def {{methodName}}(request: cask.Request{{>apiRoutesQueryParamsTyped}}) = { + request.remainingPathSegments match { + {{#operations}} + case Seq({{>pathExtractor}}) => {{operationId}}({{>pathExtractorParams}}request{{>queryParams}}) + {{/operations}} + case _ => cask.Response("Not Found", statusCode = 404) + } + } +{{/route-groups}} + +{{#operations}} + {{#operation}} + /** {{summary}} + * {{description}} + */ + {{vendorExtensions.x-annotation}}("{{vendorExtensions.x-cask-path}}") + def {{operationId}}({{vendorExtensions.x-cask-path-typed}}) = { + {{#authMethods}} + // auth method {{name}} : {{type}}, keyParamName: {{keyParamName}} + {{/authMethods}} + + def failFast = request.queryParams.keySet.contains("failFast") + + val result = {{>parseHttpParams}} + + result match { + case Left(error) => cask.Response(error, 500) + {{#responses}} + {{#dataType}} + case Right(value : {{dataType}}) => cask.Response(data = write(value), {{code}}, headers = Seq("Content-Type" -> "application/json")) + {{/dataType}} + {{/responses}} + case Right(other) => cask.Response(s"$other", 200) + } + } + {{/operation}} +{{/operations}} + + initialize() +} diff --git a/modules/openapi-generator/src/main/resources/scala-cask/apiRoutesQueryParamsTyped.mustache b/modules/openapi-generator/src/main/resources/scala-cask/apiRoutesQueryParamsTyped.mustache new file mode 100644 index 000000000000..8356421c485b --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/apiRoutesQueryParamsTyped.mustache @@ -0,0 +1 @@ +{{#hasGroupQueryParams}},{{/hasGroupQueryParams}}{{#groupQueryParams}}{{paramName}} : {{dataType}} = {{defaultValue}}{{^-last}},{{/-last}}{{/groupQueryParams}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/scala-cask/apiService.mustache b/modules/openapi-generator/src/main/resources/scala-cask/apiService.mustache new file mode 100644 index 000000000000..30ea17b60dde --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/apiService.mustache @@ -0,0 +1,37 @@ +//> using scala "3.3.1" +//> using lib "com.lihaoyi::cask:0.8.3" +//> using lib "com.lihaoyi::scalatags:0.12.0" +{{>licenseInfo}} + +// generated from apiService.mustache +package {{apiPackage}} + +{{#imports}}import _root_.{{import}} +{{/imports}} + +import _root_.{{modelPackage}}.* + +object {{classname}}Service { + def apply() : {{classname}}Service = new {{classname}}Service { +{{#operations}} + {{#operation}} + override def {{operationId}}({{vendorExtensions.x-param-list-typed}}) : {{vendorExtensions.x-response-type}} = ??? + {{/operation}} +{{/operations}} + } +} + +/** + * The {{classname}} business-logic + */ +trait {{classname}}Service { +{{#operations}} +{{#operation}} + /** {{{summary}}} + * {{{description}}} + * @return {{returnType}} + */ + def {{operationId}}({{vendorExtensions.x-param-list-typed}}) : {{vendorExtensions.x-response-type}} +{{/operation}} +{{/operations}} +} diff --git a/modules/openapi-generator/src/main/resources/scala-cask/appPackage.mustache b/modules/openapi-generator/src/main/resources/scala-cask/appPackage.mustache new file mode 100644 index 000000000000..614e06bb9e1d --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/appPackage.mustache @@ -0,0 +1,12 @@ +{{>licenseInfo}} +package {{packageName}} + +def box(str: String): String = { + val lines = str.linesIterator.toList + val maxLen = (0 +: lines.map(_.length)).max + val boxed = lines.map { line => + s" | ${line.padTo(maxLen, ' ')} |" + } + val bar = " +-" + ("-" * maxLen) + "-+" + (bar +: boxed :+ bar).mkString("\n") +} diff --git a/modules/openapi-generator/src/main/resources/scala-cask/appRoutes.mustache b/modules/openapi-generator/src/main/resources/scala-cask/appRoutes.mustache new file mode 100644 index 000000000000..5006b4677757 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/appRoutes.mustache @@ -0,0 +1,40 @@ +//> using scala "3.3.1" +//> using lib "com.lihaoyi::cask:0.9.2" +//> using lib "com.lihaoyi::scalatags:0.8.2" +{{>licenseInfo}} + +// this file was generated from app.mustache +package {{packageName}} + +{{#imports}}import {{import}} +{{/imports}} +import _root_.{{modelPackage}}.* +import _root_.{{apiPackage}}.* + +/** + * This trait encapsulates the business logic (services) and the + * http routes which handle the http requests sent to those services. + * + * There are default 'not implemented' implementations for the service. + * + * If you wanted fine-grained control over the routes and services, you could + * extend the cask.MainRoutes and mix in this trait by using this: + * + * \{\{\{ + * override def allRoutes = appRoutes + * \}\}\} + * + * More typically, however, you would extend the 'BaseApp' class + */ +trait AppRoutes { +{{#operations}} + def app{{classname}}Service : {{classname}}Service = {{classname}}Service() + def routeFor{{classname}} : {{classname}}Routes = {{classname}}Routes(app{{classname}}Service) +{{/operations}} + + def appRoutes = Seq( +{{#operations}} + routeFor{{classname}} {{^-last}},{{/-last}} +{{/operations}} + ) +} diff --git a/modules/openapi-generator/src/main/resources/scala-cask/baseApp.mustache b/modules/openapi-generator/src/main/resources/scala-cask/baseApp.mustache new file mode 100644 index 000000000000..b8f019873c56 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/baseApp.mustache @@ -0,0 +1,49 @@ +//> using scala "3.3.1" +//> using lib "com.lihaoyi::cask:0.9.2" +//> using lib "com.lihaoyi::scalatags:0.8.2" +{{>licenseInfo}} + +// this file was generated from app.mustache +package {{packageName}} + +{{#imports}}import {{import}} +{{/imports}} +import _root_.{{modelPackage}}.* +import _root_.{{apiPackage}}.* + +/** + * This class was created with the intention of being extended by some runnable object, + * passing in the custom business logic services + */ +class BaseApp({{#operations}} + override val app{{classname}}Service : {{classname}}Service = {{classname}}Service(), +{{/operations}} + override val port : Int = sys.env.get("PORT").map(_.toInt).getOrElse(8080)) extends cask.MainRoutes with AppRoutes { + + /** routes for the UI + * Subclasses can override to turn this off + */ + def openApiRoute: Option[cask.Routes] = Option(OpenApiRoutes(port)) + + override def allRoutes = appRoutes ++ openApiRoute + + {{^operations}} + // no operations! + {{/operations}} + + override def host: String = "0.0.0.0" + + def start() = locally { + initialize() + println(box(s""" 🚀 browse to localhost:$port 🚀 + | host : $host + | port : $port + | verbose : $verbose + | debugMode : $debugMode + |""".stripMargin)) + + // if java.awt.Desktop.isDesktopSupported then { + // java.awt.Desktop.getDesktop.browse(new java.net.URI(s"http://localhost:${port}")) + // } + } +} diff --git a/modules/openapi-generator/src/main/resources/scala-cask/build.sbt.mustache b/modules/openapi-generator/src/main/resources/scala-cask/build.sbt.mustache new file mode 100644 index 000000000000..ea6b9ffbd956 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/build.sbt.mustache @@ -0,0 +1,53 @@ +ThisBuild / name := "{{artifactId}}" +ThisBuild / organization := "{{groupId}}" +ThisBuild / version := "{{artifactVersion}}" +ThisBuild / scalaVersion := "3.4.1" +ThisBuild / scalafmtOnCompile := true +ThisBuild / versionScheme := Some("early-semver") + +// Common settings +lazy val commonSettings = Seq( + libraryDependencies ++= Seq( + "com.lihaoyi" %%% "upickle" % "3.2.0", + "org.scalatest" %%% "scalatest" % "3.2.18" % Test + ), + name := "{{artifactId}}" +) + + +lazy val app = crossProject(JSPlatform, JVMPlatform).in(file(".")). + settings(commonSettings). + jvmSettings( + libraryDependencies += "com.lihaoyi" %% "cask" % "0.9.2" + ). + jsSettings( + scalaJSUseMainModuleInitializer := true + ) + + +lazy val root = project.in(file(".")). + aggregate(app.js, app.jvm). + settings( + publish := {}, + publishLocal := {}, + ) + + +ThisBuild / publishMavenStyle := true + +val githubUser = "{{{gitUserId}}}" +val githubRepo = "{{{gitRepoId}}}" +ThisBuild / publishTo := Some("GitHub Package Registry" at s"https://maven.pkg.github.com/$githubUser/$githubRepo") + +sys.env.get("GITHUB_TOKEN") match { + case Some(token) if !token.isEmpty => + ThisBuild / credentials += Credentials( + "GitHub Package Registry", + "maven.pkg.github.com", + githubUser, + token + ) + case _ => + println("\n\t\tGITHUB_TOKEN not set - assuming a local build\n\n") + credentials ++= Nil +} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/scala-cask/build.sc.mustache b/modules/openapi-generator/src/main/resources/scala-cask/build.sc.mustache new file mode 100644 index 000000000000..5107dce11a57 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/build.sc.mustache @@ -0,0 +1,43 @@ +import mill._, scalalib._, scalafmt._, publish._ + +// Mill build file (see https://mill-build.com/mill/Intro_to_Mill.html). +// run with: +// +// mill _.compile +// mill _.reformat +// mill _.publishLocal +// mill _.test.test +object {{artifactId}} extends SbtModule with ScalafmtModule with PublishModule { + def scalaVersion = "3.4.1" + + def pomSettings = PomSettings( + description = "{{artifactId}}", + organization = "{{groupId}}", + url = "https://github.com//{{artifactId}}", + licenses = Seq(License.MIT), + versionControl = VersionControl.github("", "{{artifactId}}"), + developers = Seq( + // Developer("", "", "https://github.com/") + ) + ) + + def publishVersion: mill.T[String] = T("{{artifactVersion}}") + + def ivyDeps = Agg( + ivy"com.lihaoyi::cask:0.9.2" , + ivy"com.lihaoyi::upickle:3.2.0" + ) + + override def sources = T.sources(millSourcePath / os.up / "shared" / "src" / "main" / "scala") + override def resources = T.sources(millSourcePath / os.up / "shared" / "src" / "main" / "resources") + + object test extends SbtModuleTests { + def ivyDeps = Agg( + ivy"org.scalactic::scalactic:3.2.18", + ivy"org.scalatest::scalatest:3.2.18" + ) + + def testFramework = "org.scalatest.tools.Framework" + override def sources = T.sources(millSourcePath / os.up / "src" / "test" / "scala") + } +} diff --git a/modules/openapi-generator/src/main/resources/scala-cask/buildAndPublish.yml.mustache b/modules/openapi-generator/src/main/resources/scala-cask/buildAndPublish.yml.mustache new file mode 100644 index 000000000000..1df721e73653 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/buildAndPublish.yml.mustache @@ -0,0 +1,38 @@ +name: Scala CI with sbt + +on: + push: + branches: [ main, master ] + pull_request: + branches: [ main, master ] + +jobs: + build-and-publish: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + java-version: 11 + + - name: Cache sbt dependencies + uses: actions/cache@v2 + with: + path: | + ~/.ivy2/cache + ~/.sbt + ~/.m2 + key: ${{{openbrackets}}} runner.os {{{closebrackets}}}-sbt-${{{openbrackets}}} hashFiles('**/*.sbt') {{{closebrackets}}} + restore-keys: | + ${{{openbrackets}}} runner.os {{{closebrackets}}}-sbt- + + - name: Build with sbt + run: sbt clean compile test + + - name: Publish to GitHub Packages + run: sbt publish + env: + GITHUB_TOKEN: ${{{openbrackets}}} secrets.GITHUB_TOKEN {{{closebrackets}}} diff --git a/modules/openapi-generator/src/main/resources/scala-cask/example.mustache b/modules/openapi-generator/src/main/resources/scala-cask/example.mustache new file mode 100644 index 000000000000..c06bb16d1636 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/example.mustache @@ -0,0 +1,60 @@ +//> using scala "3.4.1" +//> using lib "{{groupId}}::{{artifactId}}:{{artifactVersion}}" +//> using repositories https://maven.pkg.github.com/{{{gitUserId}}}/{{{gitRepoId}}} + + +/** +* This single file can contain the business logic for a REST service. +* ==================================== +* == zero-install build with docker == +* ==================================== +* +* +* ``` +* docker build . -t {{artifactId}}:latest +* ``` +* ====================== +* == Building Locally == +* ====================== +* This project can be built using [[scala-clit][https://scala-cli.virtuslab.org]] +* +* To simply run the project +* ``` +* scala-cli Server.scala +* ``` +* +* To create a runnable jar, run: +* ``` +* scala-cli --power package Server.scala -o app-assembly --assembly +* ``` +* +* To produce a docker image (no need for the Dockerfile), run: +* ``` +* scala-cli --power package --docker Server.scala --docker-image-repository app-docker +* ``` +* +* To generate an IDE project: +* ``` +* scala-cli setup-ide . --scala 3.3 +* ``` +*/ +package app + +import {{packageName}}.BaseApp +import {{apiPackage}}.* +import {{modelPackage}}.* + +import java.io.File + +// TODO - write your business logic for your services here (the defaults all return 'not implemented'): +{{#operations}} +val my{{classname}}Service : {{classname}}Service = {{classname}}Service() // <-- replace this with your implementation +{{/operations}} + +/** This is your main entry point for your REST service + * It extends BaseApp which defines the business logic for your services + */ +object Server extends BaseApp({{#operations}}app{{classname}}Service = my{{classname}}Service{{^-last}}, +{{/-last}}{{/operations}}): + start() + diff --git a/modules/openapi-generator/src/main/resources/scala-cask/exampleApp.mustache b/modules/openapi-generator/src/main/resources/scala-cask/exampleApp.mustache new file mode 100644 index 000000000000..f1247210dac8 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/exampleApp.mustache @@ -0,0 +1,21 @@ +//> using scala "3.3.1" +//> using lib "com.lihaoyi::cask:0.9.2" +//> using lib "com.lihaoyi::scalatags:0.8.2" +{{>licenseInfo}} + +// this file was generated from app.mustache +package {{packageName}} + +{{#imports}}import {{import}} +{{/imports}} +import _root_.{{modelPackage}}.* +import _root_.{{apiPackage}}.* + +/** + * This is an example of how you might extends BaseApp for a runnable application. + * + * See the README.md for how to create your own app + */ +object ExampleApp extends BaseApp() { + start() +} diff --git a/modules/openapi-generator/src/main/resources/scala-cask/gitignore.mustache b/modules/openapi-generator/src/main/resources/scala-cask/gitignore.mustache new file mode 100644 index 000000000000..56f2b272a080 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/gitignore.mustache @@ -0,0 +1,25 @@ +# scala specific +*.class +*.log + +# sbt specific +.cache +.history +.lib/ +dist/* +target/ +lib_managed/ +src_managed/ +project/boot/ +project/plugins/project/ + +# Scala-IDE specific +.scala_dependencies +.worksheet + +# Mill specific +out + +# IntelliJ specific +.idea +*.iml diff --git a/modules/openapi-generator/src/main/resources/scala-cask/licenseInfo.mustache b/modules/openapi-generator/src/main/resources/scala-cask/licenseInfo.mustache new file mode 100644 index 000000000000..02c79936aa5f --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/licenseInfo.mustache @@ -0,0 +1,16 @@ +/** + * {{{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 + */ diff --git a/modules/openapi-generator/src/main/resources/scala-cask/model.mustache b/modules/openapi-generator/src/main/resources/scala-cask/model.mustache new file mode 100644 index 000000000000..c4b430b7ceda --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/model.mustache @@ -0,0 +1,60 @@ +{{>licenseInfo}} +// this model was generated using model.mustache +package {{modelPackage}} +{{#imports}}import {{import}} +{{/imports}} +import scala.util.control.NonFatal + +// see https://com-lihaoyi.github.io/upickle/ +import upickle.default.{ReadWriter => RW, macroRW} +import upickle.default.* + +{{#models}} +{{#model}} +case class {{classname}}( + {{#vars}} + {{#description}} +/* {{{description}}} */ + {{/description}} + {{name}}: {{#isEnum}}{{^required}}Option[{{/required}}{{classname}}.{{datatypeWithEnum}}{{^required}}]{{/required}}{{/isEnum}}{{^isEnum}}{{{vendorExtensions.x-datatype-model}}}{{/isEnum}}{{^required}} = {{{vendorExtensions.x-defaultValue-model}}} {{/required}}{{^-last}},{{/-last}} + + {{/vars}}) { + + def asJson: String = asData.asJson + + def asData : {{classname}}Data = { + {{classname}}Data( + {{#vars}} + {{name}} = {{name}}{{#vendorExtensions.x-map-asModel}}.map(_.asData){{/vendorExtensions.x-map-asModel}}{{#vendorExtensions.x-wrap-in-optional}}.getOrElse({{{defaultValue}}}){{/vendorExtensions.x-wrap-in-optional}}{{^-last}},{{/-last}} + {{/vars}} + ) + } + +} + +object {{classname}}{ + + given RW[{{classname}}] = {{classname}}Data.readWriter.bimap[{{classname}}](_.asData, _.asModel) + + enum Fields(fieldName : String) extends Field(fieldName) { + {{#vars}} + case {{name}} extends Fields("{{name}}") + {{/vars}} + } + +{{#vars}} + {{#isEnum}} + // baseName={{{baseName}}} + // nameInCamelCase = {{{nameInCamelCase}}} + enum {{datatypeWithEnum}} derives ReadWriter { + {{#_enum}} + case {{.}} + {{/_enum}} + } + {{/isEnum}} +{{/vars}} + +} + +{{/model}} +{{/models}} diff --git a/modules/openapi-generator/src/main/resources/scala-cask/modelData.mustache b/modules/openapi-generator/src/main/resources/scala-cask/modelData.mustache new file mode 100644 index 000000000000..8dfdef358f6e --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/modelData.mustache @@ -0,0 +1,250 @@ +{{>licenseInfo}} +// this model was generated using modelData.mustache +package {{modelPackage}} +{{#imports}}import {{import}} +{{/imports}} +import scala.util.control.NonFatal +import scala.util.* + +// see https://com-lihaoyi.github.io/upickle/ +import upickle.default.{ReadWriter => RW, macroRW} +import upickle.default.* + +{{#models}} +{{#model}} +/** {{classname}}Data a data transfer object, primarily for simple json serialisation. + * It has no validation - there may be nulls, values out of range, etc + */ +case class {{classname}}Data( + {{#vars}} + {{#description}} +/* {{{description}}} */ + {{/description}} + {{name}}: {{#isEnum}}{{classname}}.{{datatypeWithEnum}}{{/isEnum}}{{^isEnum}}{{{vendorExtensions.x-datatype-data}}}{{/isEnum}}{{^required}} = {{{vendorExtensions.x-defaultValue-data}}} {{/required}}{{^-last}},{{/-last}} + + {{/vars}}) { + + def asJson: String = write(this) + + def validationErrors(path : Seq[Field], failFast : Boolean) : Seq[ValidationError] = { + val errors = scala.collection.mutable.ListBuffer[ValidationError]() + {{#vars}} + // ================== + // {{name}} + {{#pattern}} + // validate against pattern '{{{pattern}}}' + if (errors.isEmpty || !failFast) { + val regex = """{{{pattern}}}""" + if {{name}} == null || !regex.r.matches({{name}}) then + errors += ValidationError(path :+ {{classname}}.Fields.{{name}}, s"value '${{name}}' doesn't match pattern $regex") + } + {{/pattern}} + + {{#minimum}} + // validate against {{#exclusiveMinimum}}exclusive {{/exclusiveMinimum}}minimum {{minimum}} + if (errors.isEmpty || !failFast) { + if !({{name}} >{{^exclusiveMinimum}}={{/exclusiveMinimum}} {{minimum}}) then + errors += ValidationError(path :+ {{classname}}.Fields.{{name}}, s"value '${{name}}' is not greater than the {{#exclusiveMinimum}}exclusive {{/exclusiveMinimum}}minimum value {{minimum}}") + } + {{/minimum}} + + {{#maximum}} + // validate against {{#exclusiveMaximum}}exclusive {{/exclusiveMaximum}}maximum {{maximum}} + if (errors.isEmpty || !failFast) { + if !({{name}} <{{^exclusiveMaximum}}={{/exclusiveMaximum}} {{maximum}}) then + errors += ValidationError(path :+ {{classname}}.Fields.{{name}}, s"value '${{name}}' is not greater than the {{#exclusiveMaximum}}exclusive {{/exclusiveMaximum}}maximum value {{maximum}}") + } + {{/maximum}} + + {{#minLength}} + // validate min length {{minLength}} + if (errors.isEmpty || !failFast) { + val len = if {{name}} == null then 0 else {{name}}.length + if (len < {{minLength}}) { + errors += ValidationError(path :+ {{classname}}.Fields.{{name}}, s"length $len is shorter than the min length {{minLength}}") + } + } + {{/minLength}} + + {{#maxLength}} + // validate max length {{maxLength}} + if (errors.isEmpty || !failFast) { + val len = if {{name}} == null then 0 else {{name}}.length + if (len < {{maxLength}}) { + errors += ValidationError(path :+ {{classname}}.Fields.{{name}}, s"length $len is longer than the max length {{maxLength}}") + } + } + {{/maxLength}} + + {{#isEmail}} + // validate {{name}} is a valid email address + if (errors.isEmpty || !failFast) { + val emailRegex = """^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$""" + // validate {{name}} is email + if ({{name}} == null || !emailRegex.r.matches({{name}})) { + errors += ValidationError(path :+ {{classname}}.Fields.{{name}}, s"${{name}} is not a valid email address according to the pattern $emailRegex") + } + } + {{/isEmail}} + + {{#required}}{{^isPrimitiveType}} + if (errors.isEmpty || !failFast) { + if ({{name}} == null) { + errors += ValidationError(path :+ {{classname}}.Fields.{{name}}, "{{name}} is a required field and cannot be null") + } + } + {{/isPrimitiveType}}{{/required}} + + {{#uniqueItems}} + // validate {{name}} has unique items + if (errors.isEmpty || !failFast) { + if ({{name}} != null) { + {{name}}.foldLeft(Set[{{{vendorExtensions.x-containertype-data}}}]()) { + case (set, next) if set.contains(next) => + errors += ValidationError( + path :+ {{classname}}.Fields.{{name}}, + s"duplicate value: $next" + ) + set + next + case (set, next) => set + next + } + } + } + {{/uniqueItems}} + + {{#multipleOf}} + if (errors.isEmpty || !failFast) { + // validate {{name}} multiple of {{multipleOf}} + if ({{name}} % {{multipleOf}} != 0) { + errors += ValidationError( + path :+ {{classname}}.Fields.{{name}}, + s"${{name}} is not a multiple of {{multipleOf}}" + ) + } + } + {{/multipleOf}} + + {{#minItems}} + // validate min items {{minItems}} + if (errors.isEmpty || !failFast) { + val len = if {{name}} == null then 0 else {{name}}.size + if (len < {{minItems}}) { + errors += ValidationError(path :+ {{classname}}.Fields.{{name}}, s"{{name}} has $len, which is less than the min items {{minItems}}") + } + } + {{/minItems}} + + {{#maxItems}} + // validate min items {{maxItems}} + if (errors.isEmpty || !failFast) { + val len = if {{name}} == null then 0 else {{name}}.size + if (len > {{maxItems}}) { + errors += ValidationError(path :+ {{classname}}.Fields.{{name}}, s"{{name}} has $len, which is greater than the max items {{maxItems}}") + } + } + {{/maxItems}} + + {{#minProperties}} + TODO - minProperties + {{/minProperties}} + + {{#maxProperties}} + TODO - maxProperties + {{/maxProperties}} + + {{#items}}{{#isModel}} + if (errors.isEmpty || !failFast) { + if ({{name}} != null) { + {{name}}.zipWithIndex.foreach { + case (value, i) if errors.isEmpty || !failFast => + errors ++= value.validationErrors( + path :+ {{classname}}.Fields.{{name}} :+ Field(i.toString), + failFast) + case (value, i) => + } + } + } + {{/isModel}}{{/items}} + {{#isModel}} + // validating {{name}} + if (errors.isEmpty || !failFast) { + if {{name}} != null then errors ++= {{name}}.validationErrors(path :+ {{classname}}.Fields.{{name}}, failFast) + } + {{/isModel}} + + {{/vars}} + errors.toSeq + } + + def validated(failFast : Boolean = false) : scala.util.Try[{{classname}}] = { + validationErrors(Vector(), failFast) match { + case Seq() => Success(asModel) + case first +: theRest => Failure(ValidationErrors(first, theRest)) + } + } + + /** use 'validated' to check validation */ + def asModel : {{classname}} = { + {{classname}}( + {{#vars}} + {{name}} = {{#vendorExtensions.x-wrap-in-optional}}Option({{/vendorExtensions.x-wrap-in-optional}} + {{name}} + {{#vendorExtensions.x-wrap-in-optional}}){{/vendorExtensions.x-wrap-in-optional}} + {{#vendorExtensions.x-map-asModel}}.map(_.asModel){{/vendorExtensions.x-map-asModel}}{{^-last}},{{/-last}} + {{/vars}} + ) + } +} + +object {{classname}}Data { + + given readWriter : RW[{{classname}}Data] = macroRW + + def fromJsonString(jason : String) : {{classname}}Data = try { + read[{{classname}}Data](jason) + } catch { + case NonFatal(e) => sys.error(s"Error parsing json '$jason': $e") + } + + def manyFromJsonString(jason : String) : Seq[{{classname}}Data] = try { + read[List[{{classname}}Data]](jason) + } catch { + case NonFatal(e) => sys.error(s"Error parsing json '$jason' as list: $e") + } + + def manyFromJsonStringValidated(jason : String, failFast : Boolean = false) : Try[Seq[{{classname}}]] = { + Try(manyFromJsonString(jason)).flatMap { list => + list.zipWithIndex.foldLeft(Try(Vector[{{classname}}]())) { + case (Success(list), (next, i)) => + next.validated(failFast) match { + case Success(ok) => Success(list :+ ok) + case Failure(err) => Failure(new Exception(s"Validation error on element $i: ${err.getMessage}", err)) + } + case (fail, _) => fail + } + } + } + + def mapFromJsonString(jason : String) : Map[String, {{classname}}Data] = try { + read[Map[String, {{classname}}Data]](jason) + } catch { + case NonFatal(e) => sys.error(s"Error parsing json '$jason' as map: $e") + } + + + def mapFromJsonStringValidated(jason : String, failFast : Boolean = false) : Try[Map[String, {{classname}}]] = { + Try(mapFromJsonString(jason)).flatMap { map => + map.foldLeft(Try(Map[String, {{classname}}]())) { + case (Success(map), (key, next)) => + next.validated(failFast) match { + case Success(ok) => Success(map.updated(key, ok)) + case Failure(err) => Failure(new Exception(s"Validation error on element $key: ${err.getMessage}", err)) + } + case (fail, _) => fail + } + } + } +} + +{{/model}} +{{/models}} diff --git a/modules/openapi-generator/src/main/resources/scala-cask/modelPackage.mustache b/modules/openapi-generator/src/main/resources/scala-cask/modelPackage.mustache new file mode 100644 index 000000000000..f582c3e9fb11 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/modelPackage.mustache @@ -0,0 +1,53 @@ +{{>licenseInfo}} +package {{modelPackage}} + +// model package +import upickle.default._ +import java.time.* +import java.time.format.DateTimeFormatter + +/** + * This base class lets us refer to fields in exceptions + */ +class Field(val name : String) + +final case class ValidationErrors( + first: ValidationError, + remaining: Seq[ValidationError], + message: String +) extends Exception(message) + +object ValidationErrors { + def apply(first: ValidationError, remaining: Seq[ValidationError]) = { + val noun = if remaining.isEmpty then "error" else "errors" + new ValidationErrors( + first, + remaining, + remaining.mkString(s"${remaining.size + 1} $noun found: ${first}", "\n\t", "") + ) + } +} + + +final case class ValidationError(path : Seq[Field], message : String) extends Exception(message) { + override def toString = s"ValidationError for ${path.mkString(".")}: $message" +} + +given ReadWriter[ZonedDateTime] = readwriter[String].bimap[ZonedDateTime]( + zonedDateTime => DateTimeFormatter.ISO_INSTANT.format(zonedDateTime), + str => ZonedDateTime.parse(str, DateTimeFormatter.ISO_INSTANT)) + +given ReadWriter[LocalDateTime] = readwriter[String].bimap[LocalDateTime]( + zonedDateTime => DateTimeFormatter.ISO_INSTANT.format(zonedDateTime), + str => LocalDateTime.parse(str, DateTimeFormatter.ISO_INSTANT)) + +given ReadWriter[LocalDate] = readwriter[String].bimap[LocalDate]( + zonedDateTime => DateTimeFormatter.ISO_INSTANT.format(zonedDateTime), + str => LocalDate.parse(str, DateTimeFormatter.ISO_INSTANT)) + +given ReadWriter[OffsetDateTime] = readwriter[String].bimap[OffsetDateTime]( + zonedDateTime => DateTimeFormatter.ISO_INSTANT.format(zonedDateTime), + str => scala.util.Try(OffsetDateTime.parse(str, DateTimeFormatter.ISO_DATE_TIME)).getOrElse( + OffsetDateTime.parse(str, DateTimeFormatter.ISO_INSTANT) + ) +) \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/scala-cask/modelTest.mustache b/modules/openapi-generator/src/main/resources/scala-cask/modelTest.mustache new file mode 100644 index 000000000000..cbeae14cecc4 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/modelTest.mustache @@ -0,0 +1,37 @@ +{{>licenseInfo}} +// this model was generated using modelTest.mustache +package {{modelPackage}} +{{#imports}}import {{import}} +{{/imports}} + +import org.scalatest.matchers.should.Matchers +import org.scalatest.wordspec.AnyWordSpec +import scala.util.* + +{{#models}} +{{#model}} +class {{classname}}Test extends AnyWordSpec with Matchers { + +{{#operations}} + // operation {{classname}} + // + {{#examples}} + key = {{key}} + value= {{value}} + {{/examples}} +{{/operations}} + "{{classname}}.fromJson" should { + """not parse invalid json""" in { + val Failure(err) = Try({{classname}}Data.fromJsonString("invalid jason")) + err.getMessage should startWith ("Error parsing json 'invalid jason'") + } + """parse {{example}}""" ignore { + val Failure(err : ValidationErrors) = {{classname}}Data.fromJsonString("""{{example}}""").validated() + + sys.error("TODO") + } + } + +} +{{/model}} +{{/models}} diff --git a/modules/openapi-generator/src/main/resources/scala-cask/openapiRoute.mustache b/modules/openapi-generator/src/main/resources/scala-cask/openapiRoute.mustache new file mode 100644 index 000000000000..58c350635553 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/openapiRoute.mustache @@ -0,0 +1,116 @@ +{{>licenseInfo}} + +// generated from openapiRoute.mustache +package {{apiPackage}} + +import cask.model.Response + +import java.nio.file.{Files, Path, Paths} + +/** + * This code will try and download the swagger UI static files on startup + * + * That behaviour can be altered by: + * - setting the environment variable SWAGGER_ON to false + * - setting the environment variable SWAGGER_UI_URL to either the URL of a swagger UI zip or setting it to the empty string + * + */ +object OpenApiRoutes { + + def swaggerUIUrl: Option[String] = { + // flag to turn SWAGGER off + def useSwaggerUI = sys.env.get("SWAGGER_ON").map(_.toBoolean).getOrElse(true) + + val defaultUrl = "https://github.com/swagger-api/swagger-ui/archive/refs/tags/v5.11.9.zip" + Option(sys.env.getOrElse("SWAGGER_UI_URL", defaultUrl)) + .map(_.trim) + .filterNot(_.isEmpty) + .filter(_ => useSwaggerUI) + } + def apply(localPort: Int) = new OpenApiRoutes(localPort, swaggerUIUrl) +} + +class OpenApiRoutes(localPort: Int, swaggerUrl: Option[String]) extends cask.Routes { + + def openApiDir = "ui" + + @cask.get("/") + def index() = cask.Redirect("/ui/index.html") + + @cask.staticFiles("/ui") + def staticUI() = openApiDir + + @cask.staticResources("/openapi.json") + def staticOpenApi() = "openapi.json" + + /** This code will try and download the swagger UI artefacts to a local directory to serve up + */ + object extract { + + def openApiDirPath: Path = Paths.get(openApiDir) + def hasSwagger = Files.exists(openApiDirPath) && Files.isDirectory(openApiDirPath) + + import java.io.{BufferedInputStream, FileOutputStream, InputStream} + import java.net.URL + import java.util.zip.{ZipEntry, ZipInputStream} + import scala.util.Using + + def apply(url: String) = { + if !hasSwagger then downloadAndExtractZip(url, openApiDir) + } + + def downloadAndExtractZip(url: String, outputDir: String): Unit = { + val urlConn = new URL(url).openConnection() + urlConn.setRequestProperty("User-Agent", "Mozilla/5.0") + + Using(urlConn.getInputStream) { inputStream => + val zipIn = new ZipInputStream(new BufferedInputStream(inputStream)) + LazyList.continually(zipIn.getNextEntry).takeWhile(_ != null).foreach { entry => + + def isDist = entry.getName.contains("/dist/") + def isNotMap = !entry.getName.endsWith(".map") + + if (!entry.isDirectory && isDist && isNotMap) { + val fileName = entry.getName.split("/").last + extractFile(entry.getName, zipIn, s"$outputDir/$fileName") + } + zipIn.closeEntry() + } + } + } + + def extractFile(name: String, zipIn: ZipInputStream, filePath: String): Unit = { + val fullPath = Paths.get(filePath).toAbsolutePath + if !Files.exists(fullPath.getParent) then { + Files.createDirectories(fullPath.getParent) + } + + // config hack - we replace the default url from this swagger conf to use our localhost + // + if name.endsWith("swagger-initializer.js") then { + val textLines = scala.io.Source.fromInputStream(zipIn).getLines().map { + case line if line.contains("url:") => + s""" url: "http://localhost:$localPort/openapi.json",""" + case line => line + } + + // keeping this compatible for java 8, where this is from >= java 11: + // Files.writeString(fullPath, textLines.mkString("\n")) + scala.util.Using(new java.io.PrintWriter(fullPath.toFile))(_.write(textLines.mkString("\n"))) + } else { + Using(new FileOutputStream(filePath)) { outputStream => + val buffer = new Array[Byte](1024) + LazyList + .continually(zipIn.read(buffer)) + .takeWhile(_ != -1) + .foreach(outputStream.write(buffer, 0, _)) + } + } + } + } + + // extract the swagger UI resources to our local directory + swaggerUrl.foreach(url => extract(url)) + + initialize() +} diff --git a/modules/openapi-generator/src/main/resources/scala-cask/parseHttpParams.mustache b/modules/openapi-generator/src/main/resources/scala-cask/parseHttpParams.mustache new file mode 100644 index 000000000000..18193e0606c2 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/parseHttpParams.mustache @@ -0,0 +1,56 @@ + for { +{{#pathParams}} + {{#isString}} + {{paramName}} <- Parsed({{paramName}}) + {{/isString}} + {{^isString}} + {{paramName}} <- Parsed({{paramName}}) + {{/isString}} +{{/pathParams}} +{{#headerParams}} + {{#required}} + {{paramName}} <- request.headerSingleValueRequired("{{paramName}}") + {{/required}} + {{^required}} + {{paramName}} <- request.headerSingleValueOptional("{{paramName}}") + {{/required}} +{{/headerParams}} +{{#formParams}} + {{#required}} + {{paramName}} <- {{#isFile}}request.formValueAsFileRequired("{{paramName}}"){{/isFile}}{{^isFile}}request.formSingleValueRequired("{{paramName}}"){{/isFile}} + {{/required}} + {{^required}} + {{paramName}} <- {{#isFile}}request.formValueAsFileOptional("{{paramName}}"){{/isFile}}{{^isFile}}request.formSingleValueOptional("{{paramName}}"){{/isFile}} + {{/required}} +{{/formParams}} +{{#bodyParams}} + {{#vendorExtensions.x-consumes-json}} + {{#isArray}} + {{paramName}} <- Parsed.fromTry({{vendorExtensions.x-container-type}}Data.manyFromJsonStringValidated(request.bodyAsString)).mapError(e => s"Error parsing json as an array of {{vendorExtensions.x-container-type}} from >${request.bodyAsString}< : ${e}") /* array */ + {{/isArray}} + {{^isArray}} + {{#isMap}} + {{#vendorExtensions.x-deserialize-asModelMap}} + {{paramName}} <- Parsed.eval(read[Map[String, {{vendorExtensions.x-container-type}}](request.bodyAsString)).mapError(e => s"Error parsing json as a string map of {{vendorExtensions.x-container-type}} from >${request.bodyAsString}< : ${e}") /* x-deserialize-asModelMap */ + {{/vendorExtensions.x-deserialize-asModelMap}} + {{^vendorExtensions.x-deserialize-asModelMap}} + {{paramName}} <- Parsed.eval(read[Map[String, {{vendorExtensions.x-container-type}}]](request.bodyAsString)).mapError(e => s"Error parsing json as a string map of {{vendorExtensions.x-container-type}} from >${request.bodyAsString}< : ${e}") /* not x-deserialize-asModelMap */ + {{/vendorExtensions.x-deserialize-asModelMap}} + {{/isMap}} + {{^isMap}} + {{paramName}}Data <- Parsed.eval({{vendorExtensions.x-container-type}}Data.fromJsonString(request.bodyAsString)).mapError(e => s"Error parsing json as {{vendorExtensions.x-container-type}} from >${request.bodyAsString}< : ${e}") /* not array or map */ + {{paramName}} <- Parsed.fromTry({{paramName}}Data.validated(failFast)) + {{/isMap}} + {{/isArray}} + {{/vendorExtensions.x-consumes-json}} + {{^vendorExtensions.x-consumes-json}} + {{#vendorExtensions.x-consumes-xml}} + {{paramName}} <- Parsed.fail("TODO - xml deserialisation not yet supported. see src/main/resources/scala-cask/parseHttpParams.mustache in https://github.com/OpenAPITools/openapi-generator") + {{/vendorExtensions.x-consumes-xml}} + {{^vendorExtensions.x-consumes-xml}} + {{paramName}} <- Parsed.fail("TODO - content deserialisation. see src/main/resources/scala-cask/parseHttpParams.mustache in https://github.com/OpenAPITools/openapi-generator") + {{/vendorExtensions.x-consumes-xml}} + {{/vendorExtensions.x-consumes-json}} +{{/bodyParams}} + result <- Parsed.eval(service.{{operationId}}({{vendorExtensions.x-param-list}})) + } yield result \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/scala-cask/pathExtractor.mustache b/modules/openapi-generator/src/main/resources/scala-cask/pathExtractor.mustache new file mode 100644 index 000000000000..9890a8865a23 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/pathExtractor.mustache @@ -0,0 +1 @@ +{{#vendorExtensions.x-path-remaining}}{{#isParam}}{{name}}{{/isParam}}{{^isParam}}"{{name}}"{{/isParam}}{{^-last}},{{/-last}}{{/vendorExtensions.x-path-remaining}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/scala-cask/pathExtractorParams.mustache b/modules/openapi-generator/src/main/resources/scala-cask/pathExtractorParams.mustache new file mode 100644 index 000000000000..89a51b83b40e --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/pathExtractorParams.mustache @@ -0,0 +1 @@ +{{#vendorExtensions.x-path-remaining}}{{#isParam}}{{name}}{{conversion}}{{/isParam}}{{#hasMoreParams}}, {{/hasMoreParams}}{{/vendorExtensions.x-path-remaining}}{{#vendorExtensions.x-has-path-remaining}},{{/vendorExtensions.x-has-path-remaining}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/scala-cask/project/build.properties b/modules/openapi-generator/src/main/resources/scala-cask/project/build.properties new file mode 100644 index 000000000000..04267b14af69 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/project/build.properties @@ -0,0 +1 @@ +sbt.version=1.9.9 diff --git a/modules/openapi-generator/src/main/resources/scala-cask/project/plugins.sbt b/modules/openapi-generator/src/main/resources/scala-cask/project/plugins.sbt new file mode 100644 index 000000000000..ece317dfad9b --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/project/plugins.sbt @@ -0,0 +1,4 @@ +addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.6") +addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "1.2.0") +addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.16.0") +addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.2.0") \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/scala-cask/queryParams.mustache b/modules/openapi-generator/src/main/resources/scala-cask/queryParams.mustache new file mode 100644 index 000000000000..fc9a800ed2be --- /dev/null +++ b/modules/openapi-generator/src/main/resources/scala-cask/queryParams.mustache @@ -0,0 +1 @@ +{{#hasQueryParams}},{{/hasQueryParams}}{{#queryParams}}{{paramName}}{{#required}}{{^isMap}}{{^isArray}}.getOrElse({{#isString}}""{{/isString}}{{#isNumber}}0{{/isNumber}}{{#isBoolean}}false{{/isBoolean}}){{/isArray}}{{/isMap}}{{/required}}{{^-last}}, {{/-last}}{{/queryParams}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/swift5/APIHelper.mustache b/modules/openapi-generator/src/main/resources/swift5/APIHelper.mustache index f7c727964c98..2111f3408815 100644 --- a/modules/openapi-generator/src/main/resources/swift5/APIHelper.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/APIHelper.mustache @@ -92,7 +92,7 @@ import Vapor{{/useVapor}} if destination.isEmpty { return nil } - return destination + return destination.sorted { $0.name < $1.name } } /// maps all values from source to query parameters @@ -115,6 +115,6 @@ import Vapor{{/useVapor}} if destination.isEmpty { return nil } - return destination + return destination.sorted { $0.name < $1.name } } } diff --git a/modules/openapi-generator/src/main/resources/swift5/Models.mustache b/modules/openapi-generator/src/main/resources/swift5/Models.mustache index 9a8af56a8af1..3bd5e1c4f6c5 100644 --- a/modules/openapi-generator/src/main/resources/swift5/Models.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/Models.mustache @@ -130,9 +130,9 @@ extension NullEncodable: Codable where Wrapped: Codable { } {{/useAlamofire}} {{^useAlamofire}} - private var task: URLSessionTask? + private var task: URLSessionDataTaskProtocol? - internal func set(task: URLSessionTask) { + internal func set(task: URLSessionDataTaskProtocol) { lock.lock() defer { lock.unlock() } self.task = task diff --git a/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache b/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache index 56637c3ce282..a17db02e6892 100644 --- a/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache @@ -8,12 +8,37 @@ import Foundation #if !os(macOS) import MobileCoreServices #endif +#if canImport(UniformTypeIdentifiers) +import UniformTypeIdentifiers +#endif + +// Protocol defined for a session data task. This allows mocking out the URLSessionProtocol below since +// you may not want to create or return a real URLSessionDataTask. +{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} protocol URLSessionDataTaskProtocol { + func resume() + + var taskIdentifier: Int { get } + + var progress: Progress { get } + + func cancel() +} +// Protocol allowing implementations to alter what is returned or to test their implementations. {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} protocol URLSessionProtocol { - func dataTask(with request: URLRequest, completionHandler: @escaping @Sendable (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask + // Task which performs the network fetch. Expected to be from URLSession.dataTask(with:completionHandler:) such that a network request + // is sent off when `.resume()` is called. + func dataTaskFromProtocol(with request: URLRequest, completionHandler: @escaping @Sendable (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTaskProtocol } -extension URLSession: URLSessionProtocol {} +extension URLSession: URLSessionProtocol { + // Passthrough to URLSession.dataTask(with:completionHandler) since URLSessionDataTask conforms to URLSessionDataTaskProtocol and fetches the network data. + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} func dataTaskFromProtocol(with request: URLRequest, completionHandler: @escaping @Sendable (Data?, URLResponse?, (any Error)?) -> Void) -> any URLSessionDataTaskProtocol { + return dataTask(with: request, completionHandler: completionHandler) + } +} + +extension URLSessionDataTask: URLSessionDataTaskProtocol {} class URLSessionRequestBuilderFactory: RequestBuilderFactory { func getNonDecodableBuilder() -> RequestBuilder.Type { @@ -133,7 +158,7 @@ private var credentialStore = SynchronizedDictionary() } } - let dataTask = urlSession.dataTask(with: request) { data, response, error in + let dataTask = urlSession.dataTaskFromProtocol(with: request) { data, response, error in apiResponseQueue.async { self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion) cleanupRequest() @@ -560,9 +585,20 @@ private class FormDataEncoding: ParameterEncoding { func mimeType(for url: URL) -> String { let pathExtension = url.pathExtension - if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue(), - let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() { - return mimetype as String + if #available(iOS 15, macOS 11, *) { + #if canImport(UniformTypeIdentifiers) + if let utType = UTType(filenameExtension: pathExtension) { + return utType.preferredMIMEType ?? "application/octet-stream" + } + #else + return "application/octet-stream" + #endif + } else { + if let uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as NSString, nil)?.takeRetainedValue(), + let mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType)?.takeRetainedValue() { + return mimetype as String + } + return "application/octet-stream" } return "application/octet-stream" } diff --git a/modules/openapi-generator/src/main/resources/typescript-angular/modelGeneric.mustache b/modules/openapi-generator/src/main/resources/typescript-angular/modelGeneric.mustache index 43207b65e305..232acaf3ea43 100644 --- a/modules/openapi-generator/src/main/resources/typescript-angular/modelGeneric.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-angular/modelGeneric.mustache @@ -2,9 +2,17 @@ export interface {{classname}}{{#allParents}}{{#-first}} extends {{/-first}}{{{. {{#vars}} {{#description}} /** - * {{{.}}} + * {{{description}}} + {{#deprecated}} + * @deprecated + {{/deprecated}} */ {{/description}} + {{^description}} + {{#deprecated}} + /** @deprecated */ + {{/deprecated}} + {{/description}} {{#isReadOnly}}readonly {{/isReadOnly}}{{{name}}}{{^required}}?{{/required}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#isNullable}} | null{{/isNullable}}; {{/vars}} }{{>modelGenericEnums}} diff --git a/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache b/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache index 004fc11fdae8..aa594015c7f9 100755 --- a/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache @@ -118,50 +118,10 @@ export const serializeDataIfNeeded = function (value: any, requestOptions: any, ? configuration.isJsonMime(requestOptions.headers['Content-Type']) : nonString; return needsSerialization - ? JSON.stringify(value !== undefined ? convertMapsAndSetsToPlain(value) : {}) + ? JSON.stringify(value !== undefined ? value : {}) : (value || ""); } -function convertMapsAndSetsToPlain(value: any): any { - if (typeof Set === "undefined") return value; - if (typeof Map === "undefined") return value; - if (typeof value !== "object" || !value) { - return value; - } - if (value instanceof Set) { - return Array.from(value).map(item => convertMapsAndSetsToPlain(item)); - } - if (value instanceof Map) { - const entries: Array<[string, any]> = []; - value.forEach((value: any, key: any) => { - entries.push([key, convertMapsAndSetsToPlain(value)]) - }); - return objectFromEntries(entries); - } - if (Array.isArray(value)) { - return value.map(it => convertMapsAndSetsToPlain(it)); - } - return objectFromEntries(objectEntries(value) - .map(([k, v]) => [k, convertMapsAndSetsToPlain(v)])); -} - -/** - * Ponyfill for Object.entries - */ -function objectEntries(object: Record): Array<[string, any]> { - return Object.keys(object).map(key => [key, object[key]]); -} - -/** - * Ponyfill for Object.fromEntries - */ -function objectFromEntries(entries: any): Record { - return [...entries].reduce((object, [key, val]) => { - object[key] = val; - return object; - }, {}); -} - /** * * @export diff --git a/modules/openapi-generator/src/main/resources/typescript-nestjs/api.module.mustache b/modules/openapi-generator/src/main/resources/typescript-nestjs/api.module.mustache index 0aeeaa782550..005aabdff6c8 100644 --- a/modules/openapi-generator/src/main/resources/typescript-nestjs/api.module.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-nestjs/api.module.mustache @@ -3,7 +3,7 @@ import { DynamicModule, Module, Global, Provider } from '@nestjs/common'; import { HttpModule, HttpService } from '@nestjs/axios'; {{/useAxiosHttpModule}} {{^useAxiosHttpModule}} -import { DynamicModule, HttpService, HttpModule, Module, Global } from '@nestjs/common'; +import { DynamicModule, HttpService, HttpModule, Module, Global, Provider } from '@nestjs/common'; {{/useAxiosHttpModule}} import { AsyncConfiguration, Configuration, ConfigurationFactory } from './configuration'; diff --git a/modules/openapi-generator/src/main/resources/typescript-nestjs/api.service.mustache b/modules/openapi-generator/src/main/resources/typescript-nestjs/api.service.mustache index 064978b97537..fee3b7ff2023 100644 --- a/modules/openapi-generator/src/main/resources/typescript-nestjs/api.service.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-nestjs/api.service.mustache @@ -9,11 +9,12 @@ import { HttpService } from '@nestjs/axios'; import { HttpService, Inject, Injectable, Optional } from '@nestjs/common'; {{/useAxiosHttpModule}} import { AxiosResponse } from 'axios'; -import { Observable } from 'rxjs'; +import { Observable, from, of, switchMap } from 'rxjs'; {{#imports}} import { {{classname}} } from '../{{filename}}'; {{/imports}} import { Configuration } from '../configuration'; +import { COLLECTION_FORMATS } from '../variables'; {{#withInterfaces}} import { {{classname}}Interface } from './{{classFilename}}Interface'; {{/withInterfaces}} @@ -117,6 +118,8 @@ export class {{classname}} { {{/isArray}} {{/headerParams}} + let accessTokenObservable: Observable = of(null); + {{#authMethods}} // authentication ({{name}}) required {{#isApiKey}} @@ -144,17 +147,16 @@ export class {{classname}} { {{/isBasicBasic}} {{#isBasicBearer}} if (typeof this.configuration.accessToken === 'function') { - headers['Authorization'] = `Bearer ${this.configuration.accessToken()}`; + accessTokenObservable = from(Promise.resolve(this.configuration.accessToken())); } else if (this.configuration.accessToken) { - headers['Authorization'] = `Bearer ${this.configuration.accessToken}`; + accessTokenObservable = from(Promise.resolve(this.configuration.accessToken)); } {{/isBasicBearer}} {{#isOAuth}} if (this.configuration.accessToken) { - const accessToken = typeof this.configuration.accessToken === 'function' - ? this.configuration.accessToken() - : this.configuration.accessToken; - headers['Authorization'] = 'Bearer ' + accessToken; + accessTokenObservable = typeof this.configuration.accessToken === 'function' + ? from(Promise.resolve(this.configuration.accessToken())) + : from(Promise.resolve(this.configuration.accessToken)) } {{/isOAuth}} @@ -224,18 +226,26 @@ export class {{classname}} { {{/formParams}} {{/hasFormParams}} - return this.httpClient.{{httpMethod}}{{^isResponseFile}}<{{#returnType}}{{{returnType}}}{{#isResponseTypeFile}}|undefined{{/isResponseTypeFile}}{{/returnType}}{{^returnType}}any{{/returnType}}>{{/isResponseFile}}(`${this.basePath}{{{path}}}`,{{#isBodyAllowed}} - {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}{{#hasFormParams}}convertFormParamsToString ? formParams!.toString() : formParams!{{/hasFormParams}}{{^hasFormParams}}null{{/hasFormParams}}{{/bodyParam}},{{/isBodyAllowed}} - { -{{#hasQueryParams}} - params: queryParameters, -{{/hasQueryParams}} -{{#isResponseFile}} - responseType: "blob", -{{/isResponseFile}} - withCredentials: this.configuration.withCredentials, - headers: headers - } + return accessTokenObservable.pipe( + switchMap((accessToken) => { + if (accessToken) { + headers['Authorization'] = `Bearer ${accessToken}`; + } + + return this.httpClient.{{httpMethod}}{{^isResponseFile}}<{{#returnType}}{{{returnType}}}{{#isResponseTypeFile}}|undefined{{/isResponseTypeFile}}{{/returnType}}{{^returnType}}any{{/returnType}}>{{/isResponseFile}}(`${this.basePath}{{{path}}}`,{{#isBodyAllowed}} + {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}{{#hasFormParams}}convertFormParamsToString ? formParams!.toString() : formParams!{{/hasFormParams}}{{^hasFormParams}}null{{/hasFormParams}}{{/bodyParam}},{{/isBodyAllowed}} + { + {{#hasQueryParams}} + params: queryParameters, + {{/hasQueryParams}} + {{#isResponseFile}} + responseType: "blob", + {{/isResponseFile}} + withCredentials: this.configuration.withCredentials, + headers: headers + } + ); + }) ); } {{/operation}} diff --git a/modules/openapi-generator/src/main/resources/typescript-node/package.mustache b/modules/openapi-generator/src/main/resources/typescript-node/package.mustache index d013eab0374e..b9dc19c81a7a 100644 --- a/modules/openapi-generator/src/main/resources/typescript-node/package.mustache +++ b/modules/openapi-generator/src/main/resources/typescript-node/package.mustache @@ -16,9 +16,8 @@ "author": "OpenAPI-Generator Contributors", "license": "Unlicense", "dependencies": { - "bluebird": "^3.5.0", - "request": "^2.81.0", - "rewire": "^3.0.2" + "bluebird": "^3.7.2", + "request": "^2.88.2" }, "devDependencies": { "@types/bluebird": "^3.5.33", diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java index 3d1cfeb07c0e..5270799a03c2 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java @@ -40,6 +40,7 @@ import io.swagger.v3.parser.core.models.ParseOptions; import org.openapitools.codegen.config.CodegenConfigurator; import org.openapitools.codegen.config.GlobalSettings; +import org.openapitools.codegen.languages.SpringCodegen; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; import org.openapitools.codegen.templating.mustache.*; @@ -4914,19 +4915,30 @@ public void testWebhooks() throws IOException { } @Test - public void testAllOf() throws IOException { - DefaultCodegen codegen = new DefaultCodegen(); - final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/spring/issue_16797.yaml"); - codegen.setOpenAPI(openAPI); + public void testAllVars_issue_18340() { + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/spring/issue_18340.yaml"); +// new OpenAPINormalizer(openAPI, Map.of("REFACTOR_ALLOF_WITH_PROPERTIES_ONLY", " true")) +// .normalize(); + Schema catModel = ModelUtils.getSchema(openAPI, "Cat"); + DefaultCodegen defaultCodegen = new DefaultCodegen(); + defaultCodegen.setOpenAPI(openAPI); + CodegenModel defaultCat = defaultCodegen.fromModel("Cat", catModel); + assertThat(getNames(defaultCat.allVars)).isEqualTo(List.of("name", "petType")); - Schema object3 = openAPI.getComponents().getSchemas().get("Object3"); - codegen.setOpenAPI(openAPI); - CodegenModel model = codegen.fromModel("Object3", object3); - Assert.assertEquals(names(model.allVars), List.of("timestamp", "pageInfo", "responseType", "requestId", "success")); - System.out.println(names(model.allVars)); - } + // same model gives an invalid var when using SpringCodegen. name is missing + SpringCodegen springCodegen = new SpringCodegen(); + springCodegen.setOpenAPI(openAPI); + CodegenModel springCat = springCodegen.fromModel("Cat", catModel); + assertThat(getNames(springCat.allVars)).isEqualTo(List.of("petType")); // should be name,petType - static List names(List vars) { - return vars.stream().map(CodegenProperty::getBaseName).collect(Collectors.toList()); + // Prove that supportsInheritance is the culprit + SpringCodegen springCodegenNoSupportInheritance = new SpringCodegen() { + { + this.supportsInheritance = false; + } + }; + springCodegenNoSupportInheritance.setOpenAPI(openAPI); + CodegenModel springCatNoSupportInheritance = springCodegenNoSupportInheritance.fromModel("Cat", catModel); + assertThat(getNames(springCatNoSupportInheritance.allVars)).isEqualTo(List.of("name", "petType")); } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/OpenAPINormalizerTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/OpenAPINormalizerTest.java index a65f58318d42..d7b85e4be6f0 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/OpenAPINormalizerTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/OpenAPINormalizerTest.java @@ -158,6 +158,10 @@ public void testOpenAPINormalizerSimplifyOneOfAnyOf() { assertEquals(schema2.getOneOf().size(), 4); assertNull(schema2.getNullable()); + Schema schema2b = openAPI.getComponents().getSchemas().get("OneOfTest2"); + assertEquals(schema2b.getOneOf().size(), 2); + assertNull(schema2b.getNullable()); + Schema schema5 = openAPI.getComponents().getSchemas().get("OneOfNullableTest"); assertEquals(schema5.getOneOf().size(), 3); assertNull(schema5.getNullable()); @@ -174,6 +178,9 @@ public void testOpenAPINormalizerSimplifyOneOfAnyOf() { Schema schema13 = openAPI.getComponents().getSchemas().get("OneOfAnyType"); assertEquals(schema13.getOneOf().size(), 6); + Schema schema15 = openAPI.getComponents().getSchemas().get("AnyOfAnyTypeWithRef"); + assertEquals(schema15.getAnyOf().size(), 6); + Map options = new HashMap<>(); options.put("SIMPLIFY_ONEOF_ANYOF", "true"); OpenAPINormalizer openAPINormalizer = new OpenAPINormalizer(openAPI, options); @@ -189,6 +196,11 @@ public void testOpenAPINormalizerSimplifyOneOfAnyOf() { assertTrue(schema4 instanceof IntegerSchema); assertTrue(schema4.getNullable()); + Schema schema4b = openAPI.getComponents().getSchemas().get("OneOfTest2"); + assertNull(schema4b.getOneOf()); + assertTrue(schema4b instanceof StringSchema); + assertTrue(schema4b.getNullable()); + Schema schema6 = openAPI.getComponents().getSchemas().get("OneOfNullableTest"); assertEquals(schema6.getOneOf().size(), 2); assertTrue(schema6.getNullable()); @@ -207,6 +219,9 @@ public void testOpenAPINormalizerSimplifyOneOfAnyOf() { assertEquals(schema14.getOneOf(), null); assertEquals(schema14.getType(), null); + Schema schema16 = openAPI.getComponents().getSchemas().get("AnyOfAnyTypeWithRef"); + assertEquals(schema16.getAnyOf(), null); + assertEquals(schema16.getType(), null); } @Test @@ -532,7 +547,7 @@ public void testSetContainerToNullable() { @Test public void testSetPrimitiveTypesToNullable() { // test `string|integer|number|boolean` - OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_0//setPrimitiveTypesToNullable_test.yaml"); + OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_0/setPrimitiveTypesToNullable_test.yaml"); Schema schema = openAPI.getComponents().getSchemas().get("Person"); assertEquals(((Schema) schema.getProperties().get("lastName")).getNullable(), null); @@ -552,7 +567,7 @@ public void testSetPrimitiveTypesToNullable() { assertEquals(((Schema) schema2.getProperties().get("first_boolean")).getNullable(), true); // test `number` only - OpenAPI openAPI2 = TestUtils.parseSpec("src/test/resources/3_0//setPrimitiveTypesToNullable_test.yaml"); + OpenAPI openAPI2 = TestUtils.parseSpec("src/test/resources/3_0/setPrimitiveTypesToNullable_test.yaml"); Schema schema3 = openAPI2.getComponents().getSchemas().get("Person"); assertEquals(((Schema) schema3.getProperties().get("lastName")).getNullable(), null); @@ -572,7 +587,7 @@ public void testSetPrimitiveTypesToNullable() { } @Test - public void testOpenAPINormalizerSimplifyOneOfAnyOf31Spec() { + public void testOpenAPINormalizerSimplifyOneOfAnyOf31SpecForIssue18184 () { // to test the rule SIMPLIFY_ONEOF_ANYOF in 3.1 spec OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_1/issue_18184.yaml"); // test spec contains anyOf with a ref to enum and another scheme type is null @@ -589,4 +604,124 @@ public void testOpenAPINormalizerSimplifyOneOfAnyOf31Spec() { assertEquals(((Schema) schema2.getProperties().get("my_enum")).getAnyOf(), null); assertEquals(((Schema) schema2.getProperties().get("my_enum")).get$ref(), "#/components/schemas/MyEnum"); } + + @Test + public void testOpenAPINormalizerProcessingArraySchema31Spec() { + // to test array schema processing in 3.1 spec + OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_1/issue_18291.yaml"); + + Schema schema = openAPI.getComponents().getSchemas().get("Foo"); + assertEquals(((Schema) schema.getProperties().get("arrayOfStrings")).getTypes().size(), 1); + assertEquals(((Schema) schema.getProperties().get("arrayOfStrings")).getTypes().contains("array"), true); + assertEquals(((Schema) schema.getProperties().get("arrayOfStrings")).getType(), null); + assertEquals(ModelUtils.isArraySchema((Schema) schema.getProperties().get("arrayOfStrings")), true); + assertEquals(((Schema) schema.getProperties().get("arrayOfStrings")).getItems().getType(), null); + assertEquals(((Schema) schema.getProperties().get("arrayOfStrings")).getItems().getTypes().contains("string"), true); + + Schema schema3 = openAPI.getComponents().getSchemas().get("Bar"); + assertEquals(((Schema) schema3.getAllOf().get(0)).get$ref(), "#/components/schemas/Foo"); + + Schema schema5 = ModelUtils.getSchema(openAPI, ModelUtils.getSimpleRef(((Schema) schema3.getAllOf().get(0)).get$ref())); + assertEquals(((Schema) schema5.getProperties().get("arrayOfStrings")).getTypes().size(), 1); + assertEquals(((Schema) schema5.getProperties().get("arrayOfStrings")).getTypes().contains("array"), true); + assertEquals(((Schema) schema5.getProperties().get("arrayOfStrings")).getType(), null); + assertEquals(ModelUtils.isArraySchema((Schema) schema5.getProperties().get("arrayOfStrings")), true); + assertEquals(((Schema) schema5.getProperties().get("arrayOfStrings")).getItems().getType(), null); + assertEquals(((Schema) schema5.getProperties().get("arrayOfStrings")).getItems().getTypes().contains("string"), true); + + Map inputRules = Map.of("NORMALIZE_31SPEC", "true"); + OpenAPINormalizer openAPINormalizer = new OpenAPINormalizer(openAPI, inputRules); + openAPINormalizer.normalize(); + + Schema schema2 = openAPI.getComponents().getSchemas().get("Foo"); + assertEquals(((Schema) schema2.getProperties().get("arrayOfStrings")).getTypes().size(), 1); + assertEquals(((Schema) schema2.getProperties().get("arrayOfStrings")).getTypes().contains("array"), true); + assertEquals(ModelUtils.isArraySchema((Schema) schema2.getProperties().get("arrayOfStrings")), true); + assertEquals(((Schema) schema2.getProperties().get("arrayOfStrings")).getItems().getTypes().contains("string"), true); + assertEquals(((Schema) schema2.getProperties().get("arrayOfStrings")).getItems().getType(), "string"); + assertEquals(((Schema) schema2.getProperties().get("arrayOfStrings")).getType(), "array"); + + Schema schema4 = openAPI.getComponents().getSchemas().get("Bar"); + assertEquals(((Schema) schema4.getAllOf().get(0)).get$ref(), "#/components/schemas/Foo"); + + Schema schema6 = ModelUtils.getSchema(openAPI, ModelUtils.getSimpleRef(((Schema) schema4.getAllOf().get(0)).get$ref())); + assertEquals(((Schema) schema6.getProperties().get("arrayOfStrings")).getTypes().size(), 1); + assertEquals(((Schema) schema6.getProperties().get("arrayOfStrings")).getTypes().contains("array"), true); + assertEquals(ModelUtils.isArraySchema((Schema) schema6.getProperties().get("arrayOfStrings")), true); + assertEquals(((Schema) schema6.getProperties().get("arrayOfStrings")).getItems().getTypes().contains("string"), true); + assertEquals(((Schema) schema6.getProperties().get("arrayOfStrings")).getItems().getType(), "string"); + assertEquals(((Schema) schema6.getProperties().get("arrayOfStrings")).getType(), "array"); + } + + @Test + public void testOpenAPINormalizerSimplifyOneOfAnyOf31Spec() { + // to test the rule SIMPLIFY_ONEOF_ANYOF with 3.1 spec + OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_1/simplifyOneOfAnyOf_test.yaml"); + + Schema schema = openAPI.getComponents().getSchemas().get("AnyOfTest"); + assertEquals(schema.getAnyOf().size(), 4); + assertNull(schema.getNullable()); + + Schema schema2 = openAPI.getComponents().getSchemas().get("OneOfTest"); + assertEquals(schema2.getOneOf().size(), 4); + assertNull(schema2.getNullable()); + + Schema schema2b = openAPI.getComponents().getSchemas().get("OneOfTest2"); + assertEquals(schema2b.getOneOf().size(), 2); + assertNull(schema2b.getNullable()); + + Schema schema5 = openAPI.getComponents().getSchemas().get("OneOfNullableTest"); + assertEquals(schema5.getOneOf().size(), 3); + assertNull(schema5.getNullable()); + + Schema schema7 = openAPI.getComponents().getSchemas().get("Parent"); + assertEquals(((Schema) schema7.getProperties().get("number")).getAnyOf().size(), 1); + + Schema schema9 = openAPI.getComponents().getSchemas().get("AnyOfStringArrayOfString"); + assertEquals(schema9.getAnyOf().size(), 2); + + Schema schema11 = openAPI.getComponents().getSchemas().get("AnyOfAnyType"); + assertEquals(schema11.getAnyOf().size(), 6); + + Schema schema13 = openAPI.getComponents().getSchemas().get("OneOfAnyType"); + assertEquals(schema13.getOneOf().size(), 6); + + Map options = new HashMap<>(); + options.put("SIMPLIFY_ONEOF_ANYOF", "true"); + OpenAPINormalizer openAPINormalizer = new OpenAPINormalizer(openAPI, options); + openAPINormalizer.normalize(); + + Schema schema3 = openAPI.getComponents().getSchemas().get("AnyOfTest"); + assertNull(schema3.getAnyOf()); + assertEquals(ModelUtils.getType(schema3), "string"); + assertTrue(schema3.getNullable()); + + Schema schema4 = openAPI.getComponents().getSchemas().get("OneOfTest"); + assertNull(schema4.getOneOf()); + assertEquals(ModelUtils.getType(schema4), "integer"); + assertTrue(schema4.getNullable()); + + Schema schema4b = openAPI.getComponents().getSchemas().get("OneOfTest2"); + assertNull(schema4b.getOneOf()); + assertEquals(ModelUtils.getType(schema4b), "string"); + assertTrue(schema4b.getNullable()); + + Schema schema6 = openAPI.getComponents().getSchemas().get("OneOfNullableTest"); + assertEquals(schema6.getOneOf().size(), 2); + assertTrue(schema6.getNullable()); + + Schema schema8 = openAPI.getComponents().getSchemas().get("Parent"); + assertEquals(((Schema) schema8.getProperties().get("number")).get$ref(), "#/components/schemas/Number"); + + Schema schema10 = openAPI.getComponents().getSchemas().get("AnyOfStringArrayOfString"); + assertEquals(schema10.getAnyOf().size(), 2); + + Schema schema12 = openAPI.getComponents().getSchemas().get("AnyOfAnyType"); + assertEquals(schema12.getAnyOf(), null); + assertEquals(schema12.getType(), null); + + Schema schema14 = openAPI.getComponents().getSchemas().get("OneOfAnyType"); + assertEquals(schema14.getOneOf(), null); + assertEquals(schema14.getType(), null); + } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java index cbf73e2877bb..188cba014ffc 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java @@ -291,6 +291,69 @@ public void verifyApiTestWithNullResponse() throws IOException { "httpRes, err := apiClient.PetAPI.PetDelete(context.Background()).Execute()"); } + @Test + public void verifyApiWithAllOfMultipleRefAndDiscriminator() throws IOException { + File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("go") + .setGitUserId("OpenAPITools") + .setGitRepoId("openapi-generator") + .setInputSpec("src/test/resources/3_0/go/allof_multiple_ref_and_discriminator.yaml") + .setOutputDir(output.getAbsolutePath().replace("\\", "/")); + + DefaultGenerator generator = new DefaultGenerator(); + List files = generator.opts(configurator.toClientOptInput()).generate(); + files.forEach(File::deleteOnExit); + + TestUtils.assertFileExists(Paths.get(output + "/model_final_item.go")); + TestUtils.assertFileContains(Paths.get(output + "/model_final_item.go"), + "BaseItem"); + } + + @Test + public void testVendorExtensionGenerateUnmarshalJson() throws IOException { + File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("go") + .setGitUserId("OpenAPITools") + .setGitRepoId("openapi-generator") + .setInputSpec("src/test/resources/3_0/go/allof_with_unmarshal_json.yaml") + .setOutputDir(output.getAbsolutePath().replace("\\", "/")); + + DefaultGenerator generator = new DefaultGenerator(); + List files = generator.opts(configurator.toClientOptInput()).generate(); + files.forEach(File::deleteOnExit); + + TestUtils.assertFileExists(Paths.get(output + "/model_base_item.go")); + TestUtils.assertFileContains(Paths.get(output + "/model_base_item.go"), + "func (o *BaseItem) UnmarshalJSON(data []byte) (err error) {"); + } + + @Test + public void testVendorExtensionSkipGenerateUnmarshalJson() throws IOException { + File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("go") + .setGitUserId("OpenAPITools") + .setGitRepoId("openapi-generator") + .setInputSpec("src/test/resources/3_0/go/allof_skip_unmarshal_json.yaml") + .setOutputDir(output.getAbsolutePath().replace("\\", "/")); + + DefaultGenerator generator = new DefaultGenerator(); + List files = generator.opts(configurator.toClientOptInput()).generate(); + files.forEach(File::deleteOnExit); + + TestUtils.assertFileExists(Paths.get(output + "/model_base_item.go")); + TestUtils.assertFileNotContains(Paths.get(output + "/model_base_item.go"), + "func (o *BaseItem) UnmarshalJSON(data []byte) (err error) {"); + } + @Test public void testAdditionalPropertiesWithGoMod() throws Exception { File output = Files.createTempDirectory("test").toFile(); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientOptionsTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientOptionsTest.java index 8a67ee0e68eb..603515e7e9cd 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientOptionsTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientOptionsTest.java @@ -53,5 +53,6 @@ protected void verifyOptions() { verify(clientCodegen).setUseOneOfDiscriminatorLookup(GoClientOptionsProvider.USE_ONE_OF_DISCRIMINATOR_LOOKUP_VALUE); verify(clientCodegen).setWithGoMod(GoClientOptionsProvider.WITH_GO_MOD_VALUE); verify(clientCodegen).setGenerateMarshalJSON(GoClientOptionsProvider.GENERATE_MARSHAL_JSON_VALUE); + verify(clientCodegen).setGenerateUnmarshalJSON(GoClientOptionsProvider.GENERATE_UNMARSHAL_JSON_VALUE); } } 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 84767088622d..73184b4a5030 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 @@ -24,6 +24,8 @@ import io.swagger.v3.oas.models.parameters.Parameter; import io.swagger.v3.parser.core.models.ParseOptions; + +import java.math.BigDecimal; import java.time.OffsetDateTime; import java.time.ZonedDateTime; import java.util.*; @@ -56,6 +58,7 @@ public void toEnumVarNameShouldNotShortenUnderScore() throws Exception { @Test public void toEnumVarNameShouldNotResultInSingleUnderscore() throws Exception { Assert.assertEquals(fakeJavaCodegen.toEnumVarName(" ", "String"), "SPACE"); + Assert.assertEquals(fakeJavaCodegen.toEnumVarName("==", "String"), "u"); } @Test @@ -944,6 +947,93 @@ public void ignoreBeanValidationAnnotationsContainerTest() { Assert.assertEquals(defaultValue, "List"); } + @Test + public void AnnotationsContainerTest() { + final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); + codegen.additionalProperties().put("useBeanValidation", true); + + // 1. string type + Schema schema = new ArraySchema().items(new Schema<>().type("string").pattern("^[a-z]$").minLength(0).maxLength(36)); + String defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List<@Pattern(regexp = \"^[a-z]$\")@Size(min = 0, max = 36)String>"); + + schema = new ArraySchema().items(new Schema<>().type("string").pattern("^[a-z]$").minLength(0)); + defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List<@Pattern(regexp = \"^[a-z]$\")@Size(min = 0)String>"); + + schema = new ArraySchema().items(new Schema<>().type("string").pattern("^[a-z]$").maxLength(36)); + defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List<@Pattern(regexp = \"^[a-z]$\")@Size(max = 36)String>"); + + schema = new ArraySchema().items(new Schema<>().type("string").format("email")); + defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List<@Email String>"); + + // 2. string type with number format + schema = new ArraySchema().items(new Schema<>().type("string").format("number").minimum(BigDecimal.ZERO).maximum(BigDecimal.TEN).exclusiveMinimum(Boolean.TRUE).exclusiveMaximum(Boolean.TRUE)); + defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List<@DecimalMin(value = \"0\", inclusive = false) @DecimalMax(value = \"10\", inclusive = false)BigDecimal>"); + + schema = new ArraySchema().items(new Schema<>().type("string").format("number").minimum(BigDecimal.ZERO).exclusiveMinimum(Boolean.TRUE)); + defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List<@DecimalMin( value = \"0\", inclusive = false)BigDecimal>"); + + schema = new ArraySchema().items(new Schema<>().type("string").format("number").maximum(BigDecimal.TEN).exclusiveMaximum(Boolean.TRUE)); + defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List<@DecimalMax( value = \"10\", inclusive = false)BigDecimal>"); + + // 3. number type + schema = new ArraySchema().items(new Schema<>().type("number").minimum(BigDecimal.ZERO).maximum(BigDecimal.TEN).exclusiveMinimum(Boolean.TRUE).exclusiveMaximum(Boolean.TRUE)); + defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List<@DecimalMin(value = \"0\", inclusive = false) @DecimalMax(value = \"10\", inclusive = false)BigDecimal>"); + + schema = new ArraySchema().items(new Schema<>().type("number").minimum(BigDecimal.ZERO).exclusiveMinimum(Boolean.TRUE)); + defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List<@DecimalMin( value = \"0\", inclusive = false)BigDecimal>"); + + schema = new ArraySchema().items(new Schema<>().type("number").maximum(BigDecimal.TEN).exclusiveMaximum(Boolean.TRUE)); + defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List<@DecimalMax( value = \"10\", inclusive = false)BigDecimal>"); + + schema = new ArraySchema().items(new Schema<>().type("number").minimum(BigDecimal.ZERO).maximum(BigDecimal.TEN)); + defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List<@DecimalMin(value = \"0\", inclusive = true) @DecimalMax(value = \"10\", inclusive = true)BigDecimal>"); + + schema = new ArraySchema().items(new Schema<>().type("number").minimum(BigDecimal.ZERO)); + defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List<@DecimalMin( value = \"0\", inclusive = true)BigDecimal>"); + + schema = new ArraySchema().items(new Schema<>().type("number").maximum(BigDecimal.TEN)); + defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List<@DecimalMax( value = \"10\", inclusive = true)BigDecimal>"); + + // 4. integer type with int64 format + schema = new ArraySchema().items(new Schema<>().type("integer").format("int64").minimum(BigDecimal.ZERO).maximum(BigDecimal.TEN)); + defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List<@Min(0L) @Max(10L)Long>"); + + schema = new ArraySchema().items(new Schema<>().type("integer").format("int64").minimum(BigDecimal.ZERO)); + defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List<@Min(0L)Long>"); + + schema = new ArraySchema().items(new Schema<>().type("integer").format("int64").maximum(BigDecimal.TEN)); + defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List<@Max(10L)Long>"); + + // 5. integer type + schema = new ArraySchema().items(new Schema<>().type("integer").minimum(BigDecimal.ZERO).maximum(BigDecimal.TEN)); + defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List<@Min(0) @Max(10)Integer>"); + + schema = new ArraySchema().items(new Schema<>().type("integer").minimum(BigDecimal.ZERO)); + defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List<@Min(0)Integer>"); + + schema = new ArraySchema().items(new Schema<>().type("integer").maximum(BigDecimal.TEN)); + defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List<@Max(10)Integer>"); + } + private static Schema createObjectSchemaWithMinItems() { return new ObjectSchema() .addProperties("id", new IntegerSchema().format("int32")) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java index e3d026d447a7..c07c74b8f1c9 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java @@ -1899,6 +1899,38 @@ public void testMicroprofileGenerateCorrectJsonbCreator_issue12622() throws Exce .containsWithNameAndAttributes("JsonbProperty", ImmutableMap.of("value", "\"c\"")); } + @Test + public void testMicroprofileGenerateCorrectJacksonGenerator_issue18336() throws Exception { + Map properties = new HashMap<>(); + properties.put(JavaClientCodegen.MICROPROFILE_REST_CLIENT_VERSION, "3.0"); + properties.put(CodegenConstants.SERIALIZATION_LIBRARY, JavaClientCodegen.SERIALIZATION_LIBRARY_JACKSON); + + File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + + .setAdditionalProperties(properties) + .setGeneratorName("java") + .setLibrary(JavaClientCodegen.MICROPROFILE) + .setInputSpec("src/test/resources/bugs/issue_18336.yaml") + .setOutputDir(output.getAbsolutePath().replace("\\", "/")); + + final ClientOptInput clientOptInput = configurator.toClientOptInput(); + DefaultGenerator generator = new DefaultGenerator(); + Map files = generator.opts(clientOptInput).generate().stream() + .collect(Collectors.toMap(File::getName, Function.identity())); + + JavaFileAssert.assertThat(files.get("Pet.java")) + .assertConstructor("String") + .assertConstructorAnnotations() + .containsWithName("JsonCreator") + .toConstructor() + .hasParameter("name") + .assertParameterAnnotations() + .containsWithNameAndAttributes("JsonProperty", ImmutableMap.of("value", "JSON_PROPERTY_NAME", "required", "true")); + } + @Test public void testJavaClientDefaultValues_issueNoNumber() throws Exception { Map properties = new HashMap<>(); @@ -3015,7 +3047,7 @@ public void testAllOfWithSinglePrimitiveTypeRef() throws IOException { } @Test - public void testOpenAPIGeneratorIgnoreListOption() throws IOException { + public void testOpenapiGeneratorIgnoreListOption() throws IOException { File output = Files.createTempDirectory("openapi_generator_ignore_list_test_folder").toFile().getCanonicalFile(); output.deleteOnExit(); final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/allof_primitive.yaml"); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSSpecServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSSpecServerCodegenTest.java index 4e312c8164e1..d63754a27470 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSSpecServerCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSSpecServerCodegenTest.java @@ -714,6 +714,31 @@ public void testHandleDefaultValue_issue8535() throws Exception { .containsWithNameAndAttributes("DefaultValue", ImmutableMap.of("value", "\"true\"")); } + @Test + public void testValidAnnotation_issue14432() throws Exception { + File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); + output.deleteOnExit(); + + OpenAPI openAPI = new OpenAPIParser() + .readLocation("src/test/resources/3_0/issue_14432.yaml", null, new ParseOptions()).getOpenAPI(); + + codegen.setOutputDir(output.getAbsolutePath()); + + ClientOptInput input = new ClientOptInput() + .openAPI(openAPI) + .config(codegen); + + DefaultGenerator generator = new DefaultGenerator(); + Map files = generator.opts(input).generate().stream() + .collect(Collectors.toMap(File::getName, Function.identity())); + + JavaFileAssert.assertThat(files.get("ComplexObject.java")) + .fileContains("private @Valid List dates") + .fileDoesNotContains("private @Valid SymbolTypeEnum symbolType") + .fileDoesNotContains("@Valid String") + .fileDoesNotContains("@Valid Double"); + } + @Test public void arrayNullableDefaultValueTests() throws Exception { final File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); @@ -783,6 +808,103 @@ public void generateApiForQuarkusWithGzipFeature() throws Exception { ); } + @Test + public void generateApiForQuarkusWithoutMutiny() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final OpenAPI openAPI = new OpenAPIParser() + .readLocation("src/test/resources/3_0/issue_4832.yaml", null, new ParseOptions()).getOpenAPI(); + + codegen.setOutputDir(output.getAbsolutePath()); + codegen.setLibrary(QUARKUS_LIBRARY); + codegen.additionalProperties().put(SUPPORT_ASYNC, true); + codegen.additionalProperties().put(USE_TAGS, true); //And use tags to generate everything in PingApi.java + + final ClientOptInput input = new ClientOptInput() + .openAPI(openAPI) + .config(codegen); //Using JavaJAXRSSpecServerCodegen + + final DefaultGenerator generator = new DefaultGenerator(); + final List files = generator.opts(input).generate(); //When generating files + + //Then the java files are compilable + validateJavaSourceFiles(files); + + //And the generated class contains CompletionStage + TestUtils.ensureContainsFile(files, output, "src/gen/java/org/openapitools/api/PingApi.java"); + TestUtils.assertFileContains(output.toPath().resolve("src/gen/java/org/openapitools/api/PingApi.java"), + "CompletionStage pingGetBoolean", //Support primitive types response + "CompletionStage pingGetInteger" //Support primitive types response + ); + } + + @Test + public void generateApiForQuarkusWithMutinyApi() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final OpenAPI openAPI = new OpenAPIParser() + .readLocation("src/test/resources/3_0/issue_4832.yaml", null, new ParseOptions()).getOpenAPI(); + + codegen.setOutputDir(output.getAbsolutePath()); + codegen.setLibrary(QUARKUS_LIBRARY); + codegen.additionalProperties().put(USE_TAGS, true); //And use tags to generate everything in PingApi.java + codegen.additionalProperties().put(SUPPORT_ASYNC, true); + codegen.additionalProperties().put(INTERFACE_ONLY, true); + codegen.additionalProperties().put(USE_MUTINY, true); + + final ClientOptInput input = new ClientOptInput() + .openAPI(openAPI) + .config(codegen); //Using JavaJAXRSSpecServerCodegen + + final DefaultGenerator generator = new DefaultGenerator(); + final List files = generator.opts(input).generate(); //When generating files + + //Then the java files are compilable + validateJavaSourceFiles(files); + + //And the generated class contains CompletionStage + TestUtils.ensureContainsFile(files, output, "src/gen/java/org/openapitools/api/PingApi.java"); + TestUtils.assertFileContains(output.toPath().resolve("src/gen/java/org/openapitools/api/PingApi.java"), + "Uni pingGetBoolean", //Support primitive types response + "Uni pingGetInteger" //Support primitive types response + ); + } + + + @Test + public void generateApiForQuarkusWithMutinyImpl() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final OpenAPI openAPI = new OpenAPIParser() + .readLocation("src/test/resources/3_0/issue_4832.yaml", null, new ParseOptions()).getOpenAPI(); + + codegen.setOutputDir(output.getAbsolutePath()); + codegen.setLibrary(QUARKUS_LIBRARY); + codegen.additionalProperties().put(USE_TAGS, true); //And use tags to generate everything in PingApi.java + codegen.additionalProperties().put(SUPPORT_ASYNC, true); + codegen.additionalProperties().put(USE_MUTINY, true); + + final ClientOptInput input = new ClientOptInput() + .openAPI(openAPI) + .config(codegen); //Using JavaJAXRSSpecServerCodegen + + final DefaultGenerator generator = new DefaultGenerator(); + final List files = generator.opts(input).generate(); //When generating files + + //Then the java files are compilable + validateJavaSourceFiles(files); + + //And the generated class contains CompletionStage + TestUtils.ensureContainsFile(files, output, "src/gen/java/org/openapitools/api/PingApi.java"); + TestUtils.assertFileContains(output.toPath().resolve("src/gen/java/org/openapitools/api/PingApi.java"), + "Uni pingGetBoolean", //Support primitive types response + "Uni pingGetInteger" //Support primitive types response + ); + } + @Test public void testHandleRequiredAndReadOnlyPropertiesCorrectly() throws Exception { File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java index 29036507f088..d2249db3983c 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java @@ -45,23 +45,6 @@ import static org.testng.Assert.assertEquals; import static org.testng.Assert.fail; -import com.github.javaparser.ast.NodeList; -import com.github.javaparser.ast.expr.ArrayInitializerExpr; -import com.github.javaparser.ast.expr.ClassExpr; -import com.github.javaparser.ast.expr.MemberValuePair; -import com.github.javaparser.ast.expr.Name; -import com.github.javaparser.ast.expr.NormalAnnotationExpr; -import com.github.javaparser.ast.expr.SingleMemberAnnotationExpr; -import com.github.javaparser.ast.expr.StringLiteralExpr; -import com.github.javaparser.ast.type.ClassOrInterfaceType; -import com.google.common.collect.ImmutableMap; -import io.swagger.parser.OpenAPIParser; -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.Schema; -import io.swagger.v3.oas.models.servers.Server; -import io.swagger.v3.parser.core.models.ParseOptions; import java.io.File; import java.io.IOException; import java.math.BigDecimal; @@ -100,6 +83,16 @@ import org.testng.annotations.Ignore; import org.testng.annotations.Test; +import com.google.common.collect.ImmutableMap; + +import io.swagger.parser.OpenAPIParser; +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.Schema; +import io.swagger.v3.oas.models.servers.Server; +import io.swagger.v3.parser.core.models.ParseOptions; + public class SpringCodegenTest { @Test @@ -4311,7 +4304,7 @@ public void testModelsWithNoneOptionalAndNoneOpenApiNullable() throws IOExceptio assertMethod(javaFileAssert, BigDecimal.class, "numberMaxNullable"); } - + private void assertOptionalMethod(JavaFileAssert javaFileAssert, Class type, String expectedName, String getterReturnType){ assertOptionalMethod(javaFileAssert, type.getSimpleName(), expectedName, getterReturnType); } @@ -4525,46 +4518,6 @@ public void givenMultipartForm_whenGenerateBlockedServer_thenParameterAreCreated "@Valid @RequestParam(value = \"additionalMetadata\", required = false) String additionalMetadata"); } - @Test - public void testXDiscriminatorValue_issue17343() throws IOException { - File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); - output.deleteOnExit(); - - final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/bugs/issue_17343.yaml"); - final SpringCodegen codegen = new SpringCodegen(); - codegen.setOpenAPI(openAPI); - codegen.setModelNameSuffix("Dto"); - codegen.setOutputDir(output.getAbsolutePath()); - ClientOptInput input = new ClientOptInput(); - input.openAPI(openAPI); - input.config(codegen); - - DefaultGenerator generator = new DefaultGenerator(); - - Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); - - JavaFileAssert.assertThat(files.get("DogItemDto.java")).assertTypeAnnotations() - .doesNotContainsWithName("JsonTypeName"); - JavaFileAssert.assertThat(files.get("CatItemDto.java")).assertTypeAnnotations() - .doesNotContainsWithName("JsonTypeName"); - JavaFileAssert.assertThat(files.get("PetItemDto.java")) - .assertTypeAnnotations() - .contains(new SingleMemberAnnotationExpr(new Name("JsonSubTypes"), - new ArrayInitializerExpr(NodeList.nodeList( - new NormalAnnotationExpr(new Name(new Name("JsonSubTypes"), "Type"), - NodeList.nodeList( - new MemberValuePair("value", new ClassExpr(new ClassOrInterfaceType("CatItemDto"))), - new MemberValuePair("name", new StringLiteralExpr("CAT")) - )), - new NormalAnnotationExpr(new Name(new Name("JsonSubTypes"), "Type"), - NodeList.nodeList( - new MemberValuePair("value", new ClassExpr(new ClassOrInterfaceType("DogItemDto"))), - new MemberValuePair("name", new StringLiteralExpr("DOG")) - ))) - ))); - } - @Test public void testMultiInheritanceParentRequiredParams_issue16797() throws IOException { final Map output = generateFromContract("src/test/resources/3_0/spring/issue_16797.yaml", SPRING_BOOT); @@ -4710,4 +4663,29 @@ public void testCollectionTypesWithDefaults_issue_18102() throws IOException { .fileDoesNotContains("private List stringList = new ArrayList<>()") .fileDoesNotContains("private Set stringSet = new LinkedHashSet<>()"); } + + @Test + public void shouldGenerateOptionalParameterTypesWhenUsingOptionalAndDelegate_issue17768() throws IOException { + Map additionalProperties = new HashMap<>(); + additionalProperties.put(SpringCodegen.USE_TAGS, "true"); + additionalProperties.put(SpringCodegen.SKIP_DEFAULT_INTERFACE, "true"); + additionalProperties.put(SpringCodegen.PERFORM_BEANVALIDATION, "true"); + additionalProperties.put(SpringCodegen.SPRING_CONTROLLER, "true"); + additionalProperties.put(CodegenConstants.SERIALIZATION_LIBRARY, "jackson"); + additionalProperties.put(SpringCodegen.USE_OPTIONAL, "true"); + additionalProperties.put(DELEGATE_PATTERN, "true"); + Map files = generateFromContract("src/test/resources/bugs/issue_17768.yaml", SPRING_BOOT, additionalProperties); + JavaFileAssert.assertThat(files.get("TestApiDelegate.java")) + .assertMethod("updatePost") + .hasParameter("updateRequest") + .withType("Optional") + .toMethod() + .toFileAssert(); + JavaFileAssert.assertThat(files.get("TestApi.java")) + .assertMethod("updatePost") + .hasParameter("updateRequest") + .withType("Optional") + .toMethod() + .toFileAssert(); + } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java index 374d1d08e614..b820edc33848 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java @@ -60,6 +60,7 @@ public void originalEnumConverter() { assertEquals(codegen.toEnumVarName("long Name", null), "long_Name"); assertEquals(codegen.toEnumVarName("1long Name", null), "_1long_Name"); assertEquals(codegen.toEnumVarName("not1long Name", null), "not1long_Name"); + assertEquals(codegen.toEnumVarName("data/*", null), "dataSlashStar"); } @Test public void pascalCaseEnumConverter() { @@ -78,6 +79,7 @@ public void toEnumValue() { assertEquals(codegen.toEnumValue("5", "kotlin.Float"), "5f"); assertEquals(codegen.toEnumValue("1.0", "kotlin.Float"), "1.0f"); assertEquals(codegen.toEnumValue("data", "Something"), "\"data\""); + assertEquals(codegen.toEnumValue("data/*", "Something"), "\"data/*\""); } private static class P_AbstractKotlinCodegen extends AbstractKotlinCodegen { diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/GoClientOptionsProvider.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/GoClientOptionsProvider.java index 830fd29a6c54..372e293f636d 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/GoClientOptionsProvider.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/GoClientOptionsProvider.java @@ -38,6 +38,7 @@ public class GoClientOptionsProvider implements OptionsProvider { public static final boolean USE_ONE_OF_DISCRIMINATOR_LOOKUP_VALUE = true; public static final boolean WITH_GO_MOD_VALUE = true; public static final boolean GENERATE_MARSHAL_JSON_VALUE = true; + public static final boolean GENERATE_UNMARSHAL_JSON_VALUE = true; @Override public String getLanguage() { @@ -60,6 +61,7 @@ public Map createOptions() { .put(CodegenConstants.USE_ONEOF_DISCRIMINATOR_LOOKUP, "true") .put(CodegenConstants.WITH_GO_MOD, "true") .put(CodegenConstants.GENERATE_MARSHAL_JSON, "true") + .put(CodegenConstants.GENERATE_UNMARSHAL_JSON, "true") .put("generateInterfaces", "true") .put("structPrefix", "true") .build(); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/flight/PhpFlightServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/flight/PhpFlightServerCodegenTest.java new file mode 100644 index 000000000000..cbba0a00ed84 --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/flight/PhpFlightServerCodegenTest.java @@ -0,0 +1,74 @@ +package org.openapitools.codegen.php.flight; + +import java.io.File; +import java.nio.file.Files; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.openapitools.codegen.ClientOptInput; +import org.openapitools.codegen.DefaultGenerator; +import org.openapitools.codegen.TestUtils; +import org.openapitools.codegen.config.CodegenConfigurator; +import org.testng.annotations.Test; + +public class PhpFlightServerCodegenTest { + + @Test + public void shouldGenerateModel() throws Exception { + Map properties = new HashMap<>(); + + File output = Files.createTempDirectory("test").toFile(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("php-flight") + .setAdditionalProperties(properties) + .setInputSpec("src/test/resources/3_0/petstore-php-flight.yaml") + .setOutputDir(output.getAbsolutePath().replace("\\", "/")); + + final ClientOptInput clientOptInput = configurator.toClientOptInput(); + DefaultGenerator generator = new DefaultGenerator(); + List files = generator.opts(clientOptInput).generate(); + + TestUtils.ensureContainsFile(files, output, "Api/AbstractPetApi.php"); + TestUtils.ensureContainsFile(files, output, "Model/Pet.php"); + TestUtils.ensureContainsFile(files, output, "Model/StandaloneEnum.php"); + TestUtils.ensureContainsFile(files, output, "Model/PetStatus.php"); // inline enum + TestUtils.ensureContainsFile(files, output, "README.md"); + TestUtils.ensureContainsFile(files, output, "RegisterRoutes.php"); + + java.nio.file.Path petModelFile = files.stream().filter(f -> f.getName().contains("Pet.php")).findFirst().orElseThrow().toPath(); + TestUtils.assertFileContains(petModelFile, "namespace OpenAPIServer\\Model;"); + TestUtils.assertFileContains(petModelFile, "public int $id;"); + TestUtils.assertFileContains(petModelFile, "public ?string $name;"); + TestUtils.assertFileContains(petModelFile, "public ?\\DateTime $dateTimeAttribute;"); + TestUtils.assertFileContains(petModelFile, "@var Order[]|null"); + TestUtils.assertFileContains(petModelFile, "public ?array $objectList;"); + TestUtils.assertFileContains(petModelFile, "$data['photo_urls'] ?? null,"); + TestUtils.assertFileContains(petModelFile, "'photo_urls' => $this->photoUrls"); + + TestUtils.assertFileContains(petModelFile, "isset($data['category']) ? Category::fromArray($data['category']) : null,"); + TestUtils.assertFileContains(petModelFile, "isset($data['status']) ? PetStatus::tryFrom($data['status']) : null"); + TestUtils.assertFileContains(petModelFile, "isset($data['refEnum']) ? StandaloneEnum::tryFrom($data['refEnum']) : null"); + TestUtils.assertFileContains(petModelFile, "isset($data['dateTimeAttribute']) ? new \\DateTime($data['dateTimeAttribute']) : null"); + + java.nio.file.Path petApiFile = files.stream().filter(f -> f.getName().contains("AbstractPetApi.php")).findFirst().orElseThrow().toPath(); + TestUtils.assertFileContains(petApiFile, "namespace OpenAPIServer\\Api;"); + TestUtils.assertFileContains(petApiFile, "public function getPetById(int $petId)"); + TestUtils.assertFileContains(petApiFile, "public function updatePet(\\OpenAPIServer\\Model\\Pet $pet): \\OpenAPIServer\\Model\\Pet|null"); + + java.nio.file.Path registerRoutesFile = files.stream().filter(f -> f.getName().contains("RegisterRoutes.php")).findFirst().orElseThrow().toPath(); + TestUtils.assertFileContains(registerRoutesFile, "function registerRoutes(\\OpenAPIServer\\Api\\AbstractPetApi|\\OpenAPIServer\\Api\\AbstractUserApi $handler): void"); + TestUtils.assertFileContains(registerRoutesFile, + "Flight::route('POST /user/createWithArray/@pathParamInt/@pathParamString', function (string $pathParamInt, string $pathParamString) use ($handler) {"); + TestUtils.assertFileContains(registerRoutesFile, "parseParam($pathParamInt, 'int')"); + TestUtils.assertFileContains(registerRoutesFile, "parseParam($pathParamString, 'string')"); + TestUtils.assertFileContains(registerRoutesFile, "parseParam(json_decode($r->getBody(), true), '\\\\OpenAPIServer\\\\Model\\\\User[]')"); + TestUtils.assertFileContains(registerRoutesFile, "parseParam($r->getHeader('api_key'), '?string')"); + + Files.readAllLines(files.stream().filter(f -> f.getName().contains("RegisterRoutesTest.php")).findFirst().orElseThrow().toPath()).forEach(System.out::println); + java.nio.file.Path registerRoutesTestFile = files.stream().filter(f -> f.getName().contains("RegisterRoutesTest.php")).findFirst().orElseThrow().toPath(); + TestUtils.assertFileContains(registerRoutesTestFile, "namespace OpenAPIServer\\Test;"); + + output.deleteOnExit(); + } +} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/postman/PostmanCollectionCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/postman/PostmanCollectionCodegenTest.java index 32b33f2370b4..fedee8c1129c 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/postman/PostmanCollectionCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/postman/PostmanCollectionCodegenTest.java @@ -602,11 +602,12 @@ public void convertObjectNodeIncludingDoubleQuoteToJson() { @Test public void convertLinkedHashMapToJson() { - final String EXPECTED = "{\\n \\\"id\\\": 1,\\n \\\"city\\\": \\\"Amsterdam\\\"\\n}"; + final String EXPECTED = "{\\n \\\"id\\\": 1,\\n \\\"city\\\": \\\"Amsterdam\\\",\\n \\\"safe\\\": true\\n}"; LinkedHashMap city = new LinkedHashMap<>(); city.put("id", 1); city.put("city", "Amsterdam"); + city.put("safe", true); assertEquals(EXPECTED, new PostmanCollectionCodegen().convertToJson(city)); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java index 31a67ed61901..a8f559512820 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java @@ -6,8 +6,12 @@ import io.swagger.v3.oas.models.media.MapSchema; import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.StringSchema; +import org.openapitools.codegen.config.CodegenConfigurator; +import org.openapitools.codegen.ClientOptInput; import org.openapitools.codegen.CodegenConstants; import org.openapitools.codegen.CodegenOperation; +import org.openapitools.codegen.DefaultGenerator; +import org.openapitools.codegen.Generator; import org.openapitools.codegen.SupportingFile; import org.openapitools.codegen.TestUtils; import org.openapitools.codegen.languages.AbstractTypeScriptClientCodegen; @@ -17,6 +21,14 @@ import org.testng.Assert; import org.testng.annotations.Test; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import static org.assertj.core.api.Assertions.assertThat; @Test(groups = {TypeScriptGroups.TYPESCRIPT, TypeScriptGroups.TYPESCRIPT_FETCH}) @@ -55,6 +67,32 @@ public void testOptionalResponseImports() { Assert.assertEquals(operation.isResponseOptional, true); } + @Test + public void testModelsWithoutPaths() throws IOException { + final String specPath = "src/test/resources/3_1/reusable-components-without-paths.yaml"; + + Map properties = new HashMap<>(); + properties.put("supportsES6", true); + + File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("typescript-fetch") + .setInputSpec(specPath) + .setAdditionalProperties(properties) + .setOutputDir(output.getAbsolutePath().replace("\\", "/")); + + Generator generator = new DefaultGenerator(); + List files = generator.opts(configurator.toClientOptInput()).generate(); + files.forEach(File::deleteOnExit); + + TestUtils.assertFileExists(Paths.get(output + "/index.ts")); + TestUtils.assertFileExists(Paths.get(output + "/runtime.ts")); + TestUtils.assertFileExists(Paths.get(output + "/models/Pet.ts")); + TestUtils.assertFileExists(Paths.get(output + "/models/index.ts")); + } + @Test public void testWithoutSnapshotVersion() { OpenAPI api = TestUtils.createOpenAPI(); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/utils/ModelUtilsTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/utils/ModelUtilsTest.java index 76bd51b43a5f..d99c2fa678c6 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/utils/ModelUtilsTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/utils/ModelUtilsTest.java @@ -384,5 +384,11 @@ public void test31Schemas() { Assert.assertFalse(anyof2.getAnyOf().isEmpty()); Assert.assertTrue(ModelUtils.hasAnyOf(anyof2)); Assert.assertTrue(ModelUtils.isAnyOf(anyof2)); + + Schema objectSchema = ModelUtils.getSchema(openAPI, "ObjectSchema"); + Assert.assertTrue(ModelUtils.isMapSchema(objectSchema)); + + Schema complexComposedSchema = ModelUtils.getSchema(openAPI, "ComplexComposedSchema"); + Assert.assertTrue(ModelUtils.isComplexComposedSchema(complexComposedSchema)); } } diff --git a/modules/openapi-generator/src/test/resources/3_0/cpp-ue4/petstore.yaml b/modules/openapi-generator/src/test/resources/3_0/cpp-ue4/petstore.yaml new file mode 100644 index 000000000000..ac21aadd1b04 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/cpp-ue4/petstore.yaml @@ -0,0 +1,717 @@ +swagger: '2.0' +info: + description: 'This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.' + version: 1.0.0 + title: OpenAPI Petstore + license: + name: Apache-2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0.html' +host: petstore.swagger.io +basePath: /v2 +tags: + - name: pet + description: Everything about your Pets + - name: store + description: Access to Petstore orders + - name: user + description: Operations about user +schemes: + - http +paths: + /fake/map-body-parameter: + post: + tags: + - fake + summary: Test maps as body parameter + description: '' + operationId: testMapAsBodyParameter + parameters: + - in: body + name: body + required: true + schema: + type: object + properties: + Attributes: + type: object + additionalProperties: + type: string + nullable: true + responses: + '400': + description: Invalid input + /pet: + post: + tags: + - pet + summary: Add a new pet to the store + description: '' + operationId: addPet + consumes: + - application/json + - application/xml + produces: + - application/xml + - application/json + parameters: + - in: body + name: body + description: Pet object that needs to be added to the store + required: true + schema: + $ref: '#/definitions/Pet' + responses: + '405': + description: Invalid input + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + put: + tags: + - pet + summary: Update an existing pet + description: '' + operationId: updatePet + consumes: + - application/json + - application/xml + produces: + - application/xml + - application/json + parameters: + - in: body + name: body + description: Pet object that needs to be added to the store + required: true + schema: + $ref: '#/definitions/Pet' + responses: + '400': + description: Invalid ID supplied + '404': + description: Pet not found + '405': + description: Validation exception + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + /pet/findByStatus: + get: + tags: + - pet + summary: Finds Pets by status + description: Multiple status values can be provided with comma separated strings + operationId: findPetsByStatus + produces: + - application/xml + - application/json + parameters: + - name: status + in: query + description: Status values that need to be considered for filter + required: true + type: array + items: + type: string + enum: + - available + - pending + - sold + default: available + collectionFormat: csv + responses: + '200': + description: successful operation + schema: + type: array + items: + $ref: '#/definitions/Pet' + '400': + description: Invalid status value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + /pet/findByTags: + get: + tags: + - pet + summary: Finds Pets by tags + description: 'Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.' + operationId: findPetsByTags + produces: + - application/xml + - application/json + parameters: + - name: tags + in: query + description: Tags to filter by + required: true + type: array + items: + type: string + collectionFormat: csv + responses: + '200': + description: successful operation + schema: + type: array + items: + $ref: '#/definitions/Pet' + '400': + description: Invalid tag value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + deprecated: true + '/pet/{petId}': + get: + tags: + - pet + summary: Find pet by ID + description: Returns a single pet + operationId: getPetById + produces: + - application/xml + - application/json + parameters: + - name: petId + in: path + description: ID of pet to return + required: true + type: integer + format: int64 + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/Pet' + '400': + description: Invalid ID supplied + '404': + description: Pet not found + security: + - api_key: [] + post: + tags: + - pet + summary: Updates a pet in the store with form data + description: '' + operationId: updatePetWithForm + consumes: + - application/x-www-form-urlencoded + produces: + - application/xml + - application/json + parameters: + - name: petId + in: path + description: ID of pet that needs to be updated + required: true + type: integer + format: int64 + - name: name + in: formData + description: Updated name of the pet + required: false + type: string + - name: status + in: formData + description: Updated status of the pet + required: false + type: string + responses: + '405': + description: Invalid input + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + delete: + tags: + - pet + summary: Deletes a pet + description: '' + operationId: deletePet + produces: + - application/xml + - application/json + parameters: + - name: api_key + in: header + required: false + type: string + - name: petId + in: path + description: Pet id to delete + required: true + type: integer + format: int64 + responses: + '400': + description: Invalid pet value + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + '/pet/{petId}/uploadImage': + post: + tags: + - pet + summary: uploads an image + description: '' + operationId: uploadFile + consumes: + - multipart/form-data + produces: + - application/json + parameters: + - name: petId + in: path + description: ID of pet to update + required: true + type: integer + format: int64 + - name: additionalMetadata + in: formData + description: Additional data to pass to server + required: false + type: string + - name: file + in: formData + description: file to upload + required: false + type: file + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/ApiResponse' + security: + - petstore_auth: + - 'write:pets' + - 'read:pets' + /store/inventory: + get: + tags: + - store + summary: Returns pet inventories by status + description: Returns a map of status codes to quantities + operationId: getInventory + produces: + - application/json + parameters: [] + responses: + '200': + description: successful operation + schema: + type: object + additionalProperties: + type: integer + format: int32 + security: + - api_key: [] + /store/order: + post: + tags: + - store + summary: Place an order for a pet + description: '' + operationId: placeOrder + produces: + - application/xml + - application/json + parameters: + - in: body + name: body + description: order placed for purchasing the pet + required: true + schema: + $ref: '#/definitions/Order' + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/Order' + '400': + description: Invalid Order + '/store/order/{orderId}': + get: + tags: + - store + summary: Find purchase order by ID + description: 'For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions' + operationId: getOrderById + produces: + - application/xml + - application/json + parameters: + - name: orderId + in: path + description: ID of pet that needs to be fetched + required: true + type: integer + maximum: 5 + minimum: 1 + format: int64 + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/Order' + '400': + description: Invalid ID supplied + '404': + description: Order not found + delete: + tags: + - store + summary: Delete purchase order by ID + description: For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + operationId: deleteOrder + produces: + - application/xml + - application/json + parameters: + - name: orderId + in: path + description: ID of the order that needs to be deleted + required: true + type: string + responses: + '400': + description: Invalid ID supplied + '404': + description: Order not found + /user: + post: + tags: + - user + summary: Create user + description: This can only be done by the logged in user. + operationId: createUser + produces: + - application/xml + - application/json + parameters: + - in: body + name: body + description: Created user object + required: true + schema: + $ref: '#/definitions/User' + responses: + default: + description: successful operation + /user/createWithArray: + post: + tags: + - user + summary: Creates list of users with given input array + description: '' + operationId: createUsersWithArrayInput + produces: + - application/xml + - application/json + parameters: + - in: body + name: body + description: List of user object + required: true + schema: + type: array + items: + $ref: '#/definitions/User' + responses: + default: + description: successful operation + /user/createWithList: + post: + tags: + - user + summary: Creates list of users with given input array + description: '' + operationId: createUsersWithListInput + produces: + - application/xml + - application/json + parameters: + - in: body + name: body + description: List of user object + required: true + schema: + type: array + items: + $ref: '#/definitions/User' + responses: + default: + description: successful operation + /user/login: + get: + tags: + - user + summary: Logs user into the system + description: '' + operationId: loginUser + produces: + - application/xml + - application/json + parameters: + - name: username + in: query + description: The user name for login + required: true + type: string + - name: password + in: query + description: The password for login in clear text + required: true + type: string + responses: + '200': + description: successful operation + schema: + type: string + headers: + X-Rate-Limit: + type: integer + format: int32 + description: calls per hour allowed by the user + X-Expires-After: + type: string + format: date-time + description: date in UTC when token expires + '400': + description: Invalid username/password supplied + /user/logout: + get: + tags: + - user + summary: Logs out current logged in user session + description: '' + operationId: logoutUser + produces: + - application/xml + - application/json + parameters: [] + responses: + default: + description: successful operation + '/user/{username}': + get: + tags: + - user + summary: Get user by user name + description: '' + operationId: getUserByName + produces: + - application/xml + - application/json + parameters: + - name: username + in: path + description: 'The name that needs to be fetched. Use user1 for testing.' + required: true + type: string + responses: + '200': + description: successful operation + schema: + $ref: '#/definitions/User' + '400': + description: Invalid username supplied + '404': + description: User not found + put: + tags: + - user + summary: Updated user + description: This can only be done by the logged in user. + operationId: updateUser + produces: + - application/xml + - application/json + parameters: + - name: username + in: path + description: name that need to be deleted + required: true + type: string + - in: body + name: body + description: Updated user object + required: true + schema: + $ref: '#/definitions/User' + responses: + '400': + description: Invalid user supplied + '404': + description: User not found + delete: + tags: + - user + summary: Delete user + description: This can only be done by the logged in user. + operationId: deleteUser + produces: + - application/xml + - application/json + parameters: + - name: username + in: path + description: The name that needs to be deleted + required: true + type: string + responses: + '400': + description: Invalid username supplied + '404': + description: User not found +securityDefinitions: + petstore_auth: + type: oauth2 + authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog' + flow: implicit + scopes: + 'write:pets': modify pets in your account + 'read:pets': read your pets + api_key: + type: apiKey + name: api_key + in: header +definitions: + Order: + title: Pet Order + description: An order for a pets from the pet store + type: object + properties: + id: + type: integer + format: int64 + petId: + type: integer + format: int64 + quantity: + type: integer + format: int32 + shipDate: + type: string + format: date-time + status: + type: string + description: Order Status + enum: + - placed + - approved + - delivered + complete: + type: boolean + default: false + xml: + name: Order + Category: + title: Pet category + description: A category for a pet + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + xml: + name: Category + User: + title: a User + description: A User who is purchasing from the pet store + type: object + properties: + id: + type: integer + format: int64 + username: + type: string + firstName: + type: string + lastName: + type: string + email: + type: string + password: + type: string + phone: + type: string + userStatus: + type: integer + format: int32 + description: User Status + xml: + name: User + Tag: + title: Pet Tag + description: A tag for a pet + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + xml: + name: Tag + Pet: + title: a Pet + description: A pet for sale in the pet store + type: object + required: + - name + - photoUrls + properties: + id: + type: integer + format: int64 + category: + $ref: '#/definitions/Category' + name: + type: string + example: doggie + photoUrls: + type: array + xml: + name: photoUrl + wrapped: true + items: + type: string + tags: + type: array + xml: + name: tag + wrapped: true + items: + $ref: '#/definitions/Tag' + status: + type: string + description: pet status in the store + enum: + - available + - pending + - sold + xml: + name: Pet + ApiResponse: + title: An uploaded response + description: Describes the result of uploading an image resource + type: object + properties: + code: + type: integer + format: int32 + type: + type: string + message: + type: string diff --git a/modules/openapi-generator/src/test/resources/3_0/go/allof_multiple_ref_and_discriminator.yaml b/modules/openapi-generator/src/test/resources/3_0/go/allof_multiple_ref_and_discriminator.yaml new file mode 100644 index 000000000000..f32b662de1e5 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/go/allof_multiple_ref_and_discriminator.yaml @@ -0,0 +1,54 @@ +openapi: 3.0.0 +info: + title: Test + version: 1.0.0 +paths: {} +components: + schemas: + FinalItem: + type: object + allOf: + - $ref: '#/components/schemas/BaseItem' + - $ref: '#/components/schemas/AdditionalData' + BaseItem: + type: object + properties: + title: + type: string + type: + type: string + enum: + - FINAL + example: FINAL + discriminator: + propertyName: type + mapping: + FINAL: '#/components/schemas/FinalItem' + required: + - title + - type + AdditionalData: + type: object + properties: + prop1: + type: string + quantity: + type: integer + format: int32 + example: 1 + minimum: 1 + unitPrice: + type: number + format: double + example: 9.99 + minimum: 0.0 + totalPrice: + type: number + format: double + example: 9.99 + minimum: 0.0 + required: + - prop1 + - quantity + - unitPrice + - totalPrice \ No newline at end of file diff --git a/modules/openapi-generator/src/test/resources/3_0/go/allof_skip_unmarshal_json.yaml b/modules/openapi-generator/src/test/resources/3_0/go/allof_skip_unmarshal_json.yaml new file mode 100644 index 000000000000..bd69102a8550 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/go/allof_skip_unmarshal_json.yaml @@ -0,0 +1,55 @@ +openapi: 3.0.0 +info: + title: Test + version: 1.0.0 +paths: {} +components: + schemas: + FinalItem: + type: object + allOf: + - $ref: '#/components/schemas/BaseItem' + - $ref: '#/components/schemas/AdditionalData' + BaseItem: + type: object + x-go-generate-unmarshal-json: false + properties: + title: + type: string + type: + type: string + enum: + - FINAL + example: FINAL + discriminator: + propertyName: type + mapping: + FINAL: '#/components/schemas/FinalItem' + required: + - title + - type + AdditionalData: + type: object + properties: + prop1: + type: string + quantity: + type: integer + format: int32 + example: 1 + minimum: 1 + unitPrice: + type: number + format: double + example: 9.99 + minimum: 0.0 + totalPrice: + type: number + format: double + example: 9.99 + minimum: 0.0 + required: + - prop1 + - quantity + - unitPrice + - totalPrice \ No newline at end of file diff --git a/modules/openapi-generator/src/test/resources/3_0/go/allof_with_unmarshal_json.yaml b/modules/openapi-generator/src/test/resources/3_0/go/allof_with_unmarshal_json.yaml new file mode 100644 index 000000000000..f32b662de1e5 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/go/allof_with_unmarshal_json.yaml @@ -0,0 +1,54 @@ +openapi: 3.0.0 +info: + title: Test + version: 1.0.0 +paths: {} +components: + schemas: + FinalItem: + type: object + allOf: + - $ref: '#/components/schemas/BaseItem' + - $ref: '#/components/schemas/AdditionalData' + BaseItem: + type: object + properties: + title: + type: string + type: + type: string + enum: + - FINAL + example: FINAL + discriminator: + propertyName: type + mapping: + FINAL: '#/components/schemas/FinalItem' + required: + - title + - type + AdditionalData: + type: object + properties: + prop1: + type: string + quantity: + type: integer + format: int32 + example: 1 + minimum: 1 + unitPrice: + type: number + format: double + example: 9.99 + minimum: 0.0 + totalPrice: + type: number + format: double + example: 9.99 + minimum: 0.0 + required: + - prop1 + - quantity + - unitPrice + - totalPrice \ No newline at end of file diff --git a/modules/openapi-generator/src/test/resources/3_0/issue_14432.yaml b/modules/openapi-generator/src/test/resources/3_0/issue_14432.yaml new file mode 100644 index 000000000000..6f0a9e77ae93 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/issue_14432.yaml @@ -0,0 +1,30 @@ +openapi: "3.0.3" +info: + title: "Demo models" + version: "1.0" +paths: {} +components: + schemas: + ComplexObject: + type: "object" + properties: + id: + type: "string" + probability: + type: "number" + format: "double" + dates: + type: "array" + items: + type: "string" + format: "date" + symbolType: + type: "string" + enum: + - "SYMBOL1" + - "SYMBOL2" + - "SYMBOL3" + ComplexArray: + type: array + items: + $ref: '#/components/schemas/ComplexObject' diff --git a/modules/openapi-generator/src/test/resources/3_0/java/petstore-with-fake-endpoints-models-for-testing-okhttp-gson.yaml b/modules/openapi-generator/src/test/resources/3_0/java/petstore-with-fake-endpoints-models-for-testing-okhttp-gson.yaml index 9e353005e13c..0aff5a7c0957 100644 --- a/modules/openapi-generator/src/test/resources/3_0/java/petstore-with-fake-endpoints-models-for-testing-okhttp-gson.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/java/petstore-with-fake-endpoints-models-for-testing-okhttp-gson.yaml @@ -2675,3 +2675,22 @@ components: $ref: '#/components/schemas/Pet/properties/status' xml: name: Pet + ArrayOneOf: + oneOf: + - type: integer + - type: array + items: + type: string + ArrayAnyOf: + anyOf: + - type: integer + - type: array + items: + type: string + ModelWithOneOfAnyOfProperties: + type: object + properties: + oneof_prop: + $ref: '#/components/schemas/ArrayOneOf' + anyof_prop: + $ref: '#/components/schemas/ArrayAnyOf' diff --git a/modules/openapi-generator/src/test/resources/3_0/petstore-php-flight.yaml b/modules/openapi-generator/src/test/resources/3_0/petstore-php-flight.yaml new file mode 100644 index 000000000000..ded453c4dd3f --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/petstore-php-flight.yaml @@ -0,0 +1,411 @@ +openapi: 3.0.0 +servers: + - url: 'http://petstore.swagger.io/v2' +info: + description: >- + This is a sample server Petstore server. For this sample, you can use the api key + `special-key` to test the authorization filters. + version: 1.0.0 + title: OpenAPI Petstore + license: + name: Apache-2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0.html' +tags: + - name: pet + description: Everything about your Pets + - name: store + description: Access to Petstore orders + - name: user + description: Operations about user +paths: + /pet: + post: + tags: + - pet + summary: Add a new pet to the store + description: '' + operationId: addPet + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + '405': + description: Invalid input + requestBody: + $ref: '#/components/requestBodies/Pet' + put: + tags: + - pet + summary: Update an existing pet + description: '' + operationId: updatePet + externalDocs: + url: "http://petstore.swagger.io/v2/doc/updatePet" + description: "API documentation for the updatePet operation" + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + '400': + description: Invalid ID supplied + '404': + description: Pet not found + '405': + description: Validation exception + requestBody: + $ref: '#/components/requestBodies/Pet' + '/pet/{petId}': + get: + tags: + - pet + summary: Find pet by ID + description: Returns a single pet + operationId: getPetById + parameters: + - name: petId + in: path + description: ID of pet to return + required: true + schema: + type: integer + format: int64 + responses: + '200': + description: successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + '400': + description: Invalid ID supplied + '404': + description: Pet not found + security: + - api_key: [] + post: + tags: + - pet + summary: Updates a pet in the store with form data + description: '' + operationId: updatePetWithForm + parameters: + - name: petId + in: path + description: ID of pet that needs to be updated + required: true + schema: + type: integer + format: int64 + responses: + '405': + description: Invalid input + requestBody: + content: + application/json: + schema: + type: object + properties: + name: + description: Updated name of the pet + type: string + status: + description: Updated status of the pet + type: string + delete: + tags: + - pet + summary: Deletes a pet + description: '' + operationId: deletePet + parameters: + - name: api_key + in: header + required: false + schema: + type: string + - name: petId + in: path + description: Pet id to delete + required: true + schema: + type: integer + format: int64 + responses: + '400': + description: Invalid pet value + /user/createWithArray/{pathParamInt}/{pathParamString}: + post: + tags: + - user + summary: Creates list of users with given input array + description: '' + operationId: createUsersWithArrayInput + parameters: + - name: pathParamInt + in: path + required: true + schema: + type: integer + format: int64 + - name: pathParamString + in: path + required: true + schema: + type: string + responses: + default: + description: successful operation + requestBody: + $ref: '#/components/requestBodies/UserArray' + /user/login: + get: + tags: + - user + summary: Logs user into the system + description: '' + operationId: loginUser + parameters: + - name: username + in: query + description: The user name for login + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$' + - name: password + in: query + description: The password for login in clear text + required: true + schema: + type: string + responses: + '200': + description: successful operation + headers: + Set-Cookie: + description: >- + Cookie authentication key for use with the `api_key` + apiKey authentication. + schema: + type: string + example: AUTH_KEY=abcde12345; Path=/; HttpOnly + X-Rate-Limit: + description: calls per hour allowed by the user + schema: + type: integer + format: int32 + X-Expires-After: + description: date in UTC when token expires + schema: + type: string + format: date-time + content: + application/json: + schema: + type: string + '400': + description: Invalid username/password supplied +externalDocs: + description: Find out more about Swagger + url: 'http://swagger.io' +components: + requestBodies: + UserArray: + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/User' + description: List of user object + required: true + Pet: + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + $ref: '#/components/schemas/Pet' + description: Pet object that needs to be added to the store + required: true + securitySchemes: + petstore_auth: + type: oauth2 + flows: + implicit: + authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog' + scopes: + 'write:pets': modify pets in your account + 'read:pets': read your pets + api_key: + type: apiKey + name: api_key + in: header + schemas: + StandaloneEnum: + type: string + enum: + - firstValue + - secondValue + Order: + title: Pet Order + description: An order for a pets from the pet store + type: object + properties: + id: + type: integer + format: int64 + petId: + type: integer + format: int64 + quantity: + type: integer + format: int32 + shipDate: + type: string + format: date-time + status: + type: string + description: Order Status + enum: + - placed + - approved + - delivered + complete: + type: boolean + default: false + xml: + name: Order + Category: + title: Pet category + description: A category for a pet + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + pattern: '^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$' + xml: + name: Category + User: + title: a User + description: A User who is purchasing from the pet store + type: object + properties: + id: + type: integer + format: int64 + username: + type: string + firstName: + type: string + lastName: + type: string + email: + type: string + password: + type: string + phone: + type: string + userStatus: + type: integer + format: int32 + description: User Status + xml: + name: User + Tag: + title: Pet Tag + description: A tag for a pet + type: object + properties: + id: + type: integer + format: int64 + name: + type: string + xml: + name: Tag + Pet: + title: a Pet + description: A pet for sale in the pet store + type: object + required: + - id + - photoUrls + properties: + id: + type: integer + format: int64 + category: + $ref: '#/components/schemas/Category' + name: + type: string + example: doggie + photo_urls: + type: array + items: + type: string + tags: + type: array + items: + $ref: '#/components/schemas/Tag' + refEnum: + $ref: '#/components/schemas/StandaloneEnum' + status: + type: string + description: pet status in the store + deprecated: true + enum: + - available + - pending + - sold + dateTimeAttribute: + type: string + format: date-time + primitiveList: + type: array + items: + type: integer + objectList: + type: array + items: + $ref: '#/components/schemas/Order' + dateTimeList: + type: array + items: + type: string + format: date-time + inlineEnumList: + type: array + items: + type: string + enum: + - firstValue + - secondValue + refEnumList: + type: array + items: + $ref: '#/components/schemas/StandaloneEnum' + xml: + name: Pet + ApiResponse: + title: An uploaded response + description: Describes the result of uploading an image resource + type: object + properties: + code: + type: integer + format: int32 + type: + type: string + message: + type: string diff --git a/modules/openapi-generator/src/test/resources/3_0/php-nextgen/petstore-with-fake-endpoints-models-for-testing.yaml b/modules/openapi-generator/src/test/resources/3_0/php-nextgen/petstore-with-fake-endpoints-models-for-testing.yaml index 28b35f470715..433bd56071e8 100644 --- a/modules/openapi-generator/src/test/resources/3_0/php-nextgen/petstore-with-fake-endpoints-models-for-testing.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/php-nextgen/petstore-with-fake-endpoints-models-for-testing.yaml @@ -1660,6 +1660,8 @@ components: description: A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01. type: string pattern: '/^image_\d{1,3}$/i' + array_ref: + $ref: '#/components/schemas/ArrayRef' EnumClass: type: string default: '-efg' @@ -2061,3 +2063,7 @@ components: enum: - admin - user + ArrayRef: + type: array + items: + type: string \ No newline at end of file diff --git a/modules/openapi-generator/src/test/resources/3_0/postman-collection/SampleProject.yaml b/modules/openapi-generator/src/test/resources/3_0/postman-collection/SampleProject.yaml index 8cc84a0ce4c9..4a93535032af 100644 --- a/modules/openapi-generator/src/test/resources/3_0/postman-collection/SampleProject.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/postman-collection/SampleProject.yaml @@ -194,6 +194,7 @@ paths: Update Email: value: email: rebecca@gmail.com + verified: true Update Last Name & Date of Birth: value: lastName: Baker diff --git a/modules/openapi-generator/src/test/resources/3_0/python/petstore-with-fake-endpoints-models-for-testing.yaml b/modules/openapi-generator/src/test/resources/3_0/python/petstore-with-fake-endpoints-models-for-testing.yaml index a3d0ab708e6d..0d98d5759736 100644 --- a/modules/openapi-generator/src/test/resources/3_0/python/petstore-with-fake-endpoints-models-for-testing.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/python/petstore-with-fake-endpoints-models-for-testing.yaml @@ -894,6 +894,13 @@ paths: '*/*': schema: $ref: '#/components/schemas/OuterObjectWithEnumProperty' + parameters: + - in: query + name: param + schema: + type: array + items: + $ref: '#/components/schemas/OuterEnumInteger' requestBody: required: true content: @@ -2711,3 +2718,26 @@ components: properties: field: type: string + CircularAllOfRef: + allOf: + - $ref: '#/components/schemas/AllOfSuperModel' + - properties: + secondCircularAllOfRef: + items: + $ref: '#/components/schemas/SecondCircularAllOfRef' + type: array + type: object + SecondCircularAllOfRef: + allOf: + - $ref: '#/components/schemas/AllOfSuperModel' + - properties: + circularAllOfRef: + items: + $ref: '#/components/schemas/CircularAllOfRef' + type: array + type: object + AllOfSuperModel: + properties: + _name: + type: string + type: object diff --git a/modules/openapi-generator/src/test/resources/3_0/rust/petstore.yaml b/modules/openapi-generator/src/test/resources/3_0/rust/petstore.yaml index 6b42b99ab75b..917b103eb0c5 100644 --- a/modules/openapi-generator/src/test/resources/3_0/rust/petstore.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/rust/petstore.yaml @@ -838,6 +838,7 @@ components: - string - boolean - uuid + - bytes properties: int32: type: integer @@ -858,6 +859,9 @@ components: uuid: type: string format: uuid + bytes: + type: string + format: byte Return: description: Test using keywords type: object diff --git a/modules/openapi-generator/src/test/resources/3_0/simplifyOneOfAnyOf_test.yaml b/modules/openapi-generator/src/test/resources/3_0/simplifyOneOfAnyOf_test.yaml index 6487740be512..f057ce6aea99 100644 --- a/modules/openapi-generator/src/test/resources/3_0/simplifyOneOfAnyOf_test.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/simplifyOneOfAnyOf_test.yaml @@ -40,6 +40,11 @@ components: - type: 'null' - type: null - $ref: null + OneOfTest2: + description: to test oneOf + oneOf: + - type: string + - type: 'null' OneOfNullableTest: description: to test oneOf nullable oneOf: @@ -98,6 +103,17 @@ components: - type: string - type: number - type: integer + AnyOfAnyTypeWithRef: + anyOf: + - type: boolean + - type: array + items: { } + - type: object + - type: string + - type: number + - $ref: '#/components/schemas/IntegerRef' + IntegerRef: + type: integer OneOfAnyType: oneOf: - type: object diff --git a/modules/openapi-generator/src/test/resources/3_0/spring/issue_16797.yaml b/modules/openapi-generator/src/test/resources/3_0/spring/issue_16797.yaml index dbb2dd77b344..8201b6bd7483 100644 --- a/modules/openapi-generator/src/test/resources/3_0/spring/issue_16797.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/spring/issue_16797.yaml @@ -74,9 +74,6 @@ components: allOf: - $ref: '#/components/schemas/Object2' properties: - timestamp: - type: string - format: date-time pageInfo: $ref: '#/components/schemas/Type1' required: diff --git a/modules/openapi-generator/src/test/resources/3_1/issue_18291.yaml b/modules/openapi-generator/src/test/resources/3_1/issue_18291.yaml new file mode 100644 index 000000000000..8f5b9db4e1a8 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_1/issue_18291.yaml @@ -0,0 +1,36 @@ +openapi: 3.1.0 +info: + title: "" + version: "" + +paths: + /user/getInfo: + get: + operationId: getUserInfo + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/Bar' + description: | + OK + security: + - Session: [] + x-accepts: application/json + +components: + schemas: + Foo: + type: object + required: + - arrayOfStrings + properties: + arrayOfStrings: + type: array + items: + type: string + + Bar: + allOf: + - $ref: '#/components/schemas/Foo' \ No newline at end of file diff --git a/modules/openapi-generator/src/test/resources/3_1/java/petstore.yaml b/modules/openapi-generator/src/test/resources/3_1/java/petstore.yaml index e38732656f3d..1d238e672022 100644 --- a/modules/openapi-generator/src/test/resources/3_1/java/petstore.yaml +++ b/modules/openapi-generator/src/test/resources/3_1/java/petstore.yaml @@ -647,6 +647,24 @@ paths: application/json: schema: "$ref": "#/components/schemas/HTTPValidationError" + "/fake/api/query/enum": + post: + summary: op3 + operationId: op3 + tags: + - fake + parameters: + - name: query_enum + in: query + description: query enum test + required: true + schema: + type: array + items: + "$ref": "#/components/schemas/CodesEnum" + responses: + '200': + description: Successful Response externalDocs: description: Find out more about Swagger url: 'http://swagger.io' @@ -891,14 +909,15 @@ components: properties: {} type: object title: HTTPValidationError - AnyOfArray: - anyOf: - - type: array - items: - type: string - - type: array - items: - type: integer + # okhttp-gson doesnot support array of string + #AnyOfArray: + # anyOf: + # - type: array + # items: + # type: string + # - type: array + # items: + # type: integer ArrayPrefixItems: type: array description: | @@ -914,3 +933,39 @@ components: description: A list of "good output" node IDs in the prompt. items: type: string + circular_reference_1: + type: object + properties: + prop1: + $ref: '#/components/schemas/circular_reference_2' + circular_reference_2: + type: object + properties: + prop1: + $ref: '#/components/schemas/circular_reference_3' + circular_reference_3: + type: object + properties: + prop1: + $ref: '#/components/schemas/circular_reference_1' + array_of_same_ref: + type: object + properties: + arrayFooOne: + type: array + items: + $ref: '#/components/schemas/Tag' + arrayFooTwo: + type: array + items: + $ref: '#/components/schemas/Tag' + arrayFooThree: + type: array + items: + $ref: '#/components/schemas/Tag' + CodesEnum: + type: string + enum: + - Code 1 + - Code 2 + - Code 3 diff --git a/modules/openapi-generator/src/test/resources/3_1/reusable-components-without-paths.yaml b/modules/openapi-generator/src/test/resources/3_1/reusable-components-without-paths.yaml new file mode 100644 index 000000000000..d7ab4d11e6e9 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_1/reusable-components-without-paths.yaml @@ -0,0 +1,19 @@ +openapi: 3.1.0 +info: + title: Reusable components without paths example + version: 1.0.0 +# Since OAS 3.1.0 the paths element isn't necessary. Now a valid OpenAPI Document can describe only paths, webhooks, or even only reusable components +components: + schemas: + Pet: + required: + - id + - name + properties: + id: + type: integer + format: int64 + name: + type: string + tag: + type: string diff --git a/modules/openapi-generator/src/test/resources/3_1/schema.yaml b/modules/openapi-generator/src/test/resources/3_1/schema.yaml index b2eb2aa8d1ca..1c3137ecf11e 100644 --- a/modules/openapi-generator/src/test/resources/3_1/schema.yaml +++ b/modules/openapi-generator/src/test/resources/3_1/schema.yaml @@ -64,4 +64,19 @@ components: oneof1: oneOf: - type: string - - type: integer \ No newline at end of file + - type: integer + ObjectSchema: + type: object + additionalProperties: false + properties: + name: + type: string + address: + type: string + ComplexComposedSchema: + oneOf: + - type: string + - type: integer + anyOf: + - type: string + - type: number \ No newline at end of file diff --git a/modules/openapi-generator/src/test/resources/3_1/simplifyOneOfAnyOf_test.yaml b/modules/openapi-generator/src/test/resources/3_1/simplifyOneOfAnyOf_test.yaml new file mode 100644 index 000000000000..a3463b4b12c8 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_1/simplifyOneOfAnyOf_test.yaml @@ -0,0 +1,114 @@ +openapi: 3.1.0 +info: + version: 1.0.0 + title: Example + license: + name: MIT +servers: + - url: http://api.example.xyz/v1 +paths: + /person/display/{personId}: + get: + parameters: + - name: personId + in: path + required: true + description: The id of the person to retrieve + schema: + type: string + operationId: list + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/AnyOfTest" +components: + schemas: + AnyOfTest: + description: to test anyOf + anyOf: + - type: string + - type: 'null' + - type: null + - $ref: null + OneOfTest: + description: to test oneOf + oneOf: + - type: integer + - type: 'null' + - type: null + - $ref: null + OneOfTest2: + description: to test oneOf + oneOf: + - type: string + - type: 'null' + OneOfNullableTest: + description: to test oneOf nullable + oneOf: + - type: integer + - type: string + - $ref: null + SingleAnyOfTest: + description: to test anyOf (enum string only) + anyOf: + - type: string + enum: + - A + - B + Parent: + type: object + properties: + number: + anyOf: + - $ref: '#/components/schemas/Number' + ParentWithOneOfProperty: + type: object + properties: + number: + oneOf: + - $ref: '#/components/schemas/Number' + ParentWithPluralOneOfProperty: + type: object + properties: + number: + oneOf: + - $ref: '#/components/schemas/Number' + - $ref: '#/components/schemas/Number2' + Number: + enum: + - one + - two + - three + type: string + Number2: + enum: + - one + - two + type: string + AnyOfStringArrayOfString: + anyOf: + - type: string + - type: array + items: + type: string + AnyOfAnyType: + anyOf: + - type: boolean + - type: array + items: {} + - type: object + - type: string + - type: number + - type: integer + OneOfAnyType: + oneOf: + - type: object + - type: boolean + - type: number + - type: string + - type: integer + - type: array + items: {} diff --git a/modules/openapi-generator/src/test/resources/bugs/issue_17343.yaml b/modules/openapi-generator/src/test/resources/bugs/issue_17343.yaml deleted file mode 100644 index b7346c28232f..000000000000 --- a/modules/openapi-generator/src/test/resources/bugs/issue_17343.yaml +++ /dev/null @@ -1,46 +0,0 @@ -swagger: "2.0" -info: - version: 1.0.0 - title: x-discriminator-value bug -paths: - /getItems: - get: - description: test - operationId: getAllPets - responses: - 200: - description: 'list of PetItems' - schema: - type: array - items: - $ref: '#/definitions/PetItem' -definitions: - PetType: - type: string - enum: - - DOG - - CAT - PetItem: - discriminator: type - properties: - identifier: - type: string - type: - $ref: '#/definitions/PetType' - - DogItem: - x-discriminator-value: DOG - allOf: - - $ref: '#/definitions/PetItem' - - type: object - properties: - packSize: - type: integer - CatItem: - x-discriminator-value: CAT - allOf: - - $ref: '#/definitions/PetItem' - - type: object - properties: - huntingSkill: - type: string diff --git a/modules/openapi-generator/src/test/resources/bugs/issue_17768.yaml b/modules/openapi-generator/src/test/resources/bugs/issue_17768.yaml new file mode 100644 index 000000000000..46d35831e70b --- /dev/null +++ b/modules/openapi-generator/src/test/resources/bugs/issue_17768.yaml @@ -0,0 +1,33 @@ +openapi: 3.1.0 +info: + version: 1.0.0 + description: Specification to reproduce incorrect return for useOptional in Spring Delegate + title: OptionalRequestBodyDelegateTest Api +paths: + /update: + post: + tags: + - test + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/updateRequest" + responses: + '200': + description: OK + content: + application/json: + schema: + type: boolean +components: + schemas: + updateRequest: + type: object + title: Update Request + properties: + id: + type: string + time: + type: integer + format: int64 \ No newline at end of file diff --git a/modules/openapi-generator/src/test/resources/bugs/issue_18336.yaml b/modules/openapi-generator/src/test/resources/bugs/issue_18336.yaml new file mode 100644 index 000000000000..170e469d9573 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/bugs/issue_18336.yaml @@ -0,0 +1,25 @@ +openapi: 3.0.0 +info: + title: "OpenAPI Definition" + version: "0.0.1" +paths: + /pets: + get: + responses: + 200: + description: "Return Pet with name" + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + +components: + schemas: + Pet: + type: object + required: + - name + properties: + name: + type: string + readOnly: true \ No newline at end of file diff --git a/modules/openapi-generator/src/test/resources/sampleConfig.json b/modules/openapi-generator/src/test/resources/sampleConfig.json index d88bd26dd822..92defc9ff976 100644 --- a/modules/openapi-generator/src/test/resources/sampleConfig.json +++ b/modules/openapi-generator/src/test/resources/sampleConfig.json @@ -1,7 +1,7 @@ { - "lang" : "java", - "inputSpec" : "swagger.yaml", - "outputDir" : "src/gen/java", + "generatorName" : "java", + "inputSpec" : "module/openapi-generator/src/test/resources/3_0/petstore.yaml", + "outputDir" : "output/src/gen/java", "verbose" : true, "skipOverwrite" : true, "templateDir" : "src/main/resources", @@ -17,6 +17,12 @@ "globalProperties" : { "systemProp1" : "value1" }, + "modelNameMappings" : { + "Tag": "Label" + }, + "openapiNormalizer" : { + "REFACTOR_ALLOF_WITH_PROPERTIES_ONLY": true + }, "instantiationTypes" : { "hello" : "world" }, @@ -30,4 +36,4 @@ "type1" : "import1" }, "languageSpecificPrimitives" : [ "rolex" ] -} \ No newline at end of file +} diff --git a/openapitools.json b/openapitools.json index 03392961f6f4..5120fb6ecf79 100644 --- a/openapitools.json +++ b/openapitools.json @@ -2,6 +2,6 @@ "$schema": "node_modules/@openapitools/openapi-generator-cli/config.schema.json", "spaces": 2, "generator-cli": { - "version": "6.3.0" + "version": "7.4.0" } } diff --git a/pom.xml b/pom.xml index 2ce69f3df520..49dc57d3bc9b 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ oss-parent 5 - + 4.0.0 org.openapitools @@ -13,7 +13,7 @@ pom openapi-generator-project - 7.5.0-SNAPSHOT + 7.6.0-SNAPSHOT https://github.com/openapitools/openapi-generator @@ -1252,7 +1252,7 @@ 1.7.36 3.1.12.2 io.swagger.parser.v3 - 2.1.18 + 2.1.19 7.5 1.34 3.4.3 diff --git a/samples/client/echo_api/csharp-restsharp/.openapi-generator/VERSION b/samples/client/echo_api/csharp-restsharp/.openapi-generator/VERSION index 08bfd0643b8c..ecb21862b1ee 100644 --- a/samples/client/echo_api/csharp-restsharp/.openapi-generator/VERSION +++ b/samples/client/echo_api/csharp-restsharp/.openapi-generator/VERSION @@ -1 +1 @@ -7.5.0-SNAPSHOT +7.6.0-SNAPSHOT diff --git a/samples/client/echo_api/csharp-restsharp/README.md b/samples/client/echo_api/csharp-restsharp/README.md index 3871b6487200..107ffdd4485e 100644 --- a/samples/client/echo_api/csharp-restsharp/README.md +++ b/samples/client/echo_api/csharp-restsharp/README.md @@ -6,7 +6,7 @@ This C# SDK is automatically generated by the [OpenAPI Generator](https://openap - API version: 0.1.0 - SDK version: 1.0.0 -- Generator version: 7.5.0-SNAPSHOT +- Generator version: 7.6.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.CSharpClientCodegen diff --git a/samples/client/echo_api/go-external-refs/.openapi-generator/VERSION b/samples/client/echo_api/go-external-refs/.openapi-generator/VERSION index 08bfd0643b8c..ecb21862b1ee 100644 --- a/samples/client/echo_api/go-external-refs/.openapi-generator/VERSION +++ b/samples/client/echo_api/go-external-refs/.openapi-generator/VERSION @@ -1 +1 @@ -7.5.0-SNAPSHOT +7.6.0-SNAPSHOT diff --git a/samples/client/echo_api/go-external-refs/README.md b/samples/client/echo_api/go-external-refs/README.md index 667c2abf4146..fad1614415a6 100644 --- a/samples/client/echo_api/go-external-refs/README.md +++ b/samples/client/echo_api/go-external-refs/README.md @@ -7,7 +7,7 @@ This API client was generated by the [OpenAPI Generator](https://openapi-generat - API version: 0.1.0 - Package version: 1.0.0 -- Generator version: 7.5.0-SNAPSHOT +- Generator version: 7.6.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.GoClientCodegen ## Installation diff --git a/samples/client/echo_api/go/.openapi-generator/VERSION b/samples/client/echo_api/go/.openapi-generator/VERSION index 08bfd0643b8c..ecb21862b1ee 100644 --- a/samples/client/echo_api/go/.openapi-generator/VERSION +++ b/samples/client/echo_api/go/.openapi-generator/VERSION @@ -1 +1 @@ -7.5.0-SNAPSHOT +7.6.0-SNAPSHOT diff --git a/samples/client/echo_api/go/README.md b/samples/client/echo_api/go/README.md index f43c18cad895..1cac0c683600 100644 --- a/samples/client/echo_api/go/README.md +++ b/samples/client/echo_api/go/README.md @@ -7,7 +7,7 @@ This API client was generated by the [OpenAPI Generator](https://openapi-generat - API version: 0.1.0 - Package version: 1.0.0 -- Generator version: 7.5.0-SNAPSHOT +- Generator version: 7.6.0-SNAPSHOT - Build package: org.openapitools.codegen.languages.GoClientCodegen ## Installation diff --git a/samples/client/echo_api/java/apache-httpclient/.openapi-generator/VERSION b/samples/client/echo_api/java/apache-httpclient/.openapi-generator/VERSION index 08bfd0643b8c..ecb21862b1ee 100644 --- a/samples/client/echo_api/java/apache-httpclient/.openapi-generator/VERSION +++ b/samples/client/echo_api/java/apache-httpclient/.openapi-generator/VERSION @@ -1 +1 @@ -7.5.0-SNAPSHOT +7.6.0-SNAPSHOT diff --git a/samples/client/echo_api/java/apache-httpclient/README.md b/samples/client/echo_api/java/apache-httpclient/README.md index 14639af67d40..cf0aadd4452d 100644 --- a/samples/client/echo_api/java/apache-httpclient/README.md +++ b/samples/client/echo_api/java/apache-httpclient/README.md @@ -4,7 +4,7 @@ Echo Server API - API version: 0.1.0 -- Generator version: 7.5.0-SNAPSHOT +- Generator version: 7.6.0-SNAPSHOT Echo Server API diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiClient.java index 56c88531bf19..872244b89008 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiClient.java @@ -81,7 +81,7 @@ import org.openapitools.client.auth.HttpBasicAuth; import org.openapitools.client.auth.HttpBearerAuth; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class ApiClient extends JavaTimeFormatter { private Map defaultHeaderMap = new HashMap(); private Map defaultCookieMap = new HashMap(); diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiException.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiException.java index 1e070eabb767..8b665dec0b8f 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiException.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiException.java @@ -16,7 +16,7 @@ import java.util.Map; import java.util.List; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class ApiException extends Exception { private static final long serialVersionUID = 1L; diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/BaseApi.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/BaseApi.java index 99058daec188..f343427ea702 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/BaseApi.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/BaseApi.java @@ -17,7 +17,7 @@ import java.util.Collections; import java.util.Map; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public abstract class BaseApi { protected ApiClient apiClient; diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/Configuration.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/Configuration.java index 12bb7ef992ad..0c5a913e293f 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/Configuration.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/Configuration.java @@ -13,7 +13,7 @@ package org.openapitools.client; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class Configuration { public static final String VERSION = "0.1.0"; diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/JavaTimeFormatter.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/JavaTimeFormatter.java index 6714734cbae9..ed434f21ffe9 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/JavaTimeFormatter.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/JavaTimeFormatter.java @@ -20,7 +20,7 @@ * Class that add parsing/formatting support for Java 8+ {@code OffsetDateTime} class. * It's generated for java clients when {@code AbstractJavaCodegen#dateLibrary} specified as {@code java8}. */ -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class JavaTimeFormatter { private DateTimeFormatter offsetDateTimeFormatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME; diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/Pair.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/Pair.java index 2aaa3c1c894c..1957e1fde3a8 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/Pair.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/Pair.java @@ -13,7 +13,7 @@ package org.openapitools.client; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class Pair { private String name = ""; private String value = ""; diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/RFC3339DateFormat.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/RFC3339DateFormat.java index 22bbe68c49f4..23e3f188302b 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/RFC3339DateFormat.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/RFC3339DateFormat.java @@ -22,6 +22,7 @@ import java.util.GregorianCalendar; import java.util.TimeZone; +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class RFC3339DateFormat extends DateFormat { private static final long serialVersionUID = 1L; private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC"); @@ -54,4 +55,4 @@ public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fie public Object clone() { return super.clone(); } -} \ No newline at end of file +} diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ServerConfiguration.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ServerConfiguration.java index 59edc528a446..dd276623ffc4 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ServerConfiguration.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ServerConfiguration.java @@ -5,6 +5,7 @@ /** * Representing a Server configuration. */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class ServerConfiguration { public String URL; public String description; diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ServerVariable.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ServerVariable.java index c2f13e216662..fdb468f79f9e 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ServerVariable.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ServerVariable.java @@ -5,6 +5,7 @@ /** * Representing a Server Variable for server URL template substitution. */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class ServerVariable { public String description; public String defaultValue; diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/StringUtil.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/StringUtil.java index d180fb51a015..b82aa59e5bf8 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/StringUtil.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/StringUtil.java @@ -16,7 +16,7 @@ import java.util.Collection; import java.util.Iterator; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class StringUtil { /** * Check if the given array contains the given value (with case-insensitive comparison). diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/AuthApi.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/AuthApi.java index ace5120cffce..dc726d96c9c0 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/AuthApi.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/AuthApi.java @@ -29,7 +29,7 @@ import java.util.Map; import java.util.StringJoiner; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class AuthApi extends BaseApi { public AuthApi() { diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/BodyApi.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/BodyApi.java index 3a67792084c4..abbe6718da53 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/BodyApi.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/BodyApi.java @@ -33,7 +33,7 @@ import java.util.Map; import java.util.StringJoiner; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class BodyApi extends BaseApi { public BodyApi() { diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/FormApi.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/FormApi.java index 571e63678bb9..2dd4c8c6f530 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/FormApi.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/FormApi.java @@ -30,7 +30,7 @@ import java.util.Map; import java.util.StringJoiner; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class FormApi extends BaseApi { public FormApi() { diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/HeaderApi.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/HeaderApi.java index f08d6707409f..fafbc2f5b212 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/HeaderApi.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/HeaderApi.java @@ -30,7 +30,7 @@ import java.util.Map; import java.util.StringJoiner; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class HeaderApi extends BaseApi { public HeaderApi() { diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/PathApi.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/PathApi.java index 6fd8e449883f..dcb7146a9844 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/PathApi.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/PathApi.java @@ -30,7 +30,7 @@ import java.util.Map; import java.util.StringJoiner; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class PathApi extends BaseApi { public PathApi() { diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/QueryApi.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/QueryApi.java index ba1a6ea6809c..95577e2a31fc 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/QueryApi.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/QueryApi.java @@ -36,7 +36,7 @@ import java.util.Map; import java.util.StringJoiner; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class QueryApi extends BaseApi { public QueryApi() { diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java index 0b2f60be01f5..3c68e82e0136 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java @@ -18,7 +18,7 @@ import java.util.Map; import java.util.List; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class ApiKeyAuth implements Authentication { private final String location; private final String paramName; diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java index 8f3ab535bad8..fa801058c07f 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java @@ -21,7 +21,7 @@ import java.util.Map; import java.util.List; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class HttpBasicAuth implements Authentication { private String username; private String password; diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java index 68bb5c319dce..8be79a006cc3 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java @@ -20,7 +20,7 @@ import java.util.Optional; import java.util.function.Supplier; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class HttpBearerAuth implements Authentication { private final String scheme; private Supplier tokenSupplier; diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Bird.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Bird.java index 47f65c82feb1..5531438015f8 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Bird.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Bird.java @@ -33,7 +33,7 @@ Bird.JSON_PROPERTY_SIZE, Bird.JSON_PROPERTY_COLOR }) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class Bird { public static final String JSON_PROPERTY_SIZE = "size"; private String size; diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Category.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Category.java index 475d09bfd9b4..37df80baa204 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Category.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Category.java @@ -33,7 +33,7 @@ Category.JSON_PROPERTY_ID, Category.JSON_PROPERTY_NAME }) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class Category { public static final String JSON_PROPERTY_ID = "id"; private Long id; diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/DataQuery.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/DataQuery.java index 39f533887d09..4fa2ff21abf5 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/DataQuery.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/DataQuery.java @@ -39,7 +39,7 @@ DataQuery.JSON_PROPERTY_TEXT, DataQuery.JSON_PROPERTY_DATE }) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class DataQuery extends Query { public static final String JSON_PROPERTY_SUFFIX = "suffix"; private String suffix; diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/DefaultValue.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/DefaultValue.java index d487a67a8210..a129cb4824b4 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/DefaultValue.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/DefaultValue.java @@ -47,7 +47,7 @@ DefaultValue.JSON_PROPERTY_ARRAY_STRING_EXTENSION_NULLABLE, DefaultValue.JSON_PROPERTY_STRING_NULLABLE }) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class DefaultValue { public static final String JSON_PROPERTY_ARRAY_STRING_ENUM_REF_DEFAULT = "array_string_enum_ref_default"; private List arrayStringEnumRefDefault = new ArrayList<>(Arrays.asList(StringEnumRef.SUCCESS, StringEnumRef.FAILURE)); diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java index 7d97d0fe960a..90fc2fe1a399 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java @@ -35,7 +35,7 @@ NumberPropertiesOnly.JSON_PROPERTY_FLOAT, NumberPropertiesOnly.JSON_PROPERTY_DOUBLE }) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class NumberPropertiesOnly { public static final String JSON_PROPERTY_NUMBER = "number"; private BigDecimal number; diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Pet.java index 1b71752b0641..827d60e3b812 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Pet.java @@ -42,7 +42,7 @@ Pet.JSON_PROPERTY_TAGS, Pet.JSON_PROPERTY_STATUS }) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class Pet { public static final String JSON_PROPERTY_ID = "id"; private Long id; diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Query.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Query.java index 21c8369f046e..ae4c04d5c027 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Query.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Query.java @@ -36,7 +36,7 @@ Query.JSON_PROPERTY_ID, Query.JSON_PROPERTY_OUTCOMES }) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class Query { public static final String JSON_PROPERTY_ID = "id"; private Long id; diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Tag.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Tag.java index d7e32bb9390f..f4a23998e4cc 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Tag.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Tag.java @@ -33,7 +33,7 @@ Tag.JSON_PROPERTY_ID, Tag.JSON_PROPERTY_NAME }) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class Tag { public static final String JSON_PROPERTY_ID = "id"; private Long id; diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java index ed76a3ac7c79..b828f34c09d7 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java @@ -33,7 +33,7 @@ TestFormObjectMultipartRequestMarker.JSON_PROPERTY_NAME }) @JsonTypeName("test_form_object_multipart_request_marker") -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class TestFormObjectMultipartRequestMarker { public static final String JSON_PROPERTY_NAME = "name"; private String name; diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java index 8b856a0edb3e..9917894bdfaa 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java @@ -36,7 +36,7 @@ TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.JSON_PROPERTY_NAME }) @JsonTypeName("test_query_style_deepObject_explode_true_object_allOf_query_object_parameter") -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter { public static final String JSON_PROPERTY_SIZE = "size"; private String size; diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java index be1941bef8f2..39c82cfdf6aa 100644 --- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java +++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java @@ -36,7 +36,7 @@ TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.JSON_PROPERTY_VALUES }) @JsonTypeName("test_query_style_form_explode_true_array_string_query_object_parameter") -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter { public static final String JSON_PROPERTY_VALUES = "values"; private List values = new ArrayList<>(); diff --git a/samples/client/echo_api/java/feign-gson/.openapi-generator/VERSION b/samples/client/echo_api/java/feign-gson/.openapi-generator/VERSION index 08bfd0643b8c..ecb21862b1ee 100644 --- a/samples/client/echo_api/java/feign-gson/.openapi-generator/VERSION +++ b/samples/client/echo_api/java/feign-gson/.openapi-generator/VERSION @@ -1 +1 @@ -7.5.0-SNAPSHOT +7.6.0-SNAPSHOT diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ApiClient.java index 1c83285297ca..a142ce47529d 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ApiClient.java @@ -18,7 +18,7 @@ import org.openapitools.client.auth.ApiKeyAuth; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class ApiClient { private static final Logger log = Logger.getLogger(ApiClient.class.getName()); diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ServerConfiguration.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ServerConfiguration.java index 59edc528a446..dd276623ffc4 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ServerConfiguration.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ServerConfiguration.java @@ -5,6 +5,7 @@ /** * Representing a Server configuration. */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class ServerConfiguration { public String URL; public String description; diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ServerVariable.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ServerVariable.java index c2f13e216662..fdb468f79f9e 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ServerVariable.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ServerVariable.java @@ -5,6 +5,7 @@ /** * Representing a Server Variable for server URL template substitution. */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class ServerVariable { public String description; public String defaultValue; diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/StringUtil.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/StringUtil.java index d180fb51a015..b82aa59e5bf8 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/StringUtil.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/StringUtil.java @@ -16,7 +16,7 @@ import java.util.Collection; import java.util.Iterator; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class StringUtil { /** * Check if the given array contains the given value (with case-insensitive comparison). diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/AuthApi.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/AuthApi.java index 32c9664f47ad..902ef5d4c9a0 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/AuthApi.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/AuthApi.java @@ -11,7 +11,7 @@ import java.util.Map; import feign.*; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public interface AuthApi extends ApiClient.Api { diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/BodyApi.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/BodyApi.java index 946ad1bc732d..5c68b84106f6 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/BodyApi.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/BodyApi.java @@ -15,7 +15,7 @@ import java.util.Map; import feign.*; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public interface BodyApi extends ApiClient.Api { diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/FormApi.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/FormApi.java index 45e0360081ba..5e8afc9888fd 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/FormApi.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/FormApi.java @@ -12,7 +12,7 @@ import java.util.Map; import feign.*; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public interface FormApi extends ApiClient.Api { diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/HeaderApi.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/HeaderApi.java index 6c017ef764bd..62f4627acc81 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/HeaderApi.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/HeaderApi.java @@ -12,7 +12,7 @@ import java.util.Map; import feign.*; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public interface HeaderApi extends ApiClient.Api { diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/PathApi.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/PathApi.java index b906938db376..c6064782633d 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/PathApi.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/PathApi.java @@ -12,7 +12,7 @@ import java.util.Map; import feign.*; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public interface PathApi extends ApiClient.Api { diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/QueryApi.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/QueryApi.java index 2bbfdea03401..5bddf965d98c 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/QueryApi.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/QueryApi.java @@ -18,7 +18,7 @@ import java.util.Map; import feign.*; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public interface QueryApi extends ApiClient.Api { diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Bird.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Bird.java index c0e25df7d4ff..d24604a8f521 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Bird.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Bird.java @@ -25,7 +25,7 @@ /** * Bird */ -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class Bird { public static final String SERIALIZED_NAME_SIZE = "size"; @SerializedName(SERIALIZED_NAME_SIZE) diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Category.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Category.java index 2d9cf6b89100..f07433944808 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Category.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Category.java @@ -25,7 +25,7 @@ /** * Category */ -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class Category { public static final String SERIALIZED_NAME_ID = "id"; @SerializedName(SERIALIZED_NAME_ID) diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/DataQuery.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/DataQuery.java index 2a87f2d1b76c..86276858e8fa 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/DataQuery.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/DataQuery.java @@ -30,7 +30,7 @@ /** * DataQuery */ -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class DataQuery extends Query { public static final String SERIALIZED_NAME_SUFFIX = "suffix"; @SerializedName(SERIALIZED_NAME_SUFFIX) diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/DefaultValue.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/DefaultValue.java index 26c76c80bad0..948d30e8a923 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/DefaultValue.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/DefaultValue.java @@ -30,7 +30,7 @@ /** * to test the default value of properties */ -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class DefaultValue { public static final String SERIALIZED_NAME_ARRAY_STRING_ENUM_REF_DEFAULT = "array_string_enum_ref_default"; @SerializedName(SERIALIZED_NAME_ARRAY_STRING_ENUM_REF_DEFAULT) diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java index 5a5f336264c8..2e5b58fc3c5e 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java @@ -26,7 +26,7 @@ /** * NumberPropertiesOnly */ -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class NumberPropertiesOnly { public static final String SERIALIZED_NAME_NUMBER = "number"; @SerializedName(SERIALIZED_NAME_NUMBER) diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Pet.java index 3d94f1a79294..eac78de2da9e 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Pet.java @@ -30,7 +30,7 @@ /** * Pet */ -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class Pet { public static final String SERIALIZED_NAME_ID = "id"; @SerializedName(SERIALIZED_NAME_ID) diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Query.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Query.java index 81cb55626285..92189a3ecf37 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Query.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Query.java @@ -28,7 +28,7 @@ /** * Query */ -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class Query { public static final String SERIALIZED_NAME_ID = "id"; @SerializedName(SERIALIZED_NAME_ID) diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Tag.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Tag.java index f9076e07e02d..9bda1df82a1c 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Tag.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Tag.java @@ -25,7 +25,7 @@ /** * Tag */ -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class Tag { public static final String SERIALIZED_NAME_ID = "id"; @SerializedName(SERIALIZED_NAME_ID) diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java index 96f0b78cfa85..7469349da222 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java @@ -25,7 +25,7 @@ /** * TestFormObjectMultipartRequestMarker */ -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class TestFormObjectMultipartRequestMarker { public static final String SERIALIZED_NAME_NAME = "name"; @SerializedName(SERIALIZED_NAME_NAME) diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java index cc6dd54f7ef4..14ea7b9d0c12 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java @@ -25,7 +25,7 @@ /** * TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter */ -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter { public static final String SERIALIZED_NAME_SIZE = "size"; @SerializedName(SERIALIZED_NAME_SIZE) diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java index 7e547a32a772..587e57e0d3b2 100644 --- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java +++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java @@ -28,7 +28,7 @@ /** * TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter */ -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter { public static final String SERIALIZED_NAME_VALUES = "values"; @SerializedName(SERIALIZED_NAME_VALUES) diff --git a/samples/client/echo_api/java/native/.openapi-generator/VERSION b/samples/client/echo_api/java/native/.openapi-generator/VERSION index 08bfd0643b8c..ecb21862b1ee 100644 --- a/samples/client/echo_api/java/native/.openapi-generator/VERSION +++ b/samples/client/echo_api/java/native/.openapi-generator/VERSION @@ -1 +1 @@ -7.5.0-SNAPSHOT +7.6.0-SNAPSHOT diff --git a/samples/client/echo_api/java/native/README.md b/samples/client/echo_api/java/native/README.md index d14399b78a7d..630e96c83205 100644 --- a/samples/client/echo_api/java/native/README.md +++ b/samples/client/echo_api/java/native/README.md @@ -4,7 +4,7 @@ Echo Server API - API version: 0.1.0 -- Generator version: 7.5.0-SNAPSHOT +- Generator version: 7.6.0-SNAPSHOT Echo Server API diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ApiClient.java index 44d19e9319aa..63dcb956c2d0 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ApiClient.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ApiClient.java @@ -51,7 +51,7 @@ *

                                                  The setter methods of this class return the current object to facilitate * a fluent style of configuration.

                                                  */ -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class ApiClient { private HttpClient.Builder builder; diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ApiException.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ApiException.java index 89ed87ce3f85..052dac0d844e 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ApiException.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ApiException.java @@ -15,7 +15,7 @@ import java.net.http.HttpHeaders; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class ApiException extends Exception { private static final long serialVersionUID = 1L; diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ApiResponse.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ApiResponse.java index e4cf1344b696..bbd165c487f7 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ApiResponse.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ApiResponse.java @@ -21,6 +21,7 @@ * * @param The type of data that is deserialized from response body */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class ApiResponse { final private int statusCode; final private Map> headers; diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/Configuration.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/Configuration.java index 12bb7ef992ad..0c5a913e293f 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/Configuration.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/Configuration.java @@ -13,7 +13,7 @@ package org.openapitools.client; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class Configuration { public static final String VERSION = "0.1.0"; diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/JSON.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/JSON.java index ff3dd881bc04..420adcb4a675 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/JSON.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/JSON.java @@ -13,7 +13,7 @@ import java.util.Map; import java.util.Set; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class JSON { private ObjectMapper mapper; @@ -69,6 +69,7 @@ public static Class getClassForElement(JsonNode node, Class modelClass) { /** * Helper class to register the discriminator mappings. */ + @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") private static class ClassDiscriminatorMapping { // The model class name. Class modelClass; diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/Pair.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/Pair.java index 2aaa3c1c894c..1957e1fde3a8 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/Pair.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/Pair.java @@ -13,7 +13,7 @@ package org.openapitools.client; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class Pair { private String name = ""; private String value = ""; diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/RFC3339DateFormat.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/RFC3339DateFormat.java index 22bbe68c49f4..23e3f188302b 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/RFC3339DateFormat.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/RFC3339DateFormat.java @@ -22,6 +22,7 @@ import java.util.GregorianCalendar; import java.util.TimeZone; +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class RFC3339DateFormat extends DateFormat { private static final long serialVersionUID = 1L; private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC"); @@ -54,4 +55,4 @@ public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fie public Object clone() { return super.clone(); } -} \ No newline at end of file +} diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ServerConfiguration.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ServerConfiguration.java index 59edc528a446..dd276623ffc4 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ServerConfiguration.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ServerConfiguration.java @@ -5,6 +5,7 @@ /** * Representing a Server configuration. */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class ServerConfiguration { public String URL; public String description; diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ServerVariable.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ServerVariable.java index c2f13e216662..fdb468f79f9e 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ServerVariable.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ServerVariable.java @@ -5,6 +5,7 @@ /** * Representing a Server Variable for server URL template substitution. */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class ServerVariable { public String description; public String defaultValue; diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/AuthApi.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/AuthApi.java index 3fbcb3309509..e5d7e79b66b4 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/AuthApi.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/AuthApi.java @@ -43,7 +43,7 @@ import java.util.Set; import java.util.function.Consumer; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class AuthApi { private final HttpClient memberVarHttpClient; private final ObjectMapper memberVarObjectMapper; @@ -153,6 +153,7 @@ private HttpRequest.Builder testAuthHttpBasicRequestBuilder() throws ApiExceptio } return localVarRequestBuilder; } + /** * To test HTTP bearer authentication * To test HTTP bearer authentication @@ -226,4 +227,5 @@ private HttpRequest.Builder testAuthHttpBearerRequestBuilder() throws ApiExcepti } return localVarRequestBuilder; } + } diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/BodyApi.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/BodyApi.java index 606bac4445a2..1b7daef28694 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/BodyApi.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/BodyApi.java @@ -53,7 +53,7 @@ import java.util.Set; import java.util.function.Consumer; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class BodyApi { private final HttpClient memberVarHttpClient; private final ObjectMapper memberVarObjectMapper; @@ -155,6 +155,7 @@ private HttpRequest.Builder testBinaryGifRequestBuilder() throws ApiException { } return localVarRequestBuilder; } + /** * Test body parameter(s) * Test body parameter(s) @@ -236,6 +237,7 @@ private HttpRequest.Builder testBodyApplicationOctetstreamBinaryRequestBuilder(F } return localVarRequestBuilder; } + /** * Test array of binary in multipart mime * Test array of binary in multipart mime @@ -350,6 +352,7 @@ private HttpRequest.Builder testBodyMultipartFormdataArrayOfBinaryRequestBuilder } return localVarRequestBuilder; } + /** * Test single binary in multipart mime * Test single binary in multipart mime @@ -458,6 +461,7 @@ private HttpRequest.Builder testBodyMultipartFormdataSingleBinaryRequestBuilder( } return localVarRequestBuilder; } + /** * Test body parameter(s) * Test body parameter(s) @@ -531,6 +535,7 @@ private HttpRequest.Builder testEchoBodyAllOfPetRequestBuilder(Pet pet) throws A } return localVarRequestBuilder; } + /** * Test free form object * Test free form object @@ -612,6 +617,7 @@ private HttpRequest.Builder testEchoBodyFreeFormObjectResponseStringRequestBuild } return localVarRequestBuilder; } + /** * Test body parameter(s) * Test body parameter(s) @@ -685,6 +691,7 @@ private HttpRequest.Builder testEchoBodyPetRequestBuilder(Pet pet) throws ApiExc } return localVarRequestBuilder; } + /** * Test empty response body * Test empty response body @@ -766,6 +773,7 @@ private HttpRequest.Builder testEchoBodyPetResponseStringRequestBuilder(Pet pet) } return localVarRequestBuilder; } + /** * Test string enum response body * Test string enum response body @@ -839,6 +847,7 @@ private HttpRequest.Builder testEchoBodyStringEnumRequestBuilder(String body) th } return localVarRequestBuilder; } + /** * Test empty json (request body) * Test empty json (request body) @@ -920,4 +929,5 @@ private HttpRequest.Builder testEchoBodyTagResponseStringRequestBuilder(Tag tag) } return localVarRequestBuilder; } + } diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/FormApi.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/FormApi.java index ecb6239d617f..c78a8769e183 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/FormApi.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/FormApi.java @@ -50,7 +50,7 @@ import java.util.Set; import java.util.function.Consumer; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class FormApi { private final HttpClient memberVarHttpClient; private final ObjectMapper memberVarObjectMapper; @@ -186,6 +186,7 @@ private HttpRequest.Builder testFormIntegerBooleanStringRequestBuilder(Integer i } return localVarRequestBuilder; } + /** * Test form parameter(s) for multipart schema * Test form parameter(s) for multipart schema @@ -297,6 +298,7 @@ private HttpRequest.Builder testFormObjectMultipartRequestBuilder(TestFormObject } return localVarRequestBuilder; } + /** * Test form parameter(s) for oneOf schema * Test form parameter(s) for oneOf schema @@ -411,4 +413,5 @@ private HttpRequest.Builder testFormOneofRequestBuilder(String form1, Integer fo } return localVarRequestBuilder; } + } diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/HeaderApi.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/HeaderApi.java index c15b94f7b75b..c98d122c6c28 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/HeaderApi.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/HeaderApi.java @@ -50,7 +50,7 @@ import java.util.Set; import java.util.function.Consumer; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class HeaderApi { private final HttpClient memberVarHttpClient; private final ObjectMapper memberVarObjectMapper; @@ -185,4 +185,5 @@ private HttpRequest.Builder testHeaderIntegerBooleanStringEnumsRequestBuilder(In } return localVarRequestBuilder; } + } diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/PathApi.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/PathApi.java index f7050909e69b..a13e17862130 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/PathApi.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/PathApi.java @@ -50,7 +50,7 @@ import java.util.Set; import java.util.function.Consumer; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class PathApi { private final HttpClient memberVarHttpClient; private final ObjectMapper memberVarObjectMapper; @@ -188,4 +188,5 @@ private HttpRequest.Builder testsPathStringPathStringIntegerPathIntegerEnumNonre } return localVarRequestBuilder; } + } diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/QueryApi.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/QueryApi.java index 114c7d76bd46..f918ae92391f 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/QueryApi.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/api/QueryApi.java @@ -56,7 +56,7 @@ import java.util.Set; import java.util.function.Consumer; -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class QueryApi { private final HttpClient memberVarHttpClient; private final ObjectMapper memberVarObjectMapper; @@ -187,6 +187,7 @@ private HttpRequest.Builder testEnumRefStringRequestBuilder(String enumNonrefStr } return localVarRequestBuilder; } + /** * Test query parameter(s) * Test query parameter(s) @@ -285,6 +286,7 @@ private HttpRequest.Builder testQueryDatetimeDateStringRequestBuilder(Instant da } return localVarRequestBuilder; } + /** * Test query parameter(s) * Test query parameter(s) @@ -383,6 +385,7 @@ private HttpRequest.Builder testQueryIntegerBooleanStringRequestBuilder(Integer } return localVarRequestBuilder; } + /** * Test query parameter(s) * Test query parameter(s) @@ -475,6 +478,7 @@ private HttpRequest.Builder testQueryStyleDeepObjectExplodeTrueObjectRequestBuil } return localVarRequestBuilder; } + /** * Test query parameter(s) * Test query parameter(s) @@ -567,6 +571,7 @@ private HttpRequest.Builder testQueryStyleDeepObjectExplodeTrueObjectAllOfReques } return localVarRequestBuilder; } + /** * Test query parameter(s) * Test query parameter(s) @@ -657,6 +662,7 @@ private HttpRequest.Builder testQueryStyleFormExplodeFalseArrayIntegerRequestBui } return localVarRequestBuilder; } + /** * Test query parameter(s) * Test query parameter(s) @@ -747,6 +753,7 @@ private HttpRequest.Builder testQueryStyleFormExplodeFalseArrayStringRequestBuil } return localVarRequestBuilder; } + /** * Test query parameter(s) * Test query parameter(s) @@ -837,6 +844,7 @@ private HttpRequest.Builder testQueryStyleFormExplodeTrueArrayStringRequestBuild } return localVarRequestBuilder; } + /** * Test query parameter(s) * Test query parameter(s) @@ -932,6 +940,7 @@ private HttpRequest.Builder testQueryStyleFormExplodeTrueObjectRequestBuilder(Pe } return localVarRequestBuilder; } + /** * Test query parameter(s) * Test query parameter(s) @@ -1022,4 +1031,5 @@ private HttpRequest.Builder testQueryStyleFormExplodeTrueObjectAllOfRequestBuild } return localVarRequestBuilder; } + } diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java index f346f9ea9d86..99787bcc6550 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java @@ -22,7 +22,7 @@ /** * Abstract class for oneOf,anyOf schemas defined in OpenAPI spec */ -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public abstract class AbstractOpenApiSchema { // store the actual instance of the schema/object diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Bird.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Bird.java index 998c11042d31..a838d0310aea 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Bird.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Bird.java @@ -35,7 +35,7 @@ Bird.JSON_PROPERTY_SIZE, Bird.JSON_PROPERTY_COLOR }) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class Bird { public static final String JSON_PROPERTY_SIZE = "size"; private String size; diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Category.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Category.java index f635c7cb6bdb..660400c91560 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Category.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Category.java @@ -35,7 +35,7 @@ Category.JSON_PROPERTY_ID, Category.JSON_PROPERTY_NAME }) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class Category { public static final String JSON_PROPERTY_ID = "id"; private Long id; diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/DataQuery.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/DataQuery.java index 4addb74338a4..14477c572f97 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/DataQuery.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/DataQuery.java @@ -40,7 +40,7 @@ DataQuery.JSON_PROPERTY_TEXT, DataQuery.JSON_PROPERTY_DATE }) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class DataQuery extends Query { public static final String JSON_PROPERTY_SUFFIX = "suffix"; private String suffix; diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/DefaultValue.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/DefaultValue.java index 20b4faa06e85..d104217a6ad5 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/DefaultValue.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/DefaultValue.java @@ -48,7 +48,7 @@ DefaultValue.JSON_PROPERTY_ARRAY_STRING_EXTENSION_NULLABLE, DefaultValue.JSON_PROPERTY_STRING_NULLABLE }) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class DefaultValue { public static final String JSON_PROPERTY_ARRAY_STRING_ENUM_REF_DEFAULT = "array_string_enum_ref_default"; private List arrayStringEnumRefDefault = new ArrayList<>(Arrays.asList(StringEnumRef.SUCCESS, StringEnumRef.FAILURE)); diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java index 2bb722d2b676..542aada416ad 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java @@ -37,7 +37,7 @@ NumberPropertiesOnly.JSON_PROPERTY_FLOAT, NumberPropertiesOnly.JSON_PROPERTY_DOUBLE }) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class NumberPropertiesOnly { public static final String JSON_PROPERTY_NUMBER = "number"; private BigDecimal number; diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Pet.java index 4d7f82de0cc8..24f4c9027387 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Pet.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Pet.java @@ -43,7 +43,7 @@ Pet.JSON_PROPERTY_TAGS, Pet.JSON_PROPERTY_STATUS }) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class Pet { public static final String JSON_PROPERTY_ID = "id"; private Long id; diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Query.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Query.java index f365d1d3982b..497584732b70 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Query.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Query.java @@ -37,7 +37,7 @@ Query.JSON_PROPERTY_ID, Query.JSON_PROPERTY_OUTCOMES }) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class Query { public static final String JSON_PROPERTY_ID = "id"; private Long id; diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Tag.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Tag.java index 8d67cf692e2a..b477a902a7e0 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Tag.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/Tag.java @@ -35,7 +35,7 @@ Tag.JSON_PROPERTY_ID, Tag.JSON_PROPERTY_NAME }) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class Tag { public static final String JSON_PROPERTY_ID = "id"; private Long id; diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java index c84ea1893032..6ac586587ee3 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java @@ -34,7 +34,7 @@ @JsonPropertyOrder({ TestFormObjectMultipartRequestMarker.JSON_PROPERTY_NAME }) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class TestFormObjectMultipartRequestMarker { public static final String JSON_PROPERTY_NAME = "name"; private String name; diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java index 812939f623ea..a979200a0603 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java @@ -37,7 +37,7 @@ TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.JSON_PROPERTY_ID, TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.JSON_PROPERTY_NAME }) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter { public static final String JSON_PROPERTY_SIZE = "size"; private String size; diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java index f57663d4b330..35ae9f59e560 100644 --- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java +++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java @@ -36,7 +36,7 @@ @JsonPropertyOrder({ TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.JSON_PROPERTY_VALUES }) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT") +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT") public class TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter { public static final String JSON_PROPERTY_VALUES = "values"; private List values = new ArrayList<>(); diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/.github/workflows/maven.yml b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/.github/workflows/maven.yml new file mode 100644 index 000000000000..1dc4b505d7ed --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/.github/workflows/maven.yml @@ -0,0 +1,30 @@ +# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven +# +# This file is auto-generated by OpenAPI Generator (https://openapi-generator.tech) + +name: Java CI with Maven + +on: + push: + branches: [ main, master ] + pull_request: + branches: [ main, master ] + +jobs: + build: + name: Build OpenAPI Petstore + runs-on: ubuntu-latest + strategy: + matrix: + java: [ '8' ] + steps: + - uses: actions/checkout@v4 + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: ${{ matrix.java }} + distribution: 'temurin' + cache: maven + - name: Build with Maven + run: mvn -B package --no-transfer-progress --file pom.xml diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/.gitignore b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/.gitignore new file mode 100644 index 000000000000..a530464afa1b --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/.gitignore @@ -0,0 +1,21 @@ +*.class + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear + +# exclude jar for gradle wrapper +!gradle/wrapper/*.jar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +# build files +**/target +target +.gradle +build diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/.openapi-generator-ignore b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/.openapi-generator-ignore new file mode 100644 index 000000000000..7484ee590a38 --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/.openapi-generator/FILES b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/.openapi-generator/FILES new file mode 100644 index 000000000000..0061d2762a1a --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/.openapi-generator/FILES @@ -0,0 +1,63 @@ +.github/workflows/maven.yml +.gitignore +.travis.yml +README.md +api/openapi.yaml +build.gradle +build.sbt +docs/Category.md +docs/ModelApiResponse.md +docs/Order.md +docs/Pet.md +docs/PetApiDocumentation.md +docs/StoreApiDocumentation.md +docs/Tag.md +docs/User.md +docs/UserApiDocumentation.md +git_push.sh +gradle.properties +gradle/wrapper/gradle-wrapper.jar +gradle/wrapper/gradle-wrapper.properties +gradlew +gradlew.bat +info.md +modelCopy/Category.java +modelCopy/ModelApiResponse.java +modelCopy/Order.java +modelCopy/Pet.java +modelCopy/Tag.java +modelCopy/User.java +pom.xml +settings.gradle +src/main/AndroidManifest.xml +src/main/java/org/openapitools/client/ApiCallback.java +src/main/java/org/openapitools/client/ApiClient.java +src/main/java/org/openapitools/client/ApiException.java +src/main/java/org/openapitools/client/ApiResponse.java +src/main/java/org/openapitools/client/Configuration.java +src/main/java/org/openapitools/client/GzipRequestInterceptor.java +src/main/java/org/openapitools/client/JSON.java +src/main/java/org/openapitools/client/Pair.java +src/main/java/org/openapitools/client/ProgressRequestBody.java +src/main/java/org/openapitools/client/ProgressResponseBody.java +src/main/java/org/openapitools/client/ServerConfiguration.java +src/main/java/org/openapitools/client/ServerVariable.java +src/main/java/org/openapitools/client/StringUtil.java +src/main/java/org/openapitools/client/api/PetApi.java +src/main/java/org/openapitools/client/api/StoreApi.java +src/main/java/org/openapitools/client/api/UserApi.java +src/main/java/org/openapitools/client/auth/ApiKeyAuth.java +src/main/java/org/openapitools/client/auth/Authentication.java +src/main/java/org/openapitools/client/auth/HttpBasicAuth.java +src/main/java/org/openapitools/client/auth/HttpBearerAuth.java +src/main/java/org/openapitools/client/auth/OAuth.java +src/main/java/org/openapitools/client/auth/OAuthFlow.java +src/main/java/org/openapitools/client/auth/OAuthOkHttpClient.java +src/main/java/org/openapitools/client/auth/RetryingOAuth.java +src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java +src/main/java/org/openapitools/client/model/Category.java +src/main/java/org/openapitools/client/model/ModelApiResponse.java +src/main/java/org/openapitools/client/model/Order.java +src/main/java/org/openapitools/client/model/Pet.java +src/main/java/org/openapitools/client/model/Tag.java +src/main/java/org/openapitools/client/model/User.java diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/.openapi-generator/VERSION b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/.openapi-generator/VERSION new file mode 100644 index 000000000000..ecb21862b1ee --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.6.0-SNAPSHOT diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/.travis.yml b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/.travis.yml new file mode 100644 index 000000000000..1b6741c083c7 --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/.travis.yml @@ -0,0 +1,22 @@ +# +# Generated by OpenAPI Generator: https://openapi-generator.tech +# +# Ref: https://docs.travis-ci.com/user/languages/java/ +# +language: java +jdk: + - openjdk12 + - openjdk11 + - openjdk10 + - openjdk9 + - openjdk8 +before_install: + # ensure gradlew has proper permission + - chmod a+x ./gradlew +script: + # test using maven + #- mvn test + # test using gradle + - gradle test + # test using sbt + # - sbt test diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/README.md b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/README.md new file mode 100644 index 000000000000..61555e362393 --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/README.md @@ -0,0 +1,184 @@ +# openapi-java-client + +OpenAPI Petstore +- API version: 1.0.0 + - Generator version: 7.6.0-SNAPSHOT + +This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + + +*Automatically generated by the [OpenAPI Generator](https://openapi-generator.tech)* + + +## Requirements + +Building the API client library requires: +1. Java 1.8+ +2. Maven (3.8.3+)/Gradle (7.2+) + +## Installation + +To install the API client library to your local Maven repository, simply execute: + +```shell +mvn clean install +``` + +To deploy it to a remote Maven repository instead, configure the settings of the repository and execute: + +```shell +mvn clean deploy +``` + +Refer to the [OSSRH Guide](http://central.sonatype.org/pages/ossrh-guide.html) for more information. + +### Maven users + +Add this dependency to your project's POM: + +```xml + + org.openapitools + openapi-java-client + 1.0.0 + compile + +``` + +### Gradle users + +Add this dependency to your project's build file: + +```groovy + repositories { + mavenCentral() // Needed if the 'openapi-java-client' jar has been published to maven central. + mavenLocal() // Needed if the 'openapi-java-client' jar has been published to the local maven repo. + } + + dependencies { + implementation "org.openapitools:openapi-java-client:1.0.0" + } +``` + +### Others + +At first generate the JAR by executing: + +```shell +mvn clean package +``` + +Then manually install the following JARs: + +* `target/openapi-java-client-1.0.0.jar` +* `target/lib/*.jar` + +## Getting Started + +Please follow the [installation](#installation) instruction and execute the following Java code: + +```java + +// Import classes: +import org.openapitools.client.ApiClient; +import org.openapitools.client.ApiException; +import org.openapitools.client.Configuration; +import org.openapitools.client.auth.*; +import org.openapitools.client.models.*; +import org.openapitools.client.api.PetApi; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = Configuration.getDefaultApiClient(); + defaultClient.setBasePath("http://petstore.swagger.io/v2"); + + // Configure OAuth2 access token for authorization: petstore_auth + OAuth petstore_auth = (OAuth) defaultClient.getAuthentication("petstore_auth"); + petstore_auth.setAccessToken("YOUR ACCESS TOKEN"); + + PetApi apiInstance = new PetApi(defaultClient); + Pet pet = new Pet(); // Pet | Pet object that needs to be added to the store + try { + Pet result = apiInstance.addPet(pet); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling PetApi#addPet"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} + +``` + +## Documentation for API Endpoints + +All URIs are relative to *http://petstore.swagger.io/v2* + +Class | Method | HTTP request | Description +------------ | ------------- | ------------- | ------------- +*PetApi* | [**addPet**](docs/PetApi.md#addPet) | **POST** /pet | Add a new pet to the store +*PetApi* | [**deletePet**](docs/PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet +*PetApi* | [**findPetsByStatus**](docs/PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status +*PetApi* | [**findPetsByTags**](docs/PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags +*PetApi* | [**getPetById**](docs/PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID +*PetApi* | [**updatePet**](docs/PetApi.md#updatePet) | **PUT** /pet | Update an existing pet +*PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data +*PetApi* | [**uploadFile**](docs/PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image +*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteOrder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID +*StoreApi* | [**getInventory**](docs/StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status +*StoreApi* | [**getOrderById**](docs/StoreApi.md#getOrderById) | **GET** /store/order/{orderId} | Find purchase order by ID +*StoreApi* | [**placeOrder**](docs/StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet +*UserApi* | [**createUser**](docs/UserApi.md#createUser) | **POST** /user | Create user +*UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array +*UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array +*UserApi* | [**deleteUser**](docs/UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user +*UserApi* | [**getUserByName**](docs/UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name +*UserApi* | [**loginUser**](docs/UserApi.md#loginUser) | **GET** /user/login | Logs user into the system +*UserApi* | [**logoutUser**](docs/UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session +*UserApi* | [**updateUser**](docs/UserApi.md#updateUser) | **PUT** /user/{username} | Updated user + + +## Documentation for Models + + - [Category](docs/Category.md) + - [ModelApiResponse](docs/ModelApiResponse.md) + - [Order](docs/Order.md) + - [Pet](docs/Pet.md) + - [Tag](docs/Tag.md) + - [User](docs/User.md) + + + +## Documentation for Authorization + + +Authentication schemes defined for the API: + +### petstore_auth + +- **Type**: OAuth +- **Flow**: implicit +- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog +- **Scopes**: + - write:pets: modify pets in your account + - read:pets: read your pets + + +### api_key + +- **Type**: API key +- **API key parameter name**: api_key +- **Location**: HTTP header + + +## Recommendation + +It's recommended to create an instance of `ApiClient` per thread in a multithreaded environment to avoid any potential issues. + +## Author + + + diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/api/openapi.yaml b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/api/openapi.yaml new file mode 100644 index 000000000000..cd0be0cc180b --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/api/openapi.yaml @@ -0,0 +1,870 @@ +openapi: 3.0.0 +info: + description: "This is a sample server Petstore server. For this sample, you can\ + \ use the api key `special-key` to test the authorization filters." + license: + name: Apache-2.0 + url: https://www.apache.org/licenses/LICENSE-2.0.html + title: OpenAPI Petstore + version: 1.0.0 +externalDocs: + description: Find out more about Swagger + url: http://swagger.io +servers: +- url: http://petstore.swagger.io/v2 +tags: +- description: Everything about your Pets + name: pet +- description: Access to Petstore orders + name: store +- description: Operations about user + name: user +paths: + /pet: + post: + description: "" + operationId: addPet + requestBody: + $ref: '#/components/requestBodies/Pet' + responses: + "200": + content: + application/xml: + schema: + $ref: '#/components/schemas/Pet' + application/json: + schema: + $ref: '#/components/schemas/Pet' + description: successful operation + "405": + description: Invalid input + security: + - petstore_auth: + - write:pets + - read:pets + summary: Add a new pet to the store + tags: + - pet + x-content-type: application/json + x-accepts: + - application/json + - application/xml + put: + description: "" + externalDocs: + description: API documentation for the updatePet operation + url: http://petstore.swagger.io/v2/doc/updatePet + operationId: updatePet + requestBody: + $ref: '#/components/requestBodies/Pet' + responses: + "200": + content: + application/xml: + schema: + $ref: '#/components/schemas/Pet' + application/json: + schema: + $ref: '#/components/schemas/Pet' + description: successful operation + "400": + description: Invalid ID supplied + "404": + description: Pet not found + "405": + description: Validation exception + security: + - petstore_auth: + - write:pets + - read:pets + summary: Update an existing pet + tags: + - pet + x-content-type: application/json + x-accepts: + - application/json + - application/xml + /pet/findByStatus: + get: + description: Multiple status values can be provided with comma separated strings + operationId: findPetsByStatus + parameters: + - deprecated: true + description: Status values that need to be considered for filter + explode: false + in: query + name: status + required: true + schema: + items: + default: available + enum: + - available + - pending + - sold + type: string + type: array + style: form + responses: + "200": + content: + application/xml: + schema: + items: + $ref: '#/components/schemas/Pet' + type: array + application/json: + schema: + items: + $ref: '#/components/schemas/Pet' + type: array + description: successful operation + "400": + description: Invalid status value + security: + - petstore_auth: + - read:pets + summary: Finds Pets by status + tags: + - pet + x-accepts: + - application/json + - application/xml + /pet/findByTags: + get: + deprecated: true + description: "Multiple tags can be provided with comma separated strings. Use\ + \ tag1, tag2, tag3 for testing." + operationId: findPetsByTags + parameters: + - description: Tags to filter by + explode: false + in: query + name: tags + required: true + schema: + items: + type: string + type: array + style: form + responses: + "200": + content: + application/xml: + schema: + items: + $ref: '#/components/schemas/Pet' + type: array + application/json: + schema: + items: + $ref: '#/components/schemas/Pet' + type: array + description: successful operation + "400": + description: Invalid tag value + security: + - petstore_auth: + - read:pets + summary: Finds Pets by tags + tags: + - pet + x-accepts: + - application/json + - application/xml + /pet/{petId}: + delete: + description: "" + operationId: deletePet + parameters: + - explode: false + in: header + name: api_key + required: false + schema: + type: string + style: simple + - description: Pet id to delete + explode: false + in: path + name: petId + required: true + schema: + format: int64 + type: integer + style: simple + responses: + "400": + description: Invalid pet value + security: + - petstore_auth: + - write:pets + - read:pets + summary: Deletes a pet + tags: + - pet + x-accepts: + - application/json + get: + description: Returns a single pet + operationId: getPetById + parameters: + - description: ID of pet to return + explode: false + in: path + name: petId + required: true + schema: + format: int64 + type: integer + style: simple + responses: + "200": + content: + application/xml: + schema: + $ref: '#/components/schemas/Pet' + application/json: + schema: + $ref: '#/components/schemas/Pet' + description: successful operation + "400": + description: Invalid ID supplied + "404": + description: Pet not found + security: + - api_key: [] + summary: Find pet by ID + tags: + - pet + x-accepts: + - application/json + - application/xml + post: + description: "" + operationId: updatePetWithForm + parameters: + - description: ID of pet that needs to be updated + explode: false + in: path + name: petId + required: true + schema: + format: int64 + type: integer + style: simple + requestBody: + content: + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/updatePetWithForm_request' + responses: + "405": + description: Invalid input + security: + - petstore_auth: + - write:pets + - read:pets + summary: Updates a pet in the store with form data + tags: + - pet + x-content-type: application/x-www-form-urlencoded + x-accepts: + - application/json + /pet/{petId}/uploadImage: + post: + description: "" + operationId: uploadFile + parameters: + - description: ID of pet to update + explode: false + in: path + name: petId + required: true + schema: + format: int64 + type: integer + style: simple + requestBody: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/uploadFile_request' + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + description: successful operation + security: + - petstore_auth: + - write:pets + - read:pets + summary: uploads an image + tags: + - pet + x-content-type: multipart/form-data + x-accepts: + - application/json + /store/inventory: + get: + description: Returns a map of status codes to quantities + operationId: getInventory + responses: + "200": + content: + application/json: + schema: + additionalProperties: + format: int32 + type: integer + type: object + description: successful operation + security: + - api_key: [] + summary: Returns pet inventories by status + tags: + - store + x-accepts: + - application/json + /store/order: + post: + description: "" + operationId: placeOrder + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Order' + description: order placed for purchasing the pet + required: true + responses: + "200": + content: + application/xml: + schema: + $ref: '#/components/schemas/Order' + application/json: + schema: + $ref: '#/components/schemas/Order' + description: successful operation + "400": + description: Invalid Order + summary: Place an order for a pet + tags: + - store + x-content-type: application/json + x-accepts: + - application/json + - application/xml + /store/order/{orderId}: + delete: + description: For valid response try integer IDs with value < 1000. Anything + above 1000 or nonintegers will generate API errors + operationId: deleteOrder + parameters: + - description: ID of the order that needs to be deleted + explode: false + in: path + name: orderId + required: true + schema: + type: string + style: simple + responses: + "400": + description: Invalid ID supplied + "404": + description: Order not found + summary: Delete purchase order by ID + tags: + - store + x-accepts: + - application/json + get: + description: For valid response try integer IDs with value <= 5 or > 10. Other + values will generate exceptions + operationId: getOrderById + parameters: + - description: ID of pet that needs to be fetched + explode: false + in: path + name: orderId + required: true + schema: + format: int64 + maximum: 5 + minimum: 1 + type: integer + style: simple + responses: + "200": + content: + application/xml: + schema: + $ref: '#/components/schemas/Order' + application/json: + schema: + $ref: '#/components/schemas/Order' + description: successful operation + "400": + description: Invalid ID supplied + "404": + description: Order not found + summary: Find purchase order by ID + tags: + - store + x-accepts: + - application/json + - application/xml + /user: + post: + description: This can only be done by the logged in user. + operationId: createUser + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User' + description: Created user object + required: true + responses: + default: + description: successful operation + security: + - api_key: [] + summary: Create user + tags: + - user + x-content-type: application/json + x-accepts: + - application/json + /user/createWithArray: + post: + description: "" + operationId: createUsersWithArrayInput + requestBody: + $ref: '#/components/requestBodies/UserArray' + responses: + default: + description: successful operation + security: + - api_key: [] + summary: Creates list of users with given input array + tags: + - user + x-content-type: application/json + x-accepts: + - application/json + /user/createWithList: + post: + description: "" + operationId: createUsersWithListInput + requestBody: + $ref: '#/components/requestBodies/UserArray' + responses: + default: + description: successful operation + security: + - api_key: [] + summary: Creates list of users with given input array + tags: + - user + x-content-type: application/json + x-accepts: + - application/json + /user/login: + get: + description: "" + operationId: loginUser + parameters: + - description: The user name for login + explode: true + in: query + name: username + required: true + schema: + pattern: "^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$" + type: string + style: form + - description: The password for login in clear text + explode: true + in: query + name: password + required: true + schema: + type: string + style: form + responses: + "200": + content: + application/xml: + schema: + type: string + application/json: + schema: + type: string + description: successful operation + headers: + Set-Cookie: + description: Cookie authentication key for use with the `api_key` apiKey + authentication. + explode: false + schema: + example: AUTH_KEY=abcde12345; Path=/; HttpOnly + type: string + style: simple + X-Rate-Limit: + description: calls per hour allowed by the user + explode: false + schema: + format: int32 + type: integer + style: simple + X-Expires-After: + description: date in UTC when token expires + explode: false + schema: + format: date-time + type: string + style: simple + "400": + description: Invalid username/password supplied + summary: Logs user into the system + tags: + - user + x-accepts: + - application/json + - application/xml + /user/logout: + get: + description: "" + operationId: logoutUser + responses: + default: + description: successful operation + security: + - api_key: [] + summary: Logs out current logged in user session + tags: + - user + x-accepts: + - application/json + /user/{username}: + delete: + description: This can only be done by the logged in user. + operationId: deleteUser + parameters: + - description: The name that needs to be deleted + explode: false + in: path + name: username + required: true + schema: + type: string + style: simple + responses: + "400": + description: Invalid username supplied + "404": + description: User not found + security: + - api_key: [] + summary: Delete user + tags: + - user + x-accepts: + - application/json + get: + description: "" + operationId: getUserByName + parameters: + - description: The name that needs to be fetched. Use user1 for testing. + explode: false + in: path + name: username + required: true + schema: + type: string + style: simple + responses: + "200": + content: + application/xml: + schema: + $ref: '#/components/schemas/User' + application/json: + schema: + $ref: '#/components/schemas/User' + description: successful operation + "400": + description: Invalid username supplied + "404": + description: User not found + summary: Get user by user name + tags: + - user + x-accepts: + - application/json + - application/xml + put: + description: This can only be done by the logged in user. + operationId: updateUser + parameters: + - description: name that need to be deleted + explode: false + in: path + name: username + required: true + schema: + type: string + style: simple + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/User' + description: Updated user object + required: true + responses: + "400": + description: Invalid user supplied + "404": + description: User not found + security: + - api_key: [] + summary: Updated user + tags: + - user + x-content-type: application/json + x-accepts: + - application/json +components: + requestBodies: + UserArray: + content: + application/json: + schema: + items: + $ref: '#/components/schemas/User' + type: array + description: List of user object + required: true + Pet: + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + application/xml: + schema: + $ref: '#/components/schemas/Pet' + description: Pet object that needs to be added to the store + required: true + schemas: + Order: + description: An order for a pets from the pet store + example: + petId: 6 + quantity: 1 + id: 0 + shipDate: 2000-01-23T04:56:07.000+00:00 + complete: false + status: placed + properties: + id: + format: int64 + type: integer + petId: + format: int64 + type: integer + quantity: + format: int32 + type: integer + shipDate: + format: date-time + type: string + status: + description: Order Status + enum: + - placed + - approved + - delivered + type: string + complete: + default: false + type: boolean + title: Pet Order + type: object + xml: + name: Order + Category: + description: A category for a pet + example: + name: name + id: 6 + properties: + id: + format: int64 + type: integer + name: + pattern: "^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$" + type: string + title: Pet category + type: object + xml: + name: Category + User: + description: A User who is purchasing from the pet store + example: + firstName: firstName + lastName: lastName + password: password + userStatus: 6 + phone: phone + id: 0 + email: email + username: username + properties: + id: + format: int64 + type: integer + username: + type: string + firstName: + type: string + lastName: + type: string + email: + type: string + password: + type: string + phone: + type: string + userStatus: + description: User Status + format: int32 + type: integer + title: a User + type: object + xml: + name: User + Tag: + description: A tag for a pet + example: + name: name + id: 1 + properties: + id: + format: int64 + type: integer + name: + type: string + title: Pet Tag + type: object + xml: + name: Tag + Pet: + description: A pet for sale in the pet store + example: + photoUrls: + - photoUrls + - photoUrls + name: doggie + id: 0 + category: + name: name + id: 6 + tags: + - name: name + id: 1 + - name: name + id: 1 + status: available + properties: + id: + format: int64 + type: integer + category: + $ref: '#/components/schemas/Category' + name: + example: doggie + type: string + photoUrls: + items: + type: string + type: array + xml: + name: photoUrl + wrapped: true + tags: + items: + $ref: '#/components/schemas/Tag' + type: array + xml: + name: tag + wrapped: true + status: + deprecated: true + description: pet status in the store + enum: + - available + - pending + - sold + type: string + required: + - name + - photoUrls + title: a Pet + type: object + xml: + name: Pet + ApiResponse: + description: Describes the result of uploading an image resource + example: + code: 0 + type: type + message: message + properties: + code: + format: int32 + type: integer + type: + type: string + message: + type: string + title: An uploaded response + type: object + updatePetWithForm_request: + properties: + name: + description: Updated name of the pet + type: string + status: + description: Updated status of the pet + type: string + type: object + uploadFile_request: + properties: + additionalMetadata: + description: Additional data to pass to server + type: string + file: + description: file to upload + format: binary + type: string + type: object + securitySchemes: + petstore_auth: + flows: + implicit: + authorizationUrl: http://petstore.swagger.io/api/oauth/dialog + scopes: + write:pets: modify pets in your account + read:pets: read your pets + type: oauth2 + api_key: + in: header + name: api_key + type: apiKey + diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/build.gradle b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/build.gradle new file mode 100644 index 000000000000..c200c7adc70d --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/build.gradle @@ -0,0 +1,169 @@ +apply plugin: 'idea' +apply plugin: 'eclipse' +apply plugin: 'java' +apply plugin: 'com.diffplug.spotless' + +group = 'org.openapitools' +version = '1.0.0' + +buildscript { + repositories { + mavenCentral() + } + dependencies { + classpath 'com.android.tools.build:gradle:2.3.+' + classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' + classpath 'com.diffplug.spotless:spotless-plugin-gradle:6.11.0' + } +} + +repositories { + mavenCentral() +} +sourceSets { + main.java.srcDirs = ['src/main/java'] +} + +if(hasProperty('target') && target == 'android') { + + apply plugin: 'com.android.library' + apply plugin: 'com.github.dcendents.android-maven' + + android { + compileSdkVersion 25 + buildToolsVersion '25.0.2' + defaultConfig { + minSdkVersion 14 + targetSdkVersion 25 + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + // Rename the aar correctly + libraryVariants.all { variant -> + variant.outputs.each { output -> + def outputFile = output.outputFile + if (outputFile != null && outputFile.name.endsWith('.aar')) { + def fileName = "${project.name}-${variant.baseName}-${version}.aar" + output.outputFile = new File(outputFile.parent, fileName) + } + } + } + + dependencies { + provided "jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version" + } + } + + afterEvaluate { + android.libraryVariants.all { variant -> + def task = project.tasks.create "jar${variant.name.capitalize()}", Jar + task.description = "Create jar artifact for ${variant.name}" + task.dependsOn variant.javaCompile + task.from variant.javaCompile.destinationDirectory + task.destinationDirectory = project.file("${project.buildDir}/outputs/jar") + task.archiveFileName = "${project.name}-${variant.baseName}-${version}.jar" + artifacts.add('archives', task) + } + } + + task sourcesJar(type: Jar) { + from android.sourceSets.main.java.srcDirs + classifier = 'sources' + } + + artifacts { + archives sourcesJar + } + +} else { + + apply plugin: 'java' + apply plugin: 'maven-publish' + + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + + publishing { + publications { + maven(MavenPublication) { + artifactId = 'openapi-java-client' + from components.java + } + } + } + + task execute(type:JavaExec) { + main = System.getProperty('mainClass') + classpath = sourceSets.main.runtimeClasspath + } +} + +ext { + jakarta_annotation_version = "1.3.5" +} + +dependencies { + implementation 'io.swagger:swagger-annotations:1.6.8' + implementation "com.google.code.findbugs:jsr305:3.0.2" + implementation 'com.squareup.okhttp3:okhttp:4.12.0' + implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0' + implementation 'com.google.code.gson:gson:2.9.1' + implementation 'io.gsonfire:gson-fire:1.9.0' + implementation 'javax.ws.rs:jsr311-api:1.1.1' + implementation 'javax.ws.rs:javax.ws.rs-api:2.1.1' + implementation 'org.openapitools:jackson-databind-nullable:0.2.6' + implementation group: 'org.apache.oltu.oauth2', name: 'org.apache.oltu.oauth2.client', version: '1.0.2' + implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0' + implementation "jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version" + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.1' + testImplementation 'org.mockito:mockito-core:3.12.4' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.1' +} + +javadoc { + options.tags = [ "http.response.details:a:Http Response Details" ] +} + +// Use spotless plugin to automatically format code, remove unused import, etc +// To apply changes directly to the file, run `gradlew spotlessApply` +// Ref: https://github.com/diffplug/spotless/tree/main/plugin-gradle +spotless { + // comment out below to run spotless as part of the `check` task + enforceCheck false + + format 'misc', { + // define the files (e.g. '*.gradle', '*.md') to apply `misc` to + target '.gitignore' + + // define the steps to apply to those files + trimTrailingWhitespace() + indentWithSpaces() // Takes an integer argument if you don't like 4 + endWithNewline() + } + java { + // don't need to set target, it is inferred from java + + // apply a specific flavor of google-java-format + googleJavaFormat('1.8').aosp().reflowLongStrings() + + removeUnusedImports() + importOrder() + } +} + +test { + // Enable JUnit 5 (Gradle 4.6+). + useJUnitPlatform() + + // Always run tests, even when nothing changed. + dependsOn 'cleanTest' + + // Show test results. + testLogging { + events "passed", "skipped", "failed" + } + +} diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/build.sbt b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/build.sbt new file mode 100644 index 000000000000..3f438cc18060 --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/build.sbt @@ -0,0 +1,29 @@ +lazy val root = (project in file(".")). + settings( + organization := "org.openapitools", + name := "openapi-java-client", + version := "1.0.0", + scalaVersion := "2.11.4", + scalacOptions ++= Seq("-feature"), + javacOptions in compile ++= Seq("-Xlint:deprecation"), + publishArtifact in (Compile, packageDoc) := false, + resolvers += Resolver.mavenLocal, + libraryDependencies ++= Seq( + "io.swagger" % "swagger-annotations" % "1.6.5", + "com.squareup.okhttp3" % "okhttp" % "4.12.0", + "com.squareup.okhttp3" % "logging-interceptor" % "4.12.0", + "com.google.code.gson" % "gson" % "2.9.1", + "org.apache.commons" % "commons-lang3" % "3.12.0", + "javax.ws.rs" % "jsr311-api" % "1.1.1", + "javax.ws.rs" % "javax.ws.rs-api" % "2.1.1", + "org.openapitools" % "jackson-databind-nullable" % "0.2.6", + "org.apache.oltu.oauth2" % "org.apache.oltu.oauth2.client" % "1.0.2", + "io.gsonfire" % "gson-fire" % "1.9.0" % "compile", + "jakarta.annotation" % "jakarta.annotation-api" % "1.3.5" % "compile", + "com.google.code.findbugs" % "jsr305" % "3.0.2" % "compile", + "jakarta.annotation" % "jakarta.annotation-api" % "1.3.5" % "compile", + "org.junit.jupiter" % "junit-jupiter-api" % "5.9.1" % "test", + "com.novocode" % "junit-interface" % "0.10" % "test", + "org.mockito" % "mockito-core" % "3.12.4" % "test" + ) + ) diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/Category.md b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/Category.md new file mode 100644 index 000000000000..a7fc939d252e --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/Category.md @@ -0,0 +1,15 @@ + + +# Category + +A category for a pet + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**id** | **Long** | | [optional] | +|**name** | **String** | | [optional] | + + + diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/ModelApiResponse.md b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/ModelApiResponse.md new file mode 100644 index 000000000000..cd7e3c400be6 --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/ModelApiResponse.md @@ -0,0 +1,16 @@ + + +# ModelApiResponse + +Describes the result of uploading an image resource + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**code** | **Integer** | | [optional] | +|**type** | **String** | | [optional] | +|**message** | **String** | | [optional] | + + + diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/Order.md b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/Order.md new file mode 100644 index 000000000000..0c33059b8b6a --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/Order.md @@ -0,0 +1,29 @@ + + +# Order + +An order for a pets from the pet store + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**id** | **Long** | | [optional] | +|**petId** | **Long** | | [optional] | +|**quantity** | **Integer** | | [optional] | +|**shipDate** | **OffsetDateTime** | | [optional] | +|**status** | [**StatusEnum**](#StatusEnum) | Order Status | [optional] | +|**complete** | **Boolean** | | [optional] | + + + +## Enum: StatusEnum + +| Name | Value | +|---- | -----| +| PLACED | "placed" | +| APPROVED | "approved" | +| DELIVERED | "delivered" | + + + diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/Pet.md b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/Pet.md new file mode 100644 index 000000000000..8bb363301232 --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/Pet.md @@ -0,0 +1,29 @@ + + +# Pet + +A pet for sale in the pet store + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**id** | **Long** | | [optional] | +|**category** | [**Category**](Category.md) | | [optional] | +|**name** | **String** | | | +|**photoUrls** | **List<String>** | | | +|**tags** | [**List<Tag>**](Tag.md) | | [optional] | +|**status** | [**StatusEnum**](#StatusEnum) | pet status in the store | [optional] | + + + +## Enum: StatusEnum + +| Name | Value | +|---- | -----| +| AVAILABLE | "available" | +| PENDING | "pending" | +| SOLD | "sold" | + + + diff --git a/samples/client/petstore/java/okhttp-gson-swagger1/docs/PetApi.md b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/PetApiDocumentation.md similarity index 100% rename from samples/client/petstore/java/okhttp-gson-swagger1/docs/PetApi.md rename to samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/PetApiDocumentation.md diff --git a/samples/client/petstore/java/okhttp-gson-swagger1/docs/StoreApi.md b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/StoreApiDocumentation.md similarity index 100% rename from samples/client/petstore/java/okhttp-gson-swagger1/docs/StoreApi.md rename to samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/StoreApiDocumentation.md diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/Tag.md b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/Tag.md new file mode 100644 index 000000000000..abfde4afb501 --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/Tag.md @@ -0,0 +1,15 @@ + + +# Tag + +A tag for a pet + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**id** | **Long** | | [optional] | +|**name** | **String** | | [optional] | + + + diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/User.md b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/User.md new file mode 100644 index 000000000000..426845227bd3 --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/User.md @@ -0,0 +1,21 @@ + + +# User + +A User who is purchasing from the pet store + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**id** | **Long** | | [optional] | +|**username** | **String** | | [optional] | +|**firstName** | **String** | | [optional] | +|**lastName** | **String** | | [optional] | +|**email** | **String** | | [optional] | +|**password** | **String** | | [optional] | +|**phone** | **String** | | [optional] | +|**userStatus** | **Integer** | User Status | [optional] | + + + diff --git a/samples/client/petstore/java/okhttp-gson-swagger1/docs/UserApi.md b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/UserApiDocumentation.md similarity index 100% rename from samples/client/petstore/java/okhttp-gson-swagger1/docs/UserApi.md rename to samples/client/echo_api/java/okhttp-gson-user-defined-templates/docs/UserApiDocumentation.md diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/git_push.sh b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/git_push.sh new file mode 100644 index 000000000000..f53a75d4fabe --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/git_push.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 +git_host=$4 + +if [ "$git_host" = "" ]; then + git_host="github.com" + echo "[INFO] No command line input provided. Set \$git_host to $git_host" +fi + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=$(git remote) +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/gradle.properties b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/gradle.properties new file mode 100644 index 000000000000..a3408578278a --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/gradle.properties @@ -0,0 +1,6 @@ +# This file is automatically generated by OpenAPI Generator (https://github.com/openAPITools/openapi-generator). +# To include other gradle properties as part of the code generation process, please use the `gradleProperties` option. +# +# Gradle properties reference: https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties +# For example, uncomment below to build for Android +#target = android diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/gradle/wrapper/gradle-wrapper.jar b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..7454180f2ae8848c63b8b4dea2cb829da983f2fa GIT binary patch literal 59536 zcma&NbC71ylI~qywr$(CZQJHswz}-9F59+k+g;UV+cs{`J?GrGXYR~=-ydruB3JCa zB64N^cILAcWk5iofq)<(fq;O7{th4@;QxID0)qN`mJ?GIqLY#rX8-|G{5M0pdVW5^ zzXk$-2kQTAC?_N@B`&6-N-rmVFE=$QD?>*=4<|!MJu@}isLc4AW#{m2if&A5T5g&~ ziuMQeS*U5sL6J698wOd)K@oK@1{peP5&Esut<#VH^u)gp`9H4)`uE!2$>RTctN+^u z=ASkePDZA-X8)rp%D;p*~P?*a_=*Kwc<^>QSH|^<0>o37lt^+Mj1;4YvJ(JR-Y+?%Nu}JAYj5 z_Qc5%Ao#F?q32i?ZaN2OSNhWL;2oDEw_({7ZbgUjna!Fqn3NzLM@-EWFPZVmc>(fZ z0&bF-Ch#p9C{YJT9Rcr3+Y_uR^At1^BxZ#eo>$PLJF3=;t_$2|t+_6gg5(j{TmjYU zK12c&lE?Eh+2u2&6Gf*IdKS&6?rYbSEKBN!rv{YCm|Rt=UlPcW9j`0o6{66#y5t9C zruFA2iKd=H%jHf%ypOkxLnO8#H}#Zt{8p!oi6)7#NqoF({t6|J^?1e*oxqng9Q2Cc zg%5Vu!em)}Yuj?kaP!D?b?(C*w!1;>R=j90+RTkyEXz+9CufZ$C^umX^+4|JYaO<5 zmIM3#dv`DGM;@F6;(t!WngZSYzHx?9&$xEF70D1BvfVj<%+b#)vz)2iLCrTeYzUcL z(OBnNoG6Le%M+@2oo)&jdOg=iCszzv59e zDRCeaX8l1hC=8LbBt|k5?CXgep=3r9BXx1uR8!p%Z|0+4Xro=xi0G!e{c4U~1j6!) zH6adq0}#l{%*1U(Cb%4AJ}VLWKBPi0MoKFaQH6x?^hQ!6em@993xdtS%_dmevzeNl z(o?YlOI=jl(`L9^ z0O+H9k$_@`6L13eTT8ci-V0ljDMD|0ifUw|Q-Hep$xYj0hTO@0%IS^TD4b4n6EKDG z??uM;MEx`s98KYN(K0>c!C3HZdZ{+_53DO%9k5W%pr6yJusQAv_;IA}925Y%;+!tY z%2k!YQmLLOr{rF~!s<3-WEUs)`ix_mSU|cNRBIWxOox_Yb7Z=~Q45ZNe*u|m^|)d* zog=i>`=bTe!|;8F+#H>EjIMcgWcG2ORD`w0WD;YZAy5#s{65~qfI6o$+Ty&-hyMyJ z3Ra~t>R!p=5ZpxA;QkDAoPi4sYOP6>LT+}{xp}tk+<0k^CKCFdNYG(Es>p0gqD)jP zWOeX5G;9(m@?GOG7g;e74i_|SmE?`B2i;sLYwRWKLy0RLW!Hx`=!LH3&k=FuCsM=9M4|GqzA)anEHfxkB z?2iK-u(DC_T1};KaUT@3nP~LEcENT^UgPvp!QC@Dw&PVAhaEYrPey{nkcn(ro|r7XUz z%#(=$7D8uP_uU-oPHhd>>^adbCSQetgSG`e$U|7mr!`|bU0aHl_cmL)na-5x1#OsVE#m*+k84Y^+UMeSAa zbrVZHU=mFwXEaGHtXQq`2ZtjfS!B2H{5A<3(nb-6ARVV8kEmOkx6D2x7~-6hl;*-*}2Xz;J#a8Wn;_B5=m zl3dY;%krf?i-Ok^Pal-}4F`{F@TYPTwTEhxpZK5WCpfD^UmM_iYPe}wpE!Djai6_{ z*pGO=WB47#Xjb7!n2Ma)s^yeR*1rTxp`Mt4sfA+`HwZf%!7ZqGosPkw69`Ix5Ku6G z@Pa;pjzV&dn{M=QDx89t?p?d9gna*}jBly*#1!6}5K<*xDPJ{wv4& zM$17DFd~L*Te3A%yD;Dp9UGWTjRxAvMu!j^Tbc}2v~q^59d4bz zvu#!IJCy(BcWTc`;v$9tH;J%oiSJ_i7s;2`JXZF+qd4C)vY!hyCtl)sJIC{ebI*0> z@x>;EzyBv>AI-~{D6l6{ST=em*U( z(r$nuXY-#CCi^8Z2#v#UXOt`dbYN1z5jzNF2 z411?w)whZrfA20;nl&C1Gi+gk<`JSm+{|*2o<< zqM#@z_D`Cn|0H^9$|Tah)0M_X4c37|KQ*PmoT@%xHc3L1ZY6(p(sNXHa&49Frzto& zR`c~ClHpE~4Z=uKa5S(-?M8EJ$zt0&fJk~p$M#fGN1-y$7!37hld`Uw>Urri(DxLa;=#rK0g4J)pXMC zxzraOVw1+kNWpi#P=6(qxf`zSdUC?D$i`8ZI@F>k6k zz21?d+dw7b&i*>Kv5L(LH-?J%@WnqT7j#qZ9B>|Zl+=> z^U-pV@1y_ptHo4hl^cPRWewbLQ#g6XYQ@EkiP z;(=SU!yhjHp%1&MsU`FV1Z_#K1&(|5n(7IHbx&gG28HNT)*~-BQi372@|->2Aw5It z0CBpUcMA*QvsPy)#lr!lIdCi@1k4V2m!NH)%Px(vu-r(Q)HYc!p zJ^$|)j^E#q#QOgcb^pd74^JUi7fUmMiNP_o*lvx*q%_odv49Dsv$NV;6J z9GOXKomA{2Pb{w}&+yHtH?IkJJu~}Z?{Uk++2mB8zyvh*xhHKE``99>y#TdD z&(MH^^JHf;g(Tbb^&8P*;_i*2&fS$7${3WJtV7K&&(MBV2~)2KB3%cWg#1!VE~k#C z!;A;?p$s{ihyojEZz+$I1)L}&G~ml=udD9qh>Tu(ylv)?YcJT3ihapi!zgPtWb*CP zlLLJSRCj-^w?@;RU9aL2zDZY1`I3d<&OMuW=c3$o0#STpv_p3b9Wtbql>w^bBi~u4 z3D8KyF?YE?=HcKk!xcp@Cigvzy=lnFgc^9c%(^F22BWYNAYRSho@~*~S)4%AhEttv zvq>7X!!EWKG?mOd9&n>vvH1p4VzE?HCuxT-u+F&mnsfDI^}*-d00-KAauEaXqg3k@ zy#)MGX!X;&3&0s}F3q40ZmVM$(H3CLfpdL?hB6nVqMxX)q=1b}o_PG%r~hZ4gUfSp zOH4qlEOW4OMUc)_m)fMR_rl^pCfXc{$fQbI*E&mV77}kRF z&{<06AJyJ!e863o-V>FA1a9Eemx6>^F$~9ppt()ZbPGfg_NdRXBWoZnDy2;#ODgf! zgl?iOcF7Meo|{AF>KDwTgYrJLb$L2%%BEtO>T$C?|9bAB&}s;gI?lY#^tttY&hfr# zKhC+&b-rpg_?~uVK%S@mQleU#_xCsvIPK*<`E0fHE1&!J7!xD#IB|SSPW6-PyuqGn3^M^Rz%WT{e?OI^svARX&SAdU77V(C~ zM$H{Kg59op{<|8ry9ecfP%=kFm(-!W&?U0@<%z*+!*<e0XesMxRFu9QnGqun6R_%T+B%&9Dtk?*d$Q zb~>84jEAPi@&F@3wAa^Lzc(AJz5gsfZ7J53;@D<;Klpl?sK&u@gie`~vTsbOE~Cd4 z%kr56mI|#b(Jk&;p6plVwmNB0H@0SmgdmjIn5Ne@)}7Vty(yb2t3ev@22AE^s!KaN zyQ>j+F3w=wnx7w@FVCRe+`vUH)3gW%_72fxzqX!S&!dchdkRiHbXW1FMrIIBwjsai8`CB2r4mAbwp%rrO>3B$Zw;9=%fXI9B{d(UzVap7u z6piC-FQ)>}VOEuPpuqznpY`hN4dGa_1Xz9rVg(;H$5Te^F0dDv*gz9JS<|>>U0J^# z6)(4ICh+N_Q`Ft0hF|3fSHs*?a=XC;e`sJaU9&d>X4l?1W=|fr!5ShD|nv$GK;j46@BV6+{oRbWfqOBRb!ir88XD*SbC(LF}I1h#6@dvK%Toe%@ zhDyG$93H8Eu&gCYddP58iF3oQH*zLbNI;rN@E{T9%A8!=v#JLxKyUe}e}BJpB{~uN zqgxRgo0*-@-iaHPV8bTOH(rS(huwK1Xg0u+e!`(Irzu@Bld&s5&bWgVc@m7;JgELd zimVs`>vQ}B_1(2#rv#N9O`fJpVfPc7V2nv34PC);Dzbb;p!6pqHzvy?2pD&1NE)?A zt(t-ucqy@wn9`^MN5apa7K|L=9>ISC>xoc#>{@e}m#YAAa1*8-RUMKwbm|;5p>T`Z zNf*ph@tnF{gmDa3uwwN(g=`Rh)4!&)^oOy@VJaK4lMT&5#YbXkl`q?<*XtsqD z9PRK6bqb)fJw0g-^a@nu`^?71k|m3RPRjt;pIkCo1{*pdqbVs-Yl>4E>3fZx3Sv44grW=*qdSoiZ9?X0wWyO4`yDHh2E!9I!ZFi zVL8|VtW38}BOJHW(Ax#KL_KQzarbuE{(%TA)AY)@tY4%A%P%SqIU~8~-Lp3qY;U-} z`h_Gel7;K1h}7$_5ZZT0&%$Lxxr-<89V&&TCsu}LL#!xpQ1O31jaa{U34~^le*Y%L za?7$>Jk^k^pS^_M&cDs}NgXlR>16AHkSK-4TRaJSh#h&p!-!vQY%f+bmn6x`4fwTp z$727L^y`~!exvmE^W&#@uY!NxJi`g!i#(++!)?iJ(1)2Wk;RN zFK&O4eTkP$Xn~4bB|q8y(btx$R#D`O@epi4ofcETrx!IM(kWNEe42Qh(8*KqfP(c0 zouBl6>Fc_zM+V;F3znbo{x#%!?mH3`_ANJ?y7ppxS@glg#S9^MXu|FM&ynpz3o&Qh z2ujAHLF3($pH}0jXQsa#?t--TnF1P73b?4`KeJ9^qK-USHE)4!IYgMn-7z|=ALF5SNGkrtPG@Y~niUQV2?g$vzJN3nZ{7;HZHzWAeQ;5P|@Tl3YHpyznGG4-f4=XflwSJY+58-+wf?~Fg@1p1wkzuu-RF3j2JX37SQUc? zQ4v%`V8z9ZVZVqS8h|@@RpD?n0W<=hk=3Cf8R?d^9YK&e9ZybFY%jdnA)PeHvtBe- zhMLD+SSteHBq*q)d6x{)s1UrsO!byyLS$58WK;sqip$Mk{l)Y(_6hEIBsIjCr5t>( z7CdKUrJTrW%qZ#1z^n*Lb8#VdfzPw~OIL76aC+Rhr<~;4Tl!sw?Rj6hXj4XWa#6Tp z@)kJ~qOV)^Rh*-?aG>ic2*NlC2M7&LUzc9RT6WM%Cpe78`iAowe!>(T0jo&ivn8-7 zs{Qa@cGy$rE-3AY0V(l8wjI^uB8Lchj@?L}fYal^>T9z;8juH@?rG&g-t+R2dVDBe zq!K%{e-rT5jX19`(bP23LUN4+_zh2KD~EAYzhpEO3MUG8@}uBHH@4J zd`>_(K4q&>*k82(dDuC)X6JuPrBBubOg7qZ{?x!r@{%0);*`h*^F|%o?&1wX?Wr4b z1~&cy#PUuES{C#xJ84!z<1tp9sfrR(i%Tu^jnXy;4`Xk;AQCdFC@?V%|; zySdC7qS|uQRcH}EFZH%mMB~7gi}a0utE}ZE_}8PQH8f;H%PN41Cb9R%w5Oi5el^fd z$n{3SqLCnrF##x?4sa^r!O$7NX!}&}V;0ZGQ&K&i%6$3C_dR%I7%gdQ;KT6YZiQrW zk%q<74oVBV>@}CvJ4Wj!d^?#Zwq(b$E1ze4$99DuNg?6t9H}k_|D7KWD7i0-g*EO7 z;5{hSIYE4DMOK3H%|f5Edx+S0VI0Yw!tsaRS2&Il2)ea^8R5TG72BrJue|f_{2UHa z@w;^c|K3da#$TB0P3;MPlF7RuQeXT$ zS<<|C0OF(k)>fr&wOB=gP8!Qm>F41u;3esv7_0l%QHt(~+n; zf!G6%hp;Gfa9L9=AceiZs~tK+Tf*Wof=4!u{nIO90jH@iS0l+#%8=~%ASzFv7zqSB^?!@N7)kp0t&tCGLmzXSRMRyxCmCYUD2!B`? zhs$4%KO~m=VFk3Buv9osha{v+mAEq=ik3RdK@;WWTV_g&-$U4IM{1IhGX{pAu%Z&H zFfwCpUsX%RKg);B@7OUzZ{Hn{q6Vv!3#8fAg!P$IEx<0vAx;GU%}0{VIsmFBPq_mb zpe^BChDK>sc-WLKl<6 zwbW|e&d&dv9Wu0goueyu>(JyPx1mz0v4E?cJjFuKF71Q1)AL8jHO$!fYT3(;U3Re* zPPOe%*O+@JYt1bW`!W_1!mN&=w3G9ru1XsmwfS~BJ))PhD(+_J_^N6j)sx5VwbWK| zwRyC?W<`pOCY)b#AS?rluxuuGf-AJ=D!M36l{ua?@SJ5>e!IBr3CXIxWw5xUZ@Xrw z_R@%?{>d%Ld4p}nEsiA@v*nc6Ah!MUs?GA7e5Q5lPpp0@`%5xY$C;{%rz24$;vR#* zBP=a{)K#CwIY%p} zXVdxTQ^HS@O&~eIftU+Qt^~(DGxrdi3k}DdT^I7Iy5SMOp$QuD8s;+93YQ!OY{eB24%xY7ml@|M7I(Nb@K_-?F;2?et|CKkuZK_>+>Lvg!>JE~wN`BI|_h6$qi!P)+K-1Hh(1;a`os z55)4Q{oJiA(lQM#;w#Ta%T0jDNXIPM_bgESMCDEg6rM33anEr}=|Fn6)|jBP6Y}u{ zv9@%7*#RI9;fv;Yii5CI+KrRdr0DKh=L>)eO4q$1zmcSmglsV`*N(x=&Wx`*v!!hn6X-l0 zP_m;X??O(skcj+oS$cIdKhfT%ABAzz3w^la-Ucw?yBPEC+=Pe_vU8nd-HV5YX6X8r zZih&j^eLU=%*;VzhUyoLF;#8QsEfmByk+Y~caBqSvQaaWf2a{JKB9B>V&r?l^rXaC z8)6AdR@Qy_BxQrE2Fk?ewD!SwLuMj@&d_n5RZFf7=>O>hzVE*seW3U?_p|R^CfoY`?|#x9)-*yjv#lo&zP=uI`M?J zbzC<^3x7GfXA4{FZ72{PE*-mNHyy59Q;kYG@BB~NhTd6pm2Oj=_ zizmD?MKVRkT^KmXuhsk?eRQllPo2Ubk=uCKiZ&u3Xjj~<(!M94c)Tez@9M1Gfs5JV z->@II)CDJOXTtPrQudNjE}Eltbjq>6KiwAwqvAKd^|g!exgLG3;wP+#mZYr`cy3#39e653d=jrR-ulW|h#ddHu(m9mFoW~2yE zz5?dB%6vF}+`-&-W8vy^OCxm3_{02royjvmwjlp+eQDzFVEUiyO#gLv%QdDSI#3W* z?3!lL8clTaNo-DVJw@ynq?q!%6hTQi35&^>P85G$TqNt78%9_sSJt2RThO|JzM$iL zg|wjxdMC2|Icc5rX*qPL(coL!u>-xxz-rFiC!6hD1IR%|HSRsV3>Kq~&vJ=s3M5y8SG%YBQ|{^l#LGlg!D?E>2yR*eV%9m$_J6VGQ~AIh&P$_aFbh zULr0Z$QE!QpkP=aAeR4ny<#3Fwyw@rZf4?Ewq`;mCVv}xaz+3ni+}a=k~P+yaWt^L z@w67!DqVf7D%7XtXX5xBW;Co|HvQ8WR1k?r2cZD%U;2$bsM%u8{JUJ5Z0k= zZJARv^vFkmWx15CB=rb=D4${+#DVqy5$C%bf`!T0+epLJLnh1jwCdb*zuCL}eEFvE z{rO1%gxg>1!W(I!owu*mJZ0@6FM(?C+d*CeceZRW_4id*D9p5nzMY&{mWqrJomjIZ z97ZNnZ3_%Hx8dn;H>p8m7F#^2;T%yZ3H;a&N7tm=Lvs&lgJLW{V1@h&6Vy~!+Ffbb zv(n3+v)_D$}dqd!2>Y2B)#<+o}LH#%ogGi2-?xRIH)1!SD)u-L65B&bsJTC=LiaF+YOCif2dUX6uAA|#+vNR z>U+KQekVGon)Yi<93(d!(yw1h3&X0N(PxN2{%vn}cnV?rYw z$N^}_o!XUB!mckL`yO1rnUaI4wrOeQ(+&k?2mi47hzxSD`N#-byqd1IhEoh!PGq>t z_MRy{5B0eKY>;Ao3z$RUU7U+i?iX^&r739F)itdrTpAi-NN0=?^m%?{A9Ly2pVv>Lqs6moTP?T2-AHqFD-o_ znVr|7OAS#AEH}h8SRPQ@NGG47dO}l=t07__+iK8nHw^(AHx&Wb<%jPc$$jl6_p(b$ z)!pi(0fQodCHfM)KMEMUR&UID>}m^(!{C^U7sBDOA)$VThRCI0_+2=( zV8mMq0R(#z;C|7$m>$>`tX+T|xGt(+Y48@ZYu#z;0pCgYgmMVbFb!$?%yhZqP_nhn zy4<#3P1oQ#2b51NU1mGnHP$cf0j-YOgAA}A$QoL6JVLcmExs(kU{4z;PBHJD%_=0F z>+sQV`mzijSIT7xn%PiDKHOujX;n|M&qr1T@rOxTdxtZ!&u&3HHFLYD5$RLQ=heur zb>+AFokUVQeJy-#LP*^)spt{mb@Mqe=A~-4p0b+Bt|pZ+@CY+%x}9f}izU5;4&QFE zO1bhg&A4uC1)Zb67kuowWY4xbo&J=%yoXlFB)&$d*-}kjBu|w!^zbD1YPc0-#XTJr z)pm2RDy%J3jlqSMq|o%xGS$bPwn4AqitC6&e?pqWcjWPt{3I{>CBy;hg0Umh#c;hU3RhCUX=8aR>rmd` z7Orw(5tcM{|-^J?ZAA9KP|)X6n9$-kvr#j5YDecTM6n z&07(nD^qb8hpF0B^z^pQ*%5ePYkv&FabrlI61ntiVp!!C8y^}|<2xgAd#FY=8b*y( zuQOuvy2`Ii^`VBNJB&R!0{hABYX55ooCAJSSevl4RPqEGb)iy_0H}v@vFwFzD%>#I>)3PsouQ+_Kkbqy*kKdHdfkN7NBcq%V{x^fSxgXpg7$bF& zj!6AQbDY(1u#1_A#1UO9AxiZaCVN2F0wGXdY*g@x$ByvUA?ePdide0dmr#}udE%K| z3*k}Vv2Ew2u1FXBaVA6aerI36R&rzEZeDDCl5!t0J=ug6kuNZzH>3i_VN`%BsaVB3 zQYw|Xub_SGf{)F{$ZX5`Jc!X!;eybjP+o$I{Z^Hsj@D=E{MnnL+TbC@HEU2DjG{3-LDGIbq()U87x4eS;JXnSh;lRlJ z>EL3D>wHt-+wTjQF$fGyDO$>d+(fq@bPpLBS~xA~R=3JPbS{tzN(u~m#Po!?H;IYv zE;?8%^vle|%#oux(Lj!YzBKv+Fd}*Ur-dCBoX*t{KeNM*n~ZPYJ4NNKkI^MFbz9!v z4(Bvm*Kc!-$%VFEewYJKz-CQN{`2}KX4*CeJEs+Q(!kI%hN1!1P6iOq?ovz}X0IOi z)YfWpwW@pK08^69#wSyCZkX9?uZD?C^@rw^Y?gLS_xmFKkooyx$*^5#cPqntNTtSG zlP>XLMj2!VF^0k#ole7`-c~*~+_T5ls?x4)ah(j8vo_ zwb%S8qoaZqY0-$ZI+ViIA_1~~rAH7K_+yFS{0rT@eQtTAdz#8E5VpwnW!zJ_^{Utv zlW5Iar3V5t&H4D6A=>?mq;G92;1cg9a2sf;gY9pJDVKn$DYdQlvfXq}zz8#LyPGq@ z+`YUMD;^-6w&r-82JL7mA8&M~Pj@aK!m{0+^v<|t%APYf7`}jGEhdYLqsHW-Le9TL z_hZZ1gbrz7$f9^fAzVIP30^KIz!!#+DRLL+qMszvI_BpOSmjtl$hh;&UeM{ER@INV zcI}VbiVTPoN|iSna@=7XkP&-4#06C};8ajbxJ4Gcq8(vWv4*&X8bM^T$mBk75Q92j z1v&%a;OSKc8EIrodmIiw$lOES2hzGDcjjB`kEDfJe{r}yE6`eZL zEB`9u>Cl0IsQ+t}`-cx}{6jqcANucqIB>Qmga_&<+80E2Q|VHHQ$YlAt{6`Qu`HA3 z03s0-sSlwbvgi&_R8s={6<~M^pGvBNjKOa>tWenzS8s zR>L7R5aZ=mSU{f?ib4Grx$AeFvtO5N|D>9#)ChH#Fny2maHWHOf2G=#<9Myot#+4u zWVa6d^Vseq_0=#AYS(-m$Lp;*8nC_6jXIjEM`omUmtH@QDs3|G)i4j*#_?#UYVZvJ z?YjT-?!4Q{BNun;dKBWLEw2C-VeAz`%?A>p;)PL}TAZn5j~HK>v1W&anteARlE+~+ zj>c(F;?qO3pXBb|#OZdQnm<4xWmn~;DR5SDMxt0UK_F^&eD|KZ=O;tO3vy4@4h^;2 zUL~-z`-P1aOe?|ZC1BgVsL)2^J-&vIFI%q@40w0{jjEfeVl)i9(~bt2z#2Vm)p`V_ z1;6$Ae7=YXk#=Qkd24Y23t&GvRxaOoad~NbJ+6pxqzJ>FY#Td7@`N5xp!n(c!=RE& z&<<@^a$_Ys8jqz4|5Nk#FY$~|FPC0`*a5HH!|Gssa9=~66&xG9)|=pOOJ2KE5|YrR zw!w6K2aC=J$t?L-;}5hn6mHd%hC;p8P|Dgh6D>hGnXPgi;6r+eA=?f72y9(Cf_ho{ zH6#)uD&R=73^$$NE;5piWX2bzR67fQ)`b=85o0eOLGI4c-Tb@-KNi2pz=Ke@SDcPn za$AxXib84`!Sf;Z3B@TSo`Dz7GM5Kf(@PR>Ghzi=BBxK8wRp>YQoXm+iL>H*Jo9M3 z6w&E?BC8AFTFT&Tv8zf+m9<&S&%dIaZ)Aoqkak_$r-2{$d~0g2oLETx9Y`eOAf14QXEQw3tJne;fdzl@wV#TFXSLXM2428F-Q}t+n2g%vPRMUzYPvzQ9f# zu(liiJem9P*?0%V@RwA7F53r~|I!Ty)<*AsMX3J{_4&}{6pT%Tpw>)^|DJ)>gpS~1rNEh z0$D?uO8mG?H;2BwM5a*26^7YO$XjUm40XmBsb63MoR;bJh63J;OngS5sSI+o2HA;W zdZV#8pDpC9Oez&L8loZO)MClRz!_!WD&QRtQxnazhT%Vj6Wl4G11nUk8*vSeVab@N#oJ}`KyJv+8Mo@T1-pqZ1t|?cnaVOd;1(h9 z!$DrN=jcGsVYE-0-n?oCJ^4x)F}E;UaD-LZUIzcD?W^ficqJWM%QLy6QikrM1aKZC zi{?;oKwq^Vsr|&`i{jIphA8S6G4)$KGvpULjH%9u(Dq247;R#l&I0{IhcC|oBF*Al zvLo7Xte=C{aIt*otJD}BUq)|_pdR>{zBMT< z(^1RpZv*l*m*OV^8>9&asGBo8h*_4q*)-eCv*|Pq=XNGrZE)^(SF7^{QE_~4VDB(o zVcPA_!G+2CAtLbl+`=Q~9iW`4ZRLku!uB?;tWqVjB0lEOf}2RD7dJ=BExy=<9wkb- z9&7{XFA%n#JsHYN8t5d~=T~5DcW4$B%3M+nNvC2`0!#@sckqlzo5;hhGi(D9=*A4` z5ynobawSPRtWn&CDLEs3Xf`(8^zDP=NdF~F^s&={l7(aw&EG}KWpMjtmz7j_VLO;@ zM2NVLDxZ@GIv7*gzl1 zjq78tv*8#WSY`}Su0&C;2F$Ze(q>F(@Wm^Gw!)(j;dk9Ad{STaxn)IV9FZhm*n+U} zi;4y*3v%A`_c7a__DJ8D1b@dl0Std3F||4Wtvi)fCcBRh!X9$1x!_VzUh>*S5s!oq z;qd{J_r79EL2wIeiGAqFstWtkfIJpjVh%zFo*=55B9Zq~y0=^iqHWfQl@O!Ak;(o*m!pZqe9 z%U2oDOhR)BvW8&F70L;2TpkzIutIvNQaTjjs5V#8mV4!NQ}zN=i`i@WI1z0eN-iCS z;vL-Wxc^Vc_qK<5RPh(}*8dLT{~GzE{w2o$2kMFaEl&q zP{V=>&3kW7tWaK-Exy{~`v4J0U#OZBk{a9{&)&QG18L@6=bsZ1zC_d{{pKZ-Ey>I> z;8H0t4bwyQqgu4hmO`3|4K{R*5>qnQ&gOfdy?z`XD%e5+pTDzUt3`k^u~SaL&XMe= z9*h#kT(*Q9jO#w2Hd|Mr-%DV8i_1{J1MU~XJ3!WUplhXDYBpJH><0OU`**nIvPIof z|N8@I=wA)sf45SAvx||f?Z5uB$kz1qL3Ky_{%RPdP5iN-D2!p5scq}buuC00C@jom zhfGKm3|f?Z0iQ|K$Z~!`8{nmAS1r+fp6r#YDOS8V*;K&Gs7Lc&f^$RC66O|)28oh`NHy&vq zJh+hAw8+ybTB0@VhWN^0iiTnLsCWbS_y`^gs!LX!Lw{yE``!UVzrV24tP8o;I6-65 z1MUiHw^{bB15tmrVT*7-#sj6cs~z`wk52YQJ*TG{SE;KTm#Hf#a~|<(|ImHH17nNM z`Ub{+J3dMD!)mzC8b(2tZtokKW5pAwHa?NFiso~# z1*iaNh4lQ4TS)|@G)H4dZV@l*Vd;Rw;-;odDhW2&lJ%m@jz+Panv7LQm~2Js6rOW3 z0_&2cW^b^MYW3)@o;neZ<{B4c#m48dAl$GCc=$>ErDe|?y@z`$uq3xd(%aAsX)D%l z>y*SQ%My`yDP*zof|3@_w#cjaW_YW4BdA;#Glg1RQcJGY*CJ9`H{@|D+*e~*457kd z73p<%fB^PV!Ybw@)Dr%(ZJbX}xmCStCYv#K3O32ej{$9IzM^I{6FJ8!(=azt7RWf4 z7ib0UOPqN40X!wOnFOoddd8`!_IN~9O)#HRTyjfc#&MCZ zZAMzOVB=;qwt8gV?{Y2?b=iSZG~RF~uyx18K)IDFLl})G1v@$(s{O4@RJ%OTJyF+Cpcx4jmy|F3euCnMK!P2WTDu5j z{{gD$=M*pH!GGzL%P)V2*ROm>!$Y=z|D`!_yY6e7SU$~a5q8?hZGgaYqaiLnkK%?0 zs#oI%;zOxF@g*@(V4p!$7dS1rOr6GVs6uYCTt2h)eB4?(&w8{#o)s#%gN@BBosRUe z)@P@8_Zm89pr~)b>e{tbPC~&_MR--iB{=)y;INU5#)@Gix-YpgP<-c2Ms{9zuCX|3 z!p(?VaXww&(w&uBHzoT%!A2=3HAP>SDxcljrego7rY|%hxy3XlODWffO_%g|l+7Y_ zqV(xbu)s4lV=l7M;f>vJl{`6qBm>#ZeMA}kXb97Z)?R97EkoI?x6Lp0yu1Z>PS?2{ z0QQ(8D)|lc9CO3B~e(pQM&5(1y&y=e>C^X$`)_&XuaI!IgDTVqt31wX#n+@!a_A0ZQkA zCJ2@M_4Gb5MfCrm5UPggeyh)8 zO9?`B0J#rkoCx(R0I!ko_2?iO@|oRf1;3r+i)w-2&j?=;NVIdPFsB)`|IC0zk6r9c zRrkfxWsiJ(#8QndNJj@{@WP2Ackr|r1VxV{7S&rSU(^)-M8gV>@UzOLXu9K<{6e{T zXJ6b92r$!|lwjhmgqkdswY&}c)KW4A)-ac%sU;2^fvq7gfUW4Bw$b!i@duy1CAxSn z(pyh$^Z=&O-q<{bZUP+$U}=*#M9uVc>CQVgDs4swy5&8RAHZ~$)hrTF4W zPsSa~qYv_0mJnF89RnnJTH`3}w4?~epFl=D(35$ zWa07ON$`OMBOHgCmfO(9RFc<)?$x)N}Jd2A(<*Ll7+4jrRt9w zwGxExUXd9VB#I|DwfxvJ;HZ8Q{37^wDhaZ%O!oO(HpcqfLH%#a#!~;Jl7F5>EX_=8 z{()l2NqPz>La3qJR;_v+wlK>GsHl;uRA8%j`A|yH@k5r%55S9{*Cp%uw6t`qc1!*T za2OeqtQj7sAp#Q~=5Fs&aCR9v>5V+s&RdNvo&H~6FJOjvaj--2sYYBvMq;55%z8^o z|BJDA4vzfow#DO#ZQHh;Oq_{r+qP{R9ox2TOgwQiv7Ow!zjN+A@BN;0tA2lUb#+zO z(^b89eV)D7UVE+h{mcNc6&GtpOqDn_?VAQ)Vob$hlFwW%xh>D#wml{t&Ofmm_d_+; zKDxzdr}`n2Rw`DtyIjrG)eD0vut$}dJAZ0AohZ+ZQdWXn_Z@dI_y=7t3q8x#pDI-K z2VVc&EGq445Rq-j0=U=Zx`oBaBjsefY;%)Co>J3v4l8V(T8H?49_@;K6q#r~Wwppc z4XW0(4k}cP=5ex>-Xt3oATZ~bBWKv)aw|I|Lx=9C1s~&b77idz({&q3T(Y(KbWO?+ zmcZ6?WeUsGk6>km*~234YC+2e6Zxdl~<_g2J|IE`GH%n<%PRv-50; zH{tnVts*S5*_RxFT9eM0z-pksIb^drUq4>QSww=u;UFCv2AhOuXE*V4z?MM`|ABOC4P;OfhS(M{1|c%QZ=!%rQTDFx`+}?Kdx$&FU?Y<$x;j7z=(;Lyz+?EE>ov!8vvMtSzG!nMie zsBa9t8as#2nH}n8xzN%W%U$#MHNXmDUVr@GX{?(=yI=4vks|V)!-W5jHsU|h_&+kY zS_8^kd3jlYqOoiI`ZqBVY!(UfnAGny!FowZWY_@YR0z!nG7m{{)4OS$q&YDyw6vC$ zm4!$h>*|!2LbMbxS+VM6&DIrL*X4DeMO!@#EzMVfr)e4Tagn~AQHIU8?e61TuhcKD zr!F4(kEebk(Wdk-?4oXM(rJwanS>Jc%<>R(siF+>+5*CqJLecP_we33iTFTXr6W^G z7M?LPC-qFHK;E!fxCP)`8rkxZyFk{EV;G-|kwf4b$c1k0atD?85+|4V%YATWMG|?K zLyLrws36p%Qz6{}>7b>)$pe>mR+=IWuGrX{3ZPZXF3plvuv5Huax86}KX*lbPVr}L z{C#lDjdDeHr~?l|)Vp_}T|%$qF&q#U;ClHEPVuS+Jg~NjC1RP=17=aQKGOcJ6B3mp z8?4*-fAD~}sX*=E6!}^u8)+m2j<&FSW%pYr_d|p_{28DZ#Cz0@NF=gC-o$MY?8Ca8 zr5Y8DSR^*urS~rhpX^05r30Ik#2>*dIOGxRm0#0YX@YQ%Mg5b6dXlS!4{7O_kdaW8PFSdj1=ryI-=5$fiieGK{LZ+SX(1b=MNL!q#lN zv98?fqqTUH8r8C7v(cx#BQ5P9W>- zmW93;eH6T`vuJ~rqtIBg%A6>q>gnWb3X!r0wh_q;211+Om&?nvYzL1hhtjB zK_7G3!n7PL>d!kj){HQE zE8(%J%dWLh1_k%gVXTZt zEdT09XSKAx27Ncaq|(vzL3gm83q>6CAw<$fTnMU05*xAe&rDfCiu`u^1)CD<>sx0i z*hr^N_TeN89G(nunZoLBf^81#pmM}>JgD@Nn1l*lN#a=B=9pN%tmvYFjFIoKe_(GF z-26x{(KXdfsQL7Uv6UtDuYwV`;8V3w>oT_I<`Ccz3QqK9tYT5ZQzbop{=I=!pMOCb zCU68`n?^DT%^&m>A%+-~#lvF!7`L7a{z<3JqIlk1$<||_J}vW1U9Y&eX<}l8##6i( zZcTT@2`9(Mecptm@{3A_Y(X`w9K0EwtPq~O!16bq{7c0f7#(3wn-^)h zxV&M~iiF!{-6A@>o;$RzQ5A50kxXYj!tcgme=Qjrbje~;5X2xryU;vH|6bE(8z^<7 zQ>BG7_c*JG8~K7Oe68i#0~C$v?-t@~@r3t2inUnLT(c=URpA9kA8uq9PKU(Ps(LVH zqgcqW>Gm?6oV#AldDPKVRcEyQIdTT`Qa1j~vS{<;SwyTdr&3*t?J)y=M7q*CzucZ&B0M=joT zBbj@*SY;o2^_h*>R0e({!QHF0=)0hOj^B^d*m>SnRrwq>MolNSgl^~r8GR#mDWGYEIJA8B<|{{j?-7p zVnV$zancW3&JVDtVpIlI|5djKq0(w$KxEFzEiiL=h5Jw~4Le23@s(mYyXWL9SX6Ot zmb)sZaly_P%BeX_9 zw&{yBef8tFm+%=--m*J|o~+Xg3N+$IH)t)=fqD+|fEk4AAZ&!wcN5=mi~Vvo^i`}> z#_3ahR}Ju)(Px7kev#JGcSwPXJ2id9%Qd2A#Uc@t8~egZ8;iC{e! z%=CGJOD1}j!HW_sgbi_8suYnn4#Ou}%9u)dXd3huFIb!ytlX>Denx@pCS-Nj$`VO&j@(z!kKSP0hE4;YIP#w9ta=3DO$7f*x zc9M4&NK%IrVmZAe=r@skWD`AEWH=g+r|*13Ss$+{c_R!b?>?UaGXlw*8qDmY#xlR= z<0XFbs2t?8i^G~m?b|!Hal^ZjRjt<@a? z%({Gn14b4-a|#uY^=@iiKH+k?~~wTj5K1A&hU z2^9-HTC)7zpoWK|$JXaBL6C z#qSNYtY>65T@Zs&-0cHeu|RX(Pxz6vTITdzJdYippF zC-EB+n4}#lM7`2Ry~SO>FxhKboIAF#Z{1wqxaCb{#yEFhLuX;Rx(Lz%T`Xo1+a2M}7D+@wol2)OJs$TwtRNJ={( zD@#zTUEE}#Fz#&(EoD|SV#bayvr&E0vzmb%H?o~46|FAcx?r4$N z&67W3mdip-T1RIxwSm_&(%U|+WvtGBj*}t69XVd&ebn>KOuL(7Y8cV?THd-(+9>G7*Nt%T zcH;`p={`SOjaf7hNd(=37Lz3-51;58JffzIPgGs_7xIOsB5p2t&@v1mKS$2D$*GQ6 zM(IR*j4{nri7NMK9xlDy-hJW6sW|ZiDRaFiayj%;(%51DN!ZCCCXz+0Vm#};70nOx zJ#yA0P3p^1DED;jGdPbQWo0WATN=&2(QybbVdhd=Vq*liDk`c7iZ?*AKEYC#SY&2g z&Q(Ci)MJ{mEat$ZdSwTjf6h~roanYh2?9j$CF@4hjj_f35kTKuGHvIs9}Re@iKMxS-OI*`0S z6s)fOtz}O$T?PLFVSeOjSO26$@u`e<>k(OSP!&YstH3ANh>)mzmKGNOwOawq-MPXe zy4xbeUAl6tamnx))-`Gi2uV5>9n(73yS)Ukma4*7fI8PaEwa)dWHs6QA6>$}7?(L8 ztN8M}?{Tf!Zu22J5?2@95&rQ|F7=FK-hihT-vDp!5JCcWrVogEnp;CHenAZ)+E+K5 z$Cffk5sNwD_?4+ymgcHR(5xgt20Z8M`2*;MzOM#>yhk{r3x=EyM226wb&!+j`W<%* zSc&|`8!>dn9D@!pYow~(DsY_naSx7(Z4i>cu#hA5=;IuI88}7f%)bRkuY2B;+9Uep zpXcvFWkJ!mQai63BgNXG26$5kyhZ2&*3Q_tk)Ii4M>@p~_~q_cE!|^A;_MHB;7s#9 zKzMzK{lIxotjc};k67^Xsl-gS!^*m*m6kn|sbdun`O?dUkJ{0cmI0-_2y=lTAfn*Y zKg*A-2sJq)CCJgY0LF-VQvl&6HIXZyxo2#!O&6fOhbHXC?%1cMc6y^*dOS{f$=137Ds1m01qs`>iUQ49JijsaQ( zksqV9@&?il$|4Ua%4!O15>Zy&%gBY&wgqB>XA3!EldQ%1CRSM(pp#k~-pkcCg4LAT zXE=puHbgsw)!xtc@P4r~Z}nTF=D2~j(6D%gTBw$(`Fc=OOQ0kiW$_RDd=hcO0t97h zb86S5r=>(@VGy1&#S$Kg_H@7G^;8Ue)X5Y+IWUi`o;mpvoV)`fcVk4FpcT|;EG!;? zHG^zrVVZOm>1KFaHlaogcWj(v!S)O(Aa|Vo?S|P z5|6b{qkH(USa*Z7-y_Uvty_Z1|B{rTS^qmEMLEYUSk03_Fg&!O3BMo{b^*`3SHvl0 zhnLTe^_vVIdcSHe)SQE}r~2dq)VZJ!aSKR?RS<(9lzkYo&dQ?mubnWmgMM37Nudwo z3Vz@R{=m2gENUE3V4NbIzAA$H1z0pagz94-PTJyX{b$yndsdKptmlKQKaaHj@3=ED zc7L?p@%ui|RegVYutK$64q4pe9+5sv34QUpo)u{1ci?)_7gXQd{PL>b0l(LI#rJmN zGuO+%GO`xneFOOr4EU(Wg}_%bhzUf;d@TU+V*2#}!2OLwg~%D;1FAu=Un>OgjPb3S z7l(riiCwgghC=Lm5hWGf5NdGp#01xQ59`HJcLXbUR3&n%P(+W2q$h2Qd z*6+-QXJ*&Kvk9ht0f0*rO_|FMBALen{j7T1l%=Q>gf#kma zQlg#I9+HB+z*5BMxdesMND`_W;q5|FaEURFk|~&{@qY32N$G$2B=&Po{=!)x5b!#n zxLzblkq{yj05#O7(GRuT39(06FJlalyv<#K4m}+vs>9@q-&31@1(QBv82{}Zkns~K ze{eHC_RDX0#^A*JQTwF`a=IkE6Ze@j#-8Q`tTT?k9`^ZhA~3eCZJ-Jr{~7Cx;H4A3 zcZ+Zj{mzFZbVvQ6U~n>$U2ZotGsERZ@}VKrgGh0xM;Jzt29%TX6_&CWzg+YYMozrM z`nutuS)_0dCM8UVaKRj804J4i%z2BA_8A4OJRQ$N(P9Mfn-gF;4#q788C@9XR0O3< zsoS4wIoyt046d+LnSCJOy@B@Uz*#GGd#+Ln1ek5Dv>(ZtD@tgZlPnZZJGBLr^JK+!$$?A_fA3LOrkoDRH&l7 zcMcD$Hsjko3`-{bn)jPL6E9Ds{WskMrivsUu5apD z?grQO@W7i5+%X&E&p|RBaEZ(sGLR@~(y^BI@lDMot^Ll?!`90KT!JXUhYS`ZgX3jnu@Ja^seA*M5R@f`=`ynQV4rc$uT1mvE?@tz)TN<=&H1%Z?5yjxcpO+6y_R z6EPuPKM5uxKpmZfT(WKjRRNHs@ib)F5WAP7QCADvmCSD#hPz$V10wiD&{NXyEwx5S z6NE`3z!IS^$s7m}PCwQutVQ#~w+V z=+~->DI*bR2j0^@dMr9`p>q^Ny~NrAVxrJtX2DUveic5vM%#N*XO|?YAWwNI$Q)_) zvE|L(L1jP@F%gOGtnlXtIv2&1i8q<)Xfz8O3G^Ea~e*HJsQgBxWL(yuLY+jqUK zRE~`-zklrGog(X}$9@ZVUw!8*=l`6mzYLtsg`AvBYz(cxmAhr^j0~(rzXdiOEeu_p zE$sf2(w(BPAvO5DlaN&uQ$4@p-b?fRs}d7&2UQ4Fh?1Hzu*YVjcndqJLw0#q@fR4u zJCJ}>_7-|QbvOfylj+e^_L`5Ep9gqd>XI3-O?Wp z-gt*P29f$Tx(mtS`0d05nHH=gm~Po_^OxxUwV294BDKT>PHVlC5bndncxGR!n(OOm znsNt@Q&N{TLrmsoKFw0&_M9$&+C24`sIXGWgQaz=kY;S{?w`z^Q0JXXBKFLj0w0U6P*+jPKyZHX9F#b0D1$&(- zrm8PJd?+SrVf^JlfTM^qGDK&-p2Kdfg?f>^%>1n8bu&byH(huaocL>l@f%c*QkX2i znl}VZ4R1en4S&Bcqw?$=Zi7ohqB$Jw9x`aM#>pHc0x z0$!q7iFu zZ`tryM70qBI6JWWTF9EjgG@>6SRzsd}3h+4D8d~@CR07P$LJ}MFsYi-*O%XVvD@yT|rJ+Mk zDllJ7$n0V&A!0flbOf)HE6P_afPWZmbhpliqJuw=-h+r;WGk|ntkWN(8tKlYpq5Ow z(@%s>IN8nHRaYb*^d;M(D$zGCv5C|uqmsDjwy4g=Lz>*OhO3z=)VD}C<65;`89Ye} zSCxrv#ILzIpEx1KdLPlM&%Cctf@FqTKvNPXC&`*H9=l=D3r!GLM?UV zOxa(8ZsB`&+76S-_xuj?G#wXBfDY@Z_tMpXJS7^mp z@YX&u0jYw2A+Z+bD#6sgVK5ZgdPSJV3>{K^4~%HV?rn~4D)*2H!67Y>0aOmzup`{D zzDp3c9yEbGCY$U<8biJ_gB*`jluz1ShUd!QUIQJ$*1;MXCMApJ^m*Fiv88RZ zFopLViw}{$Tyhh_{MLGIE2~sZ)t0VvoW%=8qKZ>h=adTe3QM$&$PO2lfqH@brt!9j ziePM8$!CgE9iz6B<6_wyTQj?qYa;eC^{x_0wuwV~W+^fZmFco-o%wsKSnjXFEx02V zF5C2t)T6Gw$Kf^_c;Ei3G~uC8SM-xyycmXyC2hAVi-IfXqhu$$-C=*|X?R0~hu z8`J6TdgflslhrmDZq1f?GXF7*ALeMmOEpRDg(s*H`4>_NAr`2uqF;k;JQ+8>A|_6ZNsNLECC%NNEb1Y1dP zbIEmNpK)#XagtL4R6BC{C5T(+=yA-(Z|Ap}U-AfZM#gwVpus3(gPn}Q$CExObJ5AC z)ff9Yk?wZ}dZ-^)?cbb9Fw#EjqQ8jxF4G3=L?Ra zg_)0QDMV1y^A^>HRI$x?Op@t;oj&H@1xt4SZ9(kifQ zb59B*`M99Td7@aZ3UWvj1rD0sE)d=BsBuW*KwkCds7ay(7*01_+L}b~7)VHI>F_!{ zyxg-&nCO?v#KOUec0{OOKy+sjWA;8rTE|Lv6I9H?CI?H(mUm8VXGwU$49LGpz&{nQp2}dinE1@lZ1iox6{ghN&v^GZv9J${7WaXj)<0S4g_uiJ&JCZ zr8-hsu`U%N;+9N^@&Q0^kVPB3)wY(rr}p7{p0qFHb3NUUHJb672+wRZs`gd1UjKPX z4o6zljKKA+Kkj?H>Ew63o%QjyBk&1!P22;MkD>sM0=z_s-G{mTixJCT9@_|*(p^bz zJ8?ZZ&;pzV+7#6Mn`_U-)k8Pjg?a;|Oe^us^PoPY$Va~yi8|?+&=y$f+lABT<*pZr zP}D{~Pq1Qyni+@|aP;ixO~mbEW9#c0OU#YbDZIaw=_&$K%Ep2f%hO^&P67hApZe`x zv8b`Mz@?M_7-)b!lkQKk)JXXUuT|B8kJlvqRmRpxtQDgvrHMXC1B$M@Y%Me!BSx3P z#2Eawl$HleZhhTS6Txm>lN_+I`>eV$&v9fOg)%zVn3O5mI*lAl>QcHuW6!Kixmq`X zBCZ*Ck6OYtDiK!N47>jxI&O2a9x7M|i^IagRr-fmrmikEQGgw%J7bO|)*$2FW95O4 zeBs>KR)izRG1gRVL;F*sr8A}aRHO0gc$$j&ds8CIO1=Gwq1%_~E)CWNn9pCtBE}+`Jelk4{>S)M)`Ll=!~gnn1yq^EX(+y*ik@3Ou0qU`IgYi3*doM+5&dU!cho$pZ zn%lhKeZkS72P?Cf68<#kll_6OAO26bIbueZx**j6o;I0cS^XiL`y+>{cD}gd%lux} z)3N>MaE24WBZ}s0ApfdM;5J_Ny}rfUyxfkC``Awo2#sgLnGPewK};dORuT?@I6(5~ z?kE)Qh$L&fwJXzK){iYx!l5$Tt|^D~MkGZPA}(o6f7w~O2G6Vvzdo*a;iXzk$B66$ zwF#;wM7A+(;uFG4+UAY(2`*3XXx|V$K8AYu#ECJYSl@S=uZW$ksfC$~qrrbQj4??z-)uz0QL}>k^?fPnJTPw% zGz)~?B4}u0CzOf@l^um}HZzbaIwPmb<)< zi_3@E9lc)Qe2_`*Z^HH;1CXOceL=CHpHS{HySy3T%<^NrWQ}G0i4e1xm_K3(+~oi$ zoHl9wzb?Z4j#90DtURtjtgvi7uw8DzHYmtPb;?%8vb9n@bszT=1qr)V_>R%s!92_` zfnHQPANx z<#hIjIMm#*(v*!OXtF+w8kLu`o?VZ5k7{`vw{Yc^qYclpUGIM_PBN1+c{#Vxv&E*@ zxg=W2W~JuV{IuRYw3>LSI1)a!thID@R=bU+cU@DbR^_SXY`MC7HOsCN z!dO4OKV7(E_Z8T#8MA1H`99?Z!r0)qKW_#|29X3#Jb+5+>qUidbeP1NJ@)(qi2S-X zao|f0_tl(O+$R|Qwd$H{_ig|~I1fbp_$NkI!0E;Y z6JrnU{1Ra6^on{9gUUB0mwzP3S%B#h0fjo>JvV~#+X0P~JV=IG=yHG$O+p5O3NUgG zEQ}z6BTp^Fie)Sg<){Z&I8NwPR(=mO4joTLHkJ>|Tnk23E(Bo`FSbPc05lF2-+)X? z6vV3*m~IBHTy*^E!<0nA(tCOJW2G4DsH7)BxLV8kICn5lu6@U*R`w)o9;Ro$i8=Q^V%uH8n3q=+Yf;SFRZu z!+F&PKcH#8cG?aSK_Tl@K9P#8o+jry@gdexz&d(Q=47<7nw@e@FFfIRNL9^)1i@;A z28+$Z#rjv-wj#heI|<&J_DiJ*s}xd-f!{J8jfqOHE`TiHHZVIA8CjkNQ_u;Ery^^t zl1I75&u^`1_q)crO+JT4rx|z2ToSC>)Or@-D zy3S>jW*sNIZR-EBsfyaJ+Jq4BQE4?SePtD2+jY8*%FsSLZ9MY>+wk?}}}AFAw)vr{ml)8LUG-y9>^t!{~|sgpxYc0Gnkg`&~R z-pilJZjr@y5$>B=VMdZ73svct%##v%wdX~9fz6i3Q-zOKJ9wso+h?VME7}SjL=!NUG{J?M&i!>ma`eoEa@IX`5G>B1(7;%}M*%-# zfhJ(W{y;>MRz!Ic8=S}VaBKqh;~7KdnGEHxcL$kA-6E~=!hrN*zw9N+_=odt<$_H_8dbo;0=42wcAETPCVGUr~v(`Uai zb{=D!Qc!dOEU6v)2eHSZq%5iqK?B(JlCq%T6av$Cb4Rko6onlG&?CqaX7Y_C_cOC3 zYZ;_oI(}=>_07}Oep&Ws7x7-R)cc8zfe!SYxJYP``pi$FDS)4Fvw5HH=FiU6xfVqIM!hJ;Rx8c0cB7~aPtNH(Nmm5Vh{ibAoU#J6 zImRCr?(iyu_4W_6AWo3*vxTPUw@vPwy@E0`(>1Qi=%>5eSIrp^`` zK*Y?fK_6F1W>-7UsB)RPC4>>Ps9)f+^MqM}8AUm@tZ->j%&h1M8s*s!LX5&WxQcAh z8mciQej@RPm?660%>{_D+7er>%zX_{s|$Z+;G7_sfNfBgY(zLB4Ey}J9F>zX#K0f6 z?dVNIeEh?EIShmP6>M+d|0wMM85Sa4diw1hrg|ITJ}JDg@o8y>(rF9mXk5M z2@D|NA)-7>wD&wF;S_$KS=eE84`BGw3g0?6wGxu8ys4rwI?9U=*^VF22t3%mbGeOh z`!O-OpF7#Vceu~F`${bW0nYVU9ecmk31V{tF%iv&5hWofC>I~cqAt@u6|R+|HLMMX zVxuSlMFOK_EQ86#E8&KwxIr8S9tj_goWtLv4f@!&h8;Ov41{J~496vp9vX=(LK#j! zAwi*21RAV-LD>9Cw3bV_9X(X3)Kr0-UaB*7Y>t82EQ%!)(&(XuAYtTsYy-dz+w=$ir)VJpe!_$ z6SGpX^i(af3{o=VlFPC);|J8#(=_8#vdxDe|Cok+ANhYwbE*FO`Su2m1~w+&9<_9~ z-|tTU_ACGN`~CNW5WYYBn^B#SwZ(t4%3aPp z;o)|L6Rk569KGxFLUPx@!6OOa+5OjQLK5w&nAmwxkC5rZ|m&HT8G%GVZxB_@ME z>>{rnXUqyiJrT(8GMj_ap#yN_!9-lO5e8mR3cJiK3NE{_UM&=*vIU`YkiL$1%kf+1 z4=jk@7EEj`u(jy$HnzE33ZVW_J4bj}K;vT?T91YlO(|Y0FU4r+VdbmQ97%(J5 zkK*Bed8+C}FcZ@HIgdCMioV%A<*4pw_n}l*{Cr4}a(lq|injK#O?$tyvyE`S%(1`H z_wwRvk#13ElkZvij2MFGOj`fhy?nC^8`Zyo%yVcUAfEr8x&J#A{|moUBAV_^f$hpaUuyQeY3da^ zS9iRgf87YBwfe}>BO+T&Fl%rfpZh#+AM?Dq-k$Bq`vG6G_b4z%Kbd&v>qFjow*mBl z-OylnqOpLg}or7_VNwRg2za3VBK6FUfFX{|TD z`Wt0Vm2H$vdlRWYQJqDmM?JUbVqL*ZQY|5&sY*?!&%P8qhA~5+Af<{MaGo(dl&C5t zE%t!J0 zh6jqANt4ABdPxSTrVV}fLsRQal*)l&_*rFq(Ez}ClEH6LHv{J#v?+H-BZ2)Wy{K@9 z+ovXHq~DiDvm>O~r$LJo!cOuwL+Oa--6;UFE2q@g3N8Qkw5E>ytz^(&($!O47+i~$ zKM+tkAd-RbmP{s_rh+ugTD;lriL~`Xwkad#;_aM?nQ7L_muEFI}U_4$phjvYgleK~`Fo`;GiC07&Hq1F<%p;9Q;tv5b?*QnR%8DYJH3P>Svmv47Y>*LPZJy8_{9H`g6kQpyZU{oJ`m%&p~D=K#KpfoJ@ zn-3cqmHsdtN!f?~w+(t+I`*7GQA#EQC^lUA9(i6=i1PqSAc|ha91I%X&nXzjYaM{8$s&wEx@aVkQ6M{E2 zfzId#&r(XwUNtPcq4Ngze^+XaJA1EK-%&C9j>^9(secqe{}z>hR5CFNveMsVA)m#S zk)_%SidkY-XmMWlVnQ(mNJ>)ooszQ#vaK;!rPmGKXV7am^_F!Lz>;~{VrIO$;!#30XRhE1QqO_~#+Ux;B_D{Nk=grn z8Y0oR^4RqtcYM)7a%@B(XdbZCOqnX#fD{BQTeLvRHd(irHKq=4*jq34`6@VAQR8WG z^%)@5CXnD_T#f%@-l${>y$tfb>2LPmc{~5A82|16mH)R?&r#KKLs7xpN-D`=&Cm^R zvMA6#Ahr<3X>Q7|-qfTY)}32HkAz$_mibYV!I)u>bmjK`qwBe(>za^0Kt*HnFbSdO z1>+ryKCNxmm^)*$XfiDOF2|{-v3KKB?&!(S_Y=Ht@|ir^hLd978xuI&N{k>?(*f8H z=ClxVJK_%_z1TH0eUwm2J+2To7FK4o+n_na)&#VLn1m;!+CX+~WC+qg1?PA~KdOlC zW)C@pw75_xoe=w7i|r9KGIvQ$+3K?L{7TGHwrQM{dCp=Z*D}3kX7E-@sZnup!BImw z*T#a=+WcTwL78exTgBn|iNE3#EsOorO z*kt)gDzHiPt07fmisA2LWN?AymkdqTgr?=loT7z@d`wnlr6oN}@o|&JX!yPzC*Y8d zu6kWlTzE1)ckyBn+0Y^HMN+GA$wUO_LN6W>mxCo!0?oiQvT`z$jbSEu&{UHRU0E8# z%B^wOc@S!yhMT49Y)ww(Xta^8pmPCe@eI5C*ed96)AX9<>))nKx0(sci8gwob_1}4 z0DIL&vsJ1_s%<@y%U*-eX z5rN&(zef-5G~?@r79oZGW1d!WaTqQn0F6RIOa9tJ=0(kdd{d1{<*tHT#cCvl*i>YY zH+L7jq8xZNcTUBqj(S)ztTU!TM!RQ}In*n&Gn<>(60G7}4%WQL!o>hbJqNDSGwl#H z`4k+twp0cj%PsS+NKaxslAEu9!#U3xT1|_KB6`h=PI0SW`P9GTa7caD1}vKEglV8# zjKZR`pluCW19c2fM&ZG)c3T3Um;ir3y(tSCJ7Agl6|b524dy5El{^EQBG?E61H0XY z`bqg!;zhGhyMFl&(o=JWEJ8n~z)xI}A@C0d2hQGvw7nGv)?POU@(kS1m=%`|+^ika zXl8zjS?xqW$WlO?Ewa;vF~XbybHBor$f<%I&*t$F5fynwZlTGj|IjZtVfGa7l&tK} zW>I<69w(cZLu)QIVG|M2xzW@S+70NinQzk&Y0+3WT*cC)rx~04O-^<{JohU_&HL5XdUKW!uFy|i$FB|EMu0eUyW;gsf`XfIc!Z0V zeK&*hPL}f_cX=@iv>K%S5kL;cl_$v?n(Q9f_cChk8Lq$glT|=e+T*8O4H2n<=NGmn z+2*h+v;kBvF>}&0RDS>)B{1!_*XuE8A$Y=G8w^qGMtfudDBsD5>T5SB;Qo}fSkkiV ze^K^M(UthkwrD!&*tTsu>Dacdj_q`~V%r_twr$(Ct&_dKeeXE?fA&4&yASJWJ*}~- zel=@W)tusynfC_YqH4ll>4Eg`Xjs5F7Tj>tTLz<0N3)X<1px_d2yUY>X~y>>93*$) z5PuNMQLf9Bu?AAGO~a_|J2akO1M*@VYN^VxvP0F$2>;Zb9;d5Yfd8P%oFCCoZE$ z4#N$^J8rxYjUE_6{T%Y>MmWfHgScpuGv59#4u6fpTF%~KB^Ae`t1TD_^Ud#DhL+Dm zbY^VAM#MrAmFj{3-BpVSWph2b_Y6gCnCAombVa|1S@DU)2r9W<> zT5L8BB^er3zxKt1v(y&OYk!^aoQisqU zH(g@_o)D~BufUXcPt!Ydom)e|aW{XiMnes2z&rE?og>7|G+tp7&^;q?Qz5S5^yd$i z8lWr4g5nctBHtigX%0%XzIAB8U|T6&JsC4&^hZBw^*aIcuNO47de?|pGXJ4t}BB`L^d8tD`H`i zqrP8?#J@8T#;{^B!KO6J=@OWKhAerih(phML`(Rg7N1XWf1TN>=Z3Do{l_!d~DND&)O)D>ta20}@Lt77qSnVsA7>)uZAaT9bsB>u&aUQl+7GiY2|dAEg@%Al3i316y;&IhQL^8fw_nwS>f60M_-m+!5)S_6EPM7Y)(Nq^8gL7(3 zOiot`6Wy6%vw~a_H?1hLVzIT^i1;HedHgW9-P#)}Y6vF%C=P70X0Tk^z9Te@kPILI z_(gk!k+0%CG)%!WnBjjw*kAKs_lf#=5HXC00s-}oM-Q1aXYLj)(1d!_a7 z*Gg4Fe6F$*ujVjI|79Z5+Pr`us%zW@ln++2l+0hsngv<{mJ%?OfSo_3HJXOCys{Ug z00*YR-(fv<=&%Q!j%b-_ppA$JsTm^_L4x`$k{VpfLI(FMCap%LFAyq;#ns5bR7V+x zO!o;c5y~DyBPqdVQX)8G^G&jWkBy2|oWTw>)?5u}SAsI$RjT#)lTV&Rf8;>u*qXnb z8F%Xb=7#$m)83z%`E;49)t3fHInhtc#kx4wSLLms!*~Z$V?bTyUGiS&m>1P(952(H zuHdv=;o*{;5#X-uAyon`hP}d#U{uDlV?W?_5UjJvf%11hKwe&(&9_~{W)*y1nR5f_ z!N(R74nNK`y8>B!0Bt_Vr!;nc3W>~RiKtGSBkNlsR#-t^&;$W#)f9tTlZz>n*+Fjz z3zXZ;jf(sTM(oDzJt4FJS*8c&;PLTW(IQDFs_5QPy+7yhi1syPCarvqrHFcf&yTy)^O<1EBx;Ir`5W{TIM>{8w&PB>ro4;YD<5LF^TjTb0!zAP|QijA+1Vg>{Afv^% zmrkc4o6rvBI;Q8rj4*=AZacy*n8B{&G3VJc)so4$XUoie0)vr;qzPZVbb<#Fc=j+8CGBWe$n|3K& z_@%?{l|TzKSlUEO{U{{%Fz_pVDxs7i9H#bnbCw7@4DR=}r_qV!Zo~CvD4ZI*+j3kO zW6_=|S`)(*gM0Z;;}nj`73OigF4p6_NPZQ-Od~e$c_);;4-7sR>+2u$6m$Gf%T{aq zle>e3(*Rt(TPD}03n5)!Ca8Pu!V}m6v0o1;5<1h$*|7z|^(3$Y&;KHKTT}hV056wuF0Xo@mK-52~r=6^SI1NC%c~CC?n>yX6wPTgiWYVz!Sx^atLby9YNn1Rk{g?|pJaxD4|9cUf|V1_I*w zzxK)hRh9%zOl=*$?XUjly5z8?jPMy%vEN)f%T*|WO|bp5NWv@B(K3D6LMl!-6dQg0 zXNE&O>Oyf%K@`ngCvbGPR>HRg5!1IV$_}m@3dWB7x3t&KFyOJn9pxRXCAzFr&%37wXG;z^xaO$ekR=LJG ztIHpY8F5xBP{mtQidqNRoz= z@){+N3(VO5bD+VrmS^YjG@+JO{EOIW)9=F4v_$Ed8rZtHvjpiEp{r^c4F6Ic#ChlC zJX^DtSK+v(YdCW)^EFcs=XP7S>Y!4=xgmv>{S$~@h=xW-G4FF9?I@zYN$e5oF9g$# zb!eVU#J+NjLyX;yb)%SY)xJdvGhsnE*JEkuOVo^k5PyS=o#vq!KD46UTW_%R=Y&0G zFj6bV{`Y6)YoKgqnir2&+sl+i6foAn-**Zd1{_;Zb7Ki=u394C5J{l^H@XN`_6XTKY%X1AgQM6KycJ+= zYO=&t#5oSKB^pYhNdzPgH~aEGW2=ec1O#s-KG z71}LOg@4UEFtp3GY1PBemXpNs6UK-ax*)#$J^pC_me;Z$Je(OqLoh|ZrW*mAMBFn< zHttjwC&fkVfMnQeen8`Rvy^$pNRFVaiEN4Pih*Y3@jo!T0nsClN)pdrr9AYLcZxZ| zJ5Wlj+4q~($hbtuY zVQ7hl>4-+@6g1i`1a)rvtp-;b0>^`Dloy(#{z~ytgv=j4q^Kl}wD>K_Y!l~ zp(_&7sh`vfO(1*MO!B%<6E_bx1)&s+Ae`O)a|X=J9y~XDa@UB`m)`tSG4AUhoM=5& znWoHlA-(z@3n0=l{E)R-p8sB9XkV zZ#D8wietfHL?J5X0%&fGg@MH~(rNS2`GHS4xTo7L$>TPme+Is~!|79=^}QbPF>m%J zFMkGzSndiPO|E~hrhCeo@&Ea{M(ieIgRWMf)E}qeTxT8Q#g-!Lu*x$v8W^M^>?-g= zwMJ$dThI|~M06rG$Sv@C@tWR>_YgaG&!BAbkGggVQa#KdtDB)lMLNVLN|51C@F^y8 zCRvMB^{GO@j=cHfmy}_pCGbP%xb{pNN>? z?7tBz$1^zVaP|uaatYaIN+#xEN4jBzwZ|YI_)p(4CUAz1ZEbDk>J~Y|63SZaak~#0 zoYKruYsWHoOlC1(MhTnsdUOwQfz5p6-D0}4;DO$B;7#M{3lSE^jnTT;ns`>!G%i*F?@pR1JO{QTuD0U+~SlZxcc8~>IB{)@8p`P&+nDxNj`*gh|u?yrv$phpQcW)Us)bi`kT%qLj(fi{dWRZ%Es2!=3mI~UxiW0$-v3vUl?#g{p6eF zMEUAqo5-L0Ar(s{VlR9g=j7+lt!gP!UN2ICMokAZ5(Agd>})#gkA2w|5+<%-CuEP# zqgcM}u@3(QIC^Gx<2dbLj?cFSws_f3e%f4jeR?4M^M3cx1f+Qr6ydQ>n)kz1s##2w zk}UyQc+Z5G-d-1}{WzjkLXgS-2P7auWSJ%pSnD|Uivj5u!xk0 z_^-N9r9o;(rFDt~q1PvE#iJZ_f>J3gcP$)SOqhE~pD2|$=GvpL^d!r z6u=sp-CrMoF7;)}Zd7XO4XihC4ji?>V&(t^?@3Q&t9Mx=qex6C9d%{FE6dvU6%d94 zIE;hJ1J)cCqjv?F``7I*6bc#X)JW2b4f$L^>j{*$R`%5VHFi*+Q$2;nyieduE}qdS{L8y8F08yLs?w}{>8>$3236T-VMh@B zq-nujsb_1aUv_7g#)*rf9h%sFj*^mIcImRV*k~Vmw;%;YH(&ylYpy!&UjUVqqtfG` zox3esju?`unJJA_zKXRJP)rA3nXc$m^{S&-p|v|-0x9LHJm;XIww7C#R$?00l&Yyj z=e}gKUOpsImwW?N)+E(awoF@HyP^EhL+GlNB#k?R<2>95hz!h9sF@U20DHSB3~WMa zk90+858r@-+vWwkawJ)8ougd(i#1m3GLN{iSTylYz$brAsP%=&m$mQQrH$g%3-^VR zE%B`Vi&m8f3T~&myTEK28BDWCVzfWir1I?03;pX))|kY5ClO^+bae z*7E?g=3g7EiisYOrE+lA)2?Ln6q2*HLNpZEWMB|O-JI_oaHZB%CvYB(%=tU= zE*OY%QY58fW#RG5=gm0NR#iMB=EuNF@)%oZJ}nmm=tsJ?eGjia{e{yuU0l3{d^D@)kVDt=1PE)&tf_hHC%0MB znL|CRCPC}SeuVTdf>-QV70`0(EHizc21s^sU>y%hW0t!0&y<7}Wi-wGy>m%(-jsDj zP?mF|>p_K>liZ6ZP(w5(|9Ga%>tLgb$|doDDfkdW>Z z`)>V2XC?NJT26mL^@ zf+IKr27TfM!UbZ@?zRddC7#6ss1sw%CXJ4FWC+t3lHZupzM77m^=9 z&(a?-LxIq}*nvv)y?27lZ{j zifdl9hyJudyP2LpU$-kXctshbJDKS{WfulP5Dk~xU4Le4c#h^(YjJit4#R8_khheS z|8(>2ibaHES4+J|DBM7I#QF5u-*EdN{n=Kt@4Zt?@Tv{JZA{`4 zU#kYOv{#A&gGPwT+$Ud}AXlK3K7hYzo$(fBSFjrP{QQ zeaKg--L&jh$9N}`pu{Bs>?eDFPaWY4|9|foN%}i;3%;@4{dc+iw>m}{3rELqH21G! z`8@;w-zsJ1H(N3%|1B@#ioLOjib)j`EiJqPQVSbPSPVHCj6t5J&(NcWzBrzCiDt{4 zdlPAUKldz%6x5II1H_+jv)(xVL+a;P+-1hv_pM>gMRr%04@k;DTokASSKKhU1Qms| zrWh3a!b(J3n0>-tipg{a?UaKsP7?+|@A+1WPDiQIW1Sf@qDU~M_P65_s}7(gjTn0X zucyEm)o;f8UyshMy&>^SC3I|C6jR*R_GFwGranWZe*I>K+0k}pBuET&M~ z;Odo*ZcT?ZpduHyrf8E%IBFtv;JQ!N_m>!sV6ly$_1D{(&nO~w)G~Y`7sD3#hQk%^ zp}ucDF_$!6DAz*PM8yE(&~;%|=+h(Rn-=1Wykas_-@d&z#=S}rDf`4w(rVlcF&lF! z=1)M3YVz7orwk^BXhslJ8jR);sh^knJW(Qmm(QdSgIAIdlN4Te5KJisifjr?eB{FjAX1a0AB>d?qY4Wx>BZ8&}5K0fA+d{l8 z?^s&l8#j7pR&ijD?0b%;lL9l$P_mi2^*_OL+b}4kuLR$GAf85sOo02?Y#90}CCDiS zZ%rbCw>=H~CBO=C_JVV=xgDe%b4FaEFtuS7Q1##y686r%F6I)s-~2(}PWK|Z8M+Gu zl$y~5@#0Ka%$M<&Cv%L`a8X^@tY&T7<0|(6dNT=EsRe0%kp1Qyq!^43VAKYnr*A5~ zsI%lK1ewqO;0TpLrT9v}!@vJK{QoVa_+N4FYT#h?Y8rS1S&-G+m$FNMP?(8N`MZP zels(*?kK{{^g9DOzkuZXJ2;SrOQsp9T$hwRB1(phw1c7`!Q!by?Q#YsSM#I12RhU{$Q+{xj83axHcftEc$mNJ8_T7A-BQc*k(sZ+~NsO~xAA zxnbb%dam_fZlHvW7fKXrB~F&jS<4FD2FqY?VG?ix*r~MDXCE^WQ|W|WM;gsIA4lQP zJ2hAK@CF*3*VqPr2eeg6GzWFlICi8S>nO>5HvWzyZTE)hlkdC_>pBej*>o0EOHR|) z$?};&I4+_?wvL*g#PJ9)!bc#9BJu1(*RdNEn>#Oxta(VWeM40ola<0aOe2kSS~{^P zDJBd}0L-P#O-CzX*%+$#v;(x%<*SPgAje=F{Zh-@ucd2DA(yC|N_|ocs*|-!H%wEw z@Q!>siv2W;C^^j^59OAX03&}&D*W4EjCvfi(ygcL#~t8XGa#|NPO+*M@Y-)ctFA@I z-p7npT1#5zOLo>7q?aZpCZ=iecn3QYklP;gF0bq@>oyBq94f6C=;Csw3PkZ|5q=(c zfs`aw?II0e(h=|7o&T+hq&m$; zBrE09Twxd9BJ2P+QPN}*OdZ-JZV7%av@OM7v!!NL8R;%WFq*?{9T3{ct@2EKgc8h) zMxoM$SaF#p<`65BwIDfmXG6+OiK0e)`I=!A3E`+K@61f}0e z!2a*FOaDrOe>U`q%K!QN`&=&0C~)CaL3R4VY(NDt{Xz(Xpqru5=r#uQN1L$Je1*dkdqQ*=lofQaN%lO!<5z9ZlHgxt|`THd>2 zsWfU$9=p;yLyJyM^t zS2w9w?Bpto`@H^xJpZDKR1@~^30Il6oFGfk5%g6w*C+VM)+%R@gfIwNprOV5{F^M2 zO?n3DEzpT+EoSV-%OdvZvNF+pDd-ZVZ&d8 zKeIyrrfPN=EcFRCPEDCVflX#3-)Ik_HCkL(ejmY8vzcf-MTA{oHk!R2*36`O68$7J zf}zJC+bbQk--9Xm!u#lgLvx8TXx2J258E5^*IZ(FXMpq$2LUUvhWQPs((z1+2{Op% z?J}9k5^N=z;7ja~zi8a_-exIqWUBJwohe#4QJ`|FF*$C{lM18z^#hX6!5B8KAkLUX ziP=oti-gpV(BsLD{0(3*dw}4JxK23Y7M{BeFPucw!sHpY&l%Ws4pSm`+~V7;bZ%Dx zeI)MK=4vC&5#;2MT7fS?^ch9?2;%<8Jlu-IB&N~gg8t;6S-#C@!NU{`p7M8@2iGc& zg|JPg%@gCoCQ&s6JvDU&`X2S<57f(k8nJ1wvBu{8r?;q3_kpZZ${?|( z+^)UvR33sjSd)aT!UPkA;ylO6{aE3MQa{g%Mcf$1KONcjO@&g5zPHWtzM1rYC{_K> zgQNcs<{&X{OA=cEWw5JGqpr0O>x*Tfak2PE9?FuWtz^DDNI}rwAaT0(bdo-<+SJ6A z&}S%boGMWIS0L}=S>|-#kRX;e^sUsotry(MjE|3_9duvfc|nwF#NHuM-w7ZU!5ei8 z6Mkf>2)WunY2eU@C-Uj-A zG(z0Tz2YoBk>zCz_9-)4a>T46$(~kF+Y{#sA9MWH%5z#zNoz)sdXq7ZR_+`RZ%0(q zC7&GyS_|BGHNFl8Xa%@>iWh%Gr?=J5<(!OEjauj5jyrA-QXBjn0OAhJJ9+v=!LK`` z@g(`^*84Q4jcDL`OA&ZV60djgwG`|bcD*i50O}Q{9_noRg|~?dj%VtKOnyRs$Uzqg z191aWoR^rDX#@iSq0n z?9Sg$WSRPqSeI<}&n1T3!6%Wj@5iw5`*`Btni~G=&;J+4`7g#OQTa>u`{4ZZ(c@s$ zK0y;ySOGD-UTjREKbru{QaS>HjN<2)R%Nn-TZiQ(Twe4p@-saNa3~p{?^V9Nixz@a zykPv~<@lu6-Ng9i$Lrk(xi2Tri3q=RW`BJYOPC;S0Yly%77c727Yj-d1vF!Fuk{Xh z)lMbA69y7*5ufET>P*gXQrxsW+ zz)*MbHZv*eJPEXYE<6g6_M7N%#%mR{#awV3i^PafNv(zyI)&bH?F}2s8_rR(6%!V4SOWlup`TKAb@ee>!9JKPM=&8g#BeYRH9FpFybxBXQI2|g}FGJfJ+ zY-*2hB?o{TVL;Wt_ek;AP5PBqfDR4@Z->_182W z{P@Mc27j6jE*9xG{R$>6_;i=y{qf(c`5w9fa*`rEzX6t!KJ(p1H|>J1pC-2zqWENF zmm=Z5B4u{cY2XYl(PfrInB*~WGWik3@1oRhiMOS|D;acnf-Bs(QCm#wR;@Vf!hOPJ zgjhDCfDj$HcyVLJ=AaTbQ{@vIv14LWWF$=i-BDoC11}V;2V8A`S>_x)vIq44-VB-v z*w-d}$G+Ql?En8j!~ZkCpQ$|cA0|+rrY>tiCeWxkRGPoarxlGU2?7%k#F693RHT24 z-?JsiXlT2PTqZqNb&sSc>$d;O4V@|b6VKSWQb~bUaWn1Cf0+K%`Q&Wc<>mQ>*iEGB zbZ;aYOotBZ{vH3y<0A*L0QVM|#rf*LIsGx(O*-7)r@yyBIzJnBFSKBUSl1e|8lxU* zzFL+YDVVkIuzFWeJ8AbgN&w(4-7zbiaMn{5!JQXu)SELk*CNL+Fro|2v|YO)1l15t zs(0^&EB6DPMyaqvY>=KL>)tEpsn;N5Q#yJj<9}ImL((SqErWN3Q=;tBO~ExTCs9hB z2E$7eN#5wX4<3m^5pdjm#5o>s#eS_Q^P)tm$@SawTqF*1dj_i#)3};JslbLKHXl_N z)Fxzf>FN)EK&Rz&*|6&%Hs-^f{V|+_vL1S;-1K-l$5xiC@}%uDuwHYhmsV?YcOUlk zOYkG5v2+`+UWqpn0aaaqrD3lYdh0*!L`3FAsNKu=Q!vJu?Yc8n|CoYyDo_`r0mPoo z8>XCo$W4>l(==h?2~PoRR*kEe)&IH{1sM41mO#-36`02m#nTX{r*r`Q5rZ2-sE|nA zhnn5T#s#v`52T5|?GNS`%HgS2;R(*|^egNPDzzH_z^W)-Q98~$#YAe)cEZ%vge965AS_am#DK#pjPRr-!^za8>`kksCAUj(Xr*1NW5~e zpypt_eJpD&4_bl_y?G%>^L}=>xAaV>KR6;^aBytqpiHe%!j;&MzI_>Sx7O%F%D*8s zSN}cS^<{iiK)=Ji`FpO#^zY!_|D)qeRNAtgmH)m;qC|mq^j(|hL`7uBz+ULUj37gj zksdbnU+LSVo35riSX_4z{UX=%n&}7s0{WuZYoSfwAP`8aKN9P@%e=~1`~1ASL-z%# zw>DO&ixr}c9%4InGc*_y42bdEk)ZdG7-mTu0bD@_vGAr*NcFoMW;@r?@LUhRI zCUJgHb`O?M3!w)|CPu~ej%fddw20lod?Ufp8Dmt0PbnA0J%KE^2~AIcnKP()025V> zG>noSM3$5Btmc$GZoyP^v1@Poz0FD(6YSTH@aD0}BXva?LphAiSz9f&Y(aDAzBnUh z?d2m``~{z;{}kZJ>a^wYI?ry(V9hIoh;|EFc0*-#*`$T0DRQ1;WsqInG;YPS+I4{g zJGpKk%%Sdc5xBa$Q^_I~(F97eqDO7AN3EN0u)PNBAb+n+ zWBTxQx^;O9o0`=g+Zrt_{lP!sgWZHW?8bLYS$;1a@&7w9rD9|Ge;Gb?sEjFoF9-6v z#!2)t{DMHZ2@0W*fCx;62d#;jouz`R5Y(t{BT=$N4yr^^o$ON8d{PQ=!O zX17^CrdM~7D-;ZrC!||<+FEOxI_WI3CA<35va%4v>gc zEX-@h8esj=a4szW7x{0g$hwoWRQG$yK{@3mqd-jYiVofJE!Wok1* znV7Gm&Ssq#hFuvj1sRyHg(6PFA5U*Q8Rx>-blOs=lb`qa{zFy&n4xY;sd$fE+<3EI z##W$P9M{B3c3Si9gw^jlPU-JqD~Cye;wr=XkV7BSv#6}DrsXWFJ3eUNrc%7{=^sP> zrp)BWKA9<}^R9g!0q7yWlh;gr_TEOD|#BmGq<@IV;ueg+D2}cjpp+dPf&Q(36sFU&K8}hA85U61faW&{ zlB`9HUl-WWCG|<1XANN3JVAkRYvr5U4q6;!G*MTdSUt*Mi=z_y3B1A9j-@aK{lNvx zK%p23>M&=KTCgR!Ee8c?DAO2_R?B zkaqr6^BSP!8dHXxj%N1l+V$_%vzHjqvu7p@%Nl6;>y*S}M!B=pz=aqUV#`;h%M0rU zHfcog>kv3UZAEB*g7Er@t6CF8kHDmKTjO@rejA^ULqn!`LwrEwOVmHx^;g|5PHm#B zZ+jjWgjJ!043F+&#_;D*mz%Q60=L9Ove|$gU&~As5^uz@2-BfQ!bW)Khn}G+Wyjw- z19qI#oB(RSNydn0t~;tAmK!P-d{b-@@E5|cdgOS#!>%#Rj6ynkMvaW@37E>@hJP^8 z2zk8VXx|>#R^JCcWdBCy{0nPmYFOxN55#^-rlqobe0#L6)bi?E?SPymF*a5oDDeSd zO0gx?#KMoOd&G(2O@*W)HgX6y_aa6iMCl^~`{@UR`nMQE`>n_{_aY5nA}vqU8mt8H z`oa=g0SyiLd~BxAj2~l$zRSDHxvDs;I4>+M$W`HbJ|g&P+$!U7-PHX4RAcR0szJ*( ze-417=bO2q{492SWrqDK+L3#ChUHtz*@MP)e^%@>_&#Yk^1|tv@j4%3T)diEX zATx4K*hcO`sY$jk#jN5WD<=C3nvuVsRh||qDHnc~;Kf59zr0;c7VkVSUPD%NnnJC_ zl3F^#f_rDu8l}l8qcAz0FFa)EAt32IUy_JLIhU_J^l~FRH&6-ivSpG2PRqzDdMWft>Zc(c)#tb%wgmWN%>IOPm zZi-noqS!^Ftb81pRcQi`X#UhWK70hy4tGW1mz|+vI8c*h@ zfFGJtW3r>qV>1Z0r|L>7I3un^gcep$AAWfZHRvB|E*kktY$qQP_$YG60C@X~tTQjB3%@`uz!qxtxF+LE!+=nrS^07hn` zEgAp!h|r03h7B!$#OZW#ACD+M;-5J!W+{h|6I;5cNnE(Y863%1(oH}_FTW})8zYb$7czP zg~Szk1+_NTm6SJ0MS_|oSz%e(S~P-&SFp;!k?uFayytV$8HPwuyELSXOs^27XvK-D zOx-Dl!P|28DK6iX>p#Yb%3`A&CG0X2S43FjN%IB}q(!hC$fG}yl1y9W&W&I@KTg6@ zK^kpH8=yFuP+vI^+59|3%Zqnb5lTDAykf z9S#X`3N(X^SpdMyWQGOQRjhiwlj!0W-yD<3aEj^&X%=?`6lCy~?`&WSWt z?U~EKFcCG_RJ(Qp7j=$I%H8t)Z@6VjA#>1f@EYiS8MRHZphp zMA_5`znM=pzUpBPO)pXGYpQ6gkine{6u_o!P@Q+NKJ}k!_X7u|qfpAyIJb$_#3@wJ z<1SE2Edkfk9C!0t%}8Yio09^F`YGzpaJHGk*-ffsn85@)%4@`;Fv^8q(-Wk7r=Q8p zT&hD`5(f?M{gfzGbbwh8(}G#|#fDuk7v1W)5H9wkorE0ZZjL0Q1=NRGY>zwgfm81DdoaVwNH;or{{eSyybt)m<=zXoA^RALYG-2t zouH|L*BLvmm9cdMmn+KGopyR@4*=&0&4g|FLoreZOhRmh=)R0bg~ zT2(8V_q7~42-zvb)+y959OAv!V$u(O3)%Es0M@CRFmG{5sovIq4%8Ahjk#*5w{+)+ zMWQoJI_r$HxL5km1#6(e@{lK3Udc~n0@g`g$s?VrnQJ$!oPnb?IHh-1qA`Rz$)Ai< z6w$-MJW-gKNvOhL+XMbE7&mFt`x1KY>k4(!KbbpZ`>`K@1J<(#vVbjx@Z@(6Q}MF# zMnbr-f55(cTa^q4+#)=s+ThMaV~E`B8V=|W_fZWDwiso8tNMTNse)RNBGi=gVwgg% zbOg8>mbRN%7^Um-7oj4=6`$|(K7!+t^90a{$18Z>}<#!bm%ZEFQ{X(yBZMc>lCz0f1I2w9Sq zuGh<9<=AO&g6BZte6hn>Qmvv;Rt)*cJfTr2=~EnGD8P$v3R|&1RCl&7)b+`=QGapi zPbLg_pxm`+HZurtFZ;wZ=`Vk*do~$wB zxoW&=j0OTbQ=Q%S8XJ%~qoa3Ea|au5o}_(P;=!y-AjFrERh%8la!z6Fn@lR?^E~H12D?8#ht=1F;7@o4$Q8GDj;sSC%Jfn01xgL&%F2 zwG1|5ikb^qHv&9hT8w83+yv&BQXOQyMVJSBL(Ky~p)gU3#%|blG?IR9rP^zUbs7rOA0X52Ao=GRt@C&zlyjNLv-} z9?*x{y(`509qhCV*B47f2hLrGl^<@SuRGR!KwHei?!CM10Tq*YDIoBNyRuO*>3FU? zHjipIE#B~y3FSfOsMfj~F9PNr*H?0oHyYB^G(YyNh{SxcE(Y-`x5jFMKb~HO*m+R% zrq|ic4fzJ#USpTm;X7K+E%xsT_3VHKe?*uc4-FsILUH;kL>_okY(w`VU*8+l>o>Jm ziU#?2^`>arnsl#)*R&nf_%>A+qwl%o{l(u)M?DK1^mf260_oteV3#E_>6Y4!_hhVD zM8AI6MM2V*^_M^sQ0dmHu11fy^kOqXqzpr?K$`}BKWG`=Es(9&S@K@)ZjA{lj3ea7_MBP zk(|hBFRjHVMN!sNUkrB;(cTP)T97M$0Dtc&UXSec<+q?y>5=)}S~{Z@ua;1xt@=T5 zI7{`Z=z_X*no8s>mY;>BvEXK%b`a6(DTS6t&b!vf_z#HM{Uoy_5fiB(zpkF{})ruka$iX*~pq1ZxD?q68dIo zIZSVls9kFGsTwvr4{T_LidcWtt$u{kJlW7moRaH6+A5hW&;;2O#$oKyEN8kx`LmG)Wfq4ykh+q{I3|RfVpkR&QH_x;t41Uw z`P+tft^E2B$domKT@|nNW`EHwyj>&}K;eDpe z1bNOh=fvIfk`&B61+S8ND<(KC%>y&?>opCnY*r5M+!UrWKxv0_QvTlJc>X#AaI^xo zaRXL}t5Ej_Z$y*|w*$6D+A?Lw-CO-$itm^{2Ct82-<0IW)0KMNvJHgBrdsIR0v~=H z?n6^}l{D``Me90`^o|q!olsF?UX3YSq^6Vu>Ijm>>PaZI8G@<^NGw{Cx&%|PwYrfw zR!gX_%AR=L3BFsf8LxI|K^J}deh0ZdV?$3r--FEX`#INxsOG6_=!v)DI>0q|BxT)z z-G6kzA01M?rba+G_mwNMQD1mbVbNTWmBi*{s_v_Ft9m2Avg!^78(QFu&n6mbRJ2bA zv!b;%yo{g*9l2)>tsZJOOp}U~8VUH`}$ z8p_}t*XIOehezolNa-a2x0BS})Y9}&*TPgua{Ewn-=wVrmJUeU39EKx+%w%=ixQWK zDLpwaNJs65#6o7Ln7~~X+p_o2BR1g~VCfxLzxA{HlWAI6^H;`juI=&r1jQrUv_q0Z z1Ja-tjdktrrP>GOC*#p?*xfQU5MqjMsBe!9lh(u8)w$e@Z|>aUHI5o;MGw*|Myiz3 z-f0;pHg~Q#%*Kx8MxH%AluVXjG2C$)WL-K63@Q`#y9_k_+}eR(x4~dp7oV-ek0H>I zgy8p#i4GN{>#v=pFYUQT(g&b$OeTy-X_#FDgNF8XyfGY6R!>inYn8IR2RDa&O!(6< znXs{W!bkP|s_YI*Yx%4stI`=ZO45IK6rBs`g7sP40ic}GZ58s?Mc$&i`kq_tfci>N zIHrC0H+Qpam1bNa=(`SRKjixBTtm&e`j9porEci!zdlg1RI0Jw#b(_Tb@RQK1Zxr_ z%7SUeH6=TrXt3J@js`4iDD0=IoHhK~I7^W8^Rcp~Yaf>2wVe|Hh1bUpX9ATD#moByY57-f2Ef1TP^lBi&p5_s7WGG9|0T}dlfxOx zXvScJO1Cnq`c`~{Dp;{;l<-KkCDE+pmexJkd}zCgE{eF=)K``-qC~IT6GcRog_)!X z?fK^F8UDz$(zFUrwuR$qro5>qqn>+Z%<5>;_*3pZ8QM|yv9CAtrAx;($>4l^_$_-L z*&?(77!-=zvnCVW&kUcZMb6;2!83si518Y%R*A3JZ8Is|kUCMu`!vxDgaWjs7^0j( ziTaS4HhQ)ldR=r)_7vYFUr%THE}cPF{0H45FJ5MQW^+W>P+eEX2kLp3zzFe*-pFVA zdDZRybv?H|>`9f$AKVjFWJ=wegO7hOOIYCtd?Vj{EYLT*^gl35|HQ`R=ti+ADm{jyQE7K@kdjuqJhWVSks>b^ zxha88-h3s;%3_5b1TqFCPTxVjvuB5U>v=HyZ$?JSk+&I%)M7KE*wOg<)1-Iy)8-K! z^XpIt|0ibmk9RtMmlUd7#Ap3Q!q9N4atQy)TmrhrFhfx1DAN`^vq@Q_SRl|V z#lU<~n67$mT)NvHh`%als+G-)x1`Y%4Bp*6Un5Ri9h=_Db zA-AdP!f>f0m@~>7X#uBM?diI@)Egjuz@jXKvm zJo+==juc9_<;CqeRaU9_Mz@;3e=E4=6TK+c`|uu#pIqhSyNm`G(X)&)B`8q0RBv#> z`gGlw(Q=1Xmf55VHj%C#^1lpc>LY8kfA@|rlC1EA<1#`iuyNO z(=;irt{_&K=i4)^x%;U(Xv<)+o=dczC5H3W~+e|f~{*ucxj@{Yi-cw^MqYr3fN zF5D+~!wd$#al?UfMnz(@K#wn`_5na@rRr8XqN@&M&FGEC@`+OEv}sI1hw>Up0qAWf zL#e4~&oM;TVfjRE+10B_gFlLEP9?Q-dARr3xi6nQqnw>k-S;~b z;!0s2VS4}W8b&pGuK=7im+t(`nz@FnT#VD|!)eQNp-W6)@>aA+j~K*H{$G`y2|QHY z|Hmy+CR@#jWY4~)lr1qBJB_RfHJFfP<}pK5(#ZZGSqcpyS&}01LnTWk5fzmXMGHkJ zTP6L^B+uj;lmB_W<~4=${+v0>z31M!-_O@o-O9GyW)j_mjx}!0@br_LE-7SIuPP84 z;5=O(U*g_um0tyG|61N@d9lEuOeiRd+#NY^{nd5;-CVlw&Ap7J?qwM^?E29wvS}2d zbzar4Fz&RSR(-|s!Z6+za&Z zY#D<5q_JUktIzvL0)yq_kLWG6DO{ri=?c!y!f(Dk%G{8)k`Gym%j#!OgXVDD3;$&v@qy#ISJfp=Vm>pls@9-mapVQChAHHd-x+OGx)(*Yr zC1qDUTZ6mM(b_hi!TuFF2k#8uI2;kD70AQ&di$L*4P*Y-@p`jdm%_c3f)XhYD^6M8&#Y$ZpzQMcR|6nsH>b=*R_Von!$BTRj7yGCXokoAQ z&ANvx0-Epw`QIEPgI(^cS2f(Y85yV@ygI{ewyv5Frng)e}KCZF7JbR(&W618_dcEh(#+^zZFY;o<815<5sOHQdeax9_!PyM&;{P zkBa5xymca0#)c#tke@3KNEM8a_mT&1gm;p&&JlMGH(cL(b)BckgMQ^9&vRwj!~3@l zY?L5}=Jzr080OGKb|y`ee(+`flQg|!lo6>=H)X4`$Gz~hLmu2a%kYW_Uu8x09Pa0J zKZ`E$BKJ=2GPj_3l*TEcZ*uYRr<*J^#5pILTT;k_cgto1ZL-%slyc16J~OH-(RgDA z%;EjEnoUkZ&acS{Q8`{i6T5^nywgqQI5bDIymoa7CSZG|WWVk>GM9)zy*bNih|QIm z%0+(Nnc*a_xo;$=!HQYaapLms>J1ToyjtFByY`C2H1wT#178#4+|{H0BBqtCdd$L% z_3Hc60j@{t9~MjM@LBalR&6@>B;9?r<7J~F+WXyYu*y3?px*=8MAK@EA+jRX8{CG?GI-< z54?Dc9CAh>QTAvyOEm0^+x;r2BWX|{3$Y7)L5l*qVE*y0`7J>l2wCmW zL1?|a`pJ-l{fb_N;R(Z9UMiSj6pQjOvQ^%DvhIJF!+Th7jO2~1f1N+(-TyCFYQZYw z4)>7caf^Ki_KJ^Zx2JUb z&$3zJy!*+rCV4%jqwyuNY3j1ZEiltS0xTzd+=itTb;IPYpaf?8Y+RSdVdpacB(bVQ zC(JupLfFp8y43%PMj2}T|VS@%LVp>hv4Y!RPMF?pp8U_$xCJ)S zQx!69>bphNTIb9yn*_yfj{N%bY)t{L1cs8<8|!f$;UQ*}IN=2<6lA;x^(`8t?;+ST zh)z4qeYYgZkIy{$4x28O-pugO&gauRh3;lti9)9Pvw+^)0!h~%m&8Q!AKX%urEMnl z?yEz?g#ODn$UM`+Q#$Q!6|zsq_`dLO5YK-6bJM6ya>}H+vnW^h?o$z;V&wvuM$dR& zeEq;uUUh$XR`TWeC$$c&Jjau2it3#%J-y}Qm>nW*s?En?R&6w@sDXMEr#8~$=b(gk zwDC3)NtAP;M2BW_lL^5ShpK$D%@|BnD{=!Tq)o(5@z3i7Z){} zGr}Exom_qDO{kAVkZ*MbLNHE666Kina#D{&>Jy%~w7yX$oj;cYCd^p9zy z8*+wgSEcj$4{WxKmCF(5o7U4jqwEvO&dm1H#7z}%VXAbW&W24v-tS6N3}qrm1OnE)fUkoE8yMMn9S$?IswS88tQWm4#Oid#ckgr6 zRtHm!mfNl-`d>O*1~d7%;~n+{Rph6BBy^95zqI{K((E!iFQ+h*C3EsbxNo_aRm5gj zKYug($r*Q#W9`p%Bf{bi6;IY0v`pB^^qu)gbg9QHQ7 zWBj(a1YSu)~2RK8Pi#C>{DMlrqFb9e_RehEHyI{n?e3vL_}L>kYJC z_ly$$)zFi*SFyNrnOt(B*7E$??s67EO%DgoZL2XNk8iVx~X_)o++4oaK1M|ou73vA0K^503j@uuVmLcHH4ya-kOIDfM%5%(E z+Xpt~#7y2!KB&)PoyCA+$~DXqxPxxALy!g-O?<9+9KTk4Pgq4AIdUkl`1<1#j^cJg zgU3`0hkHj_jxV>`Y~%LAZl^3o0}`Sm@iw7kwff{M%VwtN)|~!p{AsfA6vB5UolF~d zHWS%*uBDt<9y!9v2Xe|au&1j&iR1HXCdyCjxSgG*L{wmTD4(NQ=mFjpa~xooc6kju z`~+d{j7$h-;HAB04H!Zscu^hZffL#9!p$)9>sRI|Yovm)g@F>ZnosF2EgkU3ln0bR zTA}|+E(tt)!SG)-bEJi_0m{l+(cAz^pi}`9=~n?y&;2eG;d9{M6nj>BHGn(KA2n|O zt}$=FPq!j`p&kQ8>cirSzkU0c08%8{^Qyqi-w2LoO8)^E7;;I1;HQ6B$u0nNaX2CY zSmfi)F`m94zL8>#zu;8|{aBui@RzRKBlP1&mfFxEC@%cjl?NBs`cr^nm){>;$g?rhKr$AO&6qV_Wbn^}5tfFBry^e1`%du2~o zs$~dN;S_#%iwwA_QvmMjh%Qo?0?rR~6liyN5Xmej8(*V9ym*T`xAhHih-v$7U}8=dfXi2i*aAB!xM(Xekg*ix@r|ymDw*{*s0?dlVys2e)z62u1 z+k3esbJE=-P5S$&KdFp+2H7_2e=}OKDrf( z9-207?6$@f4m4B+9E*e((Y89!q?zH|mz_vM>kp*HGXldO0Hg#!EtFhRuOm$u8e~a9 z5(roy7m$Kh+zjW6@zw{&20u?1f2uP&boD}$#Zy)4o&T;vyBoqFiF2t;*g=|1=)PxB z8eM3Mp=l_obbc?I^xyLz?4Y1YDWPa+nm;O<$Cn;@ane616`J9OO2r=rZr{I_Kizyc zP#^^WCdIEp*()rRT+*YZK>V@^Zs=ht32x>Kwe zab)@ZEffz;VM4{XA6e421^h~`ji5r%)B{wZu#hD}f3$y@L0JV9f3g{-RK!A?vBUA}${YF(vO4)@`6f1 z-A|}e#LN{)(eXloDnX4Vs7eH|<@{r#LodP@Nz--$Dg_Par%DCpu2>2jUnqy~|J?eZ zBG4FVsz_A+ibdwv>mLp>P!(t}E>$JGaK$R~;fb{O3($y1ssQQo|5M;^JqC?7qe|hg zu0ZOqeFcp?qVn&Qu7FQJ4hcFi&|nR!*j)MF#b}QO^lN%5)4p*D^H+B){n8%VPUzi! zDihoGcP71a6!ab`l^hK&*dYrVYzJ0)#}xVrp!e;lI!+x+bfCN0KXwUAPU9@#l7@0& QuEJmfE|#`Dqx|px0L@K;Y5)KL literal 0 HcmV?d00001 diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/gradle/wrapper/gradle-wrapper.properties b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000000..ffed3a254e91 --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/gradlew b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/gradlew new file mode 100644 index 000000000000..005bcde04284 --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# 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 +# +# https://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. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='-Dfile.encoding=UTF-8 "-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/gradlew.bat b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/gradlew.bat new file mode 100644 index 000000000000..6a68175eb70f --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS=-Dfile.encoding=UTF-8 "-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/samples/client/echo_api/java/okhttp-gson-user-defined-templates/info.md b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/info.md new file mode 100644 index 000000000000..84ce04142c02 --- /dev/null +++ b/samples/client/echo_api/java/okhttp-gson-user-defined-templates/info.md @@ -0,0 +1,1289 @@ +

                                                  OpenAPI Generator

                                                  + + +
                                                  + +[![Stable releases in Maven Central](https://img.shields.io/maven-metadata/v/https/repo1.maven.org/maven2/org/openapitools/openapi-generator/maven-metadata.xml.svg)](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.openapitools%22%20AND%20a%3A%22openapi-generator%22) +[![Apache 2.0 License](https://img.shields.io/badge/License-Apache%202.0-orange)](./LICENSE) +[![Open Collective backers](https://img.shields.io/opencollective/backers/openapi_generator?color=orange&label=OpenCollective%20Backers)](https://opencollective.com/openapi_generator) +[![Join the Slack chat room](https://img.shields.io/badge/Slack-Join%20the%20chat%20room-orange)](https://join.slack.com/t/openapi-generator/shared_invite/zt-12jxxd7p2-XUeQM~4pzsU9x~eGLQqX2g) +[![Follow OpenAPI Generator Twitter account to get the latest update](https://img.shields.io/twitter/follow/oas_generator.svg?style=social&label=Follow)](https://twitter.com/oas_generator) +[![Contribute with Gitpod](https://img.shields.io/badge/Contribute%20with-Gitpod-908a85?logo=gitpod)](https://gitpod.io/#https://github.com/OpenAPITools/openapi-generator) +[![Conan Center](https://shields.io/conan/v/openapi-generator)](https://conan.io/center/recipes/openapi-generator) +[![Revved up by Develocity](https://img.shields.io/badge/Revved%20up%20by-Develocity-06A0CE?logo=Gradle&labelColor=02303A)](https://ge.openapi-generator.tech/scans) +
                                                  + +
                                                  + +[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`7.6.0`): +[![Build Status](https://api.travis-ci.com/OpenAPITools/openapi-generator.svg?branch=master&status=passed)](https://app.travis-ci.com/github/OpenAPITools/openapi-generator/builds) +[![Integration Test2](https://circleci.com/gh/OpenAPITools/openapi-generator.svg?style=shield)](https://circleci.com/gh/OpenAPITools/openapi-generator) +[![Windows Test](https://ci.appveyor.com/api/projects/status/github/openapitools/openapi-generator?branch=master&svg=true&passingText=Windows%20Test%20-%20OK&failingText=Windows%20Test%20-%20Fails)](https://ci.appveyor.com/project/WilliamCheng/openapi-generator) +[![Bitrise](https://img.shields.io/bitrise/4a2b10a819d12b67/master?label=bitrise%3A%20Swift+4,5&token=859FMDR8QHwabCzwvZK6vQ)](https://app.bitrise.io/app/4a2b10a819d12b67) + +
                                                  + +
                                                  + +:star::star::star: If you would like to contribute, please refer to [guidelines](CONTRIBUTING.md) and a list of [open tasks](https://github.com/openapitools/openapi-generator/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22). :star::star::star: + +:bangbang: To migrate from Swagger Codegen to OpenAPI Generator, please refer to the [migration guide](docs/migration-from-swagger-codegen.md) :bangbang: + +:notebook_with_decorative_cover: For more information, please refer to the [Wiki page](https://github.com/openapitools/openapi-generator/wiki) and [FAQ](https://github.com/openapitools/openapi-generator/wiki/FAQ) :notebook_with_decorative_cover: + +:notebook_with_decorative_cover: The eBook [A Beginner's Guide to Code Generation for REST APIs](https://gum.co/openapi_generator_ebook) is a good starting point for beginners :notebook_with_decorative_cover: + +:warning: If the OpenAPI spec, templates or any input (e.g. options, environment variables) is obtained from an untrusted source or environment, please make sure you've reviewed these inputs before using OpenAPI Generator to generate the API client, server stub or documentation to avoid potential security issues (e.g. [code injection](https://en.wikipedia.org/wiki/Code_injection)). For security vulnerabilities, please contact [team@openapitools.org](mailto:team@openapitools.org). :warning: + +:bangbang: Both "OpenAPI Tools" (https://OpenAPITools.org - the parent organization of OpenAPI Generator) and "OpenAPI Generator" are not affiliated with OpenAPI Initiative (OAI) :bangbang: + +
                                                  + +## Sponsors + +If you find OpenAPI Generator useful for work, please consider asking your company to support this Open Source project by [becoming a sponsor](https://opencollective.com/openapi_generator). You can also individually sponsor the project by [becoming a backer](https://opencollective.com/openapi_generator). + +#### Thank you to our bronze sponsors! + +[![NamSor](https://openapi-generator.tech/img/companies/namsor.png)](https://www.namsor.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[![LightBow](https://openapi-generator.tech/img/companies/lightbow.png)](https://www.lightbow.net/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://docspring.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://datadoghq.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://cpl.thalesgroup.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://www.apideck.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://www.pexa.com.au/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://www.numary.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://www.onesignal.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://www.virtualansoftware.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://www.merge.dev/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://www.burkert.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://www.finbourne.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://bump.sh/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://www.bileto.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://www.bairesdev.com/sponsoring-open-source-projects/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://www.dmtech.de/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://adyen.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://fornex.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://runalloy.com/signup?utm_source=github&utm_medium=referral&utm_campaign=1524_openapigenerator) +[](https://ssstwitter.com/?utm_source=github&utm_medium=referral&utm_campaign=sponsor) +[](https://www.svix.com/?utm_source=openapi-generator&utm_medium=sponsorship&utm_campaign=oss-sponsorship) +[](https://litslink.com/services/artificial-intelligence?utm_source=openapi-generator&utm_medium=sponsorship&utm_campaign=oss-sponsorship) +[](https://designli.co?utm_source=openapi-generator&utm_medium=sponsorship&utm_campaign=oss-sponsorship) + + +#### Thank you GoDaddy for sponsoring the domain names, Linode for sponsoring the VPS, Checkly for sponsoring the API monitoring and Gradle for sponsoring Develocity + +[](https://www.godaddy.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[![Linode](https://www.linode.com/media/images/logos/standard/light/linode-logo_standard_light_small.png)](https://www.linode.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://checklyhq.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) +[](https://gradle.org?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor) + +## Overview + +OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an [OpenAPI Spec](https://github.com/OAI/OpenAPI-Specification) (both 2.0 and 3.0 are supported). Currently, the following languages/frameworks are supported: + +| | Languages/Frameworks | +| -------------------------------- |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **API clients** | **ActionScript**, **Ada**, **Apex**, **Bash**, **C**, **C#** (.net 2.0, 3.5 or later, .NET Standard 1.3 - 2.1, .NET Core 3.1, .NET 5.0. Libraries: RestSharp, GenericHost, HttpClient), **C++** (Arduino, cpp-restsdk, Qt5, Tizen, Unreal Engine 4), **Clojure**, **Crystal**, **Dart**, **Elixir**, **Elm**, **Eiffel**, **Erlang**, **Go**, **Groovy**, **Haskell** (http-client, Servant), **Java** (Apache HttpClient 4.x, Apache HttpClient 5.x, Jersey2.x, OkHttp, Retrofit1.x, Retrofit2.x, Feign, RestTemplate, RESTEasy, Vertx, Google API Client Library for Java, Rest-assured, Spring 5 Web Client, MicroProfile Rest Client, Helidon), **Jetbrains HTTP Client**, **Julia**, **k6**, **Kotlin**, **Lua**, **N4JS**, **Nim**, **Node.js/JavaScript** (ES5, ES6, AngularJS with Google Closure Compiler annotations, Flow types, Apollo GraphQL DataStore), **Objective-C**, **OCaml**, **Perl**, **PHP**, **PowerShell**, **Python**, **R**, **Ruby**, **Rust** (hyper, reqwest, rust-server), **Scala** (akka, http4s, scalaz, sttp, swagger-async-httpclient, pekko), **Swift** (2.x, 3.x, 4.x, 5.x), **Typescript** (AngularJS, Angular (9.x - 17.x), Aurelia, Axios, Fetch, Inversify, jQuery, Nestjs, Node, redux-query, Rxjs), **XoJo**, **Zapier** | +| **Server stubs** | **Ada**, **C#** (ASP.NET Core, Azure Functions), **C++** (Pistache, Restbed, Qt5 QHTTPEngine), **Erlang**, **F#** (Giraffe), **Go** (net/http, Gin, Echo), **Haskell** (Servant, Yesod), **Java** (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, Jersey, RestEasy, Play Framework, [PKMST](https://github.com/ProKarma-Inc/pkmst-getting-started-examples), [Vert.x](https://vertx.io/), [Apache Camel](https://camel.apache.org/), [Helidon](https://helidon.io/)), **Julia**, **Kotlin** (Spring Boot, [Ktor](https://github.com/ktorio/ktor), [Vert.x](https://vertx.io/)), **PHP** ([Flight](https://docs.flightphp.com/), Laravel, Lumen, [Mezzio (fka Zend Expressive)](https://github.com/mezzio/mezzio), Slim, Silex, [Symfony](https://symfony.com/)), **Python** (FastAPI, Flask), **NodeJS**, **Ruby** (Sinatra, Rails5), **Rust** ([rust-server](https://openapi-generator.tech/docs/generators/rust-server/)), **Scala** (Akka, [Finch](https://github.com/finagle/finch), [Lagom](https://github.com/lagom/lagom), [Play](https://www.playframework.com/), [Cask](https://github.com/com-lihaoyi/cask), Scalatra) | +| **API documentation generators** | **HTML**, **Confluence Wiki**, **Asciidoc**, **Markdown**, **PlantUML** | +| **Configuration files** | [**Apache2**](https://httpd.apache.org/) | +| **Others** | **GraphQL**, **JMeter**, **Ktorm**, **MySQL Schema**, **Postman Collection**, **Protocol Buffer**, **WSDL** | + +## Table of contents + + - [OpenAPI Generator](#openapi-generator) + - [Overview](#overview) + - [Table of Contents](#table-of-contents) + - [1 - Installation](#1---installation) + - [1.1 - Compatibility](#11---compatibility) + - [1.2 - Artifacts on Maven Central](#12---artifacts-on-maven-central) + - [1.3 - Download JAR](#13---download-jar) + - [1.4 - Build Projects](#14---build-projects) + - [1.5 - Homebrew](#15---homebrew) + - [1.6 - Docker](#16---docker) + - [1.7 - NPM](#17---npm) + - [2 - Getting Started](#2---getting-started) + - [3 - Usage](#3---usage) + - [3.1 - Customization](#31---customization) + - [3.2 - Workflow Integration](#32---workflow-integration-maven-gradle-github-cicd) + - [3.3 - Online Generators](#33---online-openapi-generator) + - [3.4 - License Information on Generated Code](#34---license-information-on-generated-code) + - [3.5 - IDE Integration](#35---ide-integration) + - [4 - Companies/Projects using OpenAPI Generator](#4---companiesprojects-using-openapi-generator) + - [5 - Presentations/Videos/Tutorials/Books](#5---presentationsvideostutorialsbooks) + - [6 - About Us](#6---about-us) + - [6.1 - OpenAPI Generator Core Team](#61---openapi-generator-core-team) + - [6.2 - OpenAPI Generator Technical Committee](#62---openapi-generator-technical-committee) + - [6.3 - History of OpenAPI Generator](#63---history-of-openapi-generator) + - [7 - License](#7---license) + +## [1 - Installation](#table-of-contents) + +### [1.1 - Compatibility](#table-of-contents) + +The OpenAPI Specification has undergone 3 revisions since initial creation in 2010. The openapi-generator project has the following compatibilities with the OpenAPI Specification: + +| OpenAPI Generator Version | Release Date | Notes | +| --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------- | +| 7.6.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/7.6.0-SNAPSHOT/) | 17.54.2024 | Minor release with breaking changes (with fallback) | +| [7.5.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v7.5.0) (latest stable release) | 17.04.2024 | Minor release with breaking changes (with fallback) | +| [6.6.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v6.6.0) | 11.05.2023 | Minor release with breaking changes (with fallback) | +| [5.4.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v5.4.0) | 31.01.2022 | Minor release with breaking changes (with fallback) | +| [4.3.1](https://github.com/OpenAPITools/openapi-generator/releases/tag/v4.3.1) | 06.05.2020 | Patch release (enhancements, bug fixes, etc) | + +OpenAPI Spec compatibility: 1.0, 1.1, 1.2, 2.0, 3.0, 3.1 (beta support) + +(We do not publish daily/nightly build. Please use SNAPSHOT instead) + +For old releases, please refer to the [**Release**](https://github.com/OpenAPITools/openapi-generator/releases) page. + +For decomissioned generators/libraries/frameworks, please refer to [the "Decommission" label](https://github.com/OpenAPITools/openapi-generator/issues?q=label%3ADecommission+is%3Amerged+) in the pull request page. + +## [1.2 - Artifacts on Maven Central](#table-of-contents) + +You can find our released artifacts on maven central: + +**Core:** +```xml + + org.openapitools + openapi-generator + ${openapi-generator-version} + +``` +See the different versions of the [openapi-generator](https://search.maven.org/artifact/org.openapitools/openapi-generator) artifact available on maven central. + +**Cli:** +```xml + + org.openapitools + openapi-generator-cli + ${openapi-generator-version} + +``` +See the different versions of the [openapi-generator-cli](https://search.maven.org/artifact/org.openapitools/openapi-generator-cli) artifact available on maven central. + +**Maven plugin:** +```xml + + org.openapitools + openapi-generator-maven-plugin + ${openapi-generator-version} + +``` +* See the different versions of the [openapi-generator-maven-plugin](https://search.maven.org/artifact/org.openapitools/openapi-generator-maven-plugin) artifact available on maven central. +* [Readme](https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator-maven-plugin/README.md) + +**Gradle plugin:** +```xml + + org.openapitools + openapi-generator-gradle-plugin + ${openapi-generator-version} + +``` +* See the different versions of the [openapi-generator-gradle-plugin](https://search.maven.org/artifact/org.openapitools/openapi-generator-gradle-plugin) artifact available on maven central. +* [Readme](https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator-gradle-plugin/README.adoc) + +### [1.3 - Download JAR](#table-of-contents) + +If you're looking for the latest stable version, you can grab it directly from Maven.org (Java 11 runtime at a minimum): + +JAR location: `https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.5.0/openapi-generator-cli-7.5.0.jar` + +For **Mac/Linux** users: +```sh +wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.5.0/openapi-generator-cli-7.5.0.jar -O openapi-generator-cli.jar +``` + +For **Windows** users, you will need to install [wget](http://gnuwin32.sourceforge.net/packages/wget.htm) or you can use Invoke-WebRequest in PowerShell (3.0+), e.g. +``` +Invoke-WebRequest -OutFile openapi-generator-cli.jar https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.5.0/openapi-generator-cli-7.5.0.jar +``` + +After downloading the JAR, run `java -jar openapi-generator-cli.jar help` to show the usage. + +For Mac users, please make sure Java 11 is installed (Tips: run `java -version` to check the version), and export `JAVA_HOME` in order to use the supported Java version: +```sh +export JAVA_HOME=`/usr/libexec/java_home -v 1.11` +export PATH=${JAVA_HOME}/bin:$PATH +``` + + +### Launcher Script + +One downside to manual jar downloads is that you don't keep up-to-date with the latest released version. We have a Bash launcher script at [bin/utils/openapi-generator.cli.sh](./bin/utils/openapi-generator-cli.sh) which resolves this issue. + +To install the launcher script, copy the contents of the script to a location on your path and make the script executable. + +An example of setting this up (NOTE: Always evaluate scripts curled from external systems before executing them). + +``` +mkdir -p ~/bin/openapitools +curl https://raw.githubusercontent.com/OpenAPITools/openapi-generator/master/bin/utils/openapi-generator-cli.sh > ~/bin/openapitools/openapi-generator-cli +chmod u+x ~/bin/openapitools/openapi-generator-cli +export PATH=$PATH:~/bin/openapitools/ +``` + +Now, `openapi-generator-cli` is "installed". On invocation, it will query the GitHub repository for the most recently released version. If this matches the last downloaded jar, +it will execute as normal. If a newer version is found, the script will download the latest release and execute it. + +If you need to invoke an older version of the generator, you can define the variable `OPENAPI_GENERATOR_VERSION` either ad hoc or globally. You can export this variable if you'd like to persist a specific release version. + +Examples: + +``` +# Execute latest released openapi-generator-cli +openapi-generator-cli version + +# Execute version 4.1.0 for the current invocation, regardless of the latest released version +OPENAPI_GENERATOR_VERSION=4.1.0 openapi-generator-cli version + +# Execute version 4.1.0-SNAPSHOT for the current invocation +OPENAPI_GENERATOR_VERSION=4.1.0-SNAPSHOT openapi-generator-cli version + +# Execute version 4.0.2 for every invocation in the current shell session +export OPENAPI_GENERATOR_VERSION=4.0.2 +openapi-generator-cli version # is 4.0.2 +openapi-generator-cli version # is also 4.0.2 + +# To "install" a specific version, set the variable in .bashrc/.bash_profile +echo "export OPENAPI_GENERATOR_VERSION=4.0.2" >> ~/.bashrc +source ~/.bashrc +openapi-generator-cli version # is always 4.0.2, unless any of the above overrides are done ad hoc +``` + +### [1.4 - Build Projects](#table-of-contents) + +To build from source, you need the following installed and available in your `$PATH:` + +* [Java 11](https://adoptium.net/) + +* [Apache Maven 3.3.4 or greater](https://maven.apache.org/) (optional) + +After cloning the project, you can build it from source using [maven wrapper](https://maven.apache.org/wrapper/): + +- Linux: `./mvnw clean install` +- Windows: `mvnw.cmd clean install` + +#### Nix users + +If you're a nix user, you can enter OpenAPI Generator shell, by typing: +```sh +nix develop +``` +It will enter a shell with Java 11 installed. + +Direnv supports automatically loading of the nix developer shell, so if you're using direnv too, type: +```sh +direnv allow +``` +and have `java` and `mvn` set up with correct versions each time you enter project directory. + +The default build contains minimal static analysis (via CheckStyle). To run your build with PMD and Spotbugs, use the `static-analysis` profile: + +- Linux: `./mvnw -Pstatic-analysis clean install` +- Windows: `mvnw.cmd -Pstatic-analysis clean install` + +### [1.5 - Homebrew](#table-of-contents) + +To install, run `brew install openapi-generator` + +Here is an example usage to generate a Ruby client: +```sh +openapi-generator generate -i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml -g ruby -o /tmp/test/ +``` + +To reinstall with the latest master, run `brew uninstall openapi-generator && brew install --HEAD openapi-generator` + +To install OpenJDK (pre-requisites), please run +```sh +brew tap AdoptOpenJDK/openjdk +brew install --cask adoptopenjdk11 +export JAVA_HOME=`/usr/libexec/java_home -v 1.11` +``` + +or download installer via https://adoptium.net/ + +To install Maven (optional), please run +```sh +brew install maven +``` + +### [1.6 - Docker](#table-of-contents) + +#### Public Pre-built Docker images + + - [https://hub.docker.com/r/openapitools/openapi-generator-cli/](https://hub.docker.com/r/openapitools/openapi-generator-cli/) (official CLI) + - [https://hub.docker.com/r/openapitools/openapi-generator-online/](https://hub.docker.com/r/openapitools/openapi-generator-online/) (official web service) + + +#### OpenAPI Generator CLI Docker Image + +The OpenAPI Generator image acts as a standalone executable. It can be used as an alternative to installing via homebrew, or for developers who are unable to install Java or upgrade the installed version. + +To generate code with this image, you'll need to mount a local location as a volume. + +Example: + +```sh +docker run --rm -v "${PWD}:/local" openapitools/openapi-generator-cli generate \ + -i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml \ + -g go \ + -o /local/out/go +``` + +The generated code will be located under `./out/go` in the current directory. + +#### OpenAPI Generator Online Docker Image + +The openapi-generator-online image can act as a self-hosted web application and API for generating code. This container can be incorporated into a CI pipeline, and requires at least two HTTP requests and some docker orchestration to access generated code. + +Example usage: + +```sh +# Start container at port 8888 and save the container id +> CID=$(docker run -d -p 8888:8080 openapitools/openapi-generator-online) + +# allow for startup +> sleep 10 + +# Get the IP of the running container (optional) +GEN_IP=$(docker inspect --format '{{.NetworkSettings.IPAddress}}' $CID) + +# Execute an HTTP request to generate a Ruby client +> curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' \ +-d '{"openAPIUrl": "https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml"}' \ +'http://localhost:8888/api/gen/clients/ruby' + +{"code":"c2d483.3.4672-40e9-91df-b9ffd18d22b8","link":"http://localhost:8888/api/gen/download/c2d483.3.4672-40e9-91df-b9ffd18d22b8"} + +# Download the generated zip file +> wget http://localhost:8888/api/gen/download/c2d483.3.4672-40e9-91df-b9ffd18d22b8 + +# Unzip the file +> unzip c2d483.3.4672-40e9-91df-b9ffd18d22b8 + +# Shutdown the openapi generator image +> docker stop $CID && docker rm $CID +``` + +#### Development in docker + +You can use `run-in-docker.sh` to do all development. This script maps your local repository to `/gen` +in the docker container. It also maps `~/.m2/repository` to the appropriate container location. + +To execute `mvn package`: + +```sh +git clone https://github.com/openapitools/openapi-generator +cd openapi-generator +./run-in-docker.sh mvn package +``` + +Build artifacts are now accessible in your working directory. + +Once built, `run-in-docker.sh` will act as an executable for openapi-generator-cli. To generate code, you'll need to output to a directory under `/gen` (e.g. `/gen/out`). For example: + +```sh +./run-in-docker.sh help # Executes 'help' command for openapi-generator-cli +./run-in-docker.sh list # Executes 'list' command for openapi-generator-cli +./run-in-docker.sh generate -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml \ + -g go -o /gen/out/go-petstore -p packageName=petstore # generates go client, outputs locally to ./out/go-petstore +``` + +##### Troubleshooting + +If an error like this occurs, just execute the **./mvnw clean install -U** command: + +> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project openapi-generator: A type incompatibility occurred while executing org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test: java.lang.ExceptionInInitializerError cannot be cast to java.io.IOException + +```sh +./run-in-docker.sh ./mvnw clean install -U +``` + +> Failed to execute goal org.fortasoft:gradle-maven-plugin:1.0.8:invoke (default) on project openapi-generator-gradle-plugin-mvn-wrapper: org.gradle.tooling.BuildException: Could not execute build using Gradle distribution 'https://services.gradle.org/distributions/gradle-4.7-bin.zip' + +Right now: no solution for this one :| + +#### Run Docker in Vagrant +Prerequisite: install [Vagrant](https://www.vagrantup.com/downloads.html) and [VirtualBox](https://www.virtualbox.org/wiki/Downloads). + ```sh +git clone https://github.com/openapitools/openapi-generator.git +cd openapi-generator +vagrant up +vagrant ssh +cd /vagrant +./run-in-docker.sh ./mvnw package +``` + +### [1.7 - NPM](#table-of-contents) + +There is also an [NPM package wrapper](https://www.npmjs.com/package/@openapitools/openapi-generator-cli) available for different platforms (e.g. Linux, Mac, Windows). (JVM is still required) +Please see the [project's README](https://github.com/openapitools/openapi-generator-cli) there for more information. + +Install it globally to get the CLI available on the command line: + +```sh +npm install @openapitools/openapi-generator-cli -g +openapi-generator-cli version +``` + + +To use a specific version of "openapi-generator-cli" + +```sh +openapi-generator-cli version-manager set 7.0.1 +``` + +Or install it as dev-dependency: + +```sh +npm install @openapitools/openapi-generator-cli -D +``` + +## [2 - Getting Started](#table-of-contents) + +To generate a PHP client for [petstore.yaml](https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml), please run the following +```sh +git clone https://github.com/openapitools/openapi-generator +cd openapi-generator +./mvnw clean package +java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate \ + -i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml \ + -g php \ + -o /var/tmp/php_api_client +``` +(if you're on Windows, replace the last command with `java -jar modules\openapi-generator-cli\target\openapi-generator-cli.jar generate -i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml -g php -o c:\temp\php_api_client`) + + +You can also download the JAR (latest release) directly from [maven.org](https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.0.1/openapi-generator-cli-7.0.1.jar) + + +To get a list of **general** options available, please run `java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar help generate` + +To get a list of PHP specified options (which can be passed to the generator with a config file via the `-c` option), please run `java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar config-help -g php` + +## [3 - Usage](#table-of-contents) + +### To generate a sample client library +You can build a client against the [Petstore API](https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml) as follows: + +```sh +./bin/generate-samples.sh ./bin/configs/java-okhttp-gson.yaml +``` + +(On Windows, please install [GIT Bash for Windows](https://gitforwindows.org/) to run the command above) + +This script uses the default library, which is `okhttp-gson`. It will run the generator with this command: + +```sh +java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate \ + -i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml \ + -g java \ + -t modules/openapi-generator/src/main/resources/Java \ + --additional-properties artifactId=petstore-okhttp-gson,hideGenerationTimestamp=true \ + -o samples/client/petstore/java/okhttp-gson +``` + +with a number of options. [The java options are documented here.](docs/generators/java.md) + +You can also get the options with the `help generate` command (below only shows partial results): + +``` +NAME + openapi-generator-cli generate - Generate code with the specified + generator. + +SYNOPSIS + openapi-generator-cli generate + [(-a | --auth )] + [--api-name-suffix ] [--api-package ] + [--artifact-id ] [--artifact-version ] + [(-c | --config )] [--dry-run] + [(-e | --engine )] + [--enable-post-process-file] + [(-g | --generator-name )] + [--generate-alias-as-model] [--git-host ] + [--git-repo-id ] [--git-user-id ] + [--global-property ...] [--group-id ] + [--http-user-agent ] + [(-i | --input-spec )] + [--ignore-file-override ] + [--import-mappings ...] + [--instantiation-types ...] + [--invoker-package ] + [--language-specific-primitives ...] + [--legacy-discriminator-behavior] [--library ] + [--log-to-stderr] [--minimal-update] + [--model-name-prefix ] + [--model-name-suffix ] + [--model-package ] + [(-o | --output )] [(-p | --additional-properties )...] + [--package-name ] [--release-note ] + [--remove-operation-id-prefix] + [--reserved-words-mappings ...] + [(-s | --skip-overwrite)] [--server-variables ...] + [--skip-validate-spec] [--strict-spec ] + [(-t