diff --git a/.gitignore b/.gitignore
index 68d730962307..728a1667834f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -62,14 +62,17 @@ samples/server-generator/node/output/node_modules
samples/server/petstore/nodejs/node_modules
samples/server/petstore/nodejs-server/node_modules
-# qt5 cpp
-*.pro.user
-samples/client/petstore/qt5cpp/PetStore/moc_*
-samples/client/petstore/qt5cpp/PetStore/*.o
-samples/client/petstore/qt5cpp/build-*
-samples/client/petstore/qt5cpp/PetStore/PetStore
-samples/client/petstore/qt5cpp/PetStore/Makefile
-samples/client/petstore/qt5cpp/PetStore/PetStore.pro.user
+# qt cpp
+samples/client/build
+samples/client/petstore/build
+samples/client/petstore/cpp-qt/PetStore/moc_*
+samples/client/petstore/cpp-qt/PetStore/*.o
+samples/client/petstore/cpp-qt/build-*
+samples/client/petstore/cpp-qt/build-*
+samples/client/petstore/cpp-qt/PetStore/PetStore
+samples/client/petstore/cpp-qt/PetStore/Makefile
+samples/client/petstore/cpp-qt/PetStore/PetStore.pro.user
+samples/client/petstore/cpp-qt/CMakeLists.txt.user
# cpprestsdk
samples/client/petstore/cpp-restsdk/CMakeCache.txt
diff --git a/CI/.drone.yml b/CI/.drone.yml
index 073d7332a433..73143ea7a026 100644
--- a/CI/.drone.yml
+++ b/CI/.drone.yml
@@ -1,4 +1,5 @@
kind: pipeline
+type: docker
name: default
steps:
# test Java 11 HTTP client
@@ -15,11 +16,23 @@ steps:
- /bin/bash bin/utils/test-fake-petstore-for-all.sh
# generate test scripts
- /bin/bash bin/tests/run-all-test
+
+---
+kind: pipeline
+type: docker
+name: default
+steps:
# test nim client
- name: nim-client-test
image: nimlang/nim
commands:
- (cd samples/client/petstore/nim/ && nim c sample_client.nim)
+
+---
+kind: pipeline
+type: docker
+name: default
+steps:
# test protobuf schema generator
- name: protobuf-schema-test
image: nanoservice/protobuf-go
@@ -29,12 +42,24 @@ steps:
- cd samples/config/petstore/protobuf-schema
- protoc --go_out=/var/tmp/go/ services/*
- protoc --go_out=/var/tmp/go/ models/*
+
+---
+kind: pipeline
+type: docker
+name: default
+steps:
# test aspnetcore 3.x
- name: aspnetcore-test
image: mcr.microsoft.com/dotnet/core/sdk:3.1
commands:
- (cd samples/server/petstore/aspnetcore-3.1/ && /bin/sh build.sh)
- (cd samples/server/petstore/aspnetcore-3.0/ && /bin/sh build.sh)
+
+---
+kind: pipeline
+type: docker
+name: default
+steps:
# test ocaml petstore client
- name: ocaml-test
image: ocaml/opam2:4.07
@@ -46,11 +71,23 @@ steps:
- eval $(opam env)
- sudo chmod -R 777 .
- dune build --build-dir=./_build
+
+---
+kind: pipeline
+type: docker
+name: default
+steps:
# test haskell client
- name: haskell-client-test
- image: haskell:8.6.5
+ image: haskell:8.10.4
commands:
- (cd samples/client/petstore/haskell-http-client/ && stack --allow-different-user --install-ghc --no-haddock-deps haddock --fast && stack --allow-different-user test --fast)
+
+---
+kind: pipeline
+type: docker
+name: default
+steps:
# test erlang client and server
- name: erlang
image: erlang:alpine
diff --git a/bin/configs/haskell-http-client.yaml b/bin/configs/haskell-http-client.yaml
index 577ad437a92b..1f2dc62fe600 100644
--- a/bin/configs/haskell-http-client.yaml
+++ b/bin/configs/haskell-http-client.yaml
@@ -2,3 +2,5 @@ generatorName: haskell-http-client
outputDir: samples/client/petstore/haskell-http-client
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml
templateDir: modules/openapi-generator/src/main/resources/haskell-http-client
+additionalProperties:
+ queryExtraUnreserved: ''
diff --git a/bin/configs/swift5-resultLibrary.yaml b/bin/configs/swift5-resultLibrary.yaml
index 0f0e4373e2c5..01de8b1d98ee 100644
--- a/bin/configs/swift5-resultLibrary.yaml
+++ b/bin/configs/swift5-resultLibrary.yaml
@@ -9,3 +9,4 @@ additionalProperties:
podSummary: PetstoreClient
projectName: PetstoreClient
podHomepage: https://github.com/openapitools/openapi-generator
+ removeMigrationProjectNameClass: true
diff --git a/docs/generators/haskell-http-client.md b/docs/generators/haskell-http-client.md
index 0a6a11a6dcfe..0e8a66744635 100644
--- a/docs/generators/haskell-http-client.md
+++ b/docs/generators/haskell-http-client.md
@@ -30,6 +30,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|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|
|modelDeriving|Additional classes to include in the deriving() clause of Models| |null|
|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false|
+|queryExtraUnreserved|Configures additional querystring characters which must not be URI encoded, e.g. '+' or ':'| |null|
|requestType|Set the name of the type used to generate requests| |null|
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
diff --git a/docs/generators/scala-akka-http-server.md b/docs/generators/scala-akka-http-server.md
index 925d65653303..7e056315f619 100644
--- a/docs/generators/scala-akka-http-server.md
+++ b/docs/generators/scala-akka-http-server.md
@@ -61,6 +61,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
Any
Array
Boolean
+Byte
Double
Float
Int
diff --git a/docs/generators/scala-akka.md b/docs/generators/scala-akka.md
index 4976275245f7..683fbef21670 100644
--- a/docs/generators/scala-akka.md
+++ b/docs/generators/scala-akka.md
@@ -56,6 +56,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
Any
Array
Boolean
+Byte
Double
Float
Int
diff --git a/docs/generators/scala-gatling.md b/docs/generators/scala-gatling.md
index 55ce8c23d678..414715926d2e 100644
--- a/docs/generators/scala-gatling.md
+++ b/docs/generators/scala-gatling.md
@@ -56,6 +56,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
Any
Array
Boolean
+Byte
Double
Float
Int
diff --git a/docs/generators/scala-httpclient-deprecated.md b/docs/generators/scala-httpclient-deprecated.md
index b130d49947e7..15bf6f6e26fd 100644
--- a/docs/generators/scala-httpclient-deprecated.md
+++ b/docs/generators/scala-httpclient-deprecated.md
@@ -56,6 +56,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
Any
Array
Boolean
+Byte
Double
Float
Int
diff --git a/docs/generators/scala-lagom-server.md b/docs/generators/scala-lagom-server.md
index e0f1e2ddee31..8dc2075e3771 100644
--- a/docs/generators/scala-lagom-server.md
+++ b/docs/generators/scala-lagom-server.md
@@ -56,6 +56,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
Any
Array
Boolean
+Byte
Double
Float
Int
diff --git a/docs/generators/scala-play-server.md b/docs/generators/scala-play-server.md
index d734fed60c2e..7be64e0f108e 100644
--- a/docs/generators/scala-play-server.md
+++ b/docs/generators/scala-play-server.md
@@ -64,6 +64,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
Any
Array
Boolean
+Byte
Double
Float
Int
diff --git a/docs/generators/scala-sttp.md b/docs/generators/scala-sttp.md
index 8a8b5d33c261..a0cd2044ea1b 100644
--- a/docs/generators/scala-sttp.md
+++ b/docs/generators/scala-sttp.md
@@ -62,6 +62,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
Any
Array
Boolean
+Byte
Double
Float
Int
diff --git a/docs/generators/scalatra.md b/docs/generators/scalatra.md
index d3a9b5149131..a7a657bce953 100644
--- a/docs/generators/scalatra.md
+++ b/docs/generators/scalatra.md
@@ -57,6 +57,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
Any
Array
Boolean
+Byte
Double
Float
Int
diff --git a/docs/generators/scalaz.md b/docs/generators/scalaz.md
index 25355390e08e..41b6240df6db 100644
--- a/docs/generators/scalaz.md
+++ b/docs/generators/scalaz.md
@@ -56,6 +56,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
Any
Array
Boolean
+Byte
Double
Float
Int
diff --git a/docs/generators/swift5.md b/docs/generators/swift5.md
index 96cfe8424c08..33f1a29ca773 100644
--- a/docs/generators/swift5.md
+++ b/docs/generators/swift5.md
@@ -33,6 +33,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false|
|projectName|Project name in Xcode| |null|
|readonlyProperties|Make properties readonly (default: false)| |null|
+|removeMigrationProjectNameClass|Make properties removeMigrationProjectNameClass (default: false)| |null|
|responseAs|Optionally use libraries to manage response. Currently PromiseKit, RxSwift, Result, Combine are available.| |null|
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
diff --git a/modules/openapi-generator-gradle-plugin/build.gradle b/modules/openapi-generator-gradle-plugin/build.gradle
index 233399c18a81..3edcd4db1893 100644
--- a/modules/openapi-generator-gradle-plugin/build.gradle
+++ b/modules/openapi-generator-gradle-plugin/build.gradle
@@ -1,5 +1,5 @@
buildscript {
- ext.kotlin_version = '1.3.20'
+ ext.kotlin_version = '1.3.30'
repositories {
mavenLocal()
maven { url "https://repo1.maven.org/maven2" }
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 f3df50d9b53a..5dc77787e600 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
@@ -34,6 +34,10 @@
import java.util.Set;
public interface CodegenConfig {
+ String getFilesMetadataFilename();
+
+ String getVersionMetadataFilename();
+
GeneratorMetadata getGeneratorMetadata();
CodegenType getTag();
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 d79d4a28e80a..6453fa072b67 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
@@ -152,6 +152,8 @@ public class DefaultCodegen implements CodegenConfig {
protected String modelNamePrefix = "", modelNameSuffix = "";
protected String apiNamePrefix = "", apiNameSuffix = "Api";
protected String testPackage = "";
+ protected String filesMetadataFilename = "FILES";
+ protected String versionMetadataFilename = "VERSION";
/*
apiTemplateFiles are for API outputs only (controllers/handlers).
API templates may be written multiple times; APIs are grouped by tag and the file is written once per tag group.
@@ -1177,6 +1179,24 @@ public void setInputSpec(String inputSpec) {
this.inputSpec = inputSpec;
}
+ @Override
+ public String getFilesMetadataFilename() {
+ return filesMetadataFilename;
+ }
+
+ public void setFilesMetadataFilename(String filesMetadataFilename) {
+ this.filesMetadataFilename = filesMetadataFilename;
+ }
+
+ @Override
+ public String getVersionMetadataFilename() {
+ return versionMetadataFilename;
+ }
+
+ public void setVersionMetadataFilename(String versionMetadataFilename) {
+ this.versionMetadataFilename = versionMetadataFilename;
+ }
+
public void setTemplateDir(String templateDir) {
this.templateDir = templateDir;
}
@@ -1560,6 +1580,7 @@ public DefaultCodegen() {
typeMapping.put("char", "String");
typeMapping.put("object", "Object");
typeMapping.put("integer", "Integer");
+ // FIXME: java specific type should be in Java Based Abstract Impl's
typeMapping.put("ByteArray", "byte[]");
typeMapping.put("binary", "File");
typeMapping.put("file", "File");
@@ -2403,6 +2424,18 @@ public CodegenModel fromModel(String name, Schema schema) {
m.isAlias = (typeAliases.containsKey(name)
|| isAliasOfSimpleTypes(schema)); // check if the unaliased schema is an alias of simple OAS types
m.setDiscriminator(createDiscriminator(name, schema, this.openAPI));
+ if (ModelUtils.isComposedSchema(schema)
+ && m.discriminator == null
+ && schema.getExtensions() != null
+ && schema.getExtensions().containsKey("x-one-of-name")) {
+ m.vendorExtensions.put("x-deduction", true);
+ List deductionModelNames = new ArrayList<>();
+ ((ComposedSchema) schema).getOneOf().forEach(model -> {
+ String modelName = ModelUtils.getSimpleRef(model.get$ref());
+ deductionModelNames.add(toModelName(modelName));
+ });
+ m.vendorExtensions.put("x-deduction-model-names", deductionModelNames);
+ }
if (!this.getLegacyDiscriminatorBehavior()) {
m.addDiscriminatorMappedModelsImports();
}
@@ -3144,7 +3177,7 @@ protected CodegenDiscriminator createDiscriminator(String schemaName, Schema sch
}
}
// if there are composed oneOf/anyOf schemas, add them to this discriminator
- if (ModelUtils.isComposedSchema(schema) && !this.getLegacyDiscriminatorBehavior()) {
+ if (ModelUtils.isComposedSchema(schema)) {
List otherDescendants = getOneOfAnyOfDescendants(schemaName, discPropName, (ComposedSchema) schema, openAPI);
for (MappedModel otherDescendant : otherDescendants) {
if (!uniqueDescendants.contains(otherDescendant)) {
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 3025376b0348..a4d286ed453f 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
@@ -1427,7 +1427,7 @@ private List filterAuthMethods(List authMethod
* @param files The list tracking generated files
*/
private void generateVersionMetadata(List files) {
- String versionMetadata = config.outputFolder() + File.separator + METADATA_DIR + File.separator + "VERSION";
+ String versionMetadata = config.outputFolder() + File.separator + METADATA_DIR + File.separator + config.getVersionMetadataFilename();
if (generateMetadata) {
File versionMetadataFile = new File(versionMetadata);
try {
@@ -1495,7 +1495,7 @@ private void generateFilesMetadata(List files) {
}
});
- String targetFile = config.outputFolder() + File.separator + METADATA_DIR + File.separator + "FILES";
+ String targetFile = config.outputFolder() + File.separator + METADATA_DIR + File.separator + config.getFilesMetadataFilename();
File filesFile = this.templateProcessor.writeToFile(targetFile, sb.toString().getBytes(StandardCharsets.UTF_8));
if (filesFile != null) {
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 8220095b3faa..01e5d28f542c 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
@@ -43,6 +43,7 @@
import java.util.regex.Pattern;
import java.util.stream.Stream;
+import io.swagger.v3.oas.models.responses.ApiResponse;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
@@ -81,24 +82,9 @@
import io.swagger.v3.oas.models.parameters.RequestBody;
import io.swagger.v3.oas.models.servers.Server;
import io.swagger.v3.parser.util.SchemaTypeUtil;
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.BooleanUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.openapitools.codegen.*;
-import org.openapitools.codegen.meta.features.*;
-import org.openapitools.codegen.utils.ModelUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import java.io.File;
import java.io.IOException;
-import java.time.LocalDate;
-import java.time.ZoneId;
import java.util.*;
-import java.util.regex.Pattern;
-import java.util.stream.Stream;
-
-import static org.openapitools.codegen.utils.StringUtils.*;
public abstract class AbstractJavaCodegen extends DefaultCodegen implements CodegenConfig {
@@ -1373,8 +1359,23 @@ public void preprocessOpenAPI(OpenAPI openAPI) {
}
for (Operation operation : path.readOperations()) {
LOGGER.info("Processing operation {}", operation.getOperationId());
- if (hasBodyParameter(openAPI, operation) || hasFormParameter(openAPI, operation)) {
- String defaultContentType = hasFormParameter(openAPI, operation) ? "application/x-www-form-urlencoded" : "application/json";
+ boolean hasBodyParameter = hasBodyParameter(openAPI, operation);
+ boolean hasFormParameter = hasFormParameter(openAPI, operation);
+
+ // OpenAPI parser do not add Inline One Of models in Operations to Components/Schemas
+ if (hasBodyParameter) {
+ Optional.ofNullable(operation.getRequestBody())
+ .map(RequestBody::getContent)
+ .ifPresent(this::repairInlineOneOf);
+ }
+ if (operation.getResponses() != null) {
+ operation.getResponses().values().stream().map(ApiResponse::getContent)
+ .filter(Objects::nonNull)
+ .forEach(this::repairInlineOneOf);
+ }
+
+ if (hasBodyParameter || hasFormParameter) {
+ String defaultContentType = hasFormParameter ? "application/x-www-form-urlencoded" : "application/json";
List consumes = new ArrayList<>(getConsumesInfo(openAPI, operation));
String contentType = consumes == null || consumes.isEmpty() ? defaultContentType : consumes.get(0);
operation.addExtension("x-contentType", contentType);
@@ -1431,6 +1432,33 @@ public void preprocessOpenAPI(OpenAPI openAPI) {
}
}
+
+ /**
+ * Add all OneOf schemas to #/components/schemas and replace them in the original content by ref schema
+ *
+ * OpenAPI Parser does not add inline OneOf schemas to models to generate
+ *
+ * @param content a 'content' section in the OAS specification.
+ */
+ private void repairInlineOneOf(final Content content) {
+ content.values().forEach(mediaType -> {
+ final Schema replacingSchema = mediaType.getSchema();
+ if (isOneOfSchema(replacingSchema)) {
+ final String oneOfModelName = (String) replacingSchema.getExtensions().get("x-one-of-name");
+ final Schema newRefSchema = new Schema<>().$ref("#/components/schemas/" + oneOfModelName);
+ mediaType.setSchema(newRefSchema);
+ ModelUtils.getSchemas(openAPI).put(oneOfModelName, replacingSchema);
+ }
+ });
+ }
+
+ private static boolean isOneOfSchema(final Schema schema) {
+ return schema instanceof ComposedSchema
+ && ((ComposedSchema) schema).getProperties() == null
+ && Optional.ofNullable(schema.getExtensions()).map(m -> m.containsKey("x-one-of-name"))
+ .orElse(false);
+ }
+
private static String getAccept(OpenAPI openAPI, Operation operation) {
String accepts = null;
String defaultContentType = "application/json";
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 f15950eda2a1..65ec72caca64 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
@@ -73,7 +73,8 @@ public AbstractScalaCodegen() {
"List",
"Seq",
"Map",
- "Array"));
+ "Array",
+ "Byte"));
reservedWords.addAll(Arrays.asList(
"abstract",
@@ -118,6 +119,10 @@ public AbstractScalaCodegen() {
"yield"
));
+ // Scala specific openApi types mapping
+ typeMapping.put("ByteArray", "Array[Byte]");
+
+
importMapping = new HashMap();
importMapping.put("ListBuffer", "scala.collection.mutable.ListBuffer");
// although Seq is a predef, before Scala 2.13, it _could_ refer to a mutable Seq in some cases.
@@ -344,17 +349,11 @@ public String getSchemaType(Schema p) {
if (ModelUtils.isSet(p)) {
openAPIType = "set";
}
-
- String type;
+ // don't apply renaming on types from the typeMapping
if (typeMapping.containsKey(openAPIType)) {
- type = typeMapping.get(openAPIType);
- if (languageSpecificPrimitives.contains(type)) {
- return toModelName(type);
- }
- } else {
- type = openAPIType;
+ return typeMapping.get(openAPIType);
}
- return toModelName(type);
+ return toModelName(openAPIType);
}
@Override
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 32f51f26a876..662cbfce1324 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
@@ -51,6 +51,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
protected String defaultDateFormat = "%Y-%m-%d";
protected String defaultCabalVersion = "0.1.0.0";
protected String modulePath = null;
+ protected String defaultQueryExtraUnreserved = null;
protected Boolean useKatip = true;
protected Boolean allowNonUniqueOperationIds = false;
@@ -74,6 +75,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
public static final String PROP_GENERATE_MODEL_CONSTRUCTORS = "generateModelConstructors";
public static final String PROP_INLINE_MIME_TYPES = "inlineMimeTypes";
public static final String PROP_MODEL_DERIVING = "modelDeriving";
+ public static final String PROP_QUERY_EXTRA_UNRESERVED = "queryExtraUnreserved";
public static final String PROP_REQUEST_TYPE = "requestType";
public static final String PROP_STRICT_FIELDS = "strictFields";
public static final String PROP_USE_KATIP = "useKatip";
@@ -125,6 +127,7 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
static final String X_MEDIA_IS_JSON = "x-mediaIsJson";
static final String X_MEDIA_IS_WILDCARD = "x-mediaIsWildcard";
static final String X_STRICT_FIELDS = "x-strictFields";
+ static final String X_PROP_QUERY_EXTRA_UNRESERVED = "x-queryExtraUnreserved";
static final String X_ALL_UNIQUE_IMPORT_PATHS = "x-allUniqueImportPaths";
static final String X_USE_KATIP = "x-useKatip";
static final String X_ALLOW_NONUNIQUE_OPERATION_IDS = "x-allowNonUniqueOperationIds";
@@ -308,6 +311,7 @@ public HaskellHttpClientCodegen() {
cliOptions.add(CliOption.newString(PROP_DATETIME_FORMAT, "format string used to parse/render a datetime"));
cliOptions.add(CliOption.newString(PROP_DATETIME_PARSE_FORMAT, "overrides the format string used to parse a datetime"));
cliOptions.add(CliOption.newString(PROP_DATE_FORMAT, "format string used to parse/render a date").defaultValue(defaultDateFormat));
+ cliOptions.add(CliOption.newString(PROP_QUERY_EXTRA_UNRESERVED, "Configures additional querystring characters which must not be URI encoded, e.g. '+' or ':'"));
cliOptions.add(CliOption.newString(PROP_CUSTOM_TEST_INSTANCE_MODULE, "test module used to provide typeclass instances for types not known by the generator"));
@@ -371,6 +375,10 @@ public void setCabalVersion(String value) {
setStringProp(PROP_CABAL_VERSION, value);
}
+ public void setQueryExtraUnreserved(String value) {
+ additionalProperties.put(X_PROP_QUERY_EXTRA_UNRESERVED, value);
+ }
+
public void setBaseModule(String value) {
setStringProp(PROP_BASE_MODULE, value);
}
@@ -505,6 +513,11 @@ public void processOpts() {
} else {
setCabalVersion(defaultCabalVersion);
}
+ if (additionalProperties.containsKey(PROP_QUERY_EXTRA_UNRESERVED)) {
+ setQueryExtraUnreserved(additionalProperties.get(PROP_QUERY_EXTRA_UNRESERVED).toString());
+ } else {
+ setQueryExtraUnreserved(defaultQueryExtraUnreserved);
+ }
if (additionalProperties.containsKey(PROP_BASE_MODULE)) {
setBaseModule(additionalProperties.get(PROP_BASE_MODULE).toString());
}
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 aa43075765d0..3555f170faec 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
@@ -129,6 +129,8 @@ public JavaClientCodegen() {
artifactId = "openapi-java-client";
apiPackage = "org.openapitools.client.api";
modelPackage = "org.openapitools.client.model";
+ useOneOfInterfaces = true;
+ addOneOfInterfaceImports = true;
// cliOptions default redefinition need to be updated
updateOption(CodegenConstants.INVOKER_PACKAGE, this.getInvokerPackage());
@@ -1027,11 +1029,13 @@ public String toApiVarName(String name) {
@Override
public void addImportsToOneOfInterface(List> imports) {
- for (String i : Arrays.asList("JsonSubTypes", "JsonTypeInfo")) {
- Map oneImport = new HashMap<>();
- oneImport.put("import", importMapping.get(i));
- if (!imports.contains(oneImport)) {
- imports.add(oneImport);
+ if (additionalProperties.containsKey(JACKSON)) {
+ for (String i : Arrays.asList("JsonSubTypes", "JsonTypeInfo")) {
+ Map oneImport = new HashMap<>();
+ oneImport.put("import", importMapping.get(i));
+ if (!imports.contains(oneImport)) {
+ imports.add(oneImport);
+ }
}
}
}
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 e73361311a1b..ad6014054cca 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
@@ -395,8 +395,9 @@ public String toModelName(String name) {
// model name cannot use reserved keyword, e.g. return
if (isReservedWord(camelizedName)) {
- camelizedName = "Model" + camelizedName;
- LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", camelizedName, camelizedName);
+ final String modelName = "Model" + camelizedName;
+ LOGGER.warn("{} (reserved word) cannot be used as model name. Renamed to {}", camelizedName, modelName);
+ return modelName;
}
// model name starts with number
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java
index 18ad26324407..dd0dca689fb7 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java
@@ -125,6 +125,7 @@ public ScalaSttpClientCodegen() {
importMapping.remove("Set");
importMapping.remove("Map");
+ // TODO: there is no specific sttp mapping. All Scala Type mappings should be in AbstractScala
typeMapping = new HashMap<>();
typeMapping.put("array", "Seq");
typeMapping.put("set", "Set");
@@ -143,6 +144,7 @@ public ScalaSttpClientCodegen() {
typeMapping.put("binary", "File");
typeMapping.put("number", "Double");
typeMapping.put("decimal", "BigDecimal");
+ typeMapping.put("ByteArray", "Array[Byte]");
instantiationTypes.put("array", "ListBuffer");
instantiationTypes.put("map", "Map");
@@ -217,6 +219,103 @@ public String escapeReservedWord(String name) {
return "`" + name + "`";
}
+ @Override
+ public Map postProcessModels(Map objs) {
+ return objs;
+ }
+
+ /**
+ * Invoked by {@link DefaultGenerator} after all models have been post-processed,
+ * allowing for a last pass of codegen-specific model cleanup.
+ *
+ * @param objs Current state of codegen object model.
+ * @return An in-place modified state of the codegen object model.
+ */
+ @Override
+ public Map postProcessAllModels(Map objs) {
+ final Map processed = super.postProcessAllModels(objs);
+ postProcessUpdateImports(processed);
+ return processed;
+ }
+
+ /**
+ * Update/clean up model imports
+ *
+ * append '._" if the import is a Enum class, otherwise
+ * remove model imports to avoid warnings for importing class in the same package in Scala
+ *
+ * @param models processed models to be further processed
+ */
+ @SuppressWarnings({"unchecked"})
+ private void postProcessUpdateImports(final Map models) {
+ final String prefix = modelPackage() + ".";
+ Map enumRefs = new HashMap();
+ for (Map.Entry entry : models.entrySet()) {
+ CodegenModel model = ModelUtils.getModelByName(entry.getKey(), models);
+ if (model.isEnum) {
+ Map objs = (Map)models.get(entry.getKey());
+ enumRefs.put(entry.getKey(), objs);
+ }
+ }
+
+ for (Map.Entry entry : models.entrySet()) {
+ String openAPIName = entry.getKey();
+ CodegenModel model = ModelUtils.getModelByName(openAPIName, models);
+ if (model == null) {
+ LOGGER.warn("Expected to retrieve model %s by name, but no model was found. Check your -Dmodels inclusions.", openAPIName);
+ continue;
+ }
+ Map objs = (Map)models.get(openAPIName);
+ List> imports = (List>) objs.get("imports");
+ if (imports == null || imports.isEmpty()) {
+ continue;
+ }
+ List> newImports = new ArrayList<>();
+ Iterator> iterator = imports.iterator();
+ while (iterator.hasNext()) {
+ String importPath = iterator.next().get("import");
+ if (importPath.startsWith(prefix)) {
+ if (isEnumClass(importPath, (Map)enumRefs)) {
+ Map item = new HashMap<>();
+ item.put("import", importPath.concat("._"));
+ newImports.add(item);
+ }
+ }
+ else {
+ Map item = new HashMap<>();
+ item.put("import", importPath);
+ newImports.add(item);
+ }
+
+ }
+ // reset imports
+ objs.put("imports", newImports);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private boolean isEnumClass(final String importPath, final Map enumModels) {
+ if (enumModels == null || enumModels.isEmpty()) {
+ return false;
+ }
+ for (Map.Entry entry : enumModels.entrySet()) {
+ String name = entry.getKey();
+ Map objs = (Map)enumModels.get(name);
+ List> modles = (List>) objs.get("models");
+ if (modles == null || modles.isEmpty()) {
+ continue;
+ }
+ Iterator> iterator = modles.iterator();
+ while (iterator.hasNext()) {
+ String enumImportPath = (String)iterator.next().get("importPath");
+ if (enumImportPath != null && enumImportPath.equals(importPath)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
@Override
public Map postProcessOperationsWithModels(Map objs, List allModels) {
if (registerNonStandardStatusCodes) {
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java
index 83fcef2d365e..e935c77ef104 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java
@@ -135,6 +135,8 @@ public SpringCodegen() {
modelPackage = "org.openapitools.model";
invokerPackage = "org.openapitools.api";
artifactId = "openapi-spring";
+ useOneOfInterfaces = true;
+ addOneOfInterfaceImports = true;
// clioOptions default redefinition need to be updated
updateOption(CodegenConstants.INVOKER_PACKAGE, this.getInvokerPackage());
@@ -868,6 +870,19 @@ public Map postProcessModelsEnum(Map objs) {
return objs;
}
+ @Override
+ public void addImportsToOneOfInterface(List> imports) {
+ if (additionalProperties.containsKey(JACKSON)) {
+ for (String i : Arrays.asList("JsonSubTypes", "JsonTypeInfo")) {
+ Map oneImport = new HashMap<>();
+ oneImport.put("import", importMapping.get(i));
+ if (!imports.contains(oneImport)) {
+ imports.add(oneImport);
+ }
+ }
+ }
+ }
+
public void setUseBeanValidation(boolean useBeanValidation) {
this.useBeanValidation = useBeanValidation;
}
@@ -901,16 +916,4 @@ public void postProcessParameter(CodegenParameter p) {
}
}
- @Override
- public void addImportsToOneOfInterface(List> imports) {
- for (String i : Arrays.asList("JsonSubTypes", "JsonTypeInfo")) {
- Map oneImport = new HashMap() {{
- put("import", importMapping.get(i));
- }};
- if (!imports.contains(oneImport)) {
- imports.add(oneImport);
- }
- }
- }
-
-}
\ No newline at end of file
+}
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java
index 03c015b1f922..5fadeb9d41f0 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Swift5ClientCodegen.java
@@ -58,6 +58,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig
public static final String POD_SCREENSHOTS = "podScreenshots";
public static final String POD_DOCUMENTATION_URL = "podDocumentationURL";
public static final String READONLY_PROPERTIES = "readonlyProperties";
+ public static final String REMOVE_MIGRATION_PROJECT_NAME_CLASS = "removeMigrationProjectNameClass";
public static final String SWIFT_USE_API_NAMESPACE = "swiftUseApiNamespace";
public static final String DEFAULT_POD_AUTHORS = "OpenAPI Generator";
public static final String LENIENT_TYPE_CAST = "lenientTypeCast";
@@ -81,6 +82,7 @@ public class Swift5ClientCodegen extends DefaultCodegen implements CodegenConfig
protected boolean objcCompatible = false;
protected boolean lenientTypeCast = false;
protected boolean readonlyProperties = false;
+ protected boolean removeMigrationProjectNameClass = false;
protected boolean swiftUseApiNamespace = false;
protected boolean useSPMFileStructure = false;
protected String swiftPackagePath = "Classes" + File.separator + "OpenAPIs";
@@ -263,6 +265,8 @@ public Swift5ClientCodegen() {
"Documentation URL used for Podspec"));
cliOptions.add(new CliOption(READONLY_PROPERTIES, "Make properties "
+ "readonly (default: false)"));
+ cliOptions.add(new CliOption(REMOVE_MIGRATION_PROJECT_NAME_CLASS, "Make properties "
+ + "removeMigrationProjectNameClass (default: false)"));
cliOptions.add(new CliOption(SWIFT_USE_API_NAMESPACE,
"Flag to make all the API classes inner-class "
+ "of {{projectName}}API"));
@@ -447,8 +451,14 @@ public void processOpts() {
}
additionalProperties.put(READONLY_PROPERTIES, readonlyProperties);
+ // Setup removeMigrationProjectNameClass option, which keeps or remove the projectName class
+ if (additionalProperties.containsKey(REMOVE_MIGRATION_PROJECT_NAME_CLASS)) {
+ setRemoveMigrationProjectNameClass(convertPropertyToBooleanAndWriteBack(REMOVE_MIGRATION_PROJECT_NAME_CLASS));
+ }
+ additionalProperties.put(REMOVE_MIGRATION_PROJECT_NAME_CLASS, removeMigrationProjectNameClass);
+
// Setup swiftUseApiNamespace option, which makes all the API
- // classes inner-class of {{projectName}}
+ // classes inner-class of {{projectName}}API
if (additionalProperties.containsKey(SWIFT_USE_API_NAMESPACE)) {
setSwiftUseApiNamespace(convertPropertyToBooleanAndWriteBack(SWIFT_USE_API_NAMESPACE));
}
@@ -901,6 +911,10 @@ public void setReadonlyProperties(boolean readonlyProperties) {
this.readonlyProperties = readonlyProperties;
}
+ public void setRemoveMigrationProjectNameClass(boolean removeMigrationProjectNameClass) {
+ this.removeMigrationProjectNameClass = removeMigrationProjectNameClass;
+ }
+
public void setResponseAs(String[] responseAs) {
this.responseAs = responseAs;
}
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlSchemaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlSchemaCodegen.java
index 435494d8f3af..d6cd4e103abb 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlSchemaCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/WsdlSchemaCodegen.java
@@ -28,6 +28,7 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Arrays;
public class WsdlSchemaCodegen extends DefaultCodegen implements CodegenConfig {
public static final String PROJECT_NAME = "projectName";
@@ -128,9 +129,21 @@ public Map postProcessOperationsWithModels(Map o
// if param is enum, uppercase 'baseName' to have a reference to wsdl simpletype
if (param.isEnum) {
- char[] c = param.baseName.toCharArray();
- c[0] = Character.toUpperCase(c[0]);
- param.baseName = new String(c);
+ param.baseName = param.baseName.substring(0, 1).toUpperCase(Locale.getDefault())
+ + param.baseName.substring(1);
+ }
+ }
+
+ // handle case lowercase schema-name in openapi to have reference to wsdl complextype
+ for (CodegenResponse response : op.responses) {
+ if (response.isModel) {
+ response.dataType = response.dataType.substring(0, 1).toUpperCase(Locale.getDefault())
+ + response.dataType.substring(1);
+ }
+
+ if (response.isArray) {
+ response.baseType = response.baseType.substring(0, 1).toUpperCase(Locale.getDefault())
+ + response.baseType.substring(1);
}
}
@@ -174,33 +187,19 @@ public Map postProcessModels(Map objs) {
Map mod = (Map) mo;
CodegenModel model = (CodegenModel) mod.get("model");
Map modelVendorExtensions = model.getVendorExtensions();
-
- /* check if model is a model with no properties
- * Used in the mustache template to ensure that no complextype is created
- * if model is just a schema with an enum defined in the openapi specification
- */
- if (model.allowableValues != null) {
- modelVendorExtensions.put("x-is-openapimodel-enum", true);
- } else {
- modelVendorExtensions.put("x-is-openapimodel-enum", false);
- }
-
+
for (CodegenProperty var : model.vars) {
Map propertyVendorExtensions = var.getVendorExtensions();
// lowercase basetypes if openapitype is string
if ("string".equals(var.openApiType)) {
- char[] c = var.baseType.toCharArray();
- c[0] = Character.toLowerCase(c[0]);
- var.baseType = new String(c);
+ var.baseType = var.baseType.substring(0, 1).toLowerCase(Locale.getDefault())
+ + var.baseType.substring(1);
}
// if string enum, uppercase 'name' to have a reference to wsdl simpletype
if (var.isEnum) {
- char[] c = var.name.toCharArray();
- c[0] = Character.toUpperCase(c[0]);
- var.name = new String(c);
+ var.name = var.name.substring(0, 1).toUpperCase(Locale.getDefault()) + var.name.substring(1);
}
-
// prevent default="null" in wsdl-tag if no default was specified for a property
if ("null".equals(var.defaultValue) || var.defaultValue == null) {
propertyVendorExtensions.put("x-prop-has-defaultvalue", false);
@@ -217,6 +216,21 @@ public Map postProcessModels(Map objs) {
} else {
propertyVendorExtensions.put("x-prop-has-minormax", false);
}
+
+ // specify appearing schema names in case of openapi array with oneOf elements
+ if (var.openApiType == "array" && var.items.dataType.startsWith("oneOf<")) {
+ // get only comma separated names of schemas from oneOf
+ String schemaNamesString =
+ var.items.dataType.substring(6, var.items.dataType.length() - 1);
+ List oneofSchemas =
+ new ArrayList(Arrays.asList(schemaNamesString.split("\\s*,\\s*")));
+
+ for (int i = 0; i < oneofSchemas.size(); i++) {
+ oneofSchemas.set(i, lowerCaseStringExceptFirstLetter(oneofSchemas.get(i)));
+ }
+
+ propertyVendorExtensions.put("x-oneof-schemas", oneofSchemas);
+ }
}
}
return super.postProcessModelsEnum(objs);
@@ -233,7 +247,8 @@ public String generateOperationId(CodegenOperation op) {
pathElements[i] = "";
}
if (pathElements[i].length() > 0) {
- newOperationid = newOperationid + this.lowerCaseStringExceptFirstLetter(pathElements[i]);
+ newOperationid = newOperationid
+ + this.lowerCaseStringExceptFirstLetter(pathElements[i]);
}
}
diff --git a/modules/openapi-generator/src/main/resources/C-libcurl/CMakeLists.txt.mustache b/modules/openapi-generator/src/main/resources/C-libcurl/CMakeLists.txt.mustache
index 33d82b5786dc..7ff01b17c0ee 100644
--- a/modules/openapi-generator/src/main/resources/C-libcurl/CMakeLists.txt.mustache
+++ b/modules/openapi-generator/src/main/resources/C-libcurl/CMakeLists.txt.mustache
@@ -103,9 +103,7 @@ if (NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in)
install(TARGETS ${pkgName} DESTINATION ${CMAKE_INSTALL_PREFIX})
else()
include(GNUInstallDirs)
- install(TARGETS ${pkgName}
- EXPORT ${pkgName}Targets
- )
+ install(TARGETS ${pkgName} DESTINATION ${CMAKE_INSTALL_PREFIX} EXPORT ${pkgName}Targets)
foreach(HDR_FILE ${HDRS})
get_filename_component(HDR_DIRECTORY ${HDR_FILE} DIRECTORY)
diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/ApiClient.mustache
index e76f84bdff49..bb78ec3a458a 100644
--- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/ApiClient.mustache
+++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/ApiClient.mustache
@@ -526,7 +526,7 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} {
* @return API client
*/
public ApiClient setUserAgent(String userAgent) {
- userAgent = userAgent;
+ this.userAgent = userAgent;
addDefaultHeader("User-Agent", userAgent);
return this;
}
diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/ApiClient.mustache
index 73cfe2d43a58..2f049f273b95 100644
--- a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/ApiClient.mustache
+++ b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/ApiClient.mustache
@@ -479,6 +479,14 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} {
collectionFormat = CollectionFormat.CSV;
}
+ if (value instanceof Map) {
+ final Map valuesMap = (Map) value;
+ for (final Entry entry : valuesMap.entrySet()) {
+ params.add(entry.getKey(), parameterToString(entry.getValue()));
+ }
+ return params;
+ }
+
Collection> valueCollection = null;
if (value instanceof Collection) {
valueCollection = (Collection>) value;
diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/webclient/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/webclient/ApiClient.mustache
index 67d8e3a4fba5..2c49fea70691 100644
--- a/modules/openapi-generator/src/main/resources/Java/libraries/webclient/ApiClient.mustache
+++ b/modules/openapi-generator/src/main/resources/Java/libraries/webclient/ApiClient.mustache
@@ -457,6 +457,14 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} {
collectionFormat = CollectionFormat.CSV;
}
+ if (value instanceof Map) {
+ final Map valuesMap = (Map) value;
+ for (final Entry entry : valuesMap.entrySet()) {
+ params.add(entry.getKey(), parameterToString(entry.getValue()));
+ }
+ return params;
+ }
+
Collection> valueCollection = null;
if (value instanceof Collection) {
valueCollection = (Collection>) value;
diff --git a/modules/openapi-generator/src/main/resources/Java/oneof_interface.mustache b/modules/openapi-generator/src/main/resources/Java/oneof_interface.mustache
index 02deb483d5fd..fe696c971606 100644
--- a/modules/openapi-generator/src/main/resources/Java/oneof_interface.mustache
+++ b/modules/openapi-generator/src/main/resources/Java/oneof_interface.mustache
@@ -1,6 +1,6 @@
{{>additionalModelTypeAnnotations}}{{>generatedAnnotation}}{{>typeInfoAnnotation}}{{>xmlAnnotation}}
public interface {{classname}} {{#vendorExtensions.x-implements}}{{#-first}}extends {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
- {{#discriminator}}
+ {{^vendorExtensions.x-deduction}}{{#discriminator}}
public {{propertyType}} {{propertyGetter}}();
- {{/discriminator}}
+ {{/discriminator}}{{/vendorExtensions.x-deduction}}
}
diff --git a/modules/openapi-generator/src/main/resources/Java/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/Java/typeInfoAnnotation.mustache
index 63eb42ea5001..2eda38e95cfb 100644
--- a/modules/openapi-generator/src/main/resources/Java/typeInfoAnnotation.mustache
+++ b/modules/openapi-generator/src/main/resources/Java/typeInfoAnnotation.mustache
@@ -1,6 +1,15 @@
{{#jackson}}
+{{^vendorExtensions.x-deduction}}
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "{{{discriminator.propertyBaseName}}}", visible = true)
+{{/vendorExtensions.x-deduction}}{{#vendorExtensions.x-deduction}}
+@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION)
+@JsonSubTypes({
+{{#vendorExtensions.x-deduction-model-names}}
+ @JsonSubTypes.Type(value = {{.}}.class, name = "{{.}}"),
+{{/vendorExtensions.x-deduction-model-names}}
+})
+{{/vendorExtensions.x-deduction}}
{{#discriminator.mappedModels}}
{{#-first}}
@JsonSubTypes({
@@ -13,4 +22,4 @@
{{#isClassnameSanitized}}
@JsonTypeName("{{name}}")
{{/isClassnameSanitized}}
-{{/jackson}}
+{{/jackson}}
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-boot/oneof_interface.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-boot/oneof_interface.mustache
new file mode 100644
index 000000000000..fe696c971606
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-boot/oneof_interface.mustache
@@ -0,0 +1,6 @@
+{{>additionalModelTypeAnnotations}}{{>generatedAnnotation}}{{>typeInfoAnnotation}}{{>xmlAnnotation}}
+public interface {{classname}} {{#vendorExtensions.x-implements}}{{#-first}}extends {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
+ {{^vendorExtensions.x-deduction}}{{#discriminator}}
+ public {{propertyType}} {{propertyGetter}}();
+ {{/discriminator}}{{/vendorExtensions.x-deduction}}
+}
diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/oneof_interface.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/oneof_interface.mustache
index 4500871766c1..fe696c971606 100644
--- a/modules/openapi-generator/src/main/resources/JavaSpring/oneof_interface.mustache
+++ b/modules/openapi-generator/src/main/resources/JavaSpring/oneof_interface.mustache
@@ -1,6 +1,6 @@
{{>additionalModelTypeAnnotations}}{{>generatedAnnotation}}{{>typeInfoAnnotation}}{{>xmlAnnotation}}
public interface {{classname}} {{#vendorExtensions.x-implements}}{{#-first}}extends {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{/vendorExtensions.x-implements}} {
- {{#discriminator}}
+ {{^vendorExtensions.x-deduction}}{{#discriminator}}
public {{propertyType}} {{propertyGetter}}();
- {{/discriminator}}
-}
\ No newline at end of file
+ {{/discriminator}}{{/vendorExtensions.x-deduction}}
+}
diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/pojo.mustache
index 7452d6df9341..3122414c5982 100644
--- a/modules/openapi-generator/src/main/resources/JavaSpring/pojo.mustache
+++ b/modules/openapi-generator/src/main/resources/JavaSpring/pojo.mustache
@@ -3,7 +3,7 @@
*/{{#description}}
@ApiModel(description = "{{{.}}}"){{/description}}
{{>generatedAnnotation}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{>xmlAnnotation}}{{>additionalModelTypeAnnotations}}
-public class {{classname}} {{#parent}}extends {{{parent}}}{{/parent}}{{^parent}}{{#hateoas}}extends RepresentationModel<{{classname}}> {{/hateoas}}{{/parent}} {{#vendorExtensions.x-implements}}{{#-first}}implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{#-last}} {{/-last}}{{/vendorExtensions.x-implements}} {
+public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{^parent}}{{#hateoas}}extends RepresentationModel<{{classname}}> {{/hateoas}}{{/parent}}{{#vendorExtensions.x-implements}}{{#-first}}implements {{{.}}}{{/-first}}{{^-first}}, {{{.}}}{{/-first}}{{#-last}} {{/-last}}{{/vendorExtensions.x-implements}}{
{{#serializableModel}}
private static final long serialVersionUID = 1L;
diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/typeInfoAnnotation.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/typeInfoAnnotation.mustache
index 81c2ba05f903..2aee24b387b2 100644
--- a/modules/openapi-generator/src/main/resources/JavaSpring/typeInfoAnnotation.mustache
+++ b/modules/openapi-generator/src/main/resources/JavaSpring/typeInfoAnnotation.mustache
@@ -1,8 +1,14 @@
{{#jackson}}
+{{^vendorExtensions.x-deduction}}
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "{{{discriminator.propertyBaseName}}}", visible = true)
+{{/vendorExtensions.x-deduction}}{{#vendorExtensions.x-deduction}}
+@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION){{/vendorExtensions.x-deduction}}
@JsonSubTypes({
{{#discriminator.mappedModels}}
@JsonSubTypes.Type(value = {{modelName}}.class, name = "{{^vendorExtensions.x-discriminator-value}}{{mappingName}}{{/vendorExtensions.x-discriminator-value}}{{#vendorExtensions.x-discriminator-value}}{{{vendorExtensions.x-discriminator-value}}}{{/vendorExtensions.x-discriminator-value}}"),
{{/discriminator.mappedModels}}
+ {{#vendorExtensions.x-deduction-model-names}}
+ @JsonSubTypes.Type(value = {{.}}.class, name = "{{.}}"),
+ {{/vendorExtensions.x-deduction-model-names}}
}){{/jackson}}
diff --git a/modules/openapi-generator/src/main/resources/cpp-qt-client/ServerConfiguration.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/ServerConfiguration.mustache
index 7c2beff520b7..f4e36bb4a81d 100644
--- a/modules/openapi-generator/src/main/resources/cpp-qt-client/ServerConfiguration.mustache
+++ b/modules/openapi-generator/src/main/resources/cpp-qt-client/ServerConfiguration.mustache
@@ -4,9 +4,11 @@
*/
#ifndef {{prefix}}_SERVERVCONFIGURATION_H
#define {{prefix}}_SERVERVCONFIGURATION_H
+
#include
#include
#include
+#include
#include
#include "{{prefix}}ServerVariable.h"
diff --git a/modules/openapi-generator/src/main/resources/cpp-qt-client/api-body.mustache b/modules/openapi-generator/src/main/resources/cpp-qt-client/api-body.mustache
index 7fb010be1063..3f7e5035d798 100644
--- a/modules/openapi-generator/src/main/resources/cpp-qt-client/api-body.mustache
+++ b/modules/openapi-generator/src/main/resources/cpp-qt-client/api-body.mustache
@@ -129,9 +129,15 @@ int {{classname}}::addServerConfiguration(const QString &operation, const QUrl &
* @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template.
*/
void {{classname}}::setNewServerForAllOperations(const QUrl &url, const QString &description, const QMap &variables) {
+#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
for (auto keyIt = _serverIndices.keyBegin(); keyIt != _serverIndices.keyEnd(); keyIt++) {
setServerIndex(*keyIt, addServerConfiguration(*keyIt, url, description, variables));
}
+#else
+ for (auto &e : _serverIndices.keys()) {
+ setServerIndex(e, addServerConfiguration(e, url, description, variables));
+ }
+#endif
}
/**
@@ -661,7 +667,7 @@ void {{classname}}::{{nickname}}({{#allParams}}{{#required}}const {{{dataType}}}
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
diff --git a/modules/openapi-generator/src/main/resources/csharp-netcore/modelGeneric.mustache b/modules/openapi-generator/src/main/resources/csharp-netcore/modelGeneric.mustache
index 4d80ca9783c3..0791bb576926 100644
--- a/modules/openapi-generator/src/main/resources/csharp-netcore/modelGeneric.mustache
+++ b/modules/openapi-generator/src/main/resources/csharp-netcore/modelGeneric.mustache
@@ -396,7 +396,7 @@
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
return this.BaseValidate(validationContext);
}
@@ -415,7 +415,7 @@
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
{{/discriminator}}
{{#parent}}
diff --git a/modules/openapi-generator/src/main/resources/go/model_anyof.mustache b/modules/openapi-generator/src/main/resources/go/model_anyof.mustache
index 5bdefe2a9e2e..f1d8c57c85ff 100644
--- a/modules/openapi-generator/src/main/resources/go/model_anyof.mustache
+++ b/modules/openapi-generator/src/main/resources/go/model_anyof.mustache
@@ -20,7 +20,7 @@ func (dst *{{classname}}) UnmarshalJSON(data []byte) error {
{{#-first}}
// use discriminator value to speed up the lookup
var jsonDict map[string]interface{}
- err := json.Unmarshal(data, &jsonDict)
+ err = json.Unmarshal(data, &jsonDict)
if err != nil {
return fmt.Errorf("Failed to unmarshal JSON into map for the discriminator lookup.")
}
diff --git a/modules/openapi-generator/src/main/resources/go/model_enum.mustache b/modules/openapi-generator/src/main/resources/go/model_enum.mustache
index 2432e5c8b361..398f8f0f6f84 100644
--- a/modules/openapi-generator/src/main/resources/go/model_enum.mustache
+++ b/modules/openapi-generator/src/main/resources/go/model_enum.mustache
@@ -12,7 +12,8 @@ const (
{{/allowableValues}}
)
-var allowed{{{classname}}}EnumValues = []{{{classname}}}{
+// All allowed values of {{{classname}}} enum
+var Allowed{{{classname}}}EnumValues = []{{{classname}}}{
{{#allowableValues}}
{{#enumVars}}
{{{value}}},
@@ -27,7 +28,7 @@ func (v *{{{classname}}}) UnmarshalJSON(src []byte) error {
return err
}
enumTypeValue := {{{classname}}}(value)
- for _, existing := range allowed{{{classname}}}EnumValues {
+ for _, existing := range Allowed{{{classname}}}EnumValues {
if existing == enumTypeValue {
*v = enumTypeValue
return nil
@@ -44,13 +45,13 @@ func New{{{classname}}}FromValue(v {{{format}}}{{^format}}{{dataType}}{{/format}
if ev.IsValid() {
return &ev, nil
} else {
- return nil, fmt.Errorf("invalid value '%v' for {{{classname}}}: valid values are %v", v, allowed{{{classname}}}EnumValues)
+ return nil, fmt.Errorf("invalid value '%v' for {{{classname}}}: valid values are %v", v, Allowed{{{classname}}}EnumValues)
}
}
// IsValid return true if the value is valid for the enum, false otherwise
func (v {{{classname}}}) IsValid() bool {
- for _, existing := range allowed{{{classname}}}EnumValues {
+ for _, existing := range Allowed{{{classname}}}EnumValues {
if existing == v {
return true
}
diff --git a/modules/openapi-generator/src/main/resources/haskell-http-client/Client.mustache b/modules/openapi-generator/src/main/resources/haskell-http-client/Client.mustache
index e3969468f17b..cbdb465a2b2c 100644
--- a/modules/openapi-generator/src/main/resources/haskell-http-client/Client.mustache
+++ b/modules/openapi-generator/src/main/resources/haskell-http-client/Client.mustache
@@ -23,6 +23,7 @@ import qualified Control.Exception.Safe as E
import qualified Control.Monad.IO.Class as P
import qualified Control.Monad as P
import qualified Data.Aeson.Types as A
+import qualified Data.ByteString as B
import qualified Data.ByteString.Char8 as BC
import qualified Data.ByteString.Lazy as BL
import qualified Data.ByteString.Lazy.Char8 as BCL
@@ -69,7 +70,7 @@ data MimeError =
MimeError {
mimeError :: String -- ^ unrender/parser error
, mimeErrorResponse :: NH.Response BCL.ByteString -- ^ http response
- } deriving (Eq, Show)
+ } deriving (Show)
-- | send a request returning the 'MimeResult'
dispatchMime
@@ -170,13 +171,18 @@ _toInitRequest config req0 =
(configValidateAuthMethods config && (not . null . rAuthTypes) req1)
(E.throw $ AuthMethodException $ "AuthMethod not configured: " <> (show . head . rAuthTypes) req1)
let req2 = req1 & _setContentTypeHeader & _setAcceptHeader
- reqHeaders = ("User-Agent", WH.toHeader (configUserAgent config)) : paramsHeaders (rParams req2)
- reqQuery = NH.renderQuery True (paramsQuery (rParams req2))
- pReq = parsedReq { NH.method = (rMethod req2)
+ params = rParams req2
+ reqHeaders = ("User-Agent", WH.toHeader (configUserAgent config)) : paramsHeaders params
+ reqQuery = let query = paramsQuery params
+ queryExtraUnreserved = configQueryExtraUnreserved config
+ in if B.null queryExtraUnreserved
+ then NH.renderQuery True query
+ else NH.renderQueryPartialEscape True (toPartialEscapeQuery queryExtraUnreserved query)
+ pReq = parsedReq { NH.method = rMethod req2
, NH.requestHeaders = reqHeaders
, NH.queryString = reqQuery
}
- outReq <- case paramsBody (rParams req2) of
+ outReq <- case paramsBody params of
ParamBodyNone -> pure (pReq { NH.requestBody = mempty })
ParamBodyB bs -> pure (pReq { NH.requestBody = NH.RequestBodyBS bs })
ParamBodyBL bl -> pure (pReq { NH.requestBody = NH.RequestBodyLBS bl })
@@ -198,11 +204,11 @@ modifyInitRequestM (InitRequest req) f = fmap InitRequest (f req)
-- | Run a block using the configured logger instance
runConfigLog
:: P.MonadIO m
- => {{configType}} -> LogExec m
+ => {{configType}} -> LogExec m a
runConfigLog config = configLogExecWithContext config (configLogContext config)
-- | Run a block using the configured logger instance (logs exceptions)
runConfigLogWithExceptions
:: (E.MonadCatch m, P.MonadIO m)
- => T.Text -> {{configType}} -> LogExec m
+ => T.Text -> {{configType}} -> LogExec m a
runConfigLogWithExceptions src config = runConfigLog config . logExceptions src
diff --git a/modules/openapi-generator/src/main/resources/haskell-http-client/Core.mustache b/modules/openapi-generator/src/main/resources/haskell-http-client/Core.mustache
index dfcf3ce6e222..96fb0c22c116 100644
--- a/modules/openapi-generator/src/main/resources/haskell-http-client/Core.mustache
+++ b/modules/openapi-generator/src/main/resources/haskell-http-client/Core.mustache
@@ -35,6 +35,7 @@ import qualified Data.CaseInsensitive as CI
import qualified Data.Data as P (Data, Typeable, TypeRep, typeRep)
import qualified Data.Foldable as P
import qualified Data.Ix as P
+import qualified Data.Kind as K (Type)
import qualified Data.Maybe as P
import qualified Data.Proxy as P (Proxy(..))
import qualified Data.Text as T
@@ -46,9 +47,9 @@ import qualified Lens.Micro as L
import qualified Network.HTTP.Client.MultipartFormData as NH
import qualified Network.HTTP.Types as NH
import qualified Prelude as P
+import qualified Text.Printf as T
import qualified Web.FormUrlEncoded as WH
import qualified Web.HttpApiData as WH
-import qualified Text.Printf as T
import Control.Applicative ((<|>))
import Control.Applicative (Alternative)
@@ -57,7 +58,7 @@ import Data.Function ((&))
import Data.Foldable(foldlM)
import Data.Monoid ((<>))
import Data.Text (Text)
-import Prelude (($), (.), (<$>), (<*>), Maybe(..), Bool(..), Char, String, fmap, mempty, pure, return, show, IO, Monad, Functor)
+import Prelude (($), (.), (&&), (<$>), (<*>), Maybe(..), Bool(..), Char, String, fmap, mempty, pure, return, show, IO, Monad, Functor, maybe)
-- * {{configType}}
@@ -69,6 +70,7 @@ data {{configType}} = {{configType}}
, configLogContext :: LogContext -- ^ Configures the logger
, configAuthMethods :: [AnyAuthMethod] -- ^ List of configured auth methods
, configValidateAuthMethods :: Bool -- ^ throw exceptions if auth methods are not configured
+ , configQueryExtraUnreserved :: B.ByteString -- ^ Configures additional querystring characters which must not be URI encoded, e.g. '+' or ':'
}
-- | display the config
@@ -99,6 +101,7 @@ newConfig = do
, configLogContext = logCxt
, configAuthMethods = []
, configValidateAuthMethods = True
+ , configQueryExtraUnreserved = "{{x-queryExtraUnreserved}}"
}
-- | updates config use AuthMethod on matching requests
@@ -326,6 +329,16 @@ toQuery :: WH.ToHttpApiData a => (BC.ByteString, Maybe a) -> [NH.QueryItem]
toQuery x = [(fmap . fmap) toQueryParam x]
where toQueryParam = T.encodeUtf8 . WH.toQueryParam
+toPartialEscapeQuery :: B.ByteString -> NH.Query -> NH.PartialEscapeQuery
+toPartialEscapeQuery extraUnreserved query = fmap (\(k, v) -> (k, maybe [] go v)) query
+ where go :: B.ByteString -> [NH.EscapeItem]
+ go v = v & B.groupBy (\a b -> a `B.notElem` extraUnreserved && b `B.notElem` extraUnreserved)
+ & fmap (\xs -> if B.null xs then NH.QN xs
+ else if B.head xs `B.elem` extraUnreserved
+ then NH.QN xs -- Not Encoded
+ else NH.QE xs -- Encoded
+ )
+
-- *** OpenAPI `CollectionFormat` Utils
-- | Determines the format of the array if type array is used.
@@ -551,4 +564,4 @@ _showBinaryBase64 = T.decodeUtf8 . BL.toStrict . BL64.encode . unBinary
-- * Lens Type Aliases
type Lens_' s a = Lens_ s s a a
-type Lens_ s t a b = forall (f :: * -> *). Functor f => (a -> f b) -> s -> f t
+type Lens_ s t a b = forall (f :: K.Type -> K.Type). Functor f => (a -> f b) -> s -> f t
diff --git a/modules/openapi-generator/src/main/resources/haskell-http-client/LoggingKatip.mustache b/modules/openapi-generator/src/main/resources/haskell-http-client/LoggingKatip.mustache
index 479818737aea..779fa53f0ece 100644
--- a/modules/openapi-generator/src/main/resources/haskell-http-client/LoggingKatip.mustache
+++ b/modules/openapi-generator/src/main/resources/haskell-http-client/LoggingKatip.mustache
@@ -25,11 +25,11 @@ import qualified Katip as LG
-- * Type Aliases (for compatibility)
-- | Runs a Katip logging block with the Log environment
-type LogExecWithContext = forall m. P.MonadIO m =>
- LogContext -> LogExec m
+type LogExecWithContext = forall m a. P.MonadIO m =>
+ LogContext -> LogExec m a
-- | A Katip logging block
-type LogExec m = forall a. LG.KatipT m a -> m a
+type LogExec m a = LG.KatipT m a -> m a
-- | A Katip Log environment
type LogContext = LG.LogEnv
diff --git a/modules/openapi-generator/src/main/resources/haskell-http-client/LoggingMonadLogger.mustache b/modules/openapi-generator/src/main/resources/haskell-http-client/LoggingMonadLogger.mustache
index 7b126974243d..453a8a70da2e 100644
--- a/modules/openapi-generator/src/main/resources/haskell-http-client/LoggingMonadLogger.mustache
+++ b/modules/openapi-generator/src/main/resources/haskell-http-client/LoggingMonadLogger.mustache
@@ -15,7 +15,6 @@ import qualified Control.Monad.IO.Class as P
import qualified Data.Text as T
import qualified Data.Time as TI
-import Data.Monoid ((<>))
import Data.Text (Text)
import qualified Control.Monad.Logger as LG
@@ -23,11 +22,11 @@ import qualified Control.Monad.Logger as LG
-- * Type Aliases (for compatibility)
-- | Runs a monad-logger block with the filter predicate
-type LogExecWithContext = forall m. P.MonadIO m =>
- LogContext -> LogExec m
+type LogExecWithContext = forall m a. P.MonadIO m =>
+ LogContext -> LogExec m a
-- | A monad-logger block
-type LogExec m = forall a. LG.LoggingT m a -> m a
+type LogExec m a = LG.LoggingT m a -> m a
-- | A monad-logger filter predicate
type LogContext = LG.LogSource -> LG.LogLevel -> Bool
diff --git a/modules/openapi-generator/src/main/resources/haskell-http-client/README.mustache b/modules/openapi-generator/src/main/resources/haskell-http-client/README.mustache
index 2fbd96b01ded..488ea0538126 100644
--- a/modules/openapi-generator/src/main/resources/haskell-http-client/README.mustache
+++ b/modules/openapi-generator/src/main/resources/haskell-http-client/README.mustache
@@ -55,7 +55,7 @@ These options allow some customization of the code generation process.
**haskell-http-client additional properties:**
| OPTION | DESCRIPTION | DEFAULT | ACTUAL |
-| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------------------- |
+|---------------------------------|-------------------------------------------------------------------------------------------------------------------------------|----------|---------------------------------------|
| allowFromJsonNulls | allow JSON Null during model decoding from JSON | true | {{{allowFromJsonNulls}}} |
| allowNonUniqueOperationIds | allow *different* API modules to contain the same operationId. Each API must be imported qualified | false | {{{x-allowNonUniqueOperationIds}}} |
| allowToJsonNulls | allow emitting JSON Null during model encoding to JSON | false | {{{allowToJsonNulls}}} |
@@ -76,6 +76,7 @@ These options allow some customization of the code generation process.
| requestType | Set the name of the type used to generate requests | | {{{requestType}}} |
| strictFields | Add strictness annotations to all model fields | true | {{{x-strictFields}}} |
| useKatip | Sets the default value for the UseKatip cabal flag. If true, the katip package provides logging instead of monad-logger | true | {{{x-useKatip}}} |
+| queryExtraUnreserved | Configures additional querystring characters which must not be URI encoded, e.g. '+' or ':' | | {{{x-queryExtraUnreserved}}} |
[1]: https://www.stackage.org/haddock/lts-9.0/iso8601-time-0.1.4/Data-Time-ISO8601.html#v:formatISO8601Millis
diff --git a/modules/openapi-generator/src/main/resources/haskell-http-client/haskell-http-client.cabal.mustache b/modules/openapi-generator/src/main/resources/haskell-http-client/haskell-http-client.cabal.mustache
index 93aab9a009c3..ebc4c30243f7 100644
--- a/modules/openapi-generator/src/main/resources/haskell-http-client/haskell-http-client.cabal.mustache
+++ b/modules/openapi-generator/src/main/resources/haskell-http-client/haskell-http-client.cabal.mustache
@@ -42,18 +42,18 @@ library
aeson >=1.0 && <2.0
, base >=4.7 && <5.0
, base64-bytestring >1.0 && <2.0
- , bytestring >=0.10.0 && <0.11
+ , bytestring >=0.10.0
, case-insensitive
, containers >=0.5.0.0 && <0.8
, deepseq >= 1.4 && <1.6
, exceptions >= 0.4
, http-api-data >= 0.3.4 && <0.5
- , http-client >=0.5 && <0.7
+ , http-client >=0.5 && <0.8
, http-client-tls
, http-media >= 0.4 && < 0.9
, http-types >=0.8 && <0.13
, iso8601-time >=0.1.3 && <0.2.0
- , microlens >= 0.4.3 && <0.5
+ , microlens >= 0.4.3
, mtl >=2.2.1
, network >=2.6.2 && <3.9
, random >=1.1
@@ -99,7 +99,7 @@ test-suite tests
, QuickCheck
, aeson
, base >=4.7 && <5.0
- , bytestring >=0.10.0 && <0.11
+ , bytestring >=0.10.0
, containers
, hspec >=1.8
, iso8601-time
diff --git a/modules/openapi-generator/src/main/resources/haskell-http-client/stack.mustache b/modules/openapi-generator/src/main/resources/haskell-http-client/stack.mustache
index 366895208322..940a7cd0ca24 100644
--- a/modules/openapi-generator/src/main/resources/haskell-http-client/stack.mustache
+++ b/modules/openapi-generator/src/main/resources/haskell-http-client/stack.mustache
@@ -1,4 +1,4 @@
-resolver: lts-14.27
+resolver: lts-18.6
build:
haddock-arguments:
haddock-args:
diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/data_class_opt_var.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/data_class_opt_var.mustache
index 2929c361b1a7..b1d925af6133 100644
--- a/modules/openapi-generator/src/main/resources/kotlin-client/data_class_opt_var.mustache
+++ b/modules/openapi-generator/src/main/resources/kotlin-client/data_class_opt_var.mustache
@@ -18,4 +18,4 @@
{{#deprecated}}
@Deprecated(message = "This property is deprecated.")
{{/deprecated}}
- {{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isArray}}{{#isList}}{{#uniqueItems}}kotlin.collections.Set{{/uniqueItems}}{{^uniqueItems}}kotlin.collections.List{{/uniqueItems}}{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{^items.isEnum}}{{^items.isPrimitiveType}}{{^items.isModel}}{{#kotlinx_serialization}}@Contextual {{/kotlinx_serialization}}{{/items.isModel}}{{/items.isPrimitiveType}}{{{items.dataType}}}{{/items.isEnum}}{{#items.isEnum}}{{classname}}.{{{nameInCamelCase}}}{{/items.isEnum}}>{{/isArray}}{{^isEnum}}{{^isArray}}{{{dataType}}}{{/isArray}}{{/isEnum}}{{#isEnum}}{{^isArray}}{{classname}}.{{{nameInCamelCase}}}{{/isArray}}{{/isEnum}}? = {{defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}}
\ No newline at end of file
+ {{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isArray}}{{#isList}}{{#uniqueItems}}kotlin.collections.Set{{/uniqueItems}}{{^uniqueItems}}kotlin.collections.List{{/uniqueItems}}{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{^items.isEnum}}{{^items.isPrimitiveType}}{{^items.isModel}}{{#kotlinx_serialization}}@Contextual {{/kotlinx_serialization}}{{/items.isModel}}{{/items.isPrimitiveType}}{{{items.dataType}}}{{/items.isEnum}}{{#items.isEnum}}{{classname}}.{{{nameInCamelCase}}}{{/items.isEnum}}>{{/isArray}}{{^isEnum}}{{^isArray}}{{{dataType}}}{{/isArray}}{{/isEnum}}{{#isEnum}}{{^isArray}}{{classname}}.{{{nameInCamelCase}}}{{/isArray}}{{/isEnum}}? = {{defaultValue}}{{^defaultValue}}null{{/defaultValue}}
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache
index 84fbd169c09f..70a442772359 100644
--- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache
+++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-okhttp/infrastructure/ApiClient.kt.mustache
@@ -29,6 +29,12 @@ import okhttp3.MultipartBody
import okhttp3.Call
import okhttp3.Callback
import okhttp3.Response
+{{#jvm-okhttp3}}
+import okhttp3.internal.Util.EMPTY_REQUEST
+{{/jvm-okhttp3}}
+{{#jvm-okhttp4}}
+import okhttp3.internal.EMPTY_REQUEST
+{{/jvm-okhttp4}}
import java.io.BufferedWriter
import java.io.File
import java.io.FileWriter
@@ -161,25 +167,49 @@ import com.squareup.moshi.adapter
}.build()
}
{{#jvm-okhttp3}}
- mediaType == JsonMediaType -> RequestBody.create(
- {{#moshi}}
- MediaType.parse(mediaType), Serializer.moshi.adapter(T::class.java).toJson(content)
- {{/moshi}}
- {{#gson}}
- MediaType.parse(mediaType), Serializer.gson.toJson(content, T::class.java)
- {{/gson}}
- {{#jackson}}
- MediaType.parse(mediaType), Serializer.jacksonObjectMapper.writeValueAsString(content)
- {{/jackson}}
- {{#kotlinx_serialization}}
- MediaType.parse(mediaType), Serializer.jvmJson.encodeToString(content)
- {{/kotlinx_serialization}}
- )
+ mediaType == JsonMediaType -> {
+ if (content == null) {
+ EMPTY_REQUEST
+ } else {
+ RequestBody.create(
+ {{#moshi}}
+ MediaType.parse(mediaType), Serializer.moshi.adapter(T::class.java).toJson(content)
+ {{/moshi}}
+ {{#gson}}
+ MediaType.parse(mediaType), Serializer.gson.toJson(content, T::class.java)
+ {{/gson}}
+ {{#jackson}}
+ MediaType.parse(mediaType), Serializer.jacksonObjectMapper.writeValueAsString(content)
+ {{/jackson}}
+ {{#kotlinx_serialization}}
+ MediaType.parse(mediaType), Serializer.jvmJson.encodeToString(content)
+ {{/kotlinx_serialization}}
+ )
+ }
+ }
{{/jvm-okhttp3}}
{{#jvm-okhttp4}}
- mediaType == JsonMediaType -> {{#moshi}}Serializer.moshi.adapter(T::class.java).toJson(content){{/moshi}}{{#gson}}Serializer.gson.toJson(content, T::class.java){{/gson}}{{#jackson}}Serializer.jacksonObjectMapper.writeValueAsString(content){{/jackson}}{{#kotlinx_serialization}}Serializer.jvmJson.encodeToString(content){{/kotlinx_serialization}}.toRequestBody(
- mediaType.toMediaTypeOrNull()
- )
+ mediaType == JsonMediaType -> {
+ if (content == null) {
+ EMPTY_REQUEST
+ } else {
+ {{#moshi}}
+ Serializer.moshi.adapter(T::class.java).toJson(content)
+ {{/moshi}}
+ {{#gson}}
+ Serializer.gson.toJson(content, T::class.java)
+ {{/gson}}
+ {{#jackson}}
+ Serializer.jacksonObjectMapper.writeValueAsString(content)
+ {{/jackson}}
+ {{#kotlinx_serialization}}
+ Serializer.jvmJson.encodeToString(content)
+ {{/kotlinx_serialization}}
+ .toRequestBody(
+ mediaType.toMediaTypeOrNull()
+ )
+ }
+ }
{{/jvm-okhttp4}}
mediaType == XmlMediaType -> throw UnsupportedOperationException("xml not currently supported.")
// TODO: this should be extended with other serializers
@@ -340,10 +370,10 @@ import com.squareup.moshi.adapter
val call = client.newCall(request)
continuation.invokeOnCancellation { call.cancel() }
call.enqueue(object : Callback {
- override fun onFailure(c: Call, e: IOException) {
+ override fun onFailure(call: Call, e: IOException) {
continuation.resumeWithException(e)
}
- override fun onResponse(c: Call, response: Response) {
+ override fun onResponse(call: Call, response: Response) {
continuation.resume(response)
}
})
diff --git a/modules/openapi-generator/src/main/resources/kotlin-server-deprecated/data_class_opt_var.mustache b/modules/openapi-generator/src/main/resources/kotlin-server-deprecated/data_class_opt_var.mustache
index 89e3b61240ab..a8595b2b7f3c 100644
--- a/modules/openapi-generator/src/main/resources/kotlin-server-deprecated/data_class_opt_var.mustache
+++ b/modules/openapi-generator/src/main/resources/kotlin-server-deprecated/data_class_opt_var.mustache
@@ -1,4 +1,4 @@
{{#description}}
/* {{{.}}} */
{{/description}}
- {{>modelMutable}} {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}}
\ No newline at end of file
+ {{>modelMutable}} {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{defaultValue}}{{^defaultValue}}null{{/defaultValue}}
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/kotlin-server/data_class_opt_var.mustache b/modules/openapi-generator/src/main/resources/kotlin-server/data_class_opt_var.mustache
index 89e3b61240ab..a8595b2b7f3c 100644
--- a/modules/openapi-generator/src/main/resources/kotlin-server/data_class_opt_var.mustache
+++ b/modules/openapi-generator/src/main/resources/kotlin-server/data_class_opt_var.mustache
@@ -1,4 +1,4 @@
{{#description}}
/* {{{.}}} */
{{/description}}
- {{>modelMutable}} {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}}
\ No newline at end of file
+ {{>modelMutable}} {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{defaultValue}}{{^defaultValue}}null{{/defaultValue}}
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/kotlin-spring/interfaceOptVar.mustache b/modules/openapi-generator/src/main/resources/kotlin-spring/interfaceOptVar.mustache
index 0c560f12cffb..354922c426fa 100644
--- a/modules/openapi-generator/src/main/resources/kotlin-spring/interfaceOptVar.mustache
+++ b/modules/openapi-generator/src/main/resources/kotlin-spring/interfaceOptVar.mustache
@@ -1,3 +1,3 @@
{{#swaggerAnnotations}}
@ApiModelProperty({{#example}}example = "{{{.}}}", {{/example}}{{#required}}required = {{required}}, {{/required}}{{#isReadOnly}}readOnly = {{{isReadOnly}}}, {{/isReadOnly}}value = "{{{description}}}"){{/swaggerAnnotations}}
- {{>modelMutable}} {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? {{^discriminator}}= {{defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}}{{/discriminator}}
\ No newline at end of file
+ {{>modelMutable}} {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? {{^discriminator}}= {{defaultValue}}{{^defaultValue}}null{{/defaultValue}}{{/discriminator}}
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/kotlin-vertx-server/data_class_opt_var.mustache b/modules/openapi-generator/src/main/resources/kotlin-vertx-server/data_class_opt_var.mustache
index 89e3b61240ab..a8595b2b7f3c 100644
--- a/modules/openapi-generator/src/main/resources/kotlin-vertx-server/data_class_opt_var.mustache
+++ b/modules/openapi-generator/src/main/resources/kotlin-vertx-server/data_class_opt_var.mustache
@@ -1,4 +1,4 @@
{{#description}}
/* {{{.}}} */
{{/description}}
- {{>modelMutable}} {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}}
\ No newline at end of file
+ {{>modelMutable}} {{{name}}}: {{#isEnum}}{{classname}}.{{nameInCamelCase}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{defaultValue}}{{^defaultValue}}null{{/defaultValue}}
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/ktorm-schema/data_class_bind_field_opt.mustache b/modules/openapi-generator/src/main/resources/ktorm-schema/data_class_bind_field_opt.mustache
index 4fae4293de59..6489b2bcc3cc 100644
--- a/modules/openapi-generator/src/main/resources/ktorm-schema/data_class_bind_field_opt.mustache
+++ b/modules/openapi-generator/src/main/resources/ktorm-schema/data_class_bind_field_opt.mustache
@@ -1 +1 @@
-{{#vendorExtensions}}{{#x-ktorm-schema}}{{#columnDefinition}} {{{name}}} = row[{{{name}}}] {{#defaultvalue}}?: {{{.}}}{{/defaultvalue}} /* {{{colKotlinType}}}? */{{/columnDefinition}}{{/x-ktorm-schema}}{{/vendorExtensions}}{{#description}} /* {{{.}}} */{{/description}}
\ No newline at end of file
+{{#vendorExtensions}}{{#x-ktorm-schema}}{{#columnDefinition}} {{{name}}} = row[{{{name}}}] {{#defaultValue}}?: {{{.}}}{{/defaultValue}} /* {{{colKotlinType}}}? */{{/columnDefinition}}{{/x-ktorm-schema}}{{/vendorExtensions}}{{#description}} /* {{{.}}} */{{/description}}
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/python/api.mustache b/modules/openapi-generator/src/main/resources/python/api.mustache
index 573224455a97..841ac8bb8557 100644
--- a/modules/openapi-generator/src/main/resources/python/api.mustache
+++ b/modules/openapi-generator/src/main/resources/python/api.mustache
@@ -18,7 +18,6 @@ from {{packageName}}.model_utils import ( # noqa: F401
{{/imports}}
-{{#operations}}
class {{classname}}(object):
"""NOTE: This class is auto generated by OpenAPI Generator
Ref: https://openapi-generator.tech
@@ -30,102 +29,9 @@ class {{classname}}(object):
if api_client is None:
api_client = ApiClient()
self.api_client = api_client
+{{#operations}}
{{#operation}}
-
- def __{{operationId}}(
- self,
-{{#requiredParams}}
-{{^defaultValue}}
- {{paramName}},
-{{/defaultValue}}
-{{/requiredParams}}
-{{#requiredParams}}
-{{#defaultValue}}
- {{paramName}}={{{defaultValue}}},
-{{/defaultValue}}
-{{/requiredParams}}
- **kwargs
- ):
- """{{{summary}}}{{^summary}}{{operationId}}{{/summary}} # noqa: E501
-
-{{#notes}}
- {{{.}}} # noqa: E501
-{{/notes}}
- This method makes a synchronous HTTP request by default. To make an
- asynchronous HTTP request, please pass async_req=True
-
- >>> thread = api.{{operationId}}({{#requiredParams}}{{^defaultValue}}{{paramName}}, {{/defaultValue}}{{/requiredParams}}{{#requiredParams}}{{#defaultValue}}{{paramName}}={{{defaultValue}}}, {{/defaultValue}}{{/requiredParams}}async_req=True)
- >>> result = thread.get()
-
-{{#requiredParams}}
-{{#-last}}
- Args:
-{{/-last}}
-{{/requiredParams}}
-{{#requiredParams}}
-{{^defaultValue}}
- {{paramName}} ({{dataType}}):{{#description}} {{{.}}}{{/description}}
-{{/defaultValue}}
-{{/requiredParams}}
-{{#requiredParams}}
-{{#defaultValue}}
- {{paramName}} ({{dataType}}):{{#description}} {{{.}}}.{{/description}} defaults to {{{defaultValue}}}, must be one of [{{{defaultValue}}}]
-{{/defaultValue}}
-{{/requiredParams}}
-
- Keyword Args:{{#optionalParams}}
- {{paramName}} ({{dataType}}):{{#description}} {{{.}}}.{{/description}} [optional]{{#defaultValue}} if omitted the server will use the default value of {{{.}}}{{/defaultValue}}{{/optionalParams}}
- _return_http_data_only (bool): response data without head status
- code and headers. Default is True.
- _preload_content (bool): if False, the urllib3.HTTPResponse object
- will be returned without reading/decoding response data.
- Default is True.
- _request_timeout (int/float/tuple): timeout setting for this request. If
- one number provided, it will be total request timeout. It can also
- be a pair (tuple) of (connection, read) timeouts.
- Default is None.
- _check_input_type (bool): specifies if type checking
- should be done one the data sent to the server.
- Default is True.
- _check_return_type (bool): specifies if type checking
- should be done one the data received from the server.
- Default is True.
- _host_index (int/None): specifies the index of the server
- that we want to use.
- Default is read from the configuration.
- async_req (bool): execute request asynchronously
-
- Returns:
- {{returnType}}{{^returnType}}None{{/returnType}}
- If the method is called asynchronously, returns the request
- thread.
- """
- kwargs['async_req'] = kwargs.get(
- 'async_req', False
- )
- kwargs['_return_http_data_only'] = kwargs.get(
- '_return_http_data_only', True
- )
- kwargs['_preload_content'] = kwargs.get(
- '_preload_content', True
- )
- kwargs['_request_timeout'] = kwargs.get(
- '_request_timeout', None
- )
- kwargs['_check_input_type'] = kwargs.get(
- '_check_input_type', True
- )
- kwargs['_check_return_type'] = kwargs.get(
- '_check_return_type', True
- )
- kwargs['_host_index'] = kwargs.get('_host_index')
-{{#requiredParams}}
- kwargs['{{paramName}}'] = \
- {{paramName}}
-{{/requiredParams}}
- return self.call_with_http_info(**kwargs)
-
- self.{{operationId}} = _Endpoint(
+ self.{{operationId}}_endpoint = _Endpoint(
settings={
'response_type': {{#returnType}}({{{.}}},){{/returnType}}{{^returnType}}None{{/returnType}},
{{#authMethods}}
@@ -299,8 +205,105 @@ class {{classname}}(object):
'content_type': [],
{{/hasConsumes}}
},
- api_client=api_client,
- callable=__{{operationId}}
+ api_client=api_client
+ )
+{{/operation}}
+{{/operations}}
+
+{{#operations}}
+{{#operation}}
+ def {{operationId}}(
+ self,
+{{#requiredParams}}
+{{^defaultValue}}
+ {{paramName}},
+{{/defaultValue}}
+{{/requiredParams}}
+{{#requiredParams}}
+{{#defaultValue}}
+ {{paramName}}={{{defaultValue}}},
+{{/defaultValue}}
+{{/requiredParams}}
+ **kwargs
+ ):
+ """{{{summary}}}{{^summary}}{{operationId}}{{/summary}} # noqa: E501
+
+{{#notes}}
+ {{{.}}} # noqa: E501
+{{/notes}}
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.{{operationId}}({{#requiredParams}}{{^defaultValue}}{{paramName}}, {{/defaultValue}}{{/requiredParams}}{{#requiredParams}}{{#defaultValue}}{{paramName}}={{{defaultValue}}}, {{/defaultValue}}{{/requiredParams}}async_req=True)
+ >>> result = thread.get()
+
+{{#requiredParams}}
+{{#-last}}
+ Args:
+{{/-last}}
+{{/requiredParams}}
+{{#requiredParams}}
+{{^defaultValue}}
+ {{paramName}} ({{dataType}}):{{#description}} {{{.}}}{{/description}}
+{{/defaultValue}}
+{{/requiredParams}}
+{{#requiredParams}}
+{{#defaultValue}}
+ {{paramName}} ({{dataType}}):{{#description}} {{{.}}}.{{/description}} defaults to {{{defaultValue}}}, must be one of [{{{defaultValue}}}]
+{{/defaultValue}}
+{{/requiredParams}}
+
+ Keyword Args:{{#optionalParams}}
+ {{paramName}} ({{dataType}}):{{#description}} {{{.}}}.{{/description}} [optional]{{#defaultValue}} if omitted the server will use the default value of {{{.}}}{{/defaultValue}}{{/optionalParams}}
+ _return_http_data_only (bool): response data without head status
+ code and headers. Default is True.
+ _preload_content (bool): if False, the urllib3.HTTPResponse object
+ will be returned without reading/decoding response data.
+ Default is True.
+ _request_timeout (int/float/tuple): timeout setting for this request. If
+ one number provided, it will be total request timeout. It can also
+ be a pair (tuple) of (connection, read) timeouts.
+ Default is None.
+ _check_input_type (bool): specifies if type checking
+ should be done one the data sent to the server.
+ Default is True.
+ _check_return_type (bool): specifies if type checking
+ should be done one the data received from the server.
+ Default is True.
+ _host_index (int/None): specifies the index of the server
+ that we want to use.
+ Default is read from the configuration.
+ async_req (bool): execute request asynchronously
+
+ Returns:
+ {{returnType}}{{^returnType}}None{{/returnType}}
+ If the method is called asynchronously, returns the request
+ thread.
+ """
+ kwargs['async_req'] = kwargs.get(
+ 'async_req', False
+ )
+ kwargs['_return_http_data_only'] = kwargs.get(
+ '_return_http_data_only', True
+ )
+ kwargs['_preload_content'] = kwargs.get(
+ '_preload_content', True
+ )
+ kwargs['_request_timeout'] = kwargs.get(
+ '_request_timeout', None
+ )
+ kwargs['_check_input_type'] = kwargs.get(
+ '_check_input_type', True
)
+ kwargs['_check_return_type'] = kwargs.get(
+ '_check_return_type', True
+ )
+ kwargs['_host_index'] = kwargs.get('_host_index')
+{{#requiredParams}}
+ kwargs['{{paramName}}'] = \
+ {{paramName}}
+{{/requiredParams}}
+ return self.{{operationId}}_endpoint.call_with_http_info(**kwargs)
+
{{/operation}}
{{/operations}}
diff --git a/modules/openapi-generator/src/main/resources/rust/reqwest/api.mustache b/modules/openapi-generator/src/main/resources/rust/reqwest/api.mustache
index 8945ebaf689d..c37112258bae 100644
--- a/modules/openapi-generator/src/main/resources/rust/reqwest/api.mustache
+++ b/modules/openapi-generator/src/main/resources/rust/reqwest/api.mustache
@@ -81,6 +81,8 @@ pub enum {{{operationIdCamelCase}}}Error {
{{/notes}}
{{#vendorExtensions.x-group-parameters}}
pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration: &configuration::Configuration{{#allParams}}{{#-first}}, params: {{{operationIdCamelCase}}}Params{{/-first}}{{/allParams}}) -> Result<{{#supportMultipleResponses}}ResponseContent<{{{operationIdCamelCase}}}Success>{{/supportMultipleResponses}}{{^supportMultipleResponses}}{{^returnType}}(){{/returnType}}{{{returnType}}}{{/supportMultipleResponses}}, Error<{{{operationIdCamelCase}}}Error>> {
+ let local_var_configuration = configuration;
+
// unbox the parameters
{{#allParams}}
let {{paramName}} = params.{{paramName}};
@@ -89,11 +91,12 @@ pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration:
{{/vendorExtensions.x-group-parameters}}
{{^vendorExtensions.x-group-parameters}}
pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration: &configuration::Configuration, {{#allParams}}{{{paramName}}}: {{^required}}Option<{{/required}}{{#required}}{{#isNullable}}Option<{{/isNullable}}{{/required}}{{#isString}}{{#isArray}}Vec<{{/isArray}}&str{{#isArray}}>{{/isArray}}{{/isString}}{{#isUuid}}{{#isArray}}Vec<{{/isArray}}&str{{#isArray}}>{{/isArray}}{{/isUuid}}{{^isString}}{{^isUuid}}{{^isPrimitiveType}}{{^isContainer}}{{#isBodyParam}}crate::models::{{/isBodyParam}}{{/isContainer}}{{/isPrimitiveType}}{{{dataType}}}{{/isUuid}}{{/isString}}{{^required}}>{{/required}}{{#required}}{{#isNullable}}>{{/isNullable}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) -> Result<{{#supportMultipleResponses}}ResponseContent<{{{operationIdCamelCase}}}Success>{{/supportMultipleResponses}}{{^supportMultipleResponses}}{{^returnType}}(){{/returnType}}{{{returnType}}}{{/supportMultipleResponses}}, Error<{{{operationIdCamelCase}}}Error>> {
+ let local_var_configuration = configuration;
{{/vendorExtensions.x-group-parameters}}
- let local_var_client = &configuration.client;
+ let local_var_client = &local_var_configuration.client;
- let local_var_uri_str = format!("{}{{{path}}}", configuration.base_path{{#pathParams}}, {{{baseName}}}={{#isString}}crate::apis::urlencode({{/isString}}{{{paramName}}}{{^required}}.unwrap(){{/required}}{{#required}}{{#isNullable}}.unwrap(){{/isNullable}}{{/required}}{{#isArray}}.join(",").as_ref(){{/isArray}}{{#isString}}){{/isString}}{{/pathParams}});
+ let local_var_uri_str = format!("{}{{{path}}}", local_var_configuration.base_path{{#pathParams}}, {{{baseName}}}={{#isString}}crate::apis::urlencode({{/isString}}{{{paramName}}}{{^required}}.unwrap(){{/required}}{{#required}}{{#isNullable}}.unwrap(){{/isNullable}}{{/required}}{{#isArray}}.join(",").as_ref(){{/isArray}}{{#isString}}){{/isString}}{{/pathParams}});
let mut local_var_req_builder = local_var_client.request(reqwest::Method::{{{httpMethod}}}, local_var_uri_str.as_str());
{{#queryParams}}
@@ -110,7 +113,7 @@ pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration:
{{#authMethods}}
{{#isApiKey}}
{{#isKeyInQuery}}
- if let Some(ref local_var_apikey) = configuration.api_key {
+ if let Some(ref local_var_apikey) = local_var_configuration.api_key {
let local_var_key = local_var_apikey.key.clone();
let local_var_value = match local_var_apikey.prefix {
Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
@@ -122,7 +125,7 @@ pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration:
{{/isApiKey}}
{{/authMethods}}
{{/hasAuthMethods}}
- if let Some(ref local_var_user_agent) = configuration.user_agent {
+ if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
}
{{#hasHeaderParams}}
@@ -149,7 +152,7 @@ pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration:
{{#authMethods}}
{{#isApiKey}}
{{#isKeyInHeader}}
- if let Some(ref local_var_apikey) = configuration.api_key {
+ if let Some(ref local_var_apikey) = local_var_configuration.api_key {
let local_var_key = local_var_apikey.key.clone();
let local_var_value = match local_var_apikey.prefix {
Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
@@ -161,18 +164,18 @@ pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration:
{{/isApiKey}}
{{#isBasic}}
{{#isBasicBasic}}
- if let Some(ref local_var_auth_conf) = configuration.basic_auth {
+ if let Some(ref local_var_auth_conf) = local_var_configuration.basic_auth {
local_var_req_builder = local_var_req_builder.basic_auth(local_var_auth_conf.0.to_owned(), local_var_auth_conf.1.to_owned());
};
{{/isBasicBasic}}
{{#isBasicBearer}}
- if let Some(ref local_var_token) = configuration.bearer_access_token {
+ if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
};
{{/isBasicBearer}}
{{/isBasic}}
{{#isOAuth}}
- if let Some(ref local_var_token) = configuration.oauth_access_token {
+ if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
};
{{/isOAuth}}
@@ -208,18 +211,18 @@ pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration:
{{^isFile}}
{{#required}}
{{^isNullable}}
- local_var_form = local_var_form.text("{{{baseName}}}", {{{paramName}}}{{#isArray}}.join(","){{/isArray}}.to_string());
+ local_var_form = local_var_form.text("{{{baseName}}}", {{{paramName}}}{{#isArray}}.into_iter().map(|p| p.to_string()).collect::>().join(","){{/isArray}}.to_string());
{{/isNullable}}
{{#isNullable}}
match {{{paramName}}} {
- Some(local_var_param_value) => { local_var_form = local_var_form.text("{{{baseName}}}", local_var_param_value{{#isArray}}.join(","){{/isArray}}.to_string()); },
+ Some(local_var_param_value) => { local_var_form = local_var_form.text("{{{baseName}}}", local_var_param_value{{#isArray}}.into_iter().map(|p| p.to_string()).collect::>().join(","){{/isArray}}.to_string()); },
None => { local_var_form = local_var_form.text("{{{baseName}}}", ""); },
}
{{/isNullable}}
{{/required}}
{{^required}}
if let Some(local_var_param_value) = {{{paramName}}} {
- local_var_form = local_var_form.text("{{{baseName}}}", local_var_param_value{{#isArray}}.join(","){{/isArray}}.to_string());
+ local_var_form = local_var_form.text("{{{baseName}}}", local_var_param_value{{#isArray}}.into_iter().map(|p| p.to_string()).collect::>().join(","){{/isArray}}.to_string());
}
{{/required}}
{{/isFile}}
@@ -252,18 +255,18 @@ pub {{#supportAsync}}async {{/supportAsync}}fn {{{operationId}}}(configuration:
{{^isFile}}
{{#required}}
{{^isNullable}}
- local_var_form_params.insert("{{{baseName}}}", {{{paramName}}}{{#isArray}}.join(","){{/isArray}}.to_string());
+ local_var_form_params.insert("{{{baseName}}}", {{{paramName}}}{{#isArray}}.into_iter().map(|p| p.to_string()).collect::>().join(","){{/isArray}}.to_string());
{{/isNullable}}
{{#isNullable}}
match {{{paramName}}} {
- Some(local_var_param_value) => { local_var_form_params.insert("{{{baseName}}}", local_var_param_value{{#isArray}}.join(","){{/isArray}}.to_string()); },
+ Some(local_var_param_value) => { local_var_form_params.insert("{{{baseName}}}", local_var_param_value{{#isArray}}.into_iter().map(|p| p.to_string()).collect::>().join(","){{/isArray}}.to_string()); },
None => { local_var_form_params.insert("{{{baseName}}}", ""); },
}
{{/isNullable}}
{{/required}}
{{^required}}
if let Some(local_var_param_value) = {{{paramName}}} {
- local_var_form_params.insert("{{{baseName}}}", local_var_param_value{{#isArray}}.join(","){{/isArray}}.to_string());
+ local_var_form_params.insert("{{{baseName}}}", local_var_param_value{{#isArray}}.into_iter().map(|p| p.to_string()).collect::>().join(","){{/isArray}}.to_string());
}
{{/required}}
{{/isFile}}
diff --git a/modules/openapi-generator/src/main/resources/swift5/APIs.mustache b/modules/openapi-generator/src/main/resources/swift5/APIs.mustache
index f931988cf9ff..5066c60a6a8a 100644
--- a/modules/openapi-generator/src/main/resources/swift5/APIs.mustache
+++ b/modules/openapi-generator/src/main/resources/swift5/APIs.mustache
@@ -4,15 +4,19 @@
// https://openapi-generator.tech
//
-import Foundation
-{{#useVapor}}
+import Foundation{{#useVapor}}
import Vapor
-{{/useVapor}}
+{{/useVapor}}{{^removeMigrationProjectNameClass}}
-@available(*, deprecated, renamed: "{{projectName}}")
-{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} typealias {{projectName}}API = {{projectName}}
+// We reverted the change of {{projectName}}API to {{projectName}} introduced in https://github.com/OpenAPITools/openapi-generator/pull/9624
+// Because it was causing the following issue https://github.com/OpenAPITools/openapi-generator/issues/9953
+// If you are affected by this issue, please consider removing the following two lines,
+// By setting the option removeMigrationProjectNameClass to true in the generator
+@available(*, deprecated, renamed: "{{projectName}}API")
+{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} typealias {{projectName}} = {{projectName}}API
+{{/removeMigrationProjectNameClass}}
-{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class {{projectName}} {
+{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class {{projectName}}API {
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var basePath = "{{{basePath}}}"
{{#useVapor}}
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var customHeaders: HTTPHeaders = [:]
@@ -44,7 +48,7 @@ import Vapor
self.parameters = parameters
self.headers = headers
- addHeaders({{projectName}}.customHeaders)
+ addHeaders({{projectName}}API.customHeaders)
}
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func addHeaders(_ aHeaders: [String: String]) {
@@ -53,7 +57,7 @@ import Vapor
}
}
- {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ apiResponseQueue: DispatchQueue = {{projectName}}.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { }
+ {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) { }
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} func addHeader(name: String, value: String) -> Self {
if !value.isEmpty {
@@ -63,7 +67,7 @@ import Vapor
}
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func addCredential() -> Self {
- credential = {{projectName}}.credential
+ credential = {{projectName}}API.credential
return self
}
}
diff --git a/modules/openapi-generator/src/main/resources/swift5/Configuration.mustache b/modules/openapi-generator/src/main/resources/swift5/Configuration.mustache
index d6bbdc0ae264..d563d11b4acd 100644
--- a/modules/openapi-generator/src/main/resources/swift5/Configuration.mustache
+++ b/modules/openapi-generator/src/main/resources/swift5/Configuration.mustache
@@ -8,10 +8,10 @@ import Foundation{{#useVapor}}
import Vapor{{/useVapor}}
{{#swiftUseApiNamespace}}
-@available(*, deprecated, renamed: "{{projectName}}.Configuration")
-{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} typealias Configuration = {{projectName}}.Configuration
+@available(*, deprecated, renamed: "{{projectName}}API.Configuration")
+{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} typealias Configuration = {{projectName}}API.Configuration
-extension {{projectName}} {
+extension {{projectName}}API {
{{/swiftUseApiNamespace}}
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class Configuration {
{{#useVapor}}{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static var apiClient: Vapor.Client? = nil
diff --git a/modules/openapi-generator/src/main/resources/swift5/api.mustache b/modules/openapi-generator/src/main/resources/swift5/api.mustache
index 27d60d7fb5b0..b3d89985a468 100644
--- a/modules/openapi-generator/src/main/resources/swift5/api.mustache
+++ b/modules/openapi-generator/src/main/resources/swift5/api.mustache
@@ -16,7 +16,7 @@ import Vapor{{/useVapor}}
import AnyCodable
#endif{{#swiftUseApiNamespace}}
-extension {{projectName}} {
+extension {{projectName}}API {
{{/swiftUseApiNamespace}}
{{#description}}
@@ -55,7 +55,7 @@ extension {{projectName}} {
{{#isDeprecated}}
@available(*, deprecated, message: "This operation is deprecated.")
{{/isDeprecated}}
- {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}.apiResponseQueue, completion: @escaping ((_ data: {{{returnType}}}{{^returnType}}Void{{/returnType}}?, _ error: Error?) -> Void)) {
+ {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue, completion: @escaping ((_ data: {{{returnType}}}{{^returnType}}Void{{/returnType}}?, _ error: Error?) -> Void)) {
{{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).execute(apiResponseQueue) { result -> Void in
switch result {
{{#returnType}}
@@ -88,7 +88,7 @@ extension {{projectName}} {
{{#isDeprecated}}
@available(*, deprecated, message: "This operation is deprecated.")
{{/isDeprecated}}
- {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}} {{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}.apiResponseQueue) -> Promise<{{{returnType}}}{{^returnType}}Void{{/returnType}}> {
+ {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}} {{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue) -> Promise<{{{returnType}}}{{^returnType}}Void{{/returnType}}> {
let deferred = Promise<{{{returnType}}}{{^returnType}}Void{{/returnType}}>.pending()
{{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).execute(apiResponseQueue) { result -> Void in
switch result {
@@ -119,7 +119,7 @@ extension {{projectName}} {
{{#isDeprecated}}
@available(*, deprecated, message: "This operation is deprecated.")
{{/isDeprecated}}
- {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}.apiResponseQueue) -> Observable<{{{returnType}}}{{^returnType}}Void{{/returnType}}> {
+ {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue) -> Observable<{{{returnType}}}{{^returnType}}Void{{/returnType}}> {
return Observable.create { observer -> Disposable in
{{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).execute(apiResponseQueue) { result -> Void in
switch result {
@@ -154,7 +154,7 @@ extension {{projectName}} {
@available(*, deprecated, message: "This operation is deprecated.")
{{/isDeprecated}}
@available(OSX 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
- {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}.apiResponseQueue) -> AnyPublisher<{{{returnType}}}{{^returnType}}Void{{/returnType}}, Error> {
+ {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue) -> AnyPublisher<{{{returnType}}}{{^returnType}}Void{{/returnType}}, Error> {
return Future<{{{returnType}}}{{^returnType}}Void{{/returnType}}, Error>.init { promise in
{{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).execute(apiResponseQueue) { result -> Void in
switch result {
@@ -186,7 +186,7 @@ extension {{projectName}} {
{{#isDeprecated}}
@available(*, deprecated, message: "This operation is deprecated.")
{{/isDeprecated}}
- open class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}.apiResponseQueue, completion: @escaping ((_ result: Swift.Result<{{{returnType}}}{{^returnType}}Void{{/returnType}}, Error>) -> Void)) {
+ open class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue, completion: @escaping ((_ result: Swift.Result<{{{returnType}}}{{^returnType}}Void{{/returnType}}, Error>) -> Void)) {
{{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).execute(apiResponseQueue) { result -> Void in
switch result {
{{#returnType}}
@@ -231,19 +231,19 @@ extension {{projectName}} {
{{#isDeprecated}}
@available(*, deprecated, message: "This operation is deprecated.")
{{/isDeprecated}}
- {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}Raw({{#allParams}}{{paramName}}: {{#isEnum}}{{#isArray}}[{{enumName}}_{{operationId}}]{{/isArray}}{{^isArray}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}headers: HTTPHeaders = {{projectName}}.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture {
+ {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}Raw({{#allParams}}{{paramName}}: {{#isEnum}}{{#isArray}}[{{enumName}}_{{operationId}}]{{/isArray}}{{^isArray}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}headers: HTTPHeaders = {{projectName}}API.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture {
{{^pathParams}}let{{/pathParams}}{{#pathParams}}{{#-first}}var{{/-first}}{{/pathParams}} localVariablePath = "{{{path}}}"{{#pathParams}}
let {{paramName}}PreEscape = String(describing: {{#isEnum}}{{paramName}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}.rawValue{{/isContainer}}{{/isEnum}}{{^isEnum}}{{paramName}}{{/isEnum}})
let {{paramName}}PostEscape = {{paramName}}PreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? ""
localVariablePath = localVariablePath.replacingOccurrences(of: "{{=<% %>=}}{<%baseName%>}<%={{ }}=%>", with: {{paramName}}PostEscape, options: .literal, range: nil){{/pathParams}}
- let localVariableURLString = {{projectName}}.basePath + localVariablePath
+ let localVariableURLString = {{projectName}}API.basePath + localVariablePath
- guard let localVariableApiClient = {{#swiftUseApiNamespace}}{{projectName}}.{{/swiftUseApiNamespace}}Configuration.apiClient else {
+ guard let localVariableApiClient = {{#swiftUseApiNamespace}}{{projectName}}API.{{/swiftUseApiNamespace}}Configuration.apiClient else {
fatalError("Configuration.apiClient is not set.")
}
return localVariableApiClient.send(.{{httpMethod}}, headers: headers, to: URI(string: localVariableURLString)) { localVariableRequest in
- try {{#swiftUseApiNamespace}}{{projectName}}.{{/swiftUseApiNamespace}}Configuration.apiWrapper(&localVariableRequest)
+ try {{#swiftUseApiNamespace}}{{projectName}}API.{{/swiftUseApiNamespace}}Configuration.apiWrapper(&localVariableRequest)
{{#hasHeaderParams}}{{#headerParams}}
localVariableRequest.headers.add(name: "{{baseName}}", value: {{#isArray}}{{paramName}}{{^required}}?{{/required}}.map { $0{{#isEnum}}.rawValue{{/isEnum}}.description }.description{{/isArray}}{{^isArray}}{{#isEnum}}{{paramName}}{{^required}}?{{/required}}.rawValue.description{{/isEnum}}{{^isEnum}}{{paramName}}{{^required}}?{{/required}}.description{{/isEnum}}{{/isArray}}{{^required}} ?? ""{{/required}})
{{/headerParams}}{{/hasHeaderParams}}
@@ -311,7 +311,7 @@ extension {{projectName}} {
{{#isDeprecated}}
@available(*, deprecated, message: "This operation is deprecated.")
{{/isDeprecated}}
- {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isArray}}[{{enumName}}_{{operationId}}]{{/isArray}}{{^isArray}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}headers: HTTPHeaders = {{projectName}}.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture<{{#lambda.titlecase}}{{operationId}}{{/lambda.titlecase}}> {
+ {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isArray}}[{{enumName}}_{{operationId}}]{{/isArray}}{{^isArray}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}headers: HTTPHeaders = {{projectName}}API.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture<{{#lambda.titlecase}}{{operationId}}{{/lambda.titlecase}}> {
return {{operationId}}Raw({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}headers: headers, beforeSend: beforeSend).flatMapThrowing { response -> {{#lambda.titlecase}}{{operationId}}{{/lambda.titlecase}} in
switch response.status.code {
{{#responses}}
@@ -361,7 +361,7 @@ extension {{projectName}} {
let {{paramName}}PreEscape = "\({{#isEnum}}{{paramName}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}.rawValue{{/isContainer}}{{/isEnum}}{{^isEnum}}APIHelper.mapValueToPathItem({{paramName}}){{/isEnum}})"
let {{paramName}}PostEscape = {{paramName}}PreEscape.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? ""
localVariablePath = localVariablePath.replacingOccurrences(of: "{{=<% %>=}}{<%baseName%>}<%={{ }}=%>", with: {{paramName}}PostEscape, options: .literal, range: nil){{/pathParams}}
- let localVariableURLString = {{projectName}}.basePath + localVariablePath
+ let localVariableURLString = {{projectName}}API.basePath + localVariablePath
{{#bodyParam}}
let localVariableParameters = JSONEncodingHelper.encodingParameters(forEncodableObject: {{paramName}})
{{/bodyParam}}
@@ -396,7 +396,7 @@ extension {{projectName}} {
let localVariableHeaderParameters = APIHelper.rejectNilHeaders(localVariableNillableHeaders)
- let localVariableRequestBuilder: RequestBuilder<{{{returnType}}}{{^returnType}}Void{{/returnType}}>.Type = {{projectName}}.requestBuilderFactory.{{#returnType}}getBuilder(){{/returnType}}{{^returnType}}getNonDecodableBuilder(){{/returnType}}
+ let localVariableRequestBuilder: RequestBuilder<{{{returnType}}}{{^returnType}}Void{{/returnType}}>.Type = {{projectName}}API.requestBuilderFactory.{{#returnType}}getBuilder(){{/returnType}}{{^returnType}}getNonDecodableBuilder(){{/returnType}}
return localVariableRequestBuilder.init(method: "{{httpMethod}}", URLString: (localVariableUrlComponents?.string ?? localVariableURLString), parameters: localVariableParameters, headers: localVariableHeaderParameters)
}
diff --git a/modules/openapi-generator/src/main/resources/swift5/api_doc.mustache b/modules/openapi-generator/src/main/resources/swift5/api_doc.mustache
index 3327e1615bf5..7d7c58f1dc48 100644
--- a/modules/openapi-generator/src/main/resources/swift5/api_doc.mustache
+++ b/modules/openapi-generator/src/main/resources/swift5/api_doc.mustache
@@ -26,7 +26,7 @@ Method | HTTP request | Description
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) -> Observable<{{{returnType}}}{{^returnType}}Void{{/returnType}}>
{{/useRxSwift}}
{{#useVapor}}
- {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}headers: HTTPHeaders = {{projectName}}.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture<{{#lambda.titlecase}}{{operationId}}{{/lambda.titlecase}}>
+ {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}headers: HTTPHeaders = {{projectName}}API.customHeaders, beforeSend: (inout ClientRequest) throws -> () = { _ in }) -> EventLoopFuture<{{#lambda.titlecase}}{{operationId}}{{/lambda.titlecase}}>
{{/useVapor}}
```
diff --git a/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache b/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache
index 89291f2106d4..47305a4f629b 100644
--- a/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache
+++ b/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache
@@ -78,7 +78,7 @@ private var managerStore = SynchronizedDictionary()
return manager.request(URLString, method: method, parameters: parameters, encoding: encoding, headers: HTTPHeaders(headers))
}
- override {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ apiResponseQueue: DispatchQueue = {{projectName}}.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) {
+ override {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) {
let managerId = UUID().uuidString
// Create a new manager for each request to customize its request header
let manager = createAlamofireSession()
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 819a27f9c6eb..040ff4ed38d9 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
@@ -93,7 +93,7 @@ private var urlSessionStore = SynchronizedDictionary()
return modifiedRequest
}
- override {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ apiResponseQueue: DispatchQueue = {{projectName}}.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) {
+ override {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} func execute(_ apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result, Error>) -> Void) {
let urlSessionId = UUID().uuidString
// Create a new manager for each request to customize its request header
let urlSession = createURLSession()
@@ -250,7 +250,7 @@ private var urlSessionStore = SynchronizedDictionary()
for (key, value) in headers {
httpHeaders[key] = value
}
- for (key, value) in {{projectName}}.customHeaders {
+ for (key, value) in {{projectName}}API.customHeaders {
httpHeaders[key] = value
}
return httpHeaders
diff --git a/modules/openapi-generator/src/main/resources/swift5/model.mustache b/modules/openapi-generator/src/main/resources/swift5/model.mustache
index 80f382f39a3a..b6a725d05262 100644
--- a/modules/openapi-generator/src/main/resources/swift5/model.mustache
+++ b/modules/openapi-generator/src/main/resources/swift5/model.mustache
@@ -12,10 +12,10 @@ import AnyCodable
import Vapor{{/useVapor}}
{{#swiftUseApiNamespace}}
-@available(*, deprecated, renamed: "{{projectName}}.{{classname}}")
-{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} typealias {{classname}} = {{projectName}}.{{classname}}
+@available(*, deprecated, renamed: "{{projectName}}API.{{classname}}")
+{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} typealias {{classname}} = {{projectName}}API.{{classname}}
-extension {{projectName}} {
+extension {{projectName}}API {
{{/swiftUseApiNamespace}}
{{#description}}
diff --git a/modules/openapi-generator/src/main/resources/typescript-axios/package.mustache b/modules/openapi-generator/src/main/resources/typescript-axios/package.mustache
index 6c6114ebcf04..266e9de70b7d 100644
--- a/modules/openapi-generator/src/main/resources/typescript-axios/package.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-axios/package.mustache
@@ -18,7 +18,7 @@
"prepublishOnly": "npm run build"
},
"dependencies": {
- "axios": "^0.21.1"
+ "axios": "^0.21.4"
},
"devDependencies": {
"@types/node": "^12.11.5",
diff --git a/modules/openapi-generator/src/main/resources/wsdl-schema/wsdl-converter.mustache b/modules/openapi-generator/src/main/resources/wsdl-schema/wsdl-converter.mustache
index d3bc158cd593..0de132567bf1 100644
--- a/modules/openapi-generator/src/main/resources/wsdl-schema/wsdl-converter.mustache
+++ b/modules/openapi-generator/src/main/resources/wsdl-schema/wsdl-converter.mustache
@@ -30,7 +30,7 @@
{{/apiInfo}}
{{#models}}
{{#model}}
- {{^vendorExtensions.x-is-openapimodel-enum}}
+ {{^isEnum}}
{{#description}}
@@ -65,6 +65,10 @@
{{/vendorExtensions.x-prop-has-minormax}}
{{^vendorExtensions.x-prop-has-minormax}}
+ {{#vendorExtensions.x-oneof-schemas}}
+
+ {{/vendorExtensions.x-oneof-schemas}}
+ {{^vendorExtensions.x-oneof-schemas}}
{{#isContainer}}
{{/isContainer}}
@@ -77,11 +81,12 @@
{{/description}}
+ {{/vendorExtensions.x-oneof-schemas}}
{{/vendorExtensions.x-prop-has-minormax}}
{{/vars}}
- {{/vendorExtensions.x-is-openapimodel-enum}}
+ {{/isEnum}}
{{/model}}
{{/models}}
{{#models}}
@@ -206,7 +211,7 @@
{{#message}}
-
+
{{message}}
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 6d74693c21a3..c8ce597df0d4 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
@@ -1137,10 +1137,15 @@ public void testComposedSchemaAllOfDiscriminatorMapLegacy() {
Assert.assertNull(reptile.discriminator);
// the MyPets discriminator contains Cat and Lizard
+ List myPetsModelNames = Arrays.asList("Cat", "Lizard");
CodegenDiscriminator myPetDisc = new CodegenDiscriminator();
myPetDisc.setPropertyName(propertyName);
myPetDisc.setPropertyBaseName(propertyBaseName);
hs.clear();
+ for (String myPetsModelName: myPetsModelNames) {
+ hs.add(new CodegenDiscriminator.MappedModel(myPetsModelName, codegen.toModelName(myPetsModelName)));
+ }
+ myPetDisc.setMappedModels(hs);
modelName = "MyPets";
sc = openAPI.getComponents().getSchemas().get(modelName);
CodegenModel myPets = codegen.fromModel(modelName, sc);
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 48fa9cadcfbb..aaa1c0530990 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
@@ -17,8 +17,10 @@
package org.openapitools.codegen.java;
+import static org.openapitools.codegen.TestUtils.assertFileContains;
import static org.openapitools.codegen.TestUtils.validateJavaSourceFiles;
import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
import java.io.File;
@@ -43,6 +45,7 @@
import java.util.stream.Collectors;
import org.openapitools.codegen.ClientOptInput;
+import org.openapitools.codegen.CodegenConfig;
import org.openapitools.codegen.CodegenConstants;
import org.openapitools.codegen.CodegenModel;
import org.openapitools.codegen.CodegenOperation;
@@ -55,7 +58,9 @@
import org.openapitools.codegen.config.CodegenConfigurator;
import org.openapitools.codegen.languages.AbstractJavaCodegen;
import org.openapitools.codegen.languages.JavaClientCodegen;
+import org.openapitools.codegen.utils.ModelUtils;
import org.testng.Assert;
+import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableMap;
@@ -1164,4 +1169,188 @@ public void testWebClientWithUseAbstractionForFiles() throws IOException {
"formParams.add(\"file\", file);"
);
}
+
+ /**
+ * See https://github.com/OpenAPITools/openapi-generator/issues/8352
+ */
+ @Test
+ public void testRestTemplateWithFreeFormInQueryParameters() throws IOException {
+ final Map properties = new HashMap<>();
+ properties.put(AbstractJavaCodegen.JAVA8_MODE, true);
+ properties.put(CodegenConstants.API_PACKAGE, "xyz.abcdef.api");
+
+ final File output = Files.createTempDirectory("test")
+ .toFile();
+ output.deleteOnExit();
+
+ final CodegenConfigurator configurator = new CodegenConfigurator().setGeneratorName("java")
+ .setLibrary(JavaClientCodegen.RESTTEMPLATE)
+ .setAdditionalProperties(properties)
+ .setInputSpec("src/test/resources/3_0/issue8352.yaml")
+ .setOutputDir(output.getAbsolutePath()
+ .replace("\\", "/"));
+
+ final DefaultGenerator generator = new DefaultGenerator();
+ final List files = generator.opts(configurator.toClientOptInput())
+ .generate();
+ files.forEach(File::deleteOnExit);
+
+ final Path defaultApi = Paths.get(output + "/src/main/java/xyz/abcdef/ApiClient.java");
+ TestUtils.assertFileContains(defaultApi, "value instanceof Map");
+ }
+
+ /**
+ * See https://github.com/OpenAPITools/openapi-generator/issues/8352
+ */
+ @Test
+ public void testWebClientWithFreeFormInQueryParameters() throws IOException {
+ final Map properties = new HashMap<>();
+ properties.put(AbstractJavaCodegen.JAVA8_MODE, true);
+ properties.put(CodegenConstants.API_PACKAGE, "xyz.abcdef.api");
+
+ final File output = Files.createTempDirectory("test")
+ .toFile();
+ output.deleteOnExit();
+
+ final CodegenConfigurator configurator = new CodegenConfigurator().setGeneratorName("java")
+ .setLibrary(JavaClientCodegen.WEBCLIENT)
+ .setAdditionalProperties(properties)
+ .setInputSpec("src/test/resources/3_0/issue8352.yaml")
+ .setOutputDir(output.getAbsolutePath()
+ .replace("\\", "/"));
+
+ final DefaultGenerator generator = new DefaultGenerator();
+ final List files = generator.opts(configurator.toClientOptInput())
+ .generate();
+ files.forEach(File::deleteOnExit);
+
+ final Path defaultApi = Paths.get(output + "/src/main/java/xyz/abcdef/ApiClient.java");
+ TestUtils.assertFileContains(defaultApi, "value instanceof Map");
+ }
+
+ @Test(dataProvider = "librariesToSpecificationsCartesianProduct")
+ public void oneOfModelsGeneration(String library, String specificationFile) throws IOException {
+ File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
+ output.deleteOnExit();
+ String outputPath = output.getAbsolutePath().replace('\\', '/');
+
+ final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/" + specificationFile);
+ final CodegenConfig codegen = new JavaClientCodegen();
+ ((JavaClientCodegen)codegen).setSerializationLibrary(JavaClientCodegen.SERIALIZATION_LIBRARY_JACKSON);
+ codegen.setLibrary(library);
+ codegen.setOpenAPI(openAPI);
+ codegen.setOutputDir(output.getAbsolutePath());
+
+ ClientOptInput input = new ClientOptInput();
+ input.openAPI(openAPI);
+ input.config(codegen);
+
+ DefaultGenerator generator = new DefaultGenerator();
+
+ generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true");
+ generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false");
+ generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false");
+ generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true");
+ generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false");
+
+ generator.opts(input).generate();
+
+ final String responseCode = "200";
+ final String extension = "x-one-of-name";
+ final Operation operation = openAPI.getPaths().get("/addFruits").getPost();
+ List oneOfModels = new ArrayList<>();
+
+ // If response body contains oneOf definition - add OneOf model
+ final ApiResponse apiResponse = operation.getResponses().get(responseCode);
+ final Schema responseSchema = ModelUtils.getSchemaFromResponse(apiResponse);
+ if (ModelUtils.isArraySchema(responseSchema)) {
+ Schema responseItems = ((ArraySchema) responseSchema).getItems();
+ if (responseItems.get$ref() == null) {
+ oneOfModels.add((String) (responseItems.getExtensions().get(extension)));
+ }
+ }
+
+ // If request body contains oneOf definition - add OneOf model
+ final RequestBody requestBody = operation.getRequestBody();
+ final Schema requestSchema = ModelUtils.getSchemaFromRequestBody(requestBody);
+ if (ModelUtils.isArraySchema(requestSchema)) {
+ Schema requestItems = ((ArraySchema) requestSchema).getItems();
+ if (requestItems.get$ref() == null) {
+ oneOfModels.add((String) (requestItems.getExtensions().get(extension)));
+ }
+ }
+
+ List models = new ArrayList<>();
+ // If model contains discriminator - add to OneOf models, otherwise - generic models
+ openAPI.getComponents().getSchemas().forEach((modelName, modelSchema) -> {
+ if (modelSchema.getDiscriminator() != null || (modelSchema.getExtensions() != null && modelSchema.getExtensions().containsKey("x-one-of-name"))) {
+ oneOfModels.add(modelName);
+ } else {
+ // exclude allOf models
+ if (!modelName.contains("_")) {
+ models.add(modelName);
+ }
+ }
+ });
+ assertFalse(oneOfModels.isEmpty());
+
+ final String pathFormat = "%s/%s/%s.java";
+ final String relativePath = "/src/main/java/org/openapitools/client/model";
+ final String jacksonSubTypeFormat = "@JsonSubTypes.Type(value = %s.class, name = \"%s\"),";
+
+ models.forEach(modelName -> {
+ final String modelPath = String.format(Locale.ROOT, pathFormat, outputPath, relativePath, modelName);
+
+ oneOfModels.forEach(oneOfModelName -> {
+ // Models should implement all linked OneOf interfaces
+ assertFileContains(Paths.get(modelPath), oneOfModelName);
+
+ // OneOf model should contain relevant jackson annotations
+ final String oneOfPath = String.format(Locale.ROOT, pathFormat, outputPath, relativePath, oneOfModelName);
+ assertFileContains(Paths.get(oneOfPath), String.format(Locale.ROOT, jacksonSubTypeFormat, modelName, modelName));
+ });
+ });
+ }
+
+ // Currently, not for NATIVE, JERSEY2, OKHTTP_GSON, MICROPROFILE or RETROFIT2
+ public static Object[][] librariesProviderMethod() {
+ return new Object[][] {
+ { JavaClientCodegen.FEIGN },
+ { JavaClientCodegen.GOOGLE_API_CLIENT },
+ { JavaClientCodegen.JERSEY1 },
+ { JavaClientCodegen.RESTEASY },
+ { JavaClientCodegen.RESTTEMPLATE },
+ { JavaClientCodegen.WEBCLIENT },
+ { JavaClientCodegen.REST_ASSURED },
+ { JavaClientCodegen.VERTX },
+ { JavaClientCodegen.APACHE },
+ };
+ }
+
+ public static Object[][] specificationsProviderMethod() {
+ return new Object[][] {
+ { "oneOf_inherited_class.yaml" },
+ { "oneOf_inherited_class_array.yaml" },
+ { "oneOf_interface.yaml" },
+ { "oneOf_interface_array.yaml" },
+ { "oneOf_with_allOf_inherited_class.yaml" },
+ { "oneOf_with_allOf_inherited_class_array.yaml" },
+ };
+ }
+
+ // Combines each library to each specification case
+ @DataProvider(name = "librariesToSpecificationsCartesianProduct")
+ public static Object[][] librariesToSpecificationsCartesianProduct() {
+ Object[][] librariesProvider = librariesProviderMethod();
+ Object[][] specProvider = specificationsProviderMethod();
+ Object[][] cartesianProduct = new Object[librariesProvider.length * specProvider.length][2];
+ int i = 0;
+ for (Object[] library : librariesProvider) {
+ for (Object[] spec : specProvider) {
+ cartesianProduct[i][0] = library[0];
+ cartesianProduct[i++][1] = spec[0];
+ }
+ }
+ return cartesianProduct;
+ }
}
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 b074c18682a9..f1484a5ded70 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
@@ -18,23 +18,32 @@
package org.openapitools.codegen.java.spring;
import io.swagger.parser.OpenAPIParser;
+import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.info.Info;
+import io.swagger.v3.oas.models.media.ArraySchema;
import io.swagger.v3.oas.models.media.Schema;
+import io.swagger.v3.oas.models.parameters.RequestBody;
+import io.swagger.v3.oas.models.responses.ApiResponse;
import io.swagger.v3.oas.models.servers.Server;
import io.swagger.v3.parser.core.models.ParseOptions;
import org.openapitools.codegen.*;
import org.openapitools.codegen.languages.SpringCodegen;
import org.openapitools.codegen.languages.features.CXFServerFeatures;
+import org.openapitools.codegen.utils.ModelUtils;
import org.testng.Assert;
+import org.testng.annotations.DataProvider;
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.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.stream.Collectors;
@@ -43,6 +52,7 @@
import static org.openapitools.codegen.TestUtils.assertFileNotContains;
import static org.openapitools.codegen.languages.SpringCodegen.RESPONSE_WRAPPER;
import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
public class SpringCodegenTest {
@@ -354,6 +364,7 @@ public void testAdditionalPropertiesPutForConfigValues() throws Exception {
openAPI.addServersItem(new Server().url("https://api.abcde.xy:8082/v2"));
openAPI.setInfo(new Info());
openAPI.getInfo().setTitle("Some test API");
+ openAPI.setComponents(new Components().schemas(new HashMap<>()));
codegen.preprocessOpenAPI(openAPI);
Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.TRUE);
@@ -451,6 +462,7 @@ public void testInitialConfigValues() throws Exception {
OpenAPI openAPI = new OpenAPI();
openAPI.addServersItem(new Server().url("https://api.abcde.xy:8082/v2"));
openAPI.setInfo(new Info());
+ openAPI.setComponents(new Components().schemas(new HashMap<>()));
codegen.preprocessOpenAPI(openAPI);
Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE);
@@ -762,4 +774,98 @@ public void oneOf_5381() throws IOException {
assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/FooRef.java"), "public class FooRef implements FooRefOrValue");
assertFileContains(Paths.get(outputPath + "/src/main/java/org/openapitools/model/FooRefOrValue.java"), "public interface FooRefOrValue");
}
+
+ @DataProvider(name = "specifications")
+ public static Object[][] specificationsProviderMethod() {
+ return new Object[][] {
+ { "oneOf_inherited_class.yaml" },
+ { "oneOf_inherited_class_array.yaml" },
+ { "oneOf_interface.yaml" },
+ { "oneOf_interface_array.yaml" },
+ { "oneOf_with_allOf_inherited_class.yaml" },
+ { "oneOf_with_allOf_inherited_class_array.yaml" },
+ };
+ }
+
+ @Test(dataProvider = "specifications")
+ public void oneOfModelsGeneration(String specificationFile) throws IOException {
+ File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
+ output.deleteOnExit();
+ String outputPath = output.getAbsolutePath().replace('\\', '/');
+
+ final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/" + specificationFile);
+ final CodegenConfig codegen = new SpringCodegen();
+ codegen.setOpenAPI(openAPI);
+ codegen.setOutputDir(output.getAbsolutePath());
+
+ ClientOptInput input = new ClientOptInput();
+ input.openAPI(openAPI);
+ input.config(codegen);
+
+ DefaultGenerator generator = new DefaultGenerator();
+
+ generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true");
+ generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false");
+ generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false");
+ generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true");
+ generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false");
+
+ generator.opts(input).generate();
+
+ final String responseCode = "200";
+ final String extension = "x-one-of-name";
+ final Operation operation = openAPI.getPaths().get("/addFruits").getPost();
+ List oneOfModels = new ArrayList<>();
+
+ // If response body contains oneOf definition - add OneOf model
+ final ApiResponse apiResponse = operation.getResponses().get(responseCode);
+ final Schema responseSchema = ModelUtils.getSchemaFromResponse(apiResponse);
+ if (ModelUtils.isArraySchema(responseSchema)) {
+ Schema responseItems = ((ArraySchema) responseSchema).getItems();
+ if (responseItems.get$ref() == null) {
+ oneOfModels.add((String) (responseItems.getExtensions().get(extension)));
+ }
+ }
+
+ // If request body contains oneOf definition - add OneOf model
+ final RequestBody requestBody = operation.getRequestBody();
+ final Schema requestSchema = ModelUtils.getSchemaFromRequestBody(requestBody);
+ if (ModelUtils.isArraySchema(requestSchema)) {
+ Schema requestItems = ((ArraySchema) requestSchema).getItems();
+ if (requestItems.get$ref() == null) {
+ oneOfModels.add((String) (requestItems.getExtensions().get(extension)));
+ }
+ }
+
+ List models = new ArrayList<>();
+ // If model contains discriminator - add to OneOf models, otherwise - generic models
+ openAPI.getComponents().getSchemas().forEach((modelName, modelSchema) -> {
+ if (modelSchema.getDiscriminator() != null || (modelSchema.getExtensions() != null && modelSchema.getExtensions().containsKey("x-one-of-name"))) {
+ oneOfModels.add(modelName);
+ } else {
+ // exclude allOf models
+ if (!modelName.contains("_")) {
+ models.add(modelName);
+ }
+ }
+ });
+ assertFalse(oneOfModels.isEmpty());
+
+ final String pathFormat = "%s/%s/%s.java";
+ final String relativePath = "/src/main/java/org/openapitools/model";
+ final String jacksonSubTypeFormat = "@JsonSubTypes.Type(value = %s.class, name = \"%s\"),";
+
+ models.forEach(modelName -> {
+ final String modelPath = String.format(Locale.ROOT, pathFormat, outputPath, relativePath, modelName);
+
+ oneOfModels.forEach(oneOfModelName -> {
+ // Models should implement all linked OneOf interfaces
+ assertFileContains(Paths.get(modelPath), oneOfModelName);
+
+ // OneOf model should contain relevant jackson annotations
+ final String oneOfPath = String.format(Locale.ROOT, pathFormat, outputPath, relativePath, oneOfModelName);
+ assertFileContains(Paths.get(oneOfPath), String.format(Locale.ROOT, jacksonSubTypeFormat, modelName, modelName));
+ });
+ });
+ }
}
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java
index fa562df6d7f4..cf6b8ba3bfa8 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/options/Swift5OptionsProvider.java
@@ -45,6 +45,7 @@ public class Swift5OptionsProvider implements OptionsProvider {
public static final String POD_SCREENSHOTS_VALUE = "podScreenshots";
public static final String POD_DOCUMENTATION_URL_VALUE = "podDocumentationURL";
public static final String READONLY_PROPERTIES_VALUE = "false";
+ public static final String REMOVE_MIGRATION_PROJECT_NAME_CLASS_VALUE = "false";
public static final String SWIFT_USE_API_NAMESPACE_VALUE = "swiftUseApiNamespace";
public static final String USE_BACKTICKS_ESCAPES_VALUE = "false";
public static final String GENERATE_MODEL_ADDITIONAL_PROPERTIES_VALUE = "true";
@@ -82,6 +83,7 @@ public Map createOptions() {
.put(Swift5ClientCodegen.POD_SCREENSHOTS, POD_SCREENSHOTS_VALUE)
.put(Swift5ClientCodegen.POD_DOCUMENTATION_URL, POD_DOCUMENTATION_URL_VALUE)
.put(Swift5ClientCodegen.READONLY_PROPERTIES, READONLY_PROPERTIES_VALUE)
+ .put(Swift5ClientCodegen.REMOVE_MIGRATION_PROJECT_NAME_CLASS, REMOVE_MIGRATION_PROJECT_NAME_CLASS_VALUE)
.put(Swift5ClientCodegen.SWIFT_USE_API_NAMESPACE, SWIFT_USE_API_NAMESPACE_VALUE)
.put(Swift5ClientCodegen.USE_BACKTICK_ESCAPES, USE_BACKTICKS_ESCAPES_VALUE)
.put(CodegenConstants.HIDE_GENERATION_TIMESTAMP, "true")
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/AbstractScalaCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/AbstractScalaCodegenTest.java
index 97e9c3102e8a..ce62184a0d3f 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/AbstractScalaCodegenTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/AbstractScalaCodegenTest.java
@@ -1,5 +1,7 @@
package org.openapitools.codegen.scala;
+import io.swagger.v3.oas.models.media.ObjectSchema;
+import io.swagger.v3.oas.models.media.Schema;
import org.openapitools.codegen.CodegenConstants;
import org.openapitools.codegen.languages.AbstractScalaCodegen;
import org.testng.Assert;
@@ -95,4 +97,21 @@ public void checkScalaTypeImportMapping() {
Assert.assertFalse(fakeScalaCodegen.importMapping().containsKey("BigInt"),
"BigInt is a Scala type and must not be imported");
}
+
+ @Test
+ void checkScalaTypeDeclaration() {
+
+ final AbstractScalaCodegen codegen = new P_AbstractScalaCodegen();
+
+ Schema> byteArraySchema = new ObjectSchema();
+ byteArraySchema.setType("string");
+ byteArraySchema.setFormat("byte");
+ byteArraySchema.setDescription("Schema with byte string");
+
+ Assert.assertEquals(codegen.getTypeDeclaration(byteArraySchema), "Array[Byte]",
+ "OpenApi File type represented as byte string should be represented as Array[Byte] scala type");
+
+ }
+
+
}
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpBooleanPropertyTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpBooleanPropertyTest.java
index c500dda77060..010fd99f5642 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpBooleanPropertyTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpBooleanPropertyTest.java
@@ -1,7 +1,7 @@
package org.openapitools.codegen.scala;
-import org.junit.Assert;
-import org.junit.Test;
+import org.testng.Assert;
+import org.testng.annotations.Test;
import org.openapitools.codegen.languages.ScalaSttpClientCodegen;
import java.util.HashMap;
@@ -14,7 +14,7 @@ public void shouldUseDefaultValueIfAdditionalPropertiesAreEmpty() {
Map additionalProperties = new HashMap<>();
booleanProperty.updateAdditionalProperties(additionalProperties);
- Assert.assertEquals(false, additionalProperties.get("k1"));
+ Assert.assertEquals(additionalProperties.get("k1"), false);
}
@Test
@@ -24,6 +24,6 @@ public void shouldUseGivenValueIfProvided() {
additionalProperties.put("k1", true);
booleanProperty.updateAdditionalProperties(additionalProperties);
- Assert.assertEquals(true, additionalProperties.get("k1"));
+ Assert.assertEquals(additionalProperties.get("k1"), true);
}
}
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpCodegenTest.java
index a48225430f00..653fc342d82b 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpCodegenTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpCodegenTest.java
@@ -4,6 +4,8 @@
import org.testng.Assert;
import org.testng.annotations.Test;
+import io.swagger.v3.oas.models.media.Schema;
+
public class SttpCodegenTest {
private final ScalaSttpClientCodegen codegen = new ScalaSttpClientCodegen();
@@ -17,4 +19,14 @@ public void encodePath() {
Assert.assertEquals(codegen.encodePath("before/{UserName}/after"), "before/${userName}/after");
}
+ @Test
+ public void typeByteArray() {
+ final Schema> schema = new Schema()
+ .description("Schema with byte string");
+ schema.setType("string");
+ schema.setFormat("byte");
+ String type = codegen.getTypeDeclaration(schema);
+ Assert.assertEquals(type, "Array[Byte]");
+ }
+
}
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpJsonLibraryPropertyTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpJsonLibraryPropertyTest.java
index d8473cb8f5d6..23ae32e05110 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpJsonLibraryPropertyTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpJsonLibraryPropertyTest.java
@@ -1,7 +1,7 @@
package org.openapitools.codegen.scala;
-import org.junit.Assert;
-import org.junit.Test;
+import org.testng.Assert;
+import org.testng.annotations.Test;
import org.openapitools.codegen.languages.ScalaSttpClientCodegen;
import java.util.HashMap;
@@ -13,8 +13,8 @@ public void shouldUseJson4sByDefault() {
ScalaSttpClientCodegen.JsonLibraryProperty property = new ScalaSttpClientCodegen.JsonLibraryProperty();
Map additionalProperties = new HashMap<>();
property.updateAdditionalProperties(additionalProperties);
- Assert.assertEquals(true, additionalProperties.get("json4s"));
- Assert.assertEquals(false, additionalProperties.get("circe"));
+ Assert.assertEquals(additionalProperties.get("json4s"), true);
+ Assert.assertEquals(additionalProperties.get("circe"), false);
}
@Test
@@ -23,8 +23,8 @@ public void shouldUseJson4sIfExplicitlyAskTo() {
Map additionalProperties = new HashMap<>();
additionalProperties.put("jsonLibrary", "json4s");
property.updateAdditionalProperties(additionalProperties);
- Assert.assertEquals(true, additionalProperties.get("json4s"));
- Assert.assertEquals(false, additionalProperties.get("circe"));
+ Assert.assertEquals(additionalProperties.get("json4s"), true);
+ Assert.assertEquals(additionalProperties.get("circe"), false);
}
@Test
@@ -33,7 +33,7 @@ public void shouldUseCirceIfExplicitlyAskTo() {
Map additionalProperties = new HashMap<>();
additionalProperties.put("jsonLibrary", "circe");
property.updateAdditionalProperties(additionalProperties);
- Assert.assertEquals(false, additionalProperties.get("json4s"));
- Assert.assertEquals(true, additionalProperties.get("circe"));
+ Assert.assertEquals(additionalProperties.get("json4s"), false);
+ Assert.assertEquals(additionalProperties.get("circe"), true);
}
}
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpPackagePropertyTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpPackagePropertyTest.java
index 7aa451975221..8bbdb684f1c3 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpPackagePropertyTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpPackagePropertyTest.java
@@ -1,7 +1,7 @@
package org.openapitools.codegen.scala;
-import org.junit.Assert;
-import org.junit.Test;
+import org.testng.Assert;
+import org.testng.annotations.Test;
import org.openapitools.codegen.CodegenConstants;
import org.openapitools.codegen.languages.ScalaSttpClientCodegen;
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpStringPropertyTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpStringPropertyTest.java
index f0db3bdafd31..22be5feecc86 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpStringPropertyTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpStringPropertyTest.java
@@ -1,7 +1,7 @@
package org.openapitools.codegen.scala;
-import org.junit.Assert;
-import org.junit.Test;
+import org.testng.Assert;
+import org.testng.annotations.Test;
import org.openapitools.codegen.languages.ScalaSttpClientCodegen;
import java.util.HashMap;
@@ -10,21 +10,21 @@
public class SttpStringPropertyTest {
@Test
- public void shouldUseDefaultValueIfAdditionalPropertiesAreEmpty(){
+ public void shouldUseDefaultValueIfAdditionalPropertiesAreEmpty() {
ScalaSttpClientCodegen.StringProperty property = new ScalaSttpClientCodegen.StringProperty("k1", "desc", "default");
Map additionalProperties = new HashMap<>();
property.updateAdditionalProperties(additionalProperties);
- Assert.assertEquals("default", additionalProperties.get("k1"));
+ Assert.assertEquals(additionalProperties.get("k1"), "default");
}
@Test
- public void shouldUseGivenValueIfProvided(){
+ public void shouldUseGivenValueIfProvided() {
ScalaSttpClientCodegen.StringProperty property = new ScalaSttpClientCodegen.StringProperty("k1", "desc", "default");
Map additionalProperties = new HashMap<>();
additionalProperties.put("k1", "custom");
property.updateAdditionalProperties(additionalProperties);
- Assert.assertEquals("custom", additionalProperties.get("k1"));
+ Assert.assertEquals(additionalProperties.get("k1"), "custom");
}
}
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5OptionsTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5OptionsTest.java
index 268d52bed289..15a06885bc06 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5OptionsTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/swift5/Swift5OptionsTest.java
@@ -48,6 +48,7 @@ protected void verifyOptions() {
verify(clientCodegen).setLenientTypeCast(Boolean.parseBoolean(Swift5OptionsProvider.LENIENT_TYPE_CAST_VALUE));
verify(clientCodegen).setPrependFormOrBodyParameters(Boolean.valueOf(Swift5OptionsProvider.PREPEND_FORM_OR_BODY_PARAMETERS_VALUE));
verify(clientCodegen).setReadonlyProperties(Boolean.parseBoolean(Swift5OptionsProvider.READONLY_PROPERTIES_VALUE));
+ verify(clientCodegen).setRemoveMigrationProjectNameClass(Boolean.parseBoolean(Swift5OptionsProvider.REMOVE_MIGRATION_PROJECT_NAME_CLASS_VALUE));
verify(clientCodegen).setGenerateModelAdditionalProperties(Boolean.parseBoolean(Swift5OptionsProvider.GENERATE_MODEL_ADDITIONAL_PROPERTIES_VALUE));
verify(clientCodegen).setHashableModels(Boolean.parseBoolean(Swift5OptionsProvider.HASHABLE_MODELS_VALUE));
}
diff --git a/modules/openapi-generator/src/test/resources/2_0/templates/Java/libraries/jersey2/ApiClient.mustache b/modules/openapi-generator/src/test/resources/2_0/templates/Java/libraries/jersey2/ApiClient.mustache
index f8a121d1aded..a1c91c8eadf9 100644
--- a/modules/openapi-generator/src/test/resources/2_0/templates/Java/libraries/jersey2/ApiClient.mustache
+++ b/modules/openapi-generator/src/test/resources/2_0/templates/Java/libraries/jersey2/ApiClient.mustache
@@ -526,7 +526,7 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} {
* @return API client
*/
public ApiClient setUserAgent(String userAgent) {
- userAgent = userAgent;
+ this.userAgent = userAgent;
addDefaultHeader("User-Agent", userAgent);
return this;
}
diff --git a/modules/openapi-generator/src/test/resources/3_0/issue8352.yaml b/modules/openapi-generator/src/test/resources/3_0/issue8352.yaml
new file mode 100644
index 000000000000..a1298fa8b93c
--- /dev/null
+++ b/modules/openapi-generator/src/test/resources/3_0/issue8352.yaml
@@ -0,0 +1,18 @@
+openapi: 3.0.0
+info:
+ title: test handle of free form query parameters
+ version: 0.0.1
+servers:
+ - url: "http://localhost"
+paths:
+ /some/endpoint:
+ get:
+ parameters:
+ - in: "query"
+ name: "free-form"
+ schema:
+ type: "object"
+ style: "form"
+ responses:
+ 200:
+ description: "test"
\ No newline at end of file
diff --git a/modules/openapi-generator/src/test/resources/3_0/oneOf_inherited_class.yaml b/modules/openapi-generator/src/test/resources/3_0/oneOf_inherited_class.yaml
new file mode 100644
index 000000000000..e9a4a9360024
--- /dev/null
+++ b/modules/openapi-generator/src/test/resources/3_0/oneOf_inherited_class.yaml
@@ -0,0 +1,46 @@
+openapi: 3.0.0
+info:
+ version: "1.0.0"
+ title: "API should have import for OneOf Class, models should extend OneOf Class"
+paths:
+ /addFruits:
+ post:
+ responses:
+ '200':
+ description: Returns a list of fruits
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Fruit'
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Fruit'
+components:
+ schemas:
+ Fruit:
+ type: object
+ oneOf:
+ - $ref: '#/components/schemas/Apple'
+ - $ref: '#/components/schemas/Orange'
+ discriminator:
+ propertyName: kind
+ Apple:
+ type: object
+ properties:
+ kind:
+ type: string
+ identifier:
+ type: string
+ required:
+ - kind
+ Orange:
+ type: object
+ properties:
+ kind:
+ type: string
+ identifier2:
+ type: string
+ required:
+ - kind
diff --git a/modules/openapi-generator/src/test/resources/3_0/oneOf_inherited_class_array.yaml b/modules/openapi-generator/src/test/resources/3_0/oneOf_inherited_class_array.yaml
new file mode 100644
index 000000000000..6f56d61f530a
--- /dev/null
+++ b/modules/openapi-generator/src/test/resources/3_0/oneOf_inherited_class_array.yaml
@@ -0,0 +1,50 @@
+openapi: 3.0.0
+info:
+ version: "1.0.0"
+ title: "API should have import for OneOf Class, models should extend OneOf Class"
+paths:
+ /addFruits:
+ post:
+ responses:
+ '200':
+ description: Returns a list of fruits
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Fruit'
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Fruit'
+components:
+ schemas:
+ Fruit:
+ type: object
+ oneOf:
+ - $ref: '#/components/schemas/Apple'
+ - $ref: '#/components/schemas/Orange'
+ discriminator:
+ propertyName: kind
+ Apple:
+ type: object
+ properties:
+ kind:
+ type: string
+ identifier:
+ type: string
+ required:
+ - kind
+ Orange:
+ type: object
+ properties:
+ kind:
+ type: string
+ identifier2:
+ type: string
+ required:
+ - kind
diff --git a/modules/openapi-generator/src/test/resources/3_0/oneOf_interface.yaml b/modules/openapi-generator/src/test/resources/3_0/oneOf_interface.yaml
new file mode 100644
index 000000000000..93d67198c866
--- /dev/null
+++ b/modules/openapi-generator/src/test/resources/3_0/oneOf_interface.yaml
@@ -0,0 +1,52 @@
+openapi: 3.0.0
+info:
+ version: "1.0.0"
+ title: "OneOf interface should be generated, API has link to OneOf, models implement OneOf interface"
+paths:
+ /addFruits:
+ post:
+ responses:
+ '200':
+ description: Returns a list of fruits
+ content:
+ application/json:
+ schema:
+ oneOf:
+ - $ref: '#/components/schemas/Apple'
+ - $ref: '#/components/schemas/Orange'
+ discriminator:
+ propertyName: kind
+ requestBody:
+ content:
+ application/json:
+ schema:
+ oneOf:
+ - $ref: '#/components/schemas/Apple'
+ - $ref: '#/components/schemas/Orange'
+components:
+ schemas:
+ Apple:
+ type: object
+ properties:
+ kind:
+ type: string
+ identifier:
+ type: string
+ required:
+ - kind
+ Orange:
+ type: object
+ properties:
+ kind:
+ type: string
+ identifier2:
+ type: string
+ required:
+ - kind
+ Fruit:
+ type: object
+ oneOf:
+ - $ref: '#/components/schemas/Apple'
+ - $ref: '#/components/schemas/Orange'
+ discriminator:
+ propertyName: kind
diff --git a/modules/openapi-generator/src/test/resources/3_0/oneOf_interface_array.yaml b/modules/openapi-generator/src/test/resources/3_0/oneOf_interface_array.yaml
new file mode 100644
index 000000000000..77122d4b576d
--- /dev/null
+++ b/modules/openapi-generator/src/test/resources/3_0/oneOf_interface_array.yaml
@@ -0,0 +1,51 @@
+openapi: 3.0.0
+info:
+ version: "1.0.0"
+ title: "OneOf interface should be generated, API has link to OneOf, models implement OneOf interface"
+paths:
+ /addFruits:
+ post:
+ responses:
+ '200':
+ description: Returns a list of fruits
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ oneOf:
+ - $ref: '#/components/schemas/Apple'
+ - $ref: '#/components/schemas/Orange'
+ discriminator:
+ propertyName: kind
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ oneOf:
+ - $ref: '#/components/schemas/Apple'
+ - $ref: '#/components/schemas/Orange'
+ discriminator:
+ propertyName: kind
+components:
+ schemas:
+ Apple:
+ type: object
+ properties:
+ kind:
+ type: string
+ identifier:
+ type: string
+ required:
+ - kind
+ Orange:
+ type: object
+ properties:
+ kind:
+ type: string
+ identifier2:
+ type: string
+ required:
+ - kind
diff --git a/modules/openapi-generator/src/test/resources/3_0/oneOf_with_allOf_inherited_class.yaml b/modules/openapi-generator/src/test/resources/3_0/oneOf_with_allOf_inherited_class.yaml
new file mode 100644
index 000000000000..76134cd5dd73
--- /dev/null
+++ b/modules/openapi-generator/src/test/resources/3_0/oneOf_with_allOf_inherited_class.yaml
@@ -0,0 +1,46 @@
+openapi: 3.0.0
+info:
+ version: "1.0.0"
+ title: "API should have import for OneOf Class, models should extend OneOf Class"
+paths:
+ /addFruits:
+ post:
+ responses:
+ '200':
+ description: Returns a list of fruits
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Fruit'
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Fruit'
+components:
+ schemas:
+ Apple:
+ type: object
+ allOf:
+ - $ref: '#/components/schemas/Fruit'
+ - type: object
+ properties:
+ identifier:
+ type: string
+ Orange:
+ type: object
+ allOf:
+ - $ref: '#/components/schemas/Fruit'
+ - type: object
+ properties:
+ identifier2:
+ type: string
+ Fruit:
+ type: object
+ properties:
+ kind:
+ type: string
+ required:
+ - kind
+ discriminator:
+ propertyName: kind
diff --git a/modules/openapi-generator/src/test/resources/3_0/oneOf_with_allOf_inherited_class_array.yaml b/modules/openapi-generator/src/test/resources/3_0/oneOf_with_allOf_inherited_class_array.yaml
new file mode 100644
index 000000000000..c067a483714d
--- /dev/null
+++ b/modules/openapi-generator/src/test/resources/3_0/oneOf_with_allOf_inherited_class_array.yaml
@@ -0,0 +1,50 @@
+openapi: 3.0.0
+info:
+ version: "1.0.0"
+ title: "API should have import for OneOf Class, models should extend OneOf Class"
+paths:
+ /addFruits:
+ post:
+ responses:
+ '200':
+ description: Returns a list of fruits
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Fruit'
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Fruit'
+components:
+ schemas:
+ Apple:
+ type: object
+ allOf:
+ - $ref: '#/components/schemas/Fruit'
+ - type: object
+ properties:
+ identifier:
+ type: string
+ Orange:
+ type: object
+ allOf:
+ - $ref: '#/components/schemas/Fruit'
+ - type: object
+ properties:
+ identifier2:
+ type: string
+ Fruit:
+ type: object
+ properties:
+ kind:
+ type: string
+ required:
+ - kind
+ discriminator:
+ propertyName: kind
diff --git a/samples/client/petstore/cpp-qt/.gitignore b/samples/client/petstore/cpp-qt/.gitignore
deleted file mode 100644
index 378eac25d311..000000000000
--- a/samples/client/petstore/cpp-qt/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-build
diff --git a/samples/client/petstore/cpp-qt/PetStore/PetStore.pro b/samples/client/petstore/cpp-qt/PetStore/PetStore.pro
index 88d64d639582..961daeeeffc6 100644
--- a/samples/client/petstore/cpp-qt/PetStore/PetStore.pro
+++ b/samples/client/petstore/cpp-qt/PetStore/PetStore.pro
@@ -18,6 +18,8 @@ TEMPLATE = app
include(../client/PFXclient.pri)
+INCLUDEPATH += ../client
+
SOURCES += main.cpp \
PetApiTests.cpp \
StoreApiTests.cpp \
diff --git a/samples/client/petstore/cpp-qt/client/PFXPetApi.cpp b/samples/client/petstore/cpp-qt/client/PFXPetApi.cpp
index a17deb8dfac1..7c999d98687b 100644
--- a/samples/client/petstore/cpp-qt/client/PFXPetApi.cpp
+++ b/samples/client/petstore/cpp-qt/client/PFXPetApi.cpp
@@ -126,9 +126,15 @@ int PFXPetApi::addServerConfiguration(const QString &operation, const QUrl &url,
* @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template.
*/
void PFXPetApi::setNewServerForAllOperations(const QUrl &url, const QString &description, const QMap &variables) {
+#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
for (auto keyIt = _serverIndices.keyBegin(); keyIt != _serverIndices.keyEnd(); keyIt++) {
setServerIndex(*keyIt, addServerConfiguration(*keyIt, url, description, variables));
}
+#else
+ for (auto &e : _serverIndices.keys()) {
+ setServerIndex(e, addServerConfiguration(e, url, description, variables));
+ }
+#endif
}
/**
@@ -238,7 +244,7 @@ void PFXPetApi::addPet(const PFXPet &body) {
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
@@ -306,7 +312,7 @@ void PFXPetApi::deletePet(const qint64 &pet_id, const ::test_namespace::Optional
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
@@ -440,7 +446,7 @@ void PFXPetApi::findPetsByStatus(const QList &status) {
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
@@ -584,7 +590,7 @@ void PFXPetApi::findPetsByTags(const QList &tags) {
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
@@ -660,7 +666,7 @@ void PFXPetApi::getPetById(const qint64 &pet_id) {
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
@@ -713,7 +719,7 @@ void PFXPetApi::updatePet(const PFXPet &body) {
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
@@ -783,7 +789,7 @@ void PFXPetApi::updatePetWithForm(const qint64 &pet_id, const ::test_namespace::
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
@@ -853,7 +859,7 @@ void PFXPetApi::uploadFile(const qint64 &pet_id, const ::test_namespace::Optiona
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
diff --git a/samples/client/petstore/cpp-qt/client/PFXServerConfiguration.h b/samples/client/petstore/cpp-qt/client/PFXServerConfiguration.h
index 72bd32a4f6ed..42e7504dcaad 100644
--- a/samples/client/petstore/cpp-qt/client/PFXServerConfiguration.h
+++ b/samples/client/petstore/cpp-qt/client/PFXServerConfiguration.h
@@ -14,9 +14,11 @@
*/
#ifndef PFX_SERVERVCONFIGURATION_H
#define PFX_SERVERVCONFIGURATION_H
+
#include
#include
#include
+#include
#include
#include "PFXServerVariable.h"
diff --git a/samples/client/petstore/cpp-qt/client/PFXStoreApi.cpp b/samples/client/petstore/cpp-qt/client/PFXStoreApi.cpp
index e0e9cc9281b2..9ff025b0ad12 100644
--- a/samples/client/petstore/cpp-qt/client/PFXStoreApi.cpp
+++ b/samples/client/petstore/cpp-qt/client/PFXStoreApi.cpp
@@ -118,9 +118,15 @@ int PFXStoreApi::addServerConfiguration(const QString &operation, const QUrl &ur
* @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template.
*/
void PFXStoreApi::setNewServerForAllOperations(const QUrl &url, const QString &description, const QMap &variables) {
+#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
for (auto keyIt = _serverIndices.keyBegin(); keyIt != _serverIndices.keyEnd(); keyIt++) {
setServerIndex(*keyIt, addServerConfiguration(*keyIt, url, description, variables));
}
+#else
+ for (auto &e : _serverIndices.keys()) {
+ setServerIndex(e, addServerConfiguration(e, url, description, variables));
+ }
+#endif
}
/**
@@ -240,7 +246,7 @@ void PFXStoreApi::deleteOrder(const QString &order_id) {
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
@@ -292,7 +298,7 @@ void PFXStoreApi::getInventory() {
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
@@ -364,7 +370,7 @@ void PFXStoreApi::getOrderById(const qint64 &order_id) {
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
@@ -417,7 +423,7 @@ void PFXStoreApi::placeOrder(const PFXOrder &body) {
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
diff --git a/samples/client/petstore/cpp-qt/client/PFXUserApi.cpp b/samples/client/petstore/cpp-qt/client/PFXUserApi.cpp
index cc38ec0bb087..b2f4d4ff96d0 100644
--- a/samples/client/petstore/cpp-qt/client/PFXUserApi.cpp
+++ b/samples/client/petstore/cpp-qt/client/PFXUserApi.cpp
@@ -126,9 +126,15 @@ int PFXUserApi::addServerConfiguration(const QString &operation, const QUrl &url
* @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template.
*/
void PFXUserApi::setNewServerForAllOperations(const QUrl &url, const QString &description, const QMap &variables) {
+#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
for (auto keyIt = _serverIndices.keyBegin(); keyIt != _serverIndices.keyEnd(); keyIt++) {
setServerIndex(*keyIt, addServerConfiguration(*keyIt, url, description, variables));
}
+#else
+ for (auto &e : _serverIndices.keys()) {
+ setServerIndex(e, addServerConfiguration(e, url, description, variables));
+ }
+#endif
}
/**
@@ -238,7 +244,7 @@ void PFXUserApi::createUser(const PFXUser &body) {
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
@@ -290,7 +296,7 @@ void PFXUserApi::createUsersWithArrayInput(const QList &body) {
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
@@ -342,7 +348,7 @@ void PFXUserApi::createUsersWithListInput(const QList &body) {
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
@@ -404,7 +410,7 @@ void PFXUserApi::deleteUser(const QString &username) {
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
@@ -466,7 +472,7 @@ void PFXUserApi::getUserByName(const QString &username) {
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
@@ -546,7 +552,7 @@ void PFXUserApi::loginUser(const QString &username, const QString &password) {
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
@@ -596,7 +602,7 @@ void PFXUserApi::logoutUser() {
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
@@ -662,7 +668,7 @@ void PFXUserApi::updateUser(const QString &username, const PFXUser &body) {
input.headers.insert(keyValueIt->first, keyValueIt->second);
}
#else
- for (auto key = _defaultHeaders.keys()) {
+ for (auto key : _defaultHeaders.keys()) {
input.headers.insert(key, _defaultHeaders[key]);
}
#endif
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs
index c2fe95dff689..33b039366746 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs
@@ -341,7 +341,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Animal.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Animal.cs
index f7aae620ed3a..3f38be822d8d 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Animal.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Animal.cs
@@ -183,7 +183,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
return this.BaseValidate(validationContext);
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ApiResponse.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ApiResponse.cs
index 234a98da51eb..acceaf62ed85 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ApiResponse.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ApiResponse.cs
@@ -194,7 +194,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Apple.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Apple.cs
index 30252de25d7f..66244fcd4b2c 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Apple.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Apple.cs
@@ -166,7 +166,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
// Cultivar (string) pattern
Regex regexCultivar = new Regex(@"^[a-zA-Z\\s]*$", RegexOptions.CultureInvariant);
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AppleReq.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AppleReq.cs
index b37df3ab5a7e..5a4400200a2a 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AppleReq.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/AppleReq.cs
@@ -164,7 +164,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs
index 9d7ca3a848f2..dfcbdff093bb 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs
@@ -137,7 +137,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs
index 597c0087c72b..0ea09adcd6dc 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs
@@ -137,7 +137,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayTest.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayTest.cs
index a70e778bf822..70c54edeeea0 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayTest.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ArrayTest.cs
@@ -195,7 +195,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Banana.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Banana.cs
index 0d4590cb5644..46b952e9a18a 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Banana.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Banana.cs
@@ -136,7 +136,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/BananaReq.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/BananaReq.cs
index d36231789823..adfa4cb5164c 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/BananaReq.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/BananaReq.cs
@@ -159,7 +159,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/BasquePig.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/BasquePig.cs
index da20790401e0..c745514a4ee5 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/BasquePig.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/BasquePig.cs
@@ -149,7 +149,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Capitalization.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Capitalization.cs
index d6814413f46e..428a0ad66727 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Capitalization.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Capitalization.cs
@@ -283,7 +283,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Cat.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Cat.cs
index 181d3ceac59d..acc5f870fcd9 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Cat.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Cat.cs
@@ -149,7 +149,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
return this.BaseValidate(validationContext);
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/CatAllOf.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/CatAllOf.cs
index 593a74e0bbb0..113357ddf91d 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/CatAllOf.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/CatAllOf.cs
@@ -136,7 +136,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Category.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Category.cs
index 8875c8974194..7bb04693da09 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Category.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Category.cs
@@ -177,7 +177,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCat.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCat.cs
index ce251cfb7613..495e9d6c568b 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCat.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCat.cs
@@ -192,7 +192,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
return this.BaseValidate(validationContext);
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCatAllOf.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCatAllOf.cs
index baeb457c9828..f38b5eb17a38 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCatAllOf.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ChildCatAllOf.cs
@@ -181,7 +181,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ClassModel.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ClassModel.cs
index 6455eed39894..72483a012c6e 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ClassModel.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ClassModel.cs
@@ -137,7 +137,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs
index e1ef5fcb7654..9d1d32cd9dba 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ComplexQuadrilateral.cs
@@ -182,7 +182,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DanishPig.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DanishPig.cs
index b7895a821f83..7adee34852a8 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DanishPig.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DanishPig.cs
@@ -149,7 +149,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DeprecatedObject.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DeprecatedObject.cs
index 1bba408d1aca..4ef628eca2bb 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DeprecatedObject.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DeprecatedObject.cs
@@ -137,7 +137,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Dog.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Dog.cs
index 2eb8b0cb74b4..e876d8dc964a 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Dog.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Dog.cs
@@ -150,7 +150,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
return this.BaseValidate(validationContext);
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DogAllOf.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DogAllOf.cs
index 13ed8acb8eb5..84518fadc2cd 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DogAllOf.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/DogAllOf.cs
@@ -137,7 +137,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Drawing.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Drawing.cs
index 54753cf5d5c1..5e47d778777e 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Drawing.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Drawing.cs
@@ -215,7 +215,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumArrays.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumArrays.cs
index eb934d218fac..304ec4c234c4 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumArrays.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumArrays.cs
@@ -209,7 +209,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumTest.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumTest.cs
index bca247d0e21a..914428919ac7 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumTest.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EnumTest.cs
@@ -492,7 +492,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EquilateralTriangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EquilateralTriangle.cs
index df53986949a7..21fe08e74369 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EquilateralTriangle.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/EquilateralTriangle.cs
@@ -182,7 +182,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/File.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/File.cs
index c2bba229a2ca..4316936a2b14 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/File.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/File.cs
@@ -138,7 +138,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FileSchemaTestClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FileSchemaTestClass.cs
index 767be5a1a437..c6759aa24906 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FileSchemaTestClass.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FileSchemaTestClass.cs
@@ -166,7 +166,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Foo.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Foo.cs
index 6f323ec5c578..9aa3f0c364c5 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Foo.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Foo.cs
@@ -138,7 +138,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FormatTest.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FormatTest.cs
index 367e8528dda6..80c359e71b40 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FormatTest.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/FormatTest.cs
@@ -584,7 +584,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
// Integer (int) maximum
if(this.Integer > (int)100)
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/GrandparentAnimal.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/GrandparentAnimal.cs
index 12656a127fa5..6ca684a89b19 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/GrandparentAnimal.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/GrandparentAnimal.cs
@@ -153,7 +153,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
return this.BaseValidate(validationContext);
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs
index fecd58bf6e8e..f6219182b296 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/HasOnlyReadOnly.cs
@@ -143,7 +143,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/HealthCheckResult.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/HealthCheckResult.cs
index d96b46d30ab1..80aa2e7327ee 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/HealthCheckResult.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/HealthCheckResult.cs
@@ -137,7 +137,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/InlineResponseDefault.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/InlineResponseDefault.cs
index 5aa3f49c0447..23083ccef401 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/InlineResponseDefault.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/InlineResponseDefault.cs
@@ -137,7 +137,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/IsoscelesTriangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/IsoscelesTriangle.cs
index abe433bbed9b..6fa6aec800f9 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/IsoscelesTriangle.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/IsoscelesTriangle.cs
@@ -169,7 +169,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/List.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/List.cs
index 25695fa2798b..7b26a68a1734 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/List.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/List.cs
@@ -137,7 +137,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/MapTest.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/MapTest.cs
index bd53e65a4a86..80b9989b72c8 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/MapTest.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/MapTest.cs
@@ -246,7 +246,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs
index 9bea81f64bdf..920ac9737158 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/MixedPropertiesAndAdditionalPropertiesClass.cs
@@ -195,7 +195,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Model200Response.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Model200Response.cs
index cba1bbba4c77..4d75dd7b30a1 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Model200Response.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Model200Response.cs
@@ -165,7 +165,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ModelClient.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ModelClient.cs
index 1eb982843ea8..e7f52aeba3cc 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ModelClient.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ModelClient.cs
@@ -137,7 +137,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Name.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Name.cs
index 05d81c9be676..a613b9d82a95 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Name.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Name.cs
@@ -205,7 +205,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NullableClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NullableClass.cs
index accbc695e143..31135c0c65db 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NullableClass.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NullableClass.cs
@@ -448,7 +448,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NumberOnly.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NumberOnly.cs
index a14510d60e4b..c2f0ec4d5ec6 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NumberOnly.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/NumberOnly.cs
@@ -136,7 +136,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ObjectWithDeprecatedFields.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ObjectWithDeprecatedFields.cs
index 15f8401c64a5..4362fdb9329c 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ObjectWithDeprecatedFields.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ObjectWithDeprecatedFields.cs
@@ -226,7 +226,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Order.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Order.cs
index 023469af01ab..72eda939a4cc 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Order.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Order.cs
@@ -307,7 +307,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterComposite.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterComposite.cs
index d67ddef141e0..634161d1bf5b 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterComposite.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/OuterComposite.cs
@@ -193,7 +193,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ParentPet.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ParentPet.cs
index a205b59b6d09..899984fcc5bc 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ParentPet.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ParentPet.cs
@@ -121,7 +121,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
return this.BaseValidate(validationContext);
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Pet.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Pet.cs
index e53e978243a8..39c8380ae87f 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Pet.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Pet.cs
@@ -326,7 +326,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/QuadrilateralInterface.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/QuadrilateralInterface.cs
index 8ee739b8e688..983dfc4be994 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/QuadrilateralInterface.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/QuadrilateralInterface.cs
@@ -149,7 +149,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs
index cc931bc6e9c1..fc5e685f9c98 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ReadOnlyFirst.cs
@@ -154,7 +154,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Return.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Return.cs
index 3cdd052578d8..b3c35543c156 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Return.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Return.cs
@@ -136,7 +136,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ScaleneTriangle.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ScaleneTriangle.cs
index d6d8491bede5..7a98eae2dd46 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ScaleneTriangle.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ScaleneTriangle.cs
@@ -182,7 +182,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ShapeInterface.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ShapeInterface.cs
index da94a6af384d..edd12424c1d2 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ShapeInterface.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/ShapeInterface.cs
@@ -149,7 +149,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs
index 466236f3c6f0..94b69ee95eeb 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs
@@ -182,7 +182,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/SpecialModelName.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/SpecialModelName.cs
index c278d855ea0c..6594fe5bf7ed 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/SpecialModelName.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/SpecialModelName.cs
@@ -165,7 +165,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Tag.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Tag.cs
index a0676fc183e9..b50f051e43bc 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Tag.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Tag.cs
@@ -165,7 +165,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/TriangleInterface.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/TriangleInterface.cs
index 5596a507d525..78993edeee23 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/TriangleInterface.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/TriangleInterface.cs
@@ -149,7 +149,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/User.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/User.cs
index f38a6ae5f524..9d63f0298339 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/User.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/User.cs
@@ -459,7 +459,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Whale.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Whale.cs
index 5dabcc702711..00a9182cc197 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Whale.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Whale.cs
@@ -205,7 +205,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Zebra.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Zebra.cs
index 609d3f854b56..bce8a5f35c7f 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Zebra.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-ConditionalSerialization/src/Org.OpenAPITools/Model/Zebra.cs
@@ -206,7 +206,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs
index 5c88c5a5ce9b..9fa7018dde78 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/AdditionalPropertiesClass.cs
@@ -198,7 +198,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable Validate(ValidationContext validationContext)
{
yield break;
}
diff --git a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Animal.cs b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Animal.cs
index 65c868667334..743dedc1acd4 100644
--- a/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Animal.cs
+++ b/samples/client/petstore/csharp-netcore/OpenAPIClient-httpclient/src/Org.OpenAPITools/Model/Animal.cs
@@ -148,7 +148,7 @@ public override int GetHashCode()
///
/// Validation context
/// Validation Result
- IEnumerable IValidatableObject.Validate(ValidationContext validationContext)
+ public IEnumerable