diff --git a/.github/workflows/samples-java-client-jdk11.yaml b/.github/workflows/samples-java-client-jdk11.yaml
index bc10898a4ee0..81005ce61b65 100644
--- a/.github/workflows/samples-java-client-jdk11.yaml
+++ b/.github/workflows/samples-java-client-jdk11.yaml
@@ -74,6 +74,7 @@ jobs:
- samples/client/petstore/java/microprofile-rest-client-with-useSingleRequestParameter
- samples/client/petstore/java/apache-httpclient
- samples/client/petstore/java/feign
+ - samples/client/petstore/java/feign-hc5
- samples/client/petstore/java/feign-no-nullable
- samples/client/petstore/java/okhttp-gson-awsv4signature
- samples/openapi3/client/petstore/java/jersey2-java8-special-characters
diff --git a/bin/configs/java-feign-hc5.yaml b/bin/configs/java-feign-hc5.yaml
new file mode 100644
index 000000000000..47f816a0e3fb
--- /dev/null
+++ b/bin/configs/java-feign-hc5.yaml
@@ -0,0 +1,9 @@
+generatorName: java
+outputDir: samples/client/petstore/java/feign-hc5
+library: feign-hc5
+inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
+templateDir: modules/openapi-generator/src/main/resources/Java
+additionalProperties:
+ booleanGetterPrefix: is
+ artifactId: petstore-feign-hc5
+ hideGenerationTimestamp: "true"
\ No newline at end of file
diff --git a/docs/generators/java-microprofile.md b/docs/generators/java-microprofile.md
index 35f3cb80d1d6..682705bb613e 100644
--- a/docs/generators/java-microprofile.md
+++ b/docs/generators/java-microprofile.md
@@ -62,7 +62,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|implicitHeadersRegex|Skip header parameters that matches given regex in the generated API methods using @ApiImplicitParams annotation. Note: this parameter is ignored when implicitHeaders=true| |null|
|invokerPackage|root package for generated code| |org.openapitools.client|
|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|
-|library|library template (sub-template) to use|**jersey2** HTTP client: Jersey client 2.25.1. JSON processing: Jackson 2.17.1 **jersey3** HTTP client: Jersey client 3.1.1. JSON processing: Jackson 2.17.1 **feign** HTTP client: OpenFeign 13.2.1. JSON processing: Jackson 2.17.1 or Gson 2.10.1 **okhttp-gson** [DEFAULT] HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1. Enable Parcelable models on Android using '-DparcelableModel=true'. Enable gzip request encoding using '-DuseGzipFeature=true'. **retrofit2** HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1 (Retrofit 2.5.0) or Jackson 2.17.1. Enable the RxJava adapter using '-DuseRxJava[2/3]=true'. (RxJava 1.x or 2.x or 3.x) **resttemplate** HTTP client: Spring RestTemplate 5.3.33 (6.1.5 if `useJakartaEe=true`). JSON processing: Jackson 2.17.1 **webclient** HTTP client: Spring WebClient 5.1.18. JSON processing: Jackson 2.17.1 **restclient** HTTP client: Spring RestClient 6.1.6. JSON processing: Jackson 2.17.1 **resteasy** HTTP client: Resteasy client 4.7.6. JSON processing: Jackson 2.17.1 **vertx** HTTP client: VertX client 3.5.2. JSON processing: Jackson 2.17.1 **google-api-client** HTTP client: Google API client 2.2.0. JSON processing: Jackson 2.17.1 **rest-assured** HTTP client: rest-assured 5.3.2. JSON processing: Gson 2.10.1 or Jackson 2.17.1. Only for Java 8 **native** HTTP client: Java native HttpClient. JSON processing: Jackson 2.17.1. Only for Java11+ **microprofile** HTTP client: Microprofile client 2.0 (default, set desired version via `microprofileRestClientVersion=x.x.x`). JSON processing: JSON-B 1.0.2 or Jackson 2.17.1 **apache-httpclient** HTTP client: Apache httpclient 5.2.1. JSON processing: Jackson 2.17.1 |okhttp-gson|
+|library|library template (sub-template) to use|**jersey2** HTTP client: Jersey client 2.25.1. JSON processing: Jackson 2.17.1 **jersey3** HTTP client: Jersey client 3.1.1. JSON processing: Jackson 2.17.1 **feign** HTTP client: OpenFeign 13.2.1. JSON processing: Jackson 2.17.1 or Gson 2.10.1 **feign-hc5** HTTP client: OpenFeign 13.2.1/HttpClient5 5.4.2. JSON processing: Jackson 2.17.1 or Gson 2.10.1 **okhttp-gson** [DEFAULT] HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1. Enable Parcelable models on Android using '-DparcelableModel=true'. Enable gzip request encoding using '-DuseGzipFeature=true'. **retrofit2** HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1 (Retrofit 2.5.0) or Jackson 2.17.1. Enable the RxJava adapter using '-DuseRxJava[2/3]=true'. (RxJava 1.x or 2.x or 3.x) **resttemplate** HTTP client: Spring RestTemplate 5.3.33 (6.1.5 if `useJakartaEe=true`). JSON processing: Jackson 2.17.1 **webclient** HTTP client: Spring WebClient 5.1.18. JSON processing: Jackson 2.17.1 **restclient** HTTP client: Spring RestClient 6.1.6. JSON processing: Jackson 2.17.1 **resteasy** HTTP client: Resteasy client 4.7.6. JSON processing: Jackson 2.17.1 **vertx** HTTP client: VertX client 3.5.2. JSON processing: Jackson 2.17.1 **google-api-client** HTTP client: Google API client 2.2.0. JSON processing: Jackson 2.17.1 **rest-assured** HTTP client: rest-assured 5.3.2. JSON processing: Gson 2.10.1 or Jackson 2.17.1. Only for Java 8 **native** HTTP client: Java native HttpClient. JSON processing: Jackson 2.17.1. Only for Java11+ **microprofile** HTTP client: Microprofile client 2.0 (default, set desired version via `microprofileRestClientVersion=x.x.x`). JSON processing: JSON-B 1.0.2 or Jackson 2.17.1 **apache-httpclient** HTTP client: Apache httpclient 5.2.1. JSON processing: Jackson 2.17.1 |okhttp-gson|
|licenseName|The name of the license| |Unlicense|
|licenseUrl|The URL of the license| |http://unlicense.org|
|microprofileFramework|Framework for microprofile. Possible values "kumuluzee"| |null|
diff --git a/docs/generators/java.md b/docs/generators/java.md
index e61ea97b2316..097a06411c59 100644
--- a/docs/generators/java.md
+++ b/docs/generators/java.md
@@ -62,7 +62,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|implicitHeadersRegex|Skip header parameters that matches given regex in the generated API methods using @ApiImplicitParams annotation. Note: this parameter is ignored when implicitHeaders=true| |null|
|invokerPackage|root package for generated code| |org.openapitools.client|
|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|
-|library|library template (sub-template) to use|**jersey2** HTTP client: Jersey client 2.25.1. JSON processing: Jackson 2.17.1 **jersey3** HTTP client: Jersey client 3.1.1. JSON processing: Jackson 2.17.1 **feign** HTTP client: OpenFeign 13.2.1. JSON processing: Jackson 2.17.1 or Gson 2.10.1 **okhttp-gson** [DEFAULT] HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1. Enable Parcelable models on Android using '-DparcelableModel=true'. Enable gzip request encoding using '-DuseGzipFeature=true'. **retrofit2** HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1 (Retrofit 2.5.0) or Jackson 2.17.1. Enable the RxJava adapter using '-DuseRxJava[2/3]=true'. (RxJava 1.x or 2.x or 3.x) **resttemplate** HTTP client: Spring RestTemplate 5.3.33 (6.1.5 if `useJakartaEe=true`). JSON processing: Jackson 2.17.1 **webclient** HTTP client: Spring WebClient 5.1.18. JSON processing: Jackson 2.17.1 **restclient** HTTP client: Spring RestClient 6.1.6. JSON processing: Jackson 2.17.1 **resteasy** HTTP client: Resteasy client 4.7.6. JSON processing: Jackson 2.17.1 **vertx** HTTP client: VertX client 3.5.2. JSON processing: Jackson 2.17.1 **google-api-client** HTTP client: Google API client 2.2.0. JSON processing: Jackson 2.17.1 **rest-assured** HTTP client: rest-assured 5.3.2. JSON processing: Gson 2.10.1 or Jackson 2.17.1. Only for Java 8 **native** HTTP client: Java native HttpClient. JSON processing: Jackson 2.17.1. Only for Java11+ **microprofile** HTTP client: Microprofile client 2.0 (default, set desired version via `microprofileRestClientVersion=x.x.x`). JSON processing: JSON-B 1.0.2 or Jackson 2.17.1 **apache-httpclient** HTTP client: Apache httpclient 5.2.1. JSON processing: Jackson 2.17.1 |okhttp-gson|
+|library|library template (sub-template) to use|**jersey2** HTTP client: Jersey client 2.25.1. JSON processing: Jackson 2.17.1 **jersey3** HTTP client: Jersey client 3.1.1. JSON processing: Jackson 2.17.1 **feign** HTTP client: OpenFeign 13.2.1. JSON processing: Jackson 2.17.1 or Gson 2.10.1 **feign-hc5** HTTP client: OpenFeign 13.2.1/HttpClient5 5.4.2. JSON processing: Jackson 2.17.1 or Gson 2.10.1 **okhttp-gson** [DEFAULT] HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1. Enable Parcelable models on Android using '-DparcelableModel=true'. Enable gzip request encoding using '-DuseGzipFeature=true'. **retrofit2** HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1 (Retrofit 2.5.0) or Jackson 2.17.1. Enable the RxJava adapter using '-DuseRxJava[2/3]=true'. (RxJava 1.x or 2.x or 3.x) **resttemplate** HTTP client: Spring RestTemplate 5.3.33 (6.1.5 if `useJakartaEe=true`). JSON processing: Jackson 2.17.1 **webclient** HTTP client: Spring WebClient 5.1.18. JSON processing: Jackson 2.17.1 **restclient** HTTP client: Spring RestClient 6.1.6. JSON processing: Jackson 2.17.1 **resteasy** HTTP client: Resteasy client 4.7.6. JSON processing: Jackson 2.17.1 **vertx** HTTP client: VertX client 3.5.2. JSON processing: Jackson 2.17.1 **google-api-client** HTTP client: Google API client 2.2.0. JSON processing: Jackson 2.17.1 **rest-assured** HTTP client: rest-assured 5.3.2. JSON processing: Gson 2.10.1 or Jackson 2.17.1. Only for Java 8 **native** HTTP client: Java native HttpClient. JSON processing: Jackson 2.17.1. Only for Java11+ **microprofile** HTTP client: Microprofile client 2.0 (default, set desired version via `microprofileRestClientVersion=x.x.x`). JSON processing: JSON-B 1.0.2 or Jackson 2.17.1 **apache-httpclient** HTTP client: Apache httpclient 5.2.1. JSON processing: Jackson 2.17.1 |okhttp-gson|
|licenseName|The name of the license| |Unlicense|
|licenseUrl|The URL of the license| |http://unlicense.org|
|microprofileFramework|Framework for microprofile. Possible values "kumuluzee"| |null|
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 252566bd4d27..2a523a606b4e 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
@@ -78,6 +78,7 @@ public class JavaClientCodegen extends AbstractJavaCodegen
public static final String ERROR_OBJECT_TYPE = "errorObjectType";
public static final String FEIGN = "feign";
+ public static final String FEIGN_HC5 = "feign-hc5";
public static final String GOOGLE_API_CLIENT = "google-api-client";
public static final String JERSEY2 = "jersey2";
public static final String JERSEY3 = "jersey3";
@@ -246,6 +247,7 @@ public JavaClientCodegen() {
supportedLibraries.put(JERSEY2, "HTTP client: Jersey client 2.25.1. JSON processing: Jackson 2.17.1");
supportedLibraries.put(JERSEY3, "HTTP client: Jersey client 3.1.1. JSON processing: Jackson 2.17.1");
supportedLibraries.put(FEIGN, "HTTP client: OpenFeign 13.2.1. JSON processing: Jackson 2.17.1 or Gson 2.10.1");
+ supportedLibraries.put(FEIGN_HC5, "HTTP client: OpenFeign 13.2.1/HttpClient5 5.4.2. JSON processing: Jackson 2.17.1 or Gson 2.10.1");
supportedLibraries.put(OKHTTP_GSON, "[DEFAULT] HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1. Enable Parcelable models on Android using '-DparcelableModel=true'. Enable gzip request encoding using '-DuseGzipFeature=true'.");
supportedLibraries.put(RETROFIT_2, "HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1 (Retrofit 2.5.0) or Jackson 2.17.1. Enable the RxJava adapter using '-DuseRxJava[2/3]=true'. (RxJava 1.x or 2.x or 3.x)");
supportedLibraries.put(RESTTEMPLATE, "HTTP client: Spring RestTemplate 5.3.33 (6.1.5 if `useJakartaEe=true`). JSON processing: Jackson 2.17.1");
@@ -325,7 +327,7 @@ public void processOpts() {
// determine and cache client library type once
final boolean libApache = isLibrary(APACHE);
- final boolean libFeign = isLibrary(FEIGN);
+ final boolean libFeign = isLibrary(FEIGN) || isLibrary(FEIGN_HC5);
final boolean libGoogleApiClient = isLibrary(GOOGLE_API_CLIENT);
final boolean libJersey2 = isLibrary(JERSEY2);
final boolean libJersey3 = isLibrary(JERSEY3);
@@ -745,6 +747,14 @@ public void processOpts() {
additionalProperties.remove(SERIALIZATION_LIBRARY_JSONB);
break;
}
+
+ if (isLibrary(FEIGN)) {
+ additionalProperties.put("feign-okhttp", "true");
+ } else if (isLibrary(FEIGN_HC5)) {
+ additionalProperties.put("feign-hc5", "true");
+ setTemplateDir(FEIGN);
+ setLibrary(FEIGN);
+ }
// authentication related files
// has OAuth defined
@@ -825,7 +835,7 @@ public int compare(CodegenParameter one, CodegenParameter another) {
}
// camelize path variables for Feign client
- if (isLibrary(FEIGN)) {
+ if (isLibrary(FEIGN) || isLibrary(FEIGN_HC5)) {
OperationMap operations = objs.getOperations();
List operationList = operations.getOperation();
Pattern methodPattern = Pattern.compile("^(.*):([^:]*)$");
diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/feign/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/feign/ApiClient.mustache
index f51743a75afb..e010befdc0fb 100644
--- a/modules/openapi-generator/src/main/resources/Java/libraries/feign/ApiClient.mustache
+++ b/modules/openapi-generator/src/main/resources/Java/libraries/feign/ApiClient.mustache
@@ -9,7 +9,12 @@ import java.util.logging.Level;
import java.util.logging.Logger;
{{#jackson}}
+{{#feign-okhttp}}
import feign.okhttp.OkHttpClient;
+{{/feign-okhttp}}
+{{#feign-hc5}}
+import feign.hc5.ApacheHttp5Client;
+{{/feign-hc5}}
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
@@ -71,7 +76,12 @@ public class ApiClient {
{{#jackson}}
objectMapper = createObjectMapper();
feignBuilder = Feign.builder()
+ {{#feign-okhttp}}
.client(new OkHttpClient())
+ {{/feign-okhttp}}
+ {{#feign-hc5}}
+ .client(new ApacheHttp5Client())
+ {{/feign-hc5}}
.encoder(new FormEncoder(new JacksonEncoder(objectMapper)))
.decoder(new ApiResponseDecoder(objectMapper))
{{#hasOAuthMethods}}
diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/feign/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/feign/build.gradle.mustache
index ba05fdcb774d..28ed045cb381 100644
--- a/modules/openapi-generator/src/main/resources/Java/libraries/feign/build.gradle.mustache
+++ b/modules/openapi-generator/src/main/resources/Java/libraries/feign/build.gradle.mustache
@@ -127,7 +127,12 @@ dependencies {
implementation "io.github.openfeign:feign-jackson:$feign_version"
{{/jackson}}
implementation "io.github.openfeign:feign-slf4j:$feign_version"
+ {{#feign-okhttp}}
implementation "io.github.openfeign:feign-okhttp:$feign_version"
+ {{/feign-okhttp}}
+ {{#feign-hc5}}
+ implementation "io.github.openfeign:feign-hc5:$feign_version"
+ {{/feign-hc5}}
implementation "io.github.openfeign.form:feign-form:$feign_form_version"
{{#jackson}}
{{#joda}}
diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/feign/build.sbt.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/feign/build.sbt.mustache
index a1e09a4637ab..ca859f159ef1 100644
--- a/modules/openapi-generator/src/main/resources/Java/libraries/feign/build.sbt.mustache
+++ b/modules/openapi-generator/src/main/resources/Java/libraries/feign/build.sbt.mustache
@@ -17,7 +17,12 @@ lazy val root = (project in file(".")).
{{/jackson}}
"io.github.openfeign" % "feign-slf4j" % "13.5" % "compile",
"io.github.openfeign.form" % "feign-form" % "3.8.0" % "compile",
+{{#feign-okhttp}}
"io.github.openfeign" % "feign-okhttp" % "13.5" % "compile",
+{{/feign-okhttp}}
+{{#feign-hc5}}
+ "io.github.openfeign" % "feign-hc5" % "13.5" % "compile",
+{{/feign-hc5}}
{{#jackson}}
"com.fasterxml.jackson.core" % "jackson-core" % "2.17.1" % "compile",
"com.fasterxml.jackson.core" % "jackson-annotations" % "2.17.1" % "compile",
diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/feign/pom.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/feign/pom.mustache
index c915ea0ec9f4..8de6aa5ff0ae 100644
--- a/modules/openapi-generator/src/main/resources/Java/libraries/feign/pom.mustache
+++ b/modules/openapi-generator/src/main/resources/Java/libraries/feign/pom.mustache
@@ -265,11 +265,20 @@
feign-form
${feign-form-version}
+ {{#feign-okhttp}}
io.github.openfeign
feign-okhttp
${feign-version}
+ {{/feign-okhttp}}
+ {{#feign-hc5}}
+
+ io.github.openfeign
+ feign-hc5
+ ${feign-version}
+
+ {{/feign-hc5}}
{{#jackson}}
diff --git a/samples/client/petstore/java/feign-hc5/.github/workflows/maven.yml b/samples/client/petstore/java/feign-hc5/.github/workflows/maven.yml
new file mode 100644
index 000000000000..460f78bfd1b2
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/.github/workflows/maven.yml
@@ -0,0 +1,30 @@
+# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
+# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
+#
+# This file is auto-generated by OpenAPI Generator (https://openapi-generator.tech)
+
+name: Java CI with Maven
+
+on:
+ push:
+ branches: [ main, master ]
+ pull_request:
+ branches: [ main, master ]
+
+jobs:
+ build:
+ name: Build OpenAPI Petstore
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ java: [ 17, 21 ]
+ steps:
+ - uses: actions/checkout@v4
+ - name: Set up JDK
+ uses: actions/setup-java@v4
+ with:
+ java-version: ${{ matrix.java }}
+ distribution: 'temurin'
+ cache: maven
+ - name: Build with Maven
+ run: mvn -B package --no-transfer-progress --file pom.xml
diff --git a/samples/client/petstore/java/feign-hc5/.gitignore b/samples/client/petstore/java/feign-hc5/.gitignore
new file mode 100644
index 000000000000..a530464afa1b
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/.gitignore
@@ -0,0 +1,21 @@
+*.class
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.ear
+
+# exclude jar for gradle wrapper
+!gradle/wrapper/*.jar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+# build files
+**/target
+target
+.gradle
+build
diff --git a/samples/client/petstore/java/feign-hc5/.openapi-generator-ignore b/samples/client/petstore/java/feign-hc5/.openapi-generator-ignore
new file mode 100644
index 000000000000..7484ee590a38
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/.openapi-generator-ignore
@@ -0,0 +1,23 @@
+# OpenAPI Generator Ignore
+# Generated by openapi-generator https://github.com/openapitools/openapi-generator
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
diff --git a/samples/client/petstore/java/feign-hc5/.openapi-generator/FILES b/samples/client/petstore/java/feign-hc5/.openapi-generator/FILES
new file mode 100644
index 000000000000..90879d2977f7
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/.openapi-generator/FILES
@@ -0,0 +1,93 @@
+.github/workflows/maven.yml
+.gitignore
+.travis.yml
+README.md
+api/openapi.yaml
+build.gradle
+build.sbt
+git_push.sh
+gradle.properties
+gradle/wrapper/gradle-wrapper.jar
+gradle/wrapper/gradle-wrapper.properties
+gradlew
+gradlew.bat
+pom.xml
+settings.gradle
+src/main/AndroidManifest.xml
+src/main/java/org/openapitools/client/ApiClient.java
+src/main/java/org/openapitools/client/ApiResponseDecoder.java
+src/main/java/org/openapitools/client/EncodingUtils.java
+src/main/java/org/openapitools/client/ParamExpander.java
+src/main/java/org/openapitools/client/RFC3339DateFormat.java
+src/main/java/org/openapitools/client/RFC3339InstantDeserializer.java
+src/main/java/org/openapitools/client/RFC3339JavaTimeModule.java
+src/main/java/org/openapitools/client/ServerConfiguration.java
+src/main/java/org/openapitools/client/ServerVariable.java
+src/main/java/org/openapitools/client/StringUtil.java
+src/main/java/org/openapitools/client/api/AnotherFakeApi.java
+src/main/java/org/openapitools/client/api/DefaultApi.java
+src/main/java/org/openapitools/client/api/FakeApi.java
+src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java
+src/main/java/org/openapitools/client/api/PetApi.java
+src/main/java/org/openapitools/client/api/StoreApi.java
+src/main/java/org/openapitools/client/api/UserApi.java
+src/main/java/org/openapitools/client/auth/ApiErrorDecoder.java
+src/main/java/org/openapitools/client/auth/ApiKeyAuth.java
+src/main/java/org/openapitools/client/auth/DefaultApi20Impl.java
+src/main/java/org/openapitools/client/auth/HttpBasicAuth.java
+src/main/java/org/openapitools/client/auth/HttpBearerAuth.java
+src/main/java/org/openapitools/client/auth/OAuth.java
+src/main/java/org/openapitools/client/auth/OAuthFlow.java
+src/main/java/org/openapitools/client/auth/OauthClientCredentialsGrant.java
+src/main/java/org/openapitools/client/auth/OauthPasswordGrant.java
+src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java
+src/main/java/org/openapitools/client/model/AllOfWithSingleRef.java
+src/main/java/org/openapitools/client/model/Animal.java
+src/main/java/org/openapitools/client/model/ApiResponse.java
+src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java
+src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java
+src/main/java/org/openapitools/client/model/ArrayTest.java
+src/main/java/org/openapitools/client/model/Capitalization.java
+src/main/java/org/openapitools/client/model/Cat.java
+src/main/java/org/openapitools/client/model/Category.java
+src/main/java/org/openapitools/client/model/ChildWithNullable.java
+src/main/java/org/openapitools/client/model/ClassModel.java
+src/main/java/org/openapitools/client/model/Client.java
+src/main/java/org/openapitools/client/model/DeprecatedObject.java
+src/main/java/org/openapitools/client/model/Dog.java
+src/main/java/org/openapitools/client/model/EnumArrays.java
+src/main/java/org/openapitools/client/model/EnumClass.java
+src/main/java/org/openapitools/client/model/EnumTest.java
+src/main/java/org/openapitools/client/model/FakeBigDecimalMap200Response.java
+src/main/java/org/openapitools/client/model/File.java
+src/main/java/org/openapitools/client/model/FileSchemaTestClass.java
+src/main/java/org/openapitools/client/model/Foo.java
+src/main/java/org/openapitools/client/model/FooGetDefaultResponse.java
+src/main/java/org/openapitools/client/model/FormatTest.java
+src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java
+src/main/java/org/openapitools/client/model/HealthCheckResult.java
+src/main/java/org/openapitools/client/model/MapTest.java
+src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java
+src/main/java/org/openapitools/client/model/Model200Response.java
+src/main/java/org/openapitools/client/model/ModelApiResponse.java
+src/main/java/org/openapitools/client/model/ModelList.java
+src/main/java/org/openapitools/client/model/ModelReturn.java
+src/main/java/org/openapitools/client/model/Name.java
+src/main/java/org/openapitools/client/model/NullableClass.java
+src/main/java/org/openapitools/client/model/NumberOnly.java
+src/main/java/org/openapitools/client/model/ObjectWithDeprecatedFields.java
+src/main/java/org/openapitools/client/model/Order.java
+src/main/java/org/openapitools/client/model/OuterComposite.java
+src/main/java/org/openapitools/client/model/OuterEnum.java
+src/main/java/org/openapitools/client/model/OuterEnumDefaultValue.java
+src/main/java/org/openapitools/client/model/OuterEnumInteger.java
+src/main/java/org/openapitools/client/model/OuterEnumIntegerDefaultValue.java
+src/main/java/org/openapitools/client/model/OuterObjectWithEnumProperty.java
+src/main/java/org/openapitools/client/model/ParentWithNullable.java
+src/main/java/org/openapitools/client/model/Pet.java
+src/main/java/org/openapitools/client/model/ReadOnlyFirst.java
+src/main/java/org/openapitools/client/model/SingleRefType.java
+src/main/java/org/openapitools/client/model/SpecialModelName.java
+src/main/java/org/openapitools/client/model/Tag.java
+src/main/java/org/openapitools/client/model/TestInlineFreeformAdditionalPropertiesRequest.java
+src/main/java/org/openapitools/client/model/User.java
diff --git a/samples/client/petstore/java/feign-hc5/.openapi-generator/VERSION b/samples/client/petstore/java/feign-hc5/.openapi-generator/VERSION
new file mode 100644
index 000000000000..96cfbb19ae28
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/.openapi-generator/VERSION
@@ -0,0 +1 @@
+7.13.0-SNAPSHOT
diff --git a/samples/client/petstore/java/feign-hc5/.travis.yml b/samples/client/petstore/java/feign-hc5/.travis.yml
new file mode 100644
index 000000000000..1b6741c083c7
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/.travis.yml
@@ -0,0 +1,22 @@
+#
+# Generated by OpenAPI Generator: https://openapi-generator.tech
+#
+# Ref: https://docs.travis-ci.com/user/languages/java/
+#
+language: java
+jdk:
+ - openjdk12
+ - openjdk11
+ - openjdk10
+ - openjdk9
+ - openjdk8
+before_install:
+ # ensure gradlew has proper permission
+ - chmod a+x ./gradlew
+script:
+ # test using maven
+ #- mvn test
+ # test using gradle
+ - gradle test
+ # test using sbt
+ # - sbt test
diff --git a/samples/client/petstore/java/feign-hc5/README.md b/samples/client/petstore/java/feign-hc5/README.md
new file mode 100644
index 000000000000..2ae634068f6b
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/README.md
@@ -0,0 +1,77 @@
+# petstore-feign-hc5
+
+## Requirements
+
+Building the API client library requires [Maven](https://maven.apache.org/) to be installed.
+
+## Installation & Usage
+
+To install the API client library to your local Maven repository, simply execute:
+
+```shell
+mvn install
+```
+
+To deploy it to a remote Maven repository instead, configure the settings of the repository and execute:
+
+```shell
+mvn deploy
+```
+
+Refer to the [official documentation](https://maven.apache.org/plugins/maven-deploy-plugin/usage.html) for more information.
+
+After the client library is installed/deployed, you can use it in your Maven project by adding the following to your *pom.xml*:
+
+```xml
+
+ org.openapitools
+ petstore-feign-hc5
+ 1.0.0
+ compile
+
+
+```
+
+And to use the api you can follow the examples below:
+
+```java
+
+ //Set bearer token manually
+ ApiClient apiClient = new ApiClient("petstore_auth_client");
+ apiClient.setBasePath("https://localhost:8243/petstore/1/");
+ apiClient.setAccessToken("TOKEN", 10000);
+
+ //Use api key
+ ApiClient apiClient = new ApiClient("api_key", "API KEY");
+ apiClient.setBasePath("https://localhost:8243/petstore/1/");
+
+ //Use http basic authentication
+ ApiClient apiClient = new ApiClient("basicAuth");
+ apiClient.setBasePath("https://localhost:8243/petstore/1/");
+ apiClient.setCredentials("username", "password");
+
+ //Oauth password
+ ApiClient apiClient = new ApiClient("oauth_password");
+ apiClient.setBasePath("https://localhost:8243/petstore/1/");
+ apiClient.setOauthPassword("username", "password", "client_id", "client_secret");
+
+ //Oauth client credentials flow
+ ApiClient apiClient = new ApiClient("oauth_client_credentials");
+ apiClient.setBasePath("https://localhost:8243/petstore/1/");
+ apiClient.setClientCredentials("client_id", "client_secret");
+
+ PetApi petApi = apiClient.buildClient(PetApi.class);
+ Pet petById = petApi.getPetById(12345L);
+
+ System.out.println(petById);
+ }
+```
+
+## Recommendation
+
+It's recommended to create an instance of `ApiClient` per thread in a multithreaded environment to avoid any potential issues.
+
+## Author
+
+
+
diff --git a/samples/client/petstore/java/feign-hc5/api/openapi.yaml b/samples/client/petstore/java/feign-hc5/api/openapi.yaml
new file mode 100644
index 000000000000..1eddf878948c
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/api/openapi.yaml
@@ -0,0 +1,2363 @@
+openapi: 3.0.0
+info:
+ description: "This spec is mainly for testing Petstore server and contains fake\
+ \ endpoints, models. Please do not use this for any other purpose. Special characters:\
+ \ \" \\"
+ license:
+ name: Apache-2.0
+ url: https://www.apache.org/licenses/LICENSE-2.0.html
+ title: OpenAPI Petstore
+ version: 1.0.0
+servers:
+- description: petstore server
+ url: "http://{server}.swagger.io:{port}/v2"
+ variables:
+ server:
+ default: petstore
+ enum:
+ - petstore
+ - qa-petstore
+ - dev-petstore
+ port:
+ default: "80"
+ enum:
+ - "80"
+ - "8080"
+- description: The local server
+ url: "https://localhost:8080/{version}"
+ variables:
+ version:
+ default: v2
+ enum:
+ - v1
+ - v2
+- description: The local server without variables
+ url: https://127.0.0.1/no_varaible
+tags:
+- description: Everything about your Pets
+ name: pet
+- description: Access to Petstore orders
+ name: store
+- description: Operations about user
+ name: user
+paths:
+ /foo:
+ get:
+ responses:
+ default:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/_foo_get_default_response'
+ description: response
+ x-accepts:
+ - application/json
+ /pet:
+ post:
+ description: ""
+ operationId: addPet
+ requestBody:
+ $ref: '#/components/requestBodies/Pet'
+ responses:
+ "200":
+ description: Successful operation
+ "405":
+ description: Invalid input
+ security:
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ summary: Add a new pet to the store
+ tags:
+ - pet
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ put:
+ description: ""
+ operationId: updatePet
+ requestBody:
+ $ref: '#/components/requestBodies/Pet'
+ responses:
+ "200":
+ description: Successful operation
+ "400":
+ description: Invalid ID supplied
+ "404":
+ description: Pet not found
+ "405":
+ description: Validation exception
+ security:
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ summary: Update an existing pet
+ tags:
+ - pet
+ x-webclient-blocking: true
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ servers:
+ - url: http://petstore.swagger.io/v2
+ - url: http://path-server-test.petstore.local/v2
+ - description: test server with variables
+ url: "http://{server}.swagger.io:{port}/v2"
+ variables:
+ server:
+ default: petstore
+ description: target server
+ enum:
+ - petstore
+ - qa-petstore
+ - dev-petstore
+ port:
+ default: "80"
+ enum:
+ - "80"
+ - "8080"
+ /pet/findByStatus:
+ get:
+ description: Multiple status values can be provided with comma separated strings
+ operationId: findPetsByStatus
+ parameters:
+ - deprecated: true
+ description: Status values that need to be considered for filter
+ explode: false
+ in: query
+ name: status
+ required: true
+ schema:
+ items:
+ default: available
+ enum:
+ - available
+ - pending
+ - sold
+ type: string
+ type: array
+ style: form
+ responses:
+ "200":
+ content:
+ application/xml:
+ schema:
+ items:
+ $ref: '#/components/schemas/Pet'
+ type: array
+ application/json:
+ schema:
+ items:
+ $ref: '#/components/schemas/Pet'
+ type: array
+ description: successful operation
+ "400":
+ description: Invalid status value
+ security:
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ summary: Finds Pets by status
+ tags:
+ - pet
+ x-webclient-blocking: true
+ x-accepts:
+ - application/json
+ - application/xml
+ /pet/findByTags:
+ get:
+ deprecated: true
+ description: "Multiple tags can be provided with comma separated strings. Use\
+ \ tag1, tag2, tag3 for testing."
+ operationId: findPetsByTags
+ parameters:
+ - description: Tags to filter by
+ explode: false
+ in: query
+ name: tags
+ required: true
+ schema:
+ items:
+ type: string
+ type: array
+ uniqueItems: true
+ style: form
+ responses:
+ "200":
+ content:
+ application/xml:
+ schema:
+ items:
+ $ref: '#/components/schemas/Pet'
+ type: array
+ uniqueItems: true
+ application/json:
+ schema:
+ items:
+ $ref: '#/components/schemas/Pet'
+ type: array
+ uniqueItems: true
+ description: successful operation
+ "400":
+ description: Invalid tag value
+ security:
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ summary: Finds Pets by tags
+ tags:
+ - pet
+ x-webclient-blocking: true
+ x-accepts:
+ - application/json
+ - application/xml
+ /pet/{petId}:
+ delete:
+ description: ""
+ operationId: deletePet
+ parameters:
+ - explode: false
+ in: header
+ name: api_key
+ required: false
+ schema:
+ type: string
+ style: simple
+ - description: Pet id to delete
+ explode: false
+ in: path
+ name: petId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ style: simple
+ responses:
+ "200":
+ description: Successful operation
+ "400":
+ description: Invalid pet value
+ security:
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ summary: Deletes a pet
+ tags:
+ - pet
+ x-accepts:
+ - application/json
+ get:
+ description: Returns a single pet
+ operationId: getPetById
+ parameters:
+ - description: ID of pet to return
+ explode: false
+ in: path
+ name: petId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ style: simple
+ responses:
+ "200":
+ content:
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ description: successful operation
+ "400":
+ description: Invalid ID supplied
+ "404":
+ description: Pet not found
+ security:
+ - api_key: []
+ summary: Find pet by ID
+ tags:
+ - pet
+ x-webclient-blocking: true
+ x-accepts:
+ - application/json
+ - application/xml
+ post:
+ description: ""
+ operationId: updatePetWithForm
+ parameters:
+ - description: ID of pet that needs to be updated
+ explode: false
+ in: path
+ name: petId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ style: simple
+ requestBody:
+ content:
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: '#/components/schemas/updatePetWithForm_request'
+ responses:
+ "200":
+ description: Successful operation
+ "405":
+ description: Invalid input
+ security:
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ summary: Updates a pet in the store with form data
+ tags:
+ - pet
+ x-content-type: application/x-www-form-urlencoded
+ x-accepts:
+ - application/json
+ /pet/{petId}/uploadImage:
+ post:
+ description: ""
+ operationId: uploadFile
+ parameters:
+ - description: ID of pet to update
+ explode: false
+ in: path
+ name: petId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ style: simple
+ requestBody:
+ content:
+ multipart/form-data:
+ schema:
+ $ref: '#/components/schemas/uploadFile_request'
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ApiResponse'
+ description: successful operation
+ security:
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ summary: uploads an image
+ tags:
+ - pet
+ x-content-type: multipart/form-data
+ x-accepts:
+ - application/json
+ /store/inventory:
+ get:
+ description: Returns a map of status codes to quantities
+ operationId: getInventory
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ additionalProperties:
+ format: int32
+ type: integer
+ type: object
+ description: successful operation
+ security:
+ - api_key: []
+ summary: Returns pet inventories by status
+ tags:
+ - store
+ x-webclient-blocking: false
+ x-accepts:
+ - application/json
+ /store/order:
+ post:
+ description: ""
+ operationId: placeOrder
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Order'
+ description: order placed for purchasing the pet
+ required: true
+ responses:
+ "200":
+ content:
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Order'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Order'
+ description: successful operation
+ "400":
+ description: Invalid Order
+ summary: Place an order for a pet
+ tags:
+ - store
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ - application/xml
+ /store/order/{order_id}:
+ delete:
+ description: For valid response try integer IDs with value < 1000. Anything
+ above 1000 or nonintegers will generate API errors
+ operationId: deleteOrder
+ parameters:
+ - description: ID of the order that needs to be deleted
+ explode: false
+ in: path
+ name: order_id
+ required: true
+ schema:
+ type: string
+ style: simple
+ responses:
+ "400":
+ description: Invalid ID supplied
+ "404":
+ description: Order not found
+ summary: Delete purchase order by ID
+ tags:
+ - store
+ x-accepts:
+ - application/json
+ get:
+ description: For valid response try integer IDs with value <= 5 or > 10. Other
+ values will generate exceptions
+ operationId: getOrderById
+ parameters:
+ - description: ID of pet that needs to be fetched
+ explode: false
+ in: path
+ name: order_id
+ required: true
+ schema:
+ format: int64
+ maximum: 5
+ minimum: 1
+ type: integer
+ style: simple
+ responses:
+ "200":
+ content:
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Order'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Order'
+ description: successful operation
+ "400":
+ description: Invalid ID supplied
+ "404":
+ description: Order not found
+ summary: Find purchase order by ID
+ tags:
+ - store
+ x-accepts:
+ - application/json
+ - application/xml
+ /user:
+ post:
+ description: This can only be done by the logged in user.
+ operationId: createUser
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/User'
+ description: Created user object
+ required: true
+ responses:
+ default:
+ description: successful operation
+ summary: Create user
+ tags:
+ - user
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /user/createWithArray:
+ post:
+ description: ""
+ operationId: createUsersWithArrayInput
+ requestBody:
+ $ref: '#/components/requestBodies/UserArray'
+ responses:
+ default:
+ description: successful operation
+ summary: Creates list of users with given input array
+ tags:
+ - user
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /user/createWithList:
+ post:
+ description: ""
+ operationId: createUsersWithListInput
+ requestBody:
+ $ref: '#/components/requestBodies/UserArray'
+ responses:
+ default:
+ description: successful operation
+ summary: Creates list of users with given input array
+ tags:
+ - user
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /user/login:
+ get:
+ description: ""
+ operationId: loginUser
+ parameters:
+ - description: The user name for login
+ explode: true
+ in: query
+ name: username
+ required: true
+ schema:
+ type: string
+ style: form
+ - description: The password for login in clear text
+ explode: true
+ in: query
+ name: password
+ required: true
+ schema:
+ type: string
+ style: form
+ responses:
+ "200":
+ content:
+ application/xml:
+ schema:
+ type: string
+ application/json:
+ schema:
+ type: string
+ description: successful operation
+ headers:
+ X-Rate-Limit:
+ description: calls per hour allowed by the user
+ explode: false
+ schema:
+ format: int32
+ type: integer
+ style: simple
+ X-Expires-After:
+ description: date in UTC when token expires
+ explode: false
+ schema:
+ format: date-time
+ type: string
+ style: simple
+ "400":
+ description: Invalid username/password supplied
+ summary: Logs user into the system
+ tags:
+ - user
+ x-accepts:
+ - application/json
+ - application/xml
+ /user/logout:
+ get:
+ description: ""
+ operationId: logoutUser
+ responses:
+ default:
+ description: successful operation
+ summary: Logs out current logged in user session
+ tags:
+ - user
+ x-accepts:
+ - application/json
+ /user/{username}:
+ delete:
+ description: This can only be done by the logged in user.
+ operationId: deleteUser
+ parameters:
+ - description: The name that needs to be deleted
+ explode: false
+ in: path
+ name: username
+ required: true
+ schema:
+ type: string
+ style: simple
+ responses:
+ "400":
+ description: Invalid username supplied
+ "404":
+ description: User not found
+ summary: Delete user
+ tags:
+ - user
+ x-accepts:
+ - application/json
+ get:
+ description: ""
+ operationId: getUserByName
+ parameters:
+ - description: The name that needs to be fetched. Use user1 for testing.
+ explode: false
+ in: path
+ name: username
+ required: true
+ schema:
+ type: string
+ style: simple
+ responses:
+ "200":
+ content:
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/User'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/User'
+ description: successful operation
+ "400":
+ description: Invalid username supplied
+ "404":
+ description: User not found
+ summary: Get user by user name
+ tags:
+ - user
+ x-accepts:
+ - application/json
+ - application/xml
+ put:
+ description: This can only be done by the logged in user.
+ operationId: updateUser
+ parameters:
+ - description: name that need to be deleted
+ explode: false
+ in: path
+ name: username
+ required: true
+ schema:
+ type: string
+ style: simple
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/User'
+ description: Updated user object
+ required: true
+ responses:
+ "400":
+ description: Invalid user supplied
+ "404":
+ description: User not found
+ summary: Updated user
+ tags:
+ - user
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /fake_classname_test:
+ patch:
+ description: To test class name in snake case
+ operationId: testClassname
+ requestBody:
+ $ref: '#/components/requestBodies/Client'
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Client'
+ description: successful operation
+ security:
+ - api_key_query: []
+ summary: To test class name in snake case
+ tags:
+ - fake_classname_tags 123#$%^
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /fake:
+ delete:
+ description: Fake endpoint to test group parameters (optional)
+ operationId: testGroupParameters
+ parameters:
+ - description: Required String in group parameters
+ explode: true
+ in: query
+ name: required_string_group
+ required: true
+ schema:
+ type: integer
+ style: form
+ - description: Required Boolean in group parameters
+ explode: false
+ in: header
+ name: required_boolean_group
+ required: true
+ schema:
+ type: boolean
+ style: simple
+ - description: Required Integer in group parameters
+ explode: true
+ in: query
+ name: required_int64_group
+ required: true
+ schema:
+ format: int64
+ type: integer
+ style: form
+ - description: String in group parameters
+ explode: true
+ in: query
+ name: string_group
+ required: false
+ schema:
+ type: integer
+ style: form
+ - description: Boolean in group parameters
+ explode: false
+ in: header
+ name: boolean_group
+ required: false
+ schema:
+ type: boolean
+ style: simple
+ - description: Integer in group parameters
+ explode: true
+ in: query
+ name: int64_group
+ required: false
+ schema:
+ format: int64
+ type: integer
+ style: form
+ responses:
+ "400":
+ description: Something wrong
+ security:
+ - bearer_test: []
+ summary: Fake endpoint to test group parameters (optional)
+ tags:
+ - fake
+ x-group-parameters: true
+ x-accepts:
+ - application/json
+ get:
+ description: To test enum parameters
+ operationId: testEnumParameters
+ parameters:
+ - description: Header parameter enum test (string array)
+ explode: false
+ in: header
+ name: enum_header_string_array
+ required: false
+ schema:
+ items:
+ default: $
+ enum:
+ - '>'
+ - $
+ type: string
+ type: array
+ style: simple
+ - description: Header parameter enum test (string)
+ explode: false
+ in: header
+ name: enum_header_string
+ required: false
+ schema:
+ default: -efg
+ enum:
+ - _abc
+ - -efg
+ - (xyz)
+ type: string
+ style: simple
+ - description: Query parameter enum test (string array)
+ explode: true
+ in: query
+ name: enum_query_string_array
+ required: false
+ schema:
+ items:
+ default: $
+ enum:
+ - '>'
+ - $
+ type: string
+ type: array
+ style: form
+ - description: Query parameter enum test (string)
+ explode: true
+ in: query
+ name: enum_query_string
+ required: false
+ schema:
+ default: -efg
+ enum:
+ - _abc
+ - -efg
+ - (xyz)
+ type: string
+ style: form
+ - description: Query parameter enum test (double)
+ explode: true
+ in: query
+ name: enum_query_integer
+ required: false
+ schema:
+ enum:
+ - 1
+ - -2
+ format: int32
+ type: integer
+ style: form
+ - description: Query parameter enum test (double)
+ explode: true
+ in: query
+ name: enum_query_double
+ required: false
+ schema:
+ enum:
+ - 1.1
+ - -1.2
+ format: double
+ type: number
+ style: form
+ - explode: true
+ in: query
+ name: enum_query_model_array
+ required: false
+ schema:
+ items:
+ $ref: '#/components/schemas/EnumClass'
+ type: array
+ style: form
+ requestBody:
+ content:
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: '#/components/schemas/testEnumParameters_request'
+ responses:
+ "400":
+ description: Invalid request
+ "404":
+ description: Not found
+ summary: To test enum parameters
+ tags:
+ - fake
+ x-content-type: application/x-www-form-urlencoded
+ x-accepts:
+ - application/json
+ patch:
+ description: To test "client" model
+ operationId: testClientModel
+ requestBody:
+ $ref: '#/components/requestBodies/Client'
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Client'
+ description: successful operation
+ summary: To test "client" model
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ post:
+ description: |
+ Fake endpoint for testing various parameters
+ 假端點
+ 偽のエンドポイント
+ 가짜 엔드 포인트
+ operationId: testEndpointParameters
+ requestBody:
+ content:
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: '#/components/schemas/testEndpointParameters_request'
+ responses:
+ "400":
+ description: Invalid username supplied
+ "404":
+ description: User not found
+ security:
+ - http_basic_test: []
+ summary: |
+ Fake endpoint for testing various parameters
+ 假端點
+ 偽のエンドポイント
+ 가짜 엔드 포인트
+ tags:
+ - fake
+ x-content-type: application/x-www-form-urlencoded
+ x-accepts:
+ - application/json
+ /fake/outer/number:
+ post:
+ description: Test serialization of outer number types
+ operationId: fakeOuterNumberSerialize
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/OuterNumber'
+ description: Input number as post body
+ responses:
+ "200":
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/OuterNumber'
+ description: Output number
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - '*/*'
+ /fake/property/enum-int:
+ post:
+ description: Test serialization of enum (int) properties with examples
+ operationId: fakePropertyEnumIntegerSerialize
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/OuterObjectWithEnumProperty'
+ description: Input enum (int) as post body
+ required: true
+ responses:
+ "200":
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/OuterObjectWithEnumProperty'
+ description: Output enum (int)
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - '*/*'
+ /fake/outer/string:
+ post:
+ description: Test serialization of outer string types
+ operationId: fakeOuterStringSerialize
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/OuterString'
+ description: Input string as post body
+ responses:
+ "200":
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/OuterString'
+ description: Output string
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - '*/*'
+ /fake/outer/boolean:
+ post:
+ description: Test serialization of outer boolean types
+ operationId: fakeOuterBooleanSerialize
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/OuterBoolean'
+ description: Input boolean as post body
+ responses:
+ "200":
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/OuterBoolean'
+ description: Output boolean
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - '*/*'
+ /fake/outer/composite:
+ post:
+ description: Test serialization of object with outer number type
+ operationId: fakeOuterCompositeSerialize
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/OuterComposite'
+ description: Input composite as post body
+ responses:
+ "200":
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/OuterComposite'
+ description: Output composite
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - '*/*'
+ /fake/BigDecimalMap:
+ get:
+ description: "for Java apache and Java native, test toUrlQueryString for maps\
+ \ with BegDecimal keys"
+ operationId: fakeBigDecimalMap
+ responses:
+ "200":
+ content:
+ '*/*':
+ schema:
+ $ref: '#/components/schemas/fakeBigDecimalMap_200_response'
+ description: successful operation
+ tags:
+ - fake
+ x-accepts:
+ - '*/*'
+ /fake/jsonFormData:
+ get:
+ description: ""
+ operationId: testJsonFormData
+ requestBody:
+ content:
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: '#/components/schemas/testJsonFormData_request'
+ responses:
+ "200":
+ description: successful operation
+ summary: test json serialization of form data
+ tags:
+ - fake
+ x-content-type: application/x-www-form-urlencoded
+ x-accepts:
+ - application/json
+ /fake/additionalProperties-reference:
+ post:
+ description: ""
+ operationId: testAdditionalPropertiesReference
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FreeFormObject'
+ description: request body
+ required: true
+ responses:
+ "200":
+ description: successful operation
+ summary: test referenced additionalProperties
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /fake/stringMap-reference:
+ post:
+ description: ""
+ operationId: testStringMapReference
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/MapOfString'
+ description: request body
+ required: true
+ responses:
+ "200":
+ description: successful operation
+ summary: test referenced string map
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /fake/inline-additionalProperties:
+ post:
+ description: ""
+ operationId: testInlineAdditionalProperties
+ requestBody:
+ content:
+ application/json:
+ schema:
+ additionalProperties:
+ type: string
+ type: object
+ description: request body
+ required: true
+ responses:
+ "200":
+ description: successful operation
+ summary: test inline additionalProperties
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /fake/inline-freeform-additionalProperties:
+ post:
+ description: ""
+ operationId: testInlineFreeformAdditionalProperties
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/testInlineFreeformAdditionalProperties_request'
+ description: request body
+ required: true
+ responses:
+ "200":
+ description: successful operation
+ summary: test inline free-form additionalProperties
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /fake/nullable:
+ post:
+ description: ""
+ operationId: testNullable
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ChildWithNullable'
+ description: request body
+ required: true
+ responses:
+ "200":
+ description: successful operation
+ summary: test nullable parent property
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /fake/body-with-query-params:
+ put:
+ operationId: testBodyWithQueryParams
+ parameters:
+ - explode: true
+ in: query
+ name: query
+ required: true
+ schema:
+ type: string
+ style: form
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/User'
+ required: true
+ responses:
+ "200":
+ description: Success
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /another-fake/dummy:
+ patch:
+ description: To test special tags and operation ID starting with number
+ operationId: 123_test_@#$%_special_tags
+ requestBody:
+ $ref: '#/components/requestBodies/Client'
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Client'
+ description: successful operation
+ summary: To test special tags
+ tags:
+ - $another-fake?
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /fake/body-with-file-schema:
+ put:
+ description: "For this test, the body for this request must reference a schema\
+ \ named `File`."
+ operationId: testBodyWithFileSchema
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/FileSchemaTestClass'
+ required: true
+ responses:
+ "200":
+ description: Success
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /fake/body-with-binary:
+ put:
+ description: "For this test, the body has to be a binary file."
+ operationId: testBodyWithBinary
+ requestBody:
+ content:
+ image/png:
+ schema:
+ format: binary
+ nullable: true
+ type: string
+ description: image to upload
+ required: true
+ responses:
+ "200":
+ description: Success
+ tags:
+ - fake
+ x-content-type: image/png
+ x-accepts:
+ - application/json
+ /fake/test-query-parameters:
+ put:
+ description: To test the collection format in query parameters
+ operationId: testQueryParameterCollectionFormat
+ parameters:
+ - explode: false
+ in: query
+ name: pipe
+ required: true
+ schema:
+ items:
+ type: string
+ type: array
+ style: pipeDelimited
+ - explode: false
+ in: query
+ name: ioutil
+ required: true
+ schema:
+ items:
+ type: string
+ type: array
+ style: form
+ - explode: false
+ in: query
+ name: http
+ required: true
+ schema:
+ items:
+ type: string
+ type: array
+ style: spaceDelimited
+ - explode: false
+ in: query
+ name: url
+ required: true
+ schema:
+ items:
+ type: string
+ type: array
+ style: form
+ - explode: true
+ in: query
+ name: context
+ required: true
+ schema:
+ items:
+ type: string
+ type: array
+ style: form
+ - explode: true
+ in: query
+ name: language
+ required: false
+ schema:
+ additionalProperties:
+ format: string
+ type: string
+ type: object
+ style: form
+ - allowEmptyValue: true
+ explode: true
+ in: query
+ name: allowEmpty
+ required: true
+ schema:
+ type: string
+ style: form
+ responses:
+ "200":
+ description: Success
+ tags:
+ - fake
+ x-accepts:
+ - application/json
+ /fake/{petId}/uploadImageWithRequiredFile:
+ post:
+ description: ""
+ operationId: uploadFileWithRequiredFile
+ parameters:
+ - description: ID of pet to update
+ explode: false
+ in: path
+ name: petId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ style: simple
+ requestBody:
+ content:
+ multipart/form-data:
+ schema:
+ $ref: '#/components/schemas/uploadFileWithRequiredFile_request'
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ApiResponse'
+ description: successful operation
+ security:
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ summary: uploads an image (required)
+ tags:
+ - pet
+ x-content-type: multipart/form-data
+ x-accepts:
+ - application/json
+ /fake/health:
+ get:
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/HealthCheckResult'
+ description: The instance started successfully
+ summary: Health check endpoint
+ tags:
+ - fake
+ x-accepts:
+ - application/json
+ /fake/http-signature-test:
+ get:
+ operationId: fake-http-signature-test
+ parameters:
+ - description: query parameter
+ explode: true
+ in: query
+ name: query_1
+ required: false
+ schema:
+ type: string
+ style: form
+ - description: header parameter
+ explode: false
+ in: header
+ name: header_1
+ required: false
+ schema:
+ type: string
+ style: simple
+ requestBody:
+ $ref: '#/components/requestBodies/Pet'
+ responses:
+ "200":
+ description: The instance started successfully
+ security:
+ - http_signature_test: []
+ summary: test http signature authentication
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+components:
+ requestBodies:
+ UserArray:
+ content:
+ application/json:
+ schema:
+ items:
+ $ref: '#/components/schemas/User'
+ type: array
+ description: List of user object
+ required: true
+ Client:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Client'
+ description: client model
+ required: true
+ Pet:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ description: Pet object that needs to be added to the store
+ required: true
+ schemas:
+ Foo:
+ example:
+ bar: bar
+ properties:
+ bar:
+ default: bar
+ type: string
+ type: object
+ Bar:
+ default: bar
+ type: string
+ Order:
+ example:
+ petId: 6
+ quantity: 1
+ id: 0
+ shipDate: 2000-01-23T04:56:07.000+00:00
+ complete: false
+ status: placed
+ properties:
+ id:
+ format: int64
+ type: integer
+ petId:
+ format: int64
+ type: integer
+ quantity:
+ format: int32
+ type: integer
+ shipDate:
+ format: date-time
+ type: string
+ status:
+ description: Order Status
+ enum:
+ - placed
+ - approved
+ - delivered
+ type: string
+ complete:
+ default: false
+ type: boolean
+ type: object
+ xml:
+ name: Order
+ Category:
+ example:
+ name: default-name
+ id: 6
+ properties:
+ id:
+ format: int64
+ type: integer
+ name:
+ default: default-name
+ type: string
+ required:
+ - name
+ type: object
+ xml:
+ name: Category
+ User:
+ example:
+ firstName: firstName
+ lastName: lastName
+ password: password
+ userStatus: 6
+ phone: phone
+ id: 0
+ email: email
+ username: username
+ properties:
+ id:
+ format: int64
+ type: integer
+ x-is-unique: true
+ username:
+ type: string
+ firstName:
+ type: string
+ lastName:
+ type: string
+ email:
+ type: string
+ password:
+ type: string
+ phone:
+ type: string
+ userStatus:
+ description: User Status
+ format: int32
+ type: integer
+ type: object
+ xml:
+ name: User
+ Tag:
+ example:
+ name: name
+ id: 1
+ properties:
+ id:
+ format: int64
+ type: integer
+ name:
+ type: string
+ type: object
+ xml:
+ name: Tag
+ Pet:
+ example:
+ photoUrls:
+ - photoUrls
+ - photoUrls
+ name: doggie
+ id: 0
+ category:
+ name: default-name
+ id: 6
+ tags:
+ - name: name
+ id: 1
+ - name: name
+ id: 1
+ status: available
+ properties:
+ id:
+ format: int64
+ type: integer
+ x-is-unique: true
+ category:
+ $ref: '#/components/schemas/Category'
+ name:
+ example: doggie
+ type: string
+ photoUrls:
+ items:
+ type: string
+ xml:
+ name: photoUrl
+ type: array
+ uniqueItems: true
+ xml:
+ wrapped: true
+ tags:
+ items:
+ $ref: '#/components/schemas/Tag'
+ type: array
+ xml:
+ name: tag
+ wrapped: true
+ status:
+ description: pet status in the store
+ enum:
+ - available
+ - pending
+ - sold
+ type: string
+ required:
+ - name
+ - photoUrls
+ type: object
+ xml:
+ name: Pet
+ ApiResponse:
+ example:
+ code: 0
+ type: type
+ message: message
+ properties:
+ code:
+ format: int32
+ type: integer
+ type:
+ type: string
+ message:
+ type: string
+ type: object
+ Return:
+ description: Model for testing reserved words
+ properties:
+ return:
+ format: int32
+ type: integer
+ xml:
+ name: Return
+ Name:
+ description: Model for testing model name same as property name
+ properties:
+ name:
+ format: int32
+ type: integer
+ snake_case:
+ format: int32
+ readOnly: true
+ type: integer
+ property:
+ type: string
+ "123Number":
+ readOnly: true
+ type: integer
+ required:
+ - name
+ xml:
+ name: Name
+ "200_response":
+ description: Model for testing model name starting with number
+ properties:
+ name:
+ format: int32
+ type: integer
+ class:
+ type: string
+ xml:
+ name: Name
+ ClassModel:
+ description: Model for testing model with "_class" property
+ properties:
+ _class:
+ type: string
+ Dog:
+ allOf:
+ - $ref: '#/components/schemas/Animal'
+ - properties:
+ breed:
+ type: string
+ type: object
+ Cat:
+ allOf:
+ - $ref: '#/components/schemas/Animal'
+ - properties:
+ declawed:
+ type: boolean
+ type: object
+ Animal:
+ discriminator:
+ mapping:
+ DOG: '#/components/schemas/Dog'
+ CAT: '#/components/schemas/Cat'
+ propertyName: className
+ properties:
+ className:
+ type: string
+ color:
+ default: red
+ type: string
+ required:
+ - className
+ type: object
+ AnimalFarm:
+ items:
+ $ref: '#/components/schemas/Animal'
+ type: array
+ format_test:
+ properties:
+ integer:
+ maximum: 100
+ minimum: 10
+ type: integer
+ int32:
+ format: int32
+ maximum: 200
+ minimum: 20
+ type: integer
+ int64:
+ format: int64
+ type: integer
+ number:
+ maximum: 543.2
+ minimum: 32.1
+ type: number
+ float:
+ format: float
+ maximum: 987.6
+ minimum: 54.3
+ type: number
+ double:
+ format: double
+ maximum: 123.4
+ minimum: 67.8
+ type: number
+ decimal:
+ format: number
+ type: string
+ string:
+ pattern: "/[a-z]/i"
+ type: string
+ byte:
+ format: byte
+ type: string
+ binary:
+ format: binary
+ type: string
+ date:
+ format: date
+ type: string
+ dateTime:
+ format: date-time
+ type: string
+ uuid:
+ example: 72f98069-206d-4f12-9f12-3d1e525a8e84
+ format: uuid
+ type: string
+ password:
+ format: password
+ maxLength: 64
+ minLength: 10
+ type: string
+ pattern_with_digits:
+ description: A string that is a 10 digit number. Can have leading zeros.
+ pattern: "^\\d{10}$"
+ type: string
+ pattern_with_digits_and_delimiter:
+ description: A string starting with 'image_' (case insensitive) and one
+ to three digits following i.e. Image_01.
+ pattern: "/^image_\\d{1,3}$/i"
+ type: string
+ required:
+ - byte
+ - date
+ - number
+ - password
+ type: object
+ EnumClass:
+ default: -efg
+ enum:
+ - _abc
+ - -efg
+ - (xyz)
+ type: string
+ Enum_Test:
+ properties:
+ enum_string:
+ enum:
+ - UPPER
+ - lower
+ - ""
+ type: string
+ enum_string_required:
+ enum:
+ - UPPER
+ - lower
+ - ""
+ type: string
+ enum_integer:
+ enum:
+ - 1
+ - -1
+ format: int32
+ type: integer
+ enum_number:
+ enum:
+ - 1.1
+ - -1.2
+ format: double
+ type: number
+ outerEnum:
+ $ref: '#/components/schemas/OuterEnum'
+ outerEnumInteger:
+ $ref: '#/components/schemas/OuterEnumInteger'
+ outerEnumDefaultValue:
+ $ref: '#/components/schemas/OuterEnumDefaultValue'
+ outerEnumIntegerDefaultValue:
+ $ref: '#/components/schemas/OuterEnumIntegerDefaultValue'
+ required:
+ - enum_string_required
+ type: object
+ AdditionalPropertiesClass:
+ properties:
+ map_property:
+ additionalProperties:
+ type: string
+ type: object
+ map_of_map_property:
+ additionalProperties:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ type: object
+ MixedPropertiesAndAdditionalPropertiesClass:
+ properties:
+ uuid:
+ format: uuid
+ type: string
+ dateTime:
+ format: date-time
+ type: string
+ map:
+ additionalProperties:
+ $ref: '#/components/schemas/Animal'
+ type: object
+ type: object
+ List:
+ properties:
+ "123-list":
+ type: string
+ type: object
+ Client:
+ example:
+ client: client
+ properties:
+ client:
+ type: string
+ type: object
+ ReadOnlyFirst:
+ properties:
+ bar:
+ readOnly: true
+ type: string
+ baz:
+ type: string
+ type: object
+ hasOnlyReadOnly:
+ properties:
+ bar:
+ readOnly: true
+ type: string
+ foo:
+ readOnly: true
+ type: string
+ type: object
+ Capitalization:
+ properties:
+ smallCamel:
+ type: string
+ CapitalCamel:
+ type: string
+ small_Snake:
+ type: string
+ Capital_Snake:
+ type: string
+ SCA_ETH_Flow_Points:
+ type: string
+ ATT_NAME:
+ description: |
+ Name of the pet
+ type: string
+ type: object
+ MapTest:
+ properties:
+ map_map_of_string:
+ additionalProperties:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ map_of_enum_string:
+ additionalProperties:
+ enum:
+ - UPPER
+ - lower
+ type: string
+ type: object
+ direct_map:
+ additionalProperties:
+ type: boolean
+ type: object
+ indirect_map:
+ additionalProperties:
+ type: boolean
+ type: object
+ type: object
+ ArrayTest:
+ properties:
+ array_of_string:
+ items:
+ type: string
+ maxItems: 3
+ minItems: 0
+ type: array
+ array_array_of_integer:
+ items:
+ items:
+ format: int64
+ type: integer
+ type: array
+ type: array
+ array_array_of_model:
+ items:
+ items:
+ $ref: '#/components/schemas/ReadOnlyFirst'
+ type: array
+ type: array
+ type: object
+ NumberOnly:
+ properties:
+ JustNumber:
+ type: number
+ type: object
+ ArrayOfNumberOnly:
+ properties:
+ ArrayNumber:
+ items:
+ type: number
+ type: array
+ type: object
+ ArrayOfArrayOfNumberOnly:
+ properties:
+ ArrayArrayNumber:
+ items:
+ items:
+ type: number
+ type: array
+ type: array
+ type: object
+ EnumArrays:
+ properties:
+ just_symbol:
+ enum:
+ - '>='
+ - $
+ type: string
+ array_enum:
+ items:
+ enum:
+ - fish
+ - crab
+ type: string
+ type: array
+ type: object
+ FreeFormObject:
+ additionalProperties: true
+ description: A schema consisting only of additional properties
+ type: object
+ MapOfString:
+ additionalProperties:
+ type: string
+ description: A schema consisting only of additional properties of type string
+ type: object
+ OuterEnum:
+ enum:
+ - placed
+ - approved
+ - delivered
+ nullable: true
+ type: string
+ OuterEnumInteger:
+ enum:
+ - 0
+ - 1
+ - 2
+ example: 2
+ type: integer
+ OuterEnumDefaultValue:
+ default: placed
+ enum:
+ - placed
+ - approved
+ - delivered
+ type: string
+ OuterEnumIntegerDefaultValue:
+ default: 0
+ enum:
+ - 0
+ - 1
+ - 2
+ type: integer
+ OuterComposite:
+ example:
+ my_string: my_string
+ my_number: 0.8008281904610115
+ my_boolean: true
+ properties:
+ my_number:
+ type: number
+ my_string:
+ type: string
+ my_boolean:
+ type: boolean
+ x-codegen-body-parameter-name: boolean_post_body
+ type: object
+ OuterNumber:
+ type: number
+ OuterString:
+ type: string
+ OuterBoolean:
+ type: boolean
+ x-codegen-body-parameter-name: boolean_post_body
+ ParentWithNullable:
+ discriminator:
+ propertyName: type
+ properties:
+ type:
+ enum:
+ - ChildWithNullable
+ type: string
+ nullableProperty:
+ nullable: true
+ type: string
+ type: object
+ ChildWithNullable:
+ allOf:
+ - $ref: '#/components/schemas/ParentWithNullable'
+ - properties:
+ otherProperty:
+ type: string
+ type: object
+ example:
+ otherProperty: otherProperty
+ nullableProperty: nullableProperty
+ type: ChildWithNullable
+ StringBooleanMap:
+ additionalProperties:
+ type: boolean
+ type: object
+ FileSchemaTestClass:
+ example:
+ file:
+ sourceURI: sourceURI
+ files:
+ - sourceURI: sourceURI
+ - sourceURI: sourceURI
+ properties:
+ file:
+ $ref: '#/components/schemas/File'
+ files:
+ items:
+ $ref: '#/components/schemas/File'
+ type: array
+ type: object
+ File:
+ description: Must be named `File` for test.
+ example:
+ sourceURI: sourceURI
+ properties:
+ sourceURI:
+ description: Test capitalization
+ type: string
+ type: object
+ _special_model.name_:
+ properties:
+ $special[property.name]:
+ format: int64
+ type: integer
+ xml:
+ name: "$special[model.name]"
+ HealthCheckResult:
+ description: Just a string to inform instance is up and running. Make it nullable
+ in hope to get it as pointer in generated model.
+ example:
+ NullableMessage: NullableMessage
+ properties:
+ NullableMessage:
+ nullable: true
+ type: string
+ type: object
+ NullableClass:
+ additionalProperties:
+ nullable: true
+ type: object
+ properties:
+ integer_prop:
+ nullable: true
+ type: integer
+ number_prop:
+ nullable: true
+ type: number
+ boolean_prop:
+ nullable: true
+ type: boolean
+ string_prop:
+ nullable: true
+ type: string
+ date_prop:
+ format: date
+ nullable: true
+ type: string
+ datetime_prop:
+ format: date-time
+ nullable: true
+ type: string
+ array_nullable_prop:
+ items:
+ type: object
+ nullable: true
+ type: array
+ array_and_items_nullable_prop:
+ items:
+ nullable: true
+ type: object
+ nullable: true
+ type: array
+ array_items_nullable:
+ items:
+ nullable: true
+ type: object
+ type: array
+ object_nullable_prop:
+ additionalProperties:
+ type: object
+ nullable: true
+ type: object
+ object_and_items_nullable_prop:
+ additionalProperties:
+ nullable: true
+ type: object
+ nullable: true
+ type: object
+ object_items_nullable:
+ additionalProperties:
+ nullable: true
+ type: object
+ type: object
+ type: object
+ OuterObjectWithEnumProperty:
+ example:
+ value: 2
+ properties:
+ value:
+ $ref: '#/components/schemas/OuterEnumInteger'
+ required:
+ - value
+ type: object
+ DeprecatedObject:
+ deprecated: true
+ properties:
+ name:
+ type: string
+ type: object
+ ObjectWithDeprecatedFields:
+ properties:
+ uuid:
+ type: string
+ id:
+ deprecated: true
+ type: number
+ deprecatedRef:
+ $ref: '#/components/schemas/DeprecatedObject'
+ bars:
+ deprecated: true
+ items:
+ $ref: '#/components/schemas/Bar'
+ type: array
+ type: object
+ AllOfWithSingleRef:
+ properties:
+ username:
+ type: string
+ SingleRefType:
+ allOf:
+ - $ref: '#/components/schemas/SingleRefType'
+ type: object
+ SingleRefType:
+ enum:
+ - admin
+ - user
+ title: SingleRefType
+ type: string
+ _foo_get_default_response:
+ example:
+ string:
+ bar: bar
+ properties:
+ string:
+ $ref: '#/components/schemas/Foo'
+ type: object
+ updatePetWithForm_request:
+ properties:
+ name:
+ description: Updated name of the pet
+ type: string
+ status:
+ description: Updated status of the pet
+ type: string
+ type: object
+ uploadFile_request:
+ properties:
+ additionalMetadata:
+ description: Additional data to pass to server
+ type: string
+ file:
+ description: file to upload
+ format: binary
+ type: string
+ type: object
+ testEnumParameters_request:
+ properties:
+ enum_form_string_array:
+ description: Form parameter enum test (string array)
+ items:
+ default: $
+ enum:
+ - '>'
+ - $
+ type: string
+ type: array
+ enum_form_string:
+ default: -efg
+ description: Form parameter enum test (string)
+ enum:
+ - _abc
+ - -efg
+ - (xyz)
+ type: string
+ type: object
+ testEndpointParameters_request:
+ properties:
+ integer:
+ description: None
+ maximum: 100
+ minimum: 10
+ type: integer
+ int32:
+ description: None
+ format: int32
+ maximum: 200
+ minimum: 20
+ type: integer
+ int64:
+ description: None
+ format: int64
+ type: integer
+ number:
+ description: None
+ maximum: 543.2
+ minimum: 32.1
+ type: number
+ float:
+ description: None
+ format: float
+ maximum: 987.6
+ type: number
+ double:
+ description: None
+ format: double
+ maximum: 123.4
+ minimum: 67.8
+ type: number
+ string:
+ description: None
+ pattern: "/[a-z]/i"
+ type: string
+ pattern_without_delimiter:
+ description: None
+ pattern: "^[A-Z].*"
+ type: string
+ byte:
+ description: None
+ format: byte
+ type: string
+ binary:
+ description: None
+ format: binary
+ type: string
+ date:
+ description: None
+ format: date
+ type: string
+ dateTime:
+ description: None
+ format: date-time
+ type: string
+ password:
+ description: None
+ format: password
+ maxLength: 64
+ minLength: 10
+ type: string
+ callback:
+ description: None
+ type: string
+ required:
+ - byte
+ - double
+ - number
+ - pattern_without_delimiter
+ type: object
+ fakeBigDecimalMap_200_response:
+ example:
+ someId: 0.8008281904610115
+ someMap:
+ key: 6.027456183070403
+ properties:
+ someId:
+ type: number
+ someMap:
+ additionalProperties:
+ type: number
+ type: object
+ type: object
+ testJsonFormData_request:
+ properties:
+ param:
+ description: field1
+ type: string
+ param2:
+ description: field2
+ type: string
+ required:
+ - param
+ - param2
+ type: object
+ testInlineFreeformAdditionalProperties_request:
+ additionalProperties: true
+ properties:
+ someProperty:
+ type: string
+ type: object
+ uploadFileWithRequiredFile_request:
+ properties:
+ additionalMetadata:
+ description: Additional data to pass to server
+ type: string
+ requiredFile:
+ description: file to upload
+ format: binary
+ type: string
+ required:
+ - requiredFile
+ type: object
+ securitySchemes:
+ petstore_auth:
+ flows:
+ implicit:
+ authorizationUrl: http://petstore.swagger.io/api/oauth/dialog
+ scopes:
+ write:pets: modify pets in your account
+ read:pets: read your pets
+ type: oauth2
+ api_key:
+ in: header
+ name: api_key
+ type: apiKey
+ api_key_query:
+ in: query
+ name: api_key_query
+ type: apiKey
+ http_basic_test:
+ scheme: basic
+ type: http
+ bearer_test:
+ bearerFormat: JWT
+ scheme: bearer
+ type: http
+ http_signature_test:
+ scheme: signature
+ type: http
+
diff --git a/samples/client/petstore/java/feign-hc5/build.gradle b/samples/client/petstore/java/feign-hc5/build.gradle
new file mode 100644
index 000000000000..0138ab3791f9
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/build.gradle
@@ -0,0 +1,139 @@
+apply plugin: 'idea'
+apply plugin: 'eclipse'
+
+group = 'org.openapitools'
+version = '1.0.0'
+
+buildscript {
+ repositories {
+ mavenCentral()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:2.3.+'
+ classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
+ }
+}
+
+repositories {
+ mavenCentral()
+}
+
+
+if(hasProperty('target') && target == 'android') {
+
+ apply plugin: 'com.android.library'
+ apply plugin: 'com.github.dcendents.android-maven'
+
+ android {
+ compileSdkVersion 25
+ buildToolsVersion '25.0.2'
+ defaultConfig {
+ minSdkVersion 14
+ targetSdkVersion 25
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ // Rename the aar correctly
+ libraryVariants.all { variant ->
+ variant.outputs.each { output ->
+ def outputFile = output.outputFile
+ if (outputFile != null && outputFile.name.endsWith('.aar')) {
+ def fileName = "${project.name}-${variant.baseName}-${version}.aar"
+ output.outputFile = new File(outputFile.parent, fileName)
+ }
+ }
+ }
+
+ dependencies {
+ provided "jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version"
+ }
+ }
+
+ afterEvaluate {
+ android.libraryVariants.all { variant ->
+ def task = project.tasks.create "jar${variant.name.capitalize()}", Jar
+ task.description = "Create jar artifact for ${variant.name}"
+ task.dependsOn variant.javaCompile
+ task.from variant.javaCompile.destinationDirectory
+ task.destinationDirectory = project.file("${project.buildDir}/outputs/jar")
+ task.archiveFileName = "${project.name}-${variant.baseName}-${version}.jar"
+ artifacts.add('archives', task);
+ }
+ }
+
+ task sourcesJar(type: Jar) {
+ from android.sourceSets.main.java.srcDirs
+ classifier = 'sources'
+ }
+
+ artifacts {
+ archives sourcesJar
+ }
+
+} else {
+
+ apply plugin: 'java'
+ apply plugin: 'maven-publish'
+
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
+
+ publishing {
+ publications {
+ maven(MavenPublication) {
+ artifactId = 'petstore-feign-hc5'
+ from components.java
+ }
+ }
+ }
+
+ task execute(type:JavaExec) {
+ main = System.getProperty('mainClass')
+ classpath = sourceSets.main.runtimeClasspath
+ }
+}
+
+test {
+ useJUnitPlatform()
+}
+
+ext {
+ swagger_annotations_version = "1.6.11"
+ jackson_version = "2.17.1"
+ jackson_databind_version = "2.17.1"
+ jackson_databind_nullable_version = "0.2.6"
+ jakarta_annotation_version = "1.3.5"
+ feign_version = "13.5"
+ feign_form_version = "3.8.0"
+ junit_version = "5.7.0"
+ scribejava_version = "8.0.0"
+}
+
+dependencies {
+ implementation "io.swagger:swagger-annotations:$swagger_annotations_version"
+ implementation "com.google.code.findbugs:jsr305:3.0.2"
+ implementation "io.github.openfeign:feign-core:$feign_version"
+ implementation "io.github.openfeign:feign-jackson:$feign_version"
+ implementation "io.github.openfeign:feign-slf4j:$feign_version"
+ implementation "io.github.openfeign:feign-hc5:$feign_version"
+ implementation "io.github.openfeign.form:feign-form:$feign_form_version"
+ implementation "com.fasterxml.jackson.core:jackson-core:$jackson_version"
+ implementation "com.fasterxml.jackson.core:jackson-annotations:$jackson_version"
+ implementation "com.fasterxml.jackson.core:jackson-databind:$jackson_databind_version"
+ implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jackson_version"
+ implementation "org.openapitools:jackson-databind-nullable:$jackson_databind_nullable_version"
+ implementation "com.brsanthu:migbase64:2.2"
+ implementation "com.github.scribejava:scribejava-core:$scribejava_version"
+ implementation "com.brsanthu:migbase64:2.2"
+ implementation "jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version"
+ testImplementation "org.junit.jupiter:junit-jupiter:$junit_version"
+ testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junit_version"
+ testImplementation "org.junit.jupiter:junit-jupiter-params:$junit_version"
+ testImplementation "com.github.tomakehurst:wiremock-jre8:2.35.1"
+ testImplementation "org.hamcrest:hamcrest:2.2"
+ testImplementation "commons-io:commons-io:2.16.1"
+ testImplementation "ch.qos.logback:logback-classic:1.2.3"
+}
diff --git a/samples/client/petstore/java/feign-hc5/build.sbt b/samples/client/petstore/java/feign-hc5/build.sbt
new file mode 100644
index 000000000000..3d34be0c44c6
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/build.sbt
@@ -0,0 +1,34 @@
+lazy val root = (project in file(".")).
+ settings(
+ organization := "org.openapitools",
+ name := "petstore-feign-hc5",
+ version := "1.0.0",
+ scalaVersion := "2.11.12",
+ scalacOptions ++= Seq("-feature"),
+ compile / javacOptions ++= Seq("-Xlint:deprecation"),
+ Compile / packageDoc / publishArtifact := false,
+ resolvers += Resolver.mavenLocal,
+ libraryDependencies ++= Seq(
+ "io.swagger" % "swagger-annotations" % "1.6.11" % "compile",
+ "com.google.code.findbugs" % "jsr305" % "3.0.2" % "compile",
+ "io.github.openfeign" % "feign-core" % "13.5" % "compile",
+ "io.github.openfeign" % "feign-jackson" % "13.5" % "compile",
+ "io.github.openfeign" % "feign-slf4j" % "13.5" % "compile",
+ "io.github.openfeign.form" % "feign-form" % "3.8.0" % "compile",
+ "io.github.openfeign" % "feign-hc5" % "13.5" % "compile",
+ "com.fasterxml.jackson.core" % "jackson-core" % "2.17.1" % "compile",
+ "com.fasterxml.jackson.core" % "jackson-annotations" % "2.17.1" % "compile",
+ "com.fasterxml.jackson.core" % "jackson-databind" % "2.17.1" % "compile",
+ "com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % "2.17.1" % "compile",
+ "com.github.joschi.jackson" % "jackson-datatype-threetenbp" % "2.15.2" % "compile",
+ "com.github.scribejava" % "scribejava-core" % "8.0.0" % "compile",
+ "com.brsanthu" % "migbase64" % "2.2" % "compile",
+ "jakarta.annotation" % "jakarta.annotation-api" % "1.3.5" % "compile",
+ "org.junit.jupiter" % "junit-jupiter" % "5.7.0" % "test",
+ "org.junit.jupiter" % "junit-jupiter-params" % "5.7.0" % "test",
+ "com.github.tomakehurst" % "wiremock-jre8" % "2.35.1" % "test",
+ "org.hamcrest" % "hamcrest" % "2.2" % "test",
+ "commons-io" % "commons-io" % "2.16.1" % "test",
+ "com.novocode" % "junit-interface" % "0.10" % "test"
+ )
+ )
diff --git a/samples/client/petstore/java/feign-hc5/git_push.sh b/samples/client/petstore/java/feign-hc5/git_push.sh
new file mode 100644
index 000000000000..f53a75d4fabe
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/git_push.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
+#
+# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com"
+
+git_user_id=$1
+git_repo_id=$2
+release_note=$3
+git_host=$4
+
+if [ "$git_host" = "" ]; then
+ git_host="github.com"
+ echo "[INFO] No command line input provided. Set \$git_host to $git_host"
+fi
+
+if [ "$git_user_id" = "" ]; then
+ git_user_id="GIT_USER_ID"
+ echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
+fi
+
+if [ "$git_repo_id" = "" ]; then
+ git_repo_id="GIT_REPO_ID"
+ echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
+fi
+
+if [ "$release_note" = "" ]; then
+ release_note="Minor update"
+ echo "[INFO] No command line input provided. Set \$release_note to $release_note"
+fi
+
+# Initialize the local directory as a Git repository
+git init
+
+# Adds the files in the local repository and stages them for commit.
+git add .
+
+# Commits the tracked changes and prepares them to be pushed to a remote repository.
+git commit -m "$release_note"
+
+# Sets the new remote
+git_remote=$(git remote)
+if [ "$git_remote" = "" ]; then # git remote not defined
+
+ if [ "$GIT_TOKEN" = "" ]; then
+ echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
+ git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git
+ else
+ git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git
+ fi
+
+fi
+
+git pull origin master
+
+# Pushes (Forces) the changes in the local repository up to the remote repository
+echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
+git push origin master 2>&1 | grep -v 'To https'
diff --git a/samples/client/petstore/java/feign-hc5/gradle.properties b/samples/client/petstore/java/feign-hc5/gradle.properties
new file mode 100644
index 000000000000..a3408578278a
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/gradle.properties
@@ -0,0 +1,6 @@
+# This file is automatically generated by OpenAPI Generator (https://github.com/openAPITools/openapi-generator).
+# To include other gradle properties as part of the code generation process, please use the `gradleProperties` option.
+#
+# Gradle properties reference: https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties
+# For example, uncomment below to build for Android
+#target = android
diff --git a/samples/client/petstore/java/feign-hc5/gradle/wrapper/gradle-wrapper.jar b/samples/client/petstore/java/feign-hc5/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 000000000000..e6441136f3d4
Binary files /dev/null and b/samples/client/petstore/java/feign-hc5/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/samples/client/petstore/java/feign-hc5/gradle/wrapper/gradle-wrapper.properties b/samples/client/petstore/java/feign-hc5/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 000000000000..b82aa23a4f05
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,7 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
+networkTimeout=10000
+validateDistributionUrl=true
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/samples/client/petstore/java/feign-hc5/gradlew b/samples/client/petstore/java/feign-hc5/gradlew
new file mode 100644
index 000000000000..9d0ce634cb11
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/gradlew
@@ -0,0 +1,249 @@
+#!/bin/sh
+
+#
+# Copyright © 2015-2021 the original authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
+# * compound commands having a testable exit status, especially «case»;
+# * various built-in commands including «command», «set», and «ulimit».
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
+##############################################################################
+
+# Attempt to set APP_HOME
+
+# Resolve links: $0 may be a link
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+[ -h "$app_path" ]
+do
+ls=$( ls -ld "$app_path" )
+link=${ls#*' -> '}
+case $link in #(
+/*) app_path=$link ;; #(
+*) app_path=$APP_HOME$link ;;
+esac
+done
+
+# This is normally unused
+# shellcheck disable=SC2034
+APP_BASE_NAME=${0##*/}
+# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
+APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD=maximum
+
+warn () {
+echo "$*"
+} >&2
+
+die () {
+echo
+echo "$*"
+echo
+exit 1
+} >&2
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "$( uname )" in #(
+CYGWIN* ) cygwin=true ;; #(
+Darwin* ) darwin=true ;; #(
+MSYS* | MINGW* ) msys=true ;; #(
+NONSTOP* ) nonstop=true ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+# IBM's JDK on AIX uses strange locations for the executables
+JAVACMD=$JAVA_HOME/jre/sh/java
+else
+JAVACMD=$JAVA_HOME/bin/java
+fi
+if [ ! -x "$JAVACMD" ] ; then
+die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+else
+JAVACMD=java
+if ! command -v java >/dev/null 2>&1
+then
+die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+fi
+
+# Increase the maximum file descriptors if we can.
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+case $MAX_FD in #(
+max*)
+# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+# shellcheck disable=SC2039,SC3045
+MAX_FD=$( ulimit -H -n ) ||
+warn "Could not query maximum file descriptor limit"
+esac
+case $MAX_FD in #(
+'' | soft) :;; #(
+*)
+# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+# shellcheck disable=SC2039,SC3045
+ulimit -n "$MAX_FD" ||
+warn "Could not set maximum file descriptor limit to $MAX_FD"
+esac
+fi
+
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if "$cygwin" || "$msys" ; then
+APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
+
+JAVACMD=$( cygpath --unix "$JAVACMD" )
+
+# Now convert the arguments - kludge to limit ourselves to /bin/sh
+for arg do
+if
+case $arg in #(
+-*) false ;; # don't mess with options #(
+/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+[ -e "$t" ] ;; #(
+*) false ;;
+esac
+then
+arg=$( cygpath --path --ignore --mixed "$arg" )
+fi
+# Roll the args list around exactly as many times as the number of
+# args, so each arg winds up back in the position where it started, but
+# possibly modified.
+#
+# NB: a `for` loop captures its iteration list before it begins, so
+# changing the positional parameters here affects neither the number of
+# iterations, nor the values presented in `arg`.
+shift # remove old arg
+set -- "$@" "$arg" # push replacement arg
+done
+fi
+
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Collect all arguments for the java command:
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
+# and any embedded shellness will be escaped.
+# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
+# treated as '${Hostname}' itself on the command line.
+
+set -- \
+"-Dorg.gradle.appname=$APP_BASE_NAME" \
+-classpath "$CLASSPATH" \
+org.gradle.wrapper.GradleWrapperMain \
+"$@"
+
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+die "xargs is not available"
+fi
+
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
+
+eval "set -- $(
+printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+xargs -n1 |
+sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+tr '\n' ' '
+)" '"$@"'
+
+exec "$JAVACMD" "$@"
diff --git a/samples/client/petstore/java/feign-hc5/gradlew.bat b/samples/client/petstore/java/feign-hc5/gradlew.bat
new file mode 100644
index 000000000000..25da30dbdeee
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/gradlew.bat
@@ -0,0 +1,92 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%"=="" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if %ERRORLEVEL% equ 0 goto execute
+
+echo. 1>&2
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo. 1>&2
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if %ERRORLEVEL% equ 0 goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/samples/client/petstore/java/feign-hc5/pom.xml b/samples/client/petstore/java/feign-hc5/pom.xml
new file mode 100644
index 000000000000..a191affa5237
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/pom.xml
@@ -0,0 +1,330 @@
+
+ 4.0.0
+ org.openapitools
+ petstore-feign-hc5
+ jar
+ petstore-feign-hc5
+ 1.0.0
+ https://github.com/openapitools/openapi-generator
+ OpenAPI Java
+
+ scm:git:git@github.com:openapitools/openapi-generator.git
+ scm:git:git@github.com:openapitools/openapi-generator.git
+ https://github.com/openapitools/openapi-generator
+
+
+
+
+ Unlicense
+ https://www.apache.org/licenses/LICENSE-2.0.html
+ repo
+
+
+
+
+
+ OpenAPI-Generator Contributors
+ team@openapitools.org
+ OpenAPITools.org
+ http://openapitools.org
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-enforcer-plugin
+ 3.0.0-M1
+
+
+ enforce-maven
+
+ enforce
+
+
+
+
+ 2.2.0
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 3.0.0-M4
+
+
+
+ loggerPath
+ conf/log4j.properties
+
+
+ -Xms512m -Xmx1500m
+ methods
+ 10
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}/lib
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 2.2
+
+
+
+ jar
+ test-jar
+
+
+
+
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ 1.10
+
+
+ add_sources
+ generate-sources
+
+ add-source
+
+
+
+ src/main/java
+
+
+
+
+ add_test_sources
+ generate-test-sources
+
+ add-test-source
+
+
+
+ src/test/java
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+ 1.8
+ 1.8
+ true
+ 128m
+ 512m
+
+ -Xlint:all
+ -J-Xss4m
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 3.3.2
+
+ none
+ 1.8
+
+
+
+ attach-javadocs
+
+ jar
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 2.2.1
+
+
+ attach-sources
+
+ jar-no-fork
+
+
+
+
+
+
+
+
+
+ sign-artifacts
+
+
+
+ org.apache.maven.plugins
+ maven-gpg-plugin
+ 1.5
+
+
+ sign-artifacts
+ verify
+
+ sign
+
+
+
+
+
+
+
+
+
+
+
+
+
+ com.google.code.findbugs
+ jsr305
+ 3.0.2
+
+
+
+
+ io.github.openfeign
+ feign-core
+ ${feign-version}
+
+
+ io.github.openfeign
+ feign-jackson
+ ${feign-version}
+
+
+ io.github.openfeign
+ feign-slf4j
+ ${feign-version}
+
+
+ io.github.openfeign.form
+ feign-form
+ ${feign-form-version}
+
+
+ io.github.openfeign
+ feign-hc5
+ ${feign-version}
+
+
+
+
+ com.fasterxml.jackson.core
+ jackson-core
+ ${jackson-version}
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ ${jackson-version}
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ ${jackson-databind-version}
+
+
+ org.openapitools
+ jackson-databind-nullable
+ ${jackson-databind-nullable-version}
+
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jsr310
+ ${jackson-version}
+
+
+ com.github.scribejava
+ scribejava-core
+ ${scribejava-version}
+
+
+ jakarta.annotation
+ jakarta.annotation-api
+ ${jakarta-annotation-version}
+ provided
+
+
+
+
+ ch.qos.logback
+ logback-classic
+ 1.3.13
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter
+ ${junit-version}
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter-params
+ ${junit-version}
+ test
+
+
+ org.hamcrest
+ hamcrest
+ 2.2
+ test
+
+
+ com.github.tomakehurst
+ wiremock-jre8
+ 2.35.1
+ test
+
+
+
+ UTF-8
+ 1.8
+ ${java.version}
+ ${java.version}
+ 13.2.1
+ 3.8.0
+ 2.17.1
+ 2.17.1
+ 0.2.6
+ 1.3.5
+ 2.0.2
+ 5.10.0
+ 1.0.0
+ 8.3.3
+
+
diff --git a/samples/client/petstore/java/feign-hc5/settings.gradle b/samples/client/petstore/java/feign-hc5/settings.gradle
new file mode 100644
index 000000000000..5ac130166d4d
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/settings.gradle
@@ -0,0 +1 @@
+rootProject.name = "petstore-feign-hc5"
\ No newline at end of file
diff --git a/samples/client/petstore/java/feign-hc5/src/main/AndroidManifest.xml b/samples/client/petstore/java/feign-hc5/src/main/AndroidManifest.xml
new file mode 100644
index 000000000000..54fbcb3da1e8
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/AndroidManifest.xml
@@ -0,0 +1,3 @@
+
+
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/ApiClient.java
new file mode 100644
index 000000000000..15c1779d2276
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/ApiClient.java
@@ -0,0 +1,338 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.function.Supplier;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import feign.hc5.ApacheHttp5Client;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import org.openapitools.jackson.nullable.JsonNullableModule;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+
+import feign.Feign;
+import feign.RequestInterceptor;
+import feign.form.FormEncoder;
+import feign.jackson.JacksonDecoder;
+import feign.jackson.JacksonEncoder;
+import feign.slf4j.Slf4jLogger;
+import org.openapitools.client.auth.HttpBasicAuth;
+import org.openapitools.client.auth.HttpBearerAuth;
+import org.openapitools.client.auth.ApiKeyAuth;
+import org.openapitools.client.ApiResponseDecoder;
+
+import org.openapitools.client.auth.ApiErrorDecoder;
+import org.openapitools.client.auth.OAuth;
+import org.openapitools.client.auth.OAuth.AccessTokenListener;
+import org.openapitools.client.auth.OAuthFlow;
+import org.openapitools.client.auth.OauthPasswordGrant;
+import org.openapitools.client.auth.OauthClientCredentialsGrant;
+import feign.Retryer;
+
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class ApiClient {
+ private static final Logger log = Logger.getLogger(ApiClient.class.getName());
+
+ public interface Api {}
+
+ protected ObjectMapper objectMapper;
+ private String basePath = "http://petstore.swagger.io:80/v2";
+ private Map apiAuthorizations;
+ private Feign.Builder feignBuilder;
+
+ public ApiClient() {
+ apiAuthorizations = new LinkedHashMap();
+ objectMapper = createObjectMapper();
+ feignBuilder = Feign.builder()
+ .client(new ApacheHttp5Client())
+ .encoder(new FormEncoder(new JacksonEncoder(objectMapper)))
+ .decoder(new ApiResponseDecoder(objectMapper))
+ .errorDecoder(new ApiErrorDecoder())
+ .retryer(new Retryer.Default(0, 0, 2))
+ .logger(new Slf4jLogger());
+ }
+
+ public ApiClient(String[] authNames) {
+ this();
+ for(String authName : authNames) {
+ log.log(Level.FINE, "Creating authentication {0}", authName);
+ RequestInterceptor auth = null;
+ if ("petstore_auth".equals(authName)) {
+ auth = buildOauthRequestInterceptor(OAuthFlow.IMPLICIT, "http://petstore.swagger.io/api/oauth/dialog", "", "write:pets, read:pets");
+ } else if ("api_key".equals(authName)) {
+ auth = new ApiKeyAuth("header", "api_key");
+ } else if ("api_key_query".equals(authName)) {
+ auth = new ApiKeyAuth("query", "api_key_query");
+ } else if ("http_basic_test".equals(authName)) {
+ auth = new HttpBasicAuth();
+ } else if ("bearer_test".equals(authName)) {
+ auth = new HttpBearerAuth("bearer");
+ } else if ("http_signature_test".equals(authName)) {
+ } else {
+ throw new RuntimeException("auth name \"" + authName + "\" not found in available auth names");
+ }
+ if (auth != null) {
+ addAuthorization(authName, auth);
+ }
+ }
+ }
+
+ /**
+ * Basic constructor for single auth name
+ * @param authName
+ */
+ public ApiClient(String authName) {
+ this(new String[]{authName});
+ }
+
+ /**
+ * Helper constructor for single api key
+ * @param authName
+ * @param apiKey
+ */
+ public ApiClient(String authName, String apiKey) {
+ this(authName);
+ this.setApiKey(apiKey);
+ }
+
+ public String getBasePath() {
+ return basePath;
+ }
+
+ public ApiClient setBasePath(String basePath) {
+ this.basePath = basePath;
+ return this;
+ }
+
+ public Map getApiAuthorizations() {
+ return apiAuthorizations;
+ }
+
+ public void setApiAuthorizations(Map apiAuthorizations) {
+ this.apiAuthorizations = apiAuthorizations;
+ }
+
+ public Feign.Builder getFeignBuilder() {
+ return feignBuilder;
+ }
+
+ public ApiClient setFeignBuilder(Feign.Builder feignBuilder) {
+ this.feignBuilder = feignBuilder;
+ return this;
+ }
+
+ private ObjectMapper createObjectMapper() {
+ ObjectMapper objectMapper = new ObjectMapper();
+ objectMapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
+ objectMapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING);
+ objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
+ objectMapper.disable(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE);
+ objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
+ objectMapper.setDateFormat(new RFC3339DateFormat());
+ objectMapper.registerModule(new JavaTimeModule());
+ objectMapper.registerModule(new RFC3339JavaTimeModule());
+ JsonNullableModule jnm = new JsonNullableModule();
+ objectMapper.registerModule(jnm);
+ return objectMapper;
+ }
+
+ private RequestInterceptor buildOauthRequestInterceptor(OAuthFlow flow, String authorizationUrl, String tokenUrl, String scopes) {
+ switch (flow) {
+ case PASSWORD:
+ return new OauthPasswordGrant(tokenUrl, scopes);
+ case APPLICATION:
+ return new OauthClientCredentialsGrant(authorizationUrl, tokenUrl, scopes);
+ default:
+ throw new RuntimeException("Oauth flow \"" + flow + "\" is not implemented");
+ }
+ }
+
+
+ public ObjectMapper getObjectMapper(){
+ return objectMapper;
+ }
+
+ public void setObjectMapper(ObjectMapper objectMapper) {
+ this.objectMapper = objectMapper;
+ }
+
+ /**
+ * Creates a feign client for given API interface.
+ *
+ * Usage:
+ * ApiClient apiClient = new ApiClient();
+ * apiClient.setBasePath("http://localhost:8080");
+ * XYZApi api = apiClient.buildClient(XYZApi.class);
+ * XYZResponse response = api.someMethod(...);
+ * @param Type
+ * @param clientClass Client class
+ * @return The Client
+ */
+ public T buildClient(Class clientClass) {
+ return feignBuilder.target(clientClass, basePath);
+ }
+
+ /**
+ * Select the Accept header's value from the given accepts array:
+ * if JSON exists in the given array, use it;
+ * otherwise use all of them (joining into a string)
+ *
+ * @param accepts The accepts array to select from
+ * @return The Accept header to use. If the given array is empty,
+ * null will be returned (not to set the Accept header explicitly).
+ */
+ public String selectHeaderAccept(String[] accepts) {
+ if (accepts.length == 0) return null;
+ if (StringUtil.containsIgnoreCase(accepts, "application/json")) return "application/json";
+ return StringUtil.join(accepts, ",");
+ }
+
+ /**
+ * Select the Content-Type header's value from the given array:
+ * if JSON exists in the given array, use it;
+ * otherwise use the first one of the array.
+ *
+ * @param contentTypes The Content-Type array to select from
+ * @return The Content-Type header to use. If the given array is empty,
+ * JSON will be used.
+ */
+ public String selectHeaderContentType(String[] contentTypes) {
+ if (contentTypes.length == 0) return "application/json";
+ if (StringUtil.containsIgnoreCase(contentTypes, "application/json")) return "application/json";
+ return contentTypes[0];
+ }
+
+ /**
+ * Helper method to configure the bearer token.
+ * @param bearerToken the bearer token.
+ */
+ public void setBearerToken(String bearerToken) {
+ HttpBearerAuth apiAuthorization = getAuthorization(HttpBearerAuth.class);
+ apiAuthorization.setBearerToken(bearerToken);
+ }
+
+ /**
+ * Helper method to configure the supplier of bearer tokens.
+ * @param tokenSupplier the supplier of bearer tokens.
+ */
+ public void setBearerToken(Supplier tokenSupplier) {
+ HttpBearerAuth apiAuthorization = getAuthorization(HttpBearerAuth.class);
+ apiAuthorization.setBearerToken(tokenSupplier);
+ }
+
+ /**
+ * Helper method to configure the first api key found
+ * @param apiKey API key
+ */
+ public void setApiKey(String apiKey) {
+ ApiKeyAuth apiAuthorization = getAuthorization(ApiKeyAuth.class);
+ apiAuthorization.setApiKey(apiKey);
+ }
+
+ /**
+ * Helper method to configure the username/password for basic auth
+ * @param username Username
+ * @param password Password
+ */
+ public void setCredentials(String username, String password) {
+ HttpBasicAuth apiAuthorization = getAuthorization(HttpBasicAuth.class);
+ apiAuthorization.setCredentials(username, password);
+ }
+
+ /**
+ * Helper method to configure the client credentials for Oauth
+ * @param clientId Client ID
+ * @param clientSecret Client secret
+ */
+ public void setClientCredentials(String clientId, String clientSecret) {
+ OauthClientCredentialsGrant authorization = getAuthorization(OauthClientCredentialsGrant.class);
+ authorization.configure(clientId, clientSecret);
+ }
+
+ /**
+ * Helper method to configure the username/password for Oauth password grant
+ * @param username Username
+ * @param password Password
+ * @param clientId Client ID
+ * @param clientSecret Client secret
+ */
+ public void setOauthPassword(String username, String password, String clientId, String clientSecret) {
+ OauthPasswordGrant apiAuthorization = getAuthorization(OauthPasswordGrant.class);
+ apiAuthorization.configure(username, password, clientId, clientSecret);
+ }
+
+ /**
+ * Helper method to pre-set the oauth access token of the first oauth found in the apiAuthorizations (there should be only one)
+ * @param accessToken Access Token
+ * @param expiresIn Validity period in seconds
+ */
+ public void setAccessToken(String accessToken, Integer expiresIn) {
+ OAuth apiAuthorization = getAuthorization(OAuth.class);
+ apiAuthorization.setAccessToken(accessToken, expiresIn);
+ }
+
+ /**
+ * Helper method to configure the oauth accessCode/implicit flow parameters
+ * @param clientId Client ID
+ * @param clientSecret Client secret
+ * @param redirectURI Redirect URI
+ */
+ public void configureAuthorizationFlow(String clientId, String clientSecret, String redirectURI) {
+ throw new RuntimeException("Not implemented");
+ }
+
+ /**
+ * Configures a listener which is notified when a new access token is received.
+ * @param accessTokenListener Access token listener
+ */
+ public void registerAccessTokenListener(AccessTokenListener accessTokenListener) {
+ OAuth apiAuthorization = getAuthorization(OAuth.class);
+ apiAuthorization.registerAccessTokenListener(accessTokenListener);
+ }
+
+ /**
+ * Gets request interceptor based on authentication name
+ * @param authName Authentication name
+ * @return Request Interceptor
+ */
+ public RequestInterceptor getAuthorization(String authName) {
+ return apiAuthorizations.get(authName);
+ }
+
+ /**
+ * Adds an authorization to be used by the client
+ * @param authName Authentication name
+ * @param authorization Request interceptor
+ */
+ public void addAuthorization(String authName, RequestInterceptor authorization) {
+ if (apiAuthorizations.containsKey(authName)) {
+ throw new RuntimeException("auth name \"" + authName + "\" already in api authorizations");
+ }
+ apiAuthorizations.put(authName, authorization);
+ feignBuilder.requestInterceptor(authorization);
+ }
+
+ private T getAuthorization(Class type) {
+ return (T) apiAuthorizations.values()
+ .stream()
+ .filter(requestInterceptor -> type.isAssignableFrom(requestInterceptor.getClass()))
+ .findFirst()
+ .orElseThrow(() -> new RuntimeException("No Oauth authentication or OAuth configured!"));
+ }
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/ApiResponseDecoder.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/ApiResponseDecoder.java
new file mode 100644
index 000000000000..52ca0850b144
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/ApiResponseDecoder.java
@@ -0,0 +1,50 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import feign.Response;
+import feign.Types;
+import feign.jackson.JacksonDecoder;
+
+import java.io.IOException;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+
+import org.openapitools.client.model.ApiResponse;
+
+public class ApiResponseDecoder extends JacksonDecoder {
+
+ public ApiResponseDecoder(ObjectMapper mapper) {
+ super(mapper);
+ }
+
+ @Override
+ public Object decode(Response response, Type type) throws IOException {
+ //Detects if the type is an instance of the parameterized class ApiResponse
+ if (type instanceof ParameterizedType && Types.getRawType(type).isAssignableFrom(ApiResponse.class)) {
+ //The ApiResponse class has a single type parameter, the Dto class itself
+ Type responseBodyType = ((ParameterizedType) type).getActualTypeArguments()[0];
+ Object body = super.decode(response, responseBodyType);
+ Map> responseHeaders = Collections.unmodifiableMap(response.headers());
+ return new ApiResponse<>(response.status(), responseHeaders, body);
+ } else {
+ //The response is not encapsulated in the ApiResponse, decode the Dto as normal
+ return super.decode(response, type);
+ }
+ }
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/EncodingUtils.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/EncodingUtils.java
new file mode 100644
index 000000000000..2ebd9215a473
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/EncodingUtils.java
@@ -0,0 +1,99 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+/**
+* Utilities to support Swagger encoding formats in Feign.
+*/
+public final class EncodingUtils {
+
+ /**
+ * Private constructor. Do not construct this class.
+ */
+ private EncodingUtils() {}
+
+ /**
+ * Encodes a collection of query parameters according to the Swagger
+ * collection format.
+ *
+ * Of the various collection formats defined by Swagger ("csv", "tsv",
+ * etc), Feign only natively supports "multi". This utility generates the
+ * other format types so it will be properly processed by Feign.
+ *
+ * Note, as part of reformatting, it URL encodes the parameters as
+ * well.
+ * @param parameters The collection object to be formatted. This object will
+ * not be changed.
+ * @param collectionFormat The Swagger collection format (eg, "csv", "tsv",
+ * "pipes"). See the
+ *
+ * OpenAPI Spec for more details.
+ * @return An object that will be correctly formatted by Feign.
+ */
+ public static Object encodeCollection(Collection> parameters,
+ String collectionFormat) {
+ if (parameters == null) {
+ return parameters;
+ }
+ List stringValues = new ArrayList<>(parameters.size());
+ for (Object parameter : parameters) {
+ // ignore null values (same behavior as Feign)
+ if (parameter != null) {
+ stringValues.add(encode(parameter));
+ }
+ }
+ // Feign natively handles single-element lists and the "multi" format.
+ if (stringValues.size() < 2 || "multi".equals(collectionFormat)) {
+ return stringValues;
+ }
+ // Otherwise return a formatted String
+ String[] stringArray = stringValues.toArray(new String[0]);
+ switch (collectionFormat) {
+ case "csv":
+ default:
+ return StringUtil.join(stringArray, ",");
+ case "ssv":
+ return StringUtil.join(stringArray, " ");
+ case "tsv":
+ return StringUtil.join(stringArray, "\t");
+ case "pipes":
+ return StringUtil.join(stringArray, "|");
+ }
+ }
+
+ /**
+ * URL encode a single query parameter.
+ * @param parameter The query parameter to encode. This object will not be
+ * changed.
+ * @return The URL encoded string representation of the parameter. If the
+ * parameter is null, returns null.
+ */
+ public static String encode(Object parameter) {
+ if (parameter == null) {
+ return null;
+ }
+ try {
+ return URLEncoder.encode(parameter.toString(), "UTF-8").replaceAll("\\+", "%20");
+ } catch (UnsupportedEncodingException e) {
+ // Should never happen, UTF-8 is always supported
+ throw new RuntimeException(e);
+ }
+ }
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/ParamExpander.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/ParamExpander.java
new file mode 100644
index 000000000000..fb7a6fe9a65c
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/ParamExpander.java
@@ -0,0 +1,35 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client;
+
+import feign.Param;
+
+import java.text.DateFormat;
+import java.util.Date;
+
+/**
+ * Param Expander to convert {@link Date} to RFC3339
+ */
+public class ParamExpander implements Param.Expander {
+
+ private static final DateFormat dateformat = new RFC3339DateFormat();
+
+ @Override
+ public String expand(Object value) {
+ if (value instanceof Date) {
+ return dateformat.format(value);
+ }
+ return value.toString();
+ }
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/RFC3339DateFormat.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/RFC3339DateFormat.java
new file mode 100644
index 000000000000..a3785edd835b
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/RFC3339DateFormat.java
@@ -0,0 +1,58 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package org.openapitools.client;
+
+import com.fasterxml.jackson.databind.util.StdDateFormat;
+
+import java.text.DateFormat;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.text.DecimalFormat;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
+
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class RFC3339DateFormat extends DateFormat {
+ private static final long serialVersionUID = 1L;
+ private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
+
+ private final StdDateFormat fmt = new StdDateFormat()
+ .withTimeZone(TIMEZONE_Z)
+ .withColonInTimeZone(true);
+
+ public RFC3339DateFormat() {
+ this.calendar = new GregorianCalendar();
+ this.numberFormat = new DecimalFormat();
+ }
+
+ @Override
+ public Date parse(String source) {
+ return parse(source, new ParsePosition(0));
+ }
+
+ @Override
+ public Date parse(String source, ParsePosition pos) {
+ return fmt.parse(source, pos);
+ }
+
+ @Override
+ public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
+ return fmt.format(date, toAppendTo, fieldPosition);
+ }
+
+ @Override
+ public Object clone() {
+ return super.clone();
+ }
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/RFC3339InstantDeserializer.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/RFC3339InstantDeserializer.java
new file mode 100644
index 000000000000..aa7f12749fee
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/RFC3339InstantDeserializer.java
@@ -0,0 +1,100 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package org.openapitools.client;
+
+import java.io.IOException;
+import java.time.Instant;
+import java.time.OffsetDateTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.Temporal;
+import java.time.temporal.TemporalAccessor;
+import java.util.function.BiFunction;
+import java.util.function.Function;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeFeature;
+import com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer;
+
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class RFC3339InstantDeserializer extends InstantDeserializer {
+
+ private final static boolean DEFAULT_NORMALIZE_ZONE_ID = JavaTimeFeature.NORMALIZE_DESERIALIZED_ZONE_ID.enabledByDefault();
+ private final static boolean DEFAULT_ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS
+ = JavaTimeFeature.ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS.enabledByDefault();
+
+ public static final RFC3339InstantDeserializer INSTANT = new RFC3339InstantDeserializer<>(
+ Instant.class, DateTimeFormatter.ISO_INSTANT,
+ Instant::from,
+ a -> Instant.ofEpochMilli( a.value ),
+ a -> Instant.ofEpochSecond( a.integer, a.fraction ),
+ null,
+ true, // yes, replace zero offset with Z
+ DEFAULT_NORMALIZE_ZONE_ID,
+ DEFAULT_ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS
+ );
+
+ public static final RFC3339InstantDeserializer OFFSET_DATE_TIME = new RFC3339InstantDeserializer<>(
+ OffsetDateTime.class, DateTimeFormatter.ISO_OFFSET_DATE_TIME,
+ OffsetDateTime::from,
+ a -> OffsetDateTime.ofInstant( Instant.ofEpochMilli( a.value ), a.zoneId ),
+ a -> OffsetDateTime.ofInstant( Instant.ofEpochSecond( a.integer, a.fraction ), a.zoneId ),
+ (d, z) -> ( d.isEqual( OffsetDateTime.MIN ) || d.isEqual( OffsetDateTime.MAX ) ?
+ d :
+ d.withOffsetSameInstant( z.getRules().getOffset( d.toLocalDateTime() ) ) ),
+ true, // yes, replace zero offset with Z
+ DEFAULT_NORMALIZE_ZONE_ID,
+ DEFAULT_ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS
+ );
+
+ public static final RFC3339InstantDeserializer ZONED_DATE_TIME = new RFC3339InstantDeserializer<>(
+ ZonedDateTime.class, DateTimeFormatter.ISO_ZONED_DATE_TIME,
+ ZonedDateTime::from,
+ a -> ZonedDateTime.ofInstant( Instant.ofEpochMilli( a.value ), a.zoneId ),
+ a -> ZonedDateTime.ofInstant( Instant.ofEpochSecond( a.integer, a.fraction ), a.zoneId ),
+ ZonedDateTime::withZoneSameInstant,
+ false, // keep zero offset and Z separate since zones explicitly supported
+ DEFAULT_NORMALIZE_ZONE_ID,
+ DEFAULT_ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS
+ );
+
+ protected RFC3339InstantDeserializer(
+ Class supportedType,
+ DateTimeFormatter formatter,
+ Function parsedToValue,
+ Function fromMilliseconds,
+ Function fromNanoseconds,
+ BiFunction adjust,
+ boolean replaceZeroOffsetAsZ,
+ boolean normalizeZoneId,
+ boolean readNumericStringsAsTimestamp) {
+ super(
+ supportedType,
+ formatter,
+ parsedToValue,
+ fromMilliseconds,
+ fromNanoseconds,
+ adjust,
+ replaceZeroOffsetAsZ,
+ normalizeZoneId,
+ readNumericStringsAsTimestamp
+ );
+ }
+
+ @Override
+ protected T _fromString(JsonParser p, DeserializationContext ctxt, String string0) throws IOException {
+ return super._fromString(p, ctxt, string0.replace( ' ', 'T' ));
+ }
+}
\ No newline at end of file
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/RFC3339JavaTimeModule.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/RFC3339JavaTimeModule.java
new file mode 100644
index 000000000000..6032bb0a3e47
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/RFC3339JavaTimeModule.java
@@ -0,0 +1,31 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package org.openapitools.client;
+
+import java.time.Instant;
+import java.time.OffsetDateTime;
+import java.time.ZonedDateTime;
+
+import com.fasterxml.jackson.databind.module.SimpleModule;
+
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class RFC3339JavaTimeModule extends SimpleModule {
+
+ public RFC3339JavaTimeModule() {
+ super("RFC3339JavaTimeModule");
+
+ addDeserializer(Instant.class, RFC3339InstantDeserializer.INSTANT);
+ addDeserializer(OffsetDateTime.class, RFC3339InstantDeserializer.OFFSET_DATE_TIME);
+ addDeserializer(ZonedDateTime.class, RFC3339InstantDeserializer.ZONED_DATE_TIME);
+ }
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/ServerConfiguration.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/ServerConfiguration.java
new file mode 100644
index 000000000000..67186e5c66e2
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/ServerConfiguration.java
@@ -0,0 +1,72 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client;
+
+import java.util.Map;
+
+/**
+ * Representing a Server configuration.
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class ServerConfiguration {
+ public String URL;
+ public String description;
+ public Map variables;
+
+ /**
+ * @param URL A URL to the target host.
+ * @param description A description of the host designated by the URL.
+ * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template.
+ */
+ public ServerConfiguration(String URL, String description, Map variables) {
+ this.URL = URL;
+ this.description = description;
+ this.variables = variables;
+ }
+
+ /**
+ * Format URL template using given variables.
+ *
+ * @param variables A map between a variable name and its value.
+ * @return Formatted URL.
+ */
+ public String URL(Map variables) {
+ String url = this.URL;
+
+ // go through variables and replace placeholders
+ for (Map.Entry variable: this.variables.entrySet()) {
+ String name = variable.getKey();
+ ServerVariable serverVariable = variable.getValue();
+ String value = serverVariable.defaultValue;
+
+ if (variables != null && variables.containsKey(name)) {
+ value = variables.get(name);
+ if (serverVariable.enumValues.size() > 0 && !serverVariable.enumValues.contains(value)) {
+ throw new IllegalArgumentException("The variable " + name + " in the server URL has invalid value " + value + ".");
+ }
+ }
+ url = url.replace("{" + name + "}", value);
+ }
+ return url;
+ }
+
+ /**
+ * Format URL template using default server variables.
+ *
+ * @return Formatted URL.
+ */
+ public String URL() {
+ return URL(null);
+ }
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/ServerVariable.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/ServerVariable.java
new file mode 100644
index 000000000000..70321d1e6915
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/ServerVariable.java
@@ -0,0 +1,37 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client;
+
+import java.util.HashSet;
+
+/**
+ * Representing a Server Variable for server URL template substitution.
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class ServerVariable {
+ public String description;
+ public String defaultValue;
+ public HashSet enumValues = null;
+
+ /**
+ * @param description A description for the server variable.
+ * @param defaultValue The default value to use for substitution.
+ * @param enumValues An enumeration of string values to be used if the substitution options are from a limited set.
+ */
+ public ServerVariable(String description, String defaultValue, HashSet enumValues) {
+ this.description = description;
+ this.defaultValue = defaultValue;
+ this.enumValues = enumValues;
+ }
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/StringUtil.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/StringUtil.java
new file mode 100644
index 000000000000..a28de13eeda1
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/StringUtil.java
@@ -0,0 +1,83 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class StringUtil {
+ /**
+ * Check if the given array contains the given value (with case-insensitive comparison).
+ *
+ * @param array The array
+ * @param value The value to search
+ * @return true if the array contains the value
+ */
+ public static boolean containsIgnoreCase(String[] array, String value) {
+ for (String str : array) {
+ if (value == null && str == null) {
+ return true;
+ }
+ if (value != null && value.equalsIgnoreCase(str)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Join an array of strings with the given separator.
+ *
+ * Note: This might be replaced by utility method from commons-lang or guava someday
+ * if one of those libraries is added as dependency.
+ *
+ *
+ * @param array The array of strings
+ * @param separator The separator
+ * @return the resulting string
+ */
+ public static String join(String[] array, String separator) {
+ int len = array.length;
+ if (len == 0) {
+ return "";
+ }
+
+ StringBuilder out = new StringBuilder();
+ out.append(array[0]);
+ for (int i = 1; i < len; i++) {
+ out.append(separator).append(array[i]);
+ }
+ return out.toString();
+ }
+
+ /**
+ * Join a list of strings with the given separator.
+ *
+ * @param list The list of strings
+ * @param separator The separator
+ * @return the resulting string
+ */
+ public static String join(Collection list, String separator) {
+ Iterator iterator = list.iterator();
+ StringBuilder out = new StringBuilder();
+ if (iterator.hasNext()) {
+ out.append(iterator.next());
+ }
+ while (iterator.hasNext()) {
+ out.append(separator).append(iterator.next());
+ }
+ return out.toString();
+ }
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/AnotherFakeApi.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/AnotherFakeApi.java
new file mode 100644
index 000000000000..30d6c272e8c4
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/AnotherFakeApi.java
@@ -0,0 +1,47 @@
+package org.openapitools.client.api;
+
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.EncodingUtils;
+import org.openapitools.client.model.ApiResponse;
+
+import org.openapitools.client.model.Client;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import feign.*;
+
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public interface AnotherFakeApi extends ApiClient.Api {
+
+
+ /**
+ * To test special tags
+ * To test special tags and operation ID starting with number
+ * @param client client model (required)
+ * @return Client
+ */
+ @RequestLine("PATCH /another-fake/dummy")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ Client call123testSpecialTags(@javax.annotation.Nonnull Client client);
+
+ /**
+ * To test special tags
+ * Similar to call123testSpecialTags
but it also returns the http response headers .
+ * To test special tags and operation ID starting with number
+ * @param client client model (required)
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("PATCH /another-fake/dummy")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ ApiResponse call123testSpecialTagsWithHttpInfo(@javax.annotation.Nonnull Client client);
+
+
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/DefaultApi.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/DefaultApi.java
new file mode 100644
index 000000000000..84bccfc86adc
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/DefaultApi.java
@@ -0,0 +1,43 @@
+package org.openapitools.client.api;
+
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.EncodingUtils;
+import org.openapitools.client.model.ApiResponse;
+
+import org.openapitools.client.model.FooGetDefaultResponse;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import feign.*;
+
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public interface DefaultApi extends ApiClient.Api {
+
+
+ /**
+ *
+ *
+ * @return FooGetDefaultResponse
+ */
+ @RequestLine("GET /foo")
+ @Headers({
+ "Accept: application/json",
+ })
+ FooGetDefaultResponse fooGet();
+
+ /**
+ *
+ * Similar to fooGet
but it also returns the http response headers .
+ *
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("GET /foo")
+ @Headers({
+ "Accept: application/json",
+ })
+ ApiResponse fooGetWithHttpInfo();
+
+
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/FakeApi.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/FakeApi.java
new file mode 100644
index 000000000000..698fe8c35bea
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/FakeApi.java
@@ -0,0 +1,1072 @@
+package org.openapitools.client.api;
+
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.EncodingUtils;
+import org.openapitools.client.model.ApiResponse;
+
+import java.math.BigDecimal;
+import org.openapitools.client.model.ChildWithNullable;
+import org.openapitools.client.model.Client;
+import org.openapitools.client.model.EnumClass;
+import org.openapitools.client.model.FakeBigDecimalMap200Response;
+import java.io.File;
+import org.openapitools.client.model.FileSchemaTestClass;
+import org.openapitools.client.model.HealthCheckResult;
+import java.time.LocalDate;
+import java.time.OffsetDateTime;
+import org.openapitools.client.model.OuterComposite;
+import org.openapitools.client.model.OuterObjectWithEnumProperty;
+import org.openapitools.client.model.Pet;
+import org.openapitools.client.model.TestInlineFreeformAdditionalPropertiesRequest;
+import org.openapitools.client.model.User;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import feign.*;
+
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public interface FakeApi extends ApiClient.Api {
+
+
+ /**
+ *
+ * for Java apache and Java native, test toUrlQueryString for maps with BegDecimal keys
+ * @return FakeBigDecimalMap200Response
+ */
+ @RequestLine("GET /fake/BigDecimalMap")
+ @Headers({
+ "Accept: */*",
+ })
+ FakeBigDecimalMap200Response fakeBigDecimalMap();
+
+ /**
+ *
+ * Similar to fakeBigDecimalMap
but it also returns the http response headers .
+ * for Java apache and Java native, test toUrlQueryString for maps with BegDecimal keys
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("GET /fake/BigDecimalMap")
+ @Headers({
+ "Accept: */*",
+ })
+ ApiResponse fakeBigDecimalMapWithHttpInfo();
+
+
+
+ /**
+ * Health check endpoint
+ *
+ * @return HealthCheckResult
+ */
+ @RequestLine("GET /fake/health")
+ @Headers({
+ "Accept: application/json",
+ })
+ HealthCheckResult fakeHealthGet();
+
+ /**
+ * Health check endpoint
+ * Similar to fakeHealthGet
but it also returns the http response headers .
+ *
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("GET /fake/health")
+ @Headers({
+ "Accept: application/json",
+ })
+ ApiResponse fakeHealthGetWithHttpInfo();
+
+
+
+ /**
+ * test http signature authentication
+ *
+ * @param pet Pet object that needs to be added to the store (required)
+ * @param query1 query parameter (optional)
+ * @param header1 header parameter (optional)
+ */
+ @RequestLine("GET /fake/http-signature-test?query_1={query1}")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ "header_1: {header1}"
+ })
+ void fakeHttpSignatureTest(@javax.annotation.Nonnull Pet pet, @Param("query1") @javax.annotation.Nullable String query1, @Param("header1") @javax.annotation.Nullable String header1);
+
+ /**
+ * test http signature authentication
+ * Similar to fakeHttpSignatureTest
but it also returns the http response headers .
+ *
+ * @param pet Pet object that needs to be added to the store (required)
+ * @param query1 query parameter (optional)
+ * @param header1 header parameter (optional)
+ */
+ @RequestLine("GET /fake/http-signature-test?query_1={query1}")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ "header_1: {header1}"
+ })
+ ApiResponse fakeHttpSignatureTestWithHttpInfo(@javax.annotation.Nonnull Pet pet, @Param("query1") @javax.annotation.Nullable String query1, @Param("header1") @javax.annotation.Nullable String header1);
+
+
+ /**
+ * test http signature authentication
+ *
+ * Note, this is equivalent to the other fakeHttpSignatureTest
method,
+ * but with the query parameters collected into a single Map parameter. This
+ * is convenient for services with optional query parameters, especially when
+ * used with the {@link FakeHttpSignatureTestQueryParams} class that allows for
+ * building up this map in a fluent style.
+ * @param pet Pet object that needs to be added to the store (required)
+ * @param header1 header parameter (optional)
+ * @param queryParams Map of query parameters as name-value pairs
+ * The following elements may be specified in the query map:
+ *
+ * query1 - query parameter (optional)
+ *
+ */
+ @RequestLine("GET /fake/http-signature-test?query_1={query1}")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ "header_1: {header1}"
+ })
+ void fakeHttpSignatureTest(@javax.annotation.Nonnull Pet pet, @Param("header1") @javax.annotation.Nullable String header1, @QueryMap(encoded=true) FakeHttpSignatureTestQueryParams queryParams);
+
+ /**
+ * test http signature authentication
+ *
+ * Note, this is equivalent to the other fakeHttpSignatureTest
that receives the query parameters as a map,
+ * but this one also exposes the Http response headers
+ * @param pet Pet object that needs to be added to the store (required)
+ * @param header1 header parameter (optional)
+ * @param queryParams Map of query parameters as name-value pairs
+ * The following elements may be specified in the query map:
+ *
+ * query1 - query parameter (optional)
+ *
+ */
+ @RequestLine("GET /fake/http-signature-test?query_1={query1}")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ "header_1: {header1}"
+ })
+ ApiResponse fakeHttpSignatureTestWithHttpInfo(@javax.annotation.Nonnull Pet pet, @Param("header1") @javax.annotation.Nullable String header1, @QueryMap(encoded=true) FakeHttpSignatureTestQueryParams queryParams);
+
+
+ /**
+ * A convenience class for generating query parameters for the
+ * fakeHttpSignatureTest
method in a fluent style.
+ */
+ public static class FakeHttpSignatureTestQueryParams extends HashMap {
+ public FakeHttpSignatureTestQueryParams query1(@javax.annotation.Nullable final String value) {
+ put("query_1", EncodingUtils.encode(value));
+ return this;
+ }
+ }
+
+ /**
+ *
+ * Test serialization of outer boolean types
+ * @param body Input boolean as post body (optional)
+ * @return Boolean
+ */
+ @RequestLine("POST /fake/outer/boolean")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: */*",
+ })
+ Boolean fakeOuterBooleanSerialize(@javax.annotation.Nullable Boolean body);
+
+ /**
+ *
+ * Similar to fakeOuterBooleanSerialize
but it also returns the http response headers .
+ * Test serialization of outer boolean types
+ * @param body Input boolean as post body (optional)
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("POST /fake/outer/boolean")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: */*",
+ })
+ ApiResponse fakeOuterBooleanSerializeWithHttpInfo(@javax.annotation.Nullable Boolean body);
+
+
+
+ /**
+ *
+ * Test serialization of object with outer number type
+ * @param outerComposite Input composite as post body (optional)
+ * @return OuterComposite
+ */
+ @RequestLine("POST /fake/outer/composite")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: */*",
+ })
+ OuterComposite fakeOuterCompositeSerialize(@javax.annotation.Nullable OuterComposite outerComposite);
+
+ /**
+ *
+ * Similar to fakeOuterCompositeSerialize
but it also returns the http response headers .
+ * Test serialization of object with outer number type
+ * @param outerComposite Input composite as post body (optional)
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("POST /fake/outer/composite")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: */*",
+ })
+ ApiResponse fakeOuterCompositeSerializeWithHttpInfo(@javax.annotation.Nullable OuterComposite outerComposite);
+
+
+
+ /**
+ *
+ * Test serialization of outer number types
+ * @param body Input number as post body (optional)
+ * @return BigDecimal
+ */
+ @RequestLine("POST /fake/outer/number")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: */*",
+ })
+ BigDecimal fakeOuterNumberSerialize(@javax.annotation.Nullable BigDecimal body);
+
+ /**
+ *
+ * Similar to fakeOuterNumberSerialize
but it also returns the http response headers .
+ * Test serialization of outer number types
+ * @param body Input number as post body (optional)
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("POST /fake/outer/number")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: */*",
+ })
+ ApiResponse fakeOuterNumberSerializeWithHttpInfo(@javax.annotation.Nullable BigDecimal body);
+
+
+
+ /**
+ *
+ * Test serialization of outer string types
+ * @param body Input string as post body (optional)
+ * @return String
+ */
+ @RequestLine("POST /fake/outer/string")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: */*",
+ })
+ String fakeOuterStringSerialize(@javax.annotation.Nullable String body);
+
+ /**
+ *
+ * Similar to fakeOuterStringSerialize
but it also returns the http response headers .
+ * Test serialization of outer string types
+ * @param body Input string as post body (optional)
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("POST /fake/outer/string")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: */*",
+ })
+ ApiResponse fakeOuterStringSerializeWithHttpInfo(@javax.annotation.Nullable String body);
+
+
+
+ /**
+ *
+ * Test serialization of enum (int) properties with examples
+ * @param outerObjectWithEnumProperty Input enum (int) as post body (required)
+ * @return OuterObjectWithEnumProperty
+ */
+ @RequestLine("POST /fake/property/enum-int")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: */*",
+ })
+ OuterObjectWithEnumProperty fakePropertyEnumIntegerSerialize(@javax.annotation.Nonnull OuterObjectWithEnumProperty outerObjectWithEnumProperty);
+
+ /**
+ *
+ * Similar to fakePropertyEnumIntegerSerialize
but it also returns the http response headers .
+ * Test serialization of enum (int) properties with examples
+ * @param outerObjectWithEnumProperty Input enum (int) as post body (required)
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("POST /fake/property/enum-int")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: */*",
+ })
+ ApiResponse fakePropertyEnumIntegerSerializeWithHttpInfo(@javax.annotation.Nonnull OuterObjectWithEnumProperty outerObjectWithEnumProperty);
+
+
+
+ /**
+ * test referenced additionalProperties
+ *
+ * @param requestBody request body (required)
+ */
+ @RequestLine("POST /fake/additionalProperties-reference")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ void testAdditionalPropertiesReference(@javax.annotation.Nonnull Map requestBody);
+
+ /**
+ * test referenced additionalProperties
+ * Similar to testAdditionalPropertiesReference
but it also returns the http response headers .
+ *
+ * @param requestBody request body (required)
+ */
+ @RequestLine("POST /fake/additionalProperties-reference")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ ApiResponse testAdditionalPropertiesReferenceWithHttpInfo(@javax.annotation.Nonnull Map requestBody);
+
+
+
+ /**
+ *
+ * For this test, the body has to be a binary file.
+ * @param body image to upload (required)
+ */
+ @RequestLine("PUT /fake/body-with-binary")
+ @Headers({
+ "Content-Type: image/png",
+ "Accept: application/json",
+ })
+ void testBodyWithBinary(@javax.annotation.Nullable File body);
+
+ /**
+ *
+ * Similar to testBodyWithBinary
but it also returns the http response headers .
+ * For this test, the body has to be a binary file.
+ * @param body image to upload (required)
+ */
+ @RequestLine("PUT /fake/body-with-binary")
+ @Headers({
+ "Content-Type: image/png",
+ "Accept: application/json",
+ })
+ ApiResponse testBodyWithBinaryWithHttpInfo(@javax.annotation.Nullable File body);
+
+
+
+ /**
+ *
+ * For this test, the body for this request must reference a schema named `File`.
+ * @param fileSchemaTestClass (required)
+ */
+ @RequestLine("PUT /fake/body-with-file-schema")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ void testBodyWithFileSchema(@javax.annotation.Nonnull FileSchemaTestClass fileSchemaTestClass);
+
+ /**
+ *
+ * Similar to testBodyWithFileSchema
but it also returns the http response headers .
+ * For this test, the body for this request must reference a schema named `File`.
+ * @param fileSchemaTestClass (required)
+ */
+ @RequestLine("PUT /fake/body-with-file-schema")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ ApiResponse testBodyWithFileSchemaWithHttpInfo(@javax.annotation.Nonnull FileSchemaTestClass fileSchemaTestClass);
+
+
+
+ /**
+ *
+ *
+ * @param query (required)
+ * @param user (required)
+ */
+ @RequestLine("PUT /fake/body-with-query-params?query={query}")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ void testBodyWithQueryParams(@Param("query") @javax.annotation.Nonnull String query, @javax.annotation.Nonnull User user);
+
+ /**
+ *
+ * Similar to testBodyWithQueryParams
but it also returns the http response headers .
+ *
+ * @param query (required)
+ * @param user (required)
+ */
+ @RequestLine("PUT /fake/body-with-query-params?query={query}")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ ApiResponse testBodyWithQueryParamsWithHttpInfo(@Param("query") @javax.annotation.Nonnull String query, @javax.annotation.Nonnull User user);
+
+
+ /**
+ *
+ *
+ * Note, this is equivalent to the other testBodyWithQueryParams
method,
+ * but with the query parameters collected into a single Map parameter. This
+ * is convenient for services with optional query parameters, especially when
+ * used with the {@link TestBodyWithQueryParamsQueryParams} class that allows for
+ * building up this map in a fluent style.
+ * @param user (required)
+ * @param queryParams Map of query parameters as name-value pairs
+ * The following elements may be specified in the query map:
+ *
+ * query - (required)
+ *
+ */
+ @RequestLine("PUT /fake/body-with-query-params?query={query}")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ void testBodyWithQueryParams(@javax.annotation.Nonnull User user, @QueryMap(encoded=true) TestBodyWithQueryParamsQueryParams queryParams);
+
+ /**
+ *
+ *
+ * Note, this is equivalent to the other testBodyWithQueryParams
that receives the query parameters as a map,
+ * but this one also exposes the Http response headers
+ * @param user (required)
+ * @param queryParams Map of query parameters as name-value pairs
+ * The following elements may be specified in the query map:
+ *
+ * query - (required)
+ *
+ */
+ @RequestLine("PUT /fake/body-with-query-params?query={query}")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ ApiResponse testBodyWithQueryParamsWithHttpInfo(@javax.annotation.Nonnull User user, @QueryMap(encoded=true) TestBodyWithQueryParamsQueryParams queryParams);
+
+
+ /**
+ * A convenience class for generating query parameters for the
+ * testBodyWithQueryParams
method in a fluent style.
+ */
+ public static class TestBodyWithQueryParamsQueryParams extends HashMap {
+ public TestBodyWithQueryParamsQueryParams query(@javax.annotation.Nonnull final String value) {
+ put("query", EncodingUtils.encode(value));
+ return this;
+ }
+ }
+
+ /**
+ * To test \"client\" model
+ * To test \"client\" model
+ * @param client client model (required)
+ * @return Client
+ */
+ @RequestLine("PATCH /fake")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ Client testClientModel(@javax.annotation.Nonnull Client client);
+
+ /**
+ * To test \"client\" model
+ * Similar to testClientModel
but it also returns the http response headers .
+ * To test \"client\" model
+ * @param client client model (required)
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("PATCH /fake")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ ApiResponse testClientModelWithHttpInfo(@javax.annotation.Nonnull Client client);
+
+
+
+ /**
+ * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
+ * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
+ * @param number None (required)
+ * @param _double None (required)
+ * @param patternWithoutDelimiter None (required)
+ * @param _byte None (required)
+ * @param integer None (optional)
+ * @param int32 None (optional)
+ * @param int64 None (optional)
+ * @param _float None (optional)
+ * @param string None (optional)
+ * @param binary None (optional)
+ * @param date None (optional)
+ * @param dateTime None (optional)
+ * @param password None (optional)
+ * @param paramCallback None (optional)
+ */
+ @RequestLine("POST /fake")
+ @Headers({
+ "Content-Type: application/x-www-form-urlencoded",
+ "Accept: application/json",
+ })
+ void testEndpointParameters(@Param("number") @javax.annotation.Nonnull BigDecimal number, @Param("double") @javax.annotation.Nonnull Double _double, @Param("pattern_without_delimiter") @javax.annotation.Nonnull String patternWithoutDelimiter, @Param("byte") @javax.annotation.Nonnull byte[] _byte, @Param("integer") @javax.annotation.Nullable Integer integer, @Param("int32") @javax.annotation.Nullable Integer int32, @Param("int64") @javax.annotation.Nullable Long int64, @Param("float") @javax.annotation.Nullable Float _float, @Param("string") @javax.annotation.Nullable String string, @Param("binary") @javax.annotation.Nullable File binary, @Param("date") @javax.annotation.Nullable LocalDate date, @Param("dateTime") @javax.annotation.Nullable OffsetDateTime dateTime, @Param("password") @javax.annotation.Nullable String password, @Param("callback") @javax.annotation.Nullable String paramCallback);
+
+ /**
+ * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
+ * Similar to testEndpointParameters
but it also returns the http response headers .
+ * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
+ * @param number None (required)
+ * @param _double None (required)
+ * @param patternWithoutDelimiter None (required)
+ * @param _byte None (required)
+ * @param integer None (optional)
+ * @param int32 None (optional)
+ * @param int64 None (optional)
+ * @param _float None (optional)
+ * @param string None (optional)
+ * @param binary None (optional)
+ * @param date None (optional)
+ * @param dateTime None (optional)
+ * @param password None (optional)
+ * @param paramCallback None (optional)
+ */
+ @RequestLine("POST /fake")
+ @Headers({
+ "Content-Type: application/x-www-form-urlencoded",
+ "Accept: application/json",
+ })
+ ApiResponse testEndpointParametersWithHttpInfo(@Param("number") @javax.annotation.Nonnull BigDecimal number, @Param("double") @javax.annotation.Nonnull Double _double, @Param("pattern_without_delimiter") @javax.annotation.Nonnull String patternWithoutDelimiter, @Param("byte") @javax.annotation.Nonnull byte[] _byte, @Param("integer") @javax.annotation.Nullable Integer integer, @Param("int32") @javax.annotation.Nullable Integer int32, @Param("int64") @javax.annotation.Nullable Long int64, @Param("float") @javax.annotation.Nullable Float _float, @Param("string") @javax.annotation.Nullable String string, @Param("binary") @javax.annotation.Nullable File binary, @Param("date") @javax.annotation.Nullable LocalDate date, @Param("dateTime") @javax.annotation.Nullable OffsetDateTime dateTime, @Param("password") @javax.annotation.Nullable String password, @Param("callback") @javax.annotation.Nullable String paramCallback);
+
+
+
+ /**
+ * To test enum parameters
+ * To test enum parameters
+ * @param enumHeaderStringArray Header parameter enum test (string array) (optional)
+ * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg)
+ * @param enumQueryStringArray Query parameter enum test (string array) (optional)
+ * @param enumQueryString Query parameter enum test (string) (optional, default to -efg)
+ * @param enumQueryInteger Query parameter enum test (double) (optional)
+ * @param enumQueryDouble Query parameter enum test (double) (optional)
+ * @param enumQueryModelArray (optional)
+ * @param enumFormStringArray Form parameter enum test (string array) (optional)
+ * @param enumFormString Form parameter enum test (string) (optional, default to -efg)
+ */
+ @RequestLine("GET /fake?enum_query_string_array={enumQueryStringArray}&enum_query_string={enumQueryString}&enum_query_integer={enumQueryInteger}&enum_query_double={enumQueryDouble}&enum_query_model_array={enumQueryModelArray}")
+ @Headers({
+ "Content-Type: application/x-www-form-urlencoded",
+ "Accept: application/json",
+ "enum_header_string_array: {enumHeaderStringArray}",
+
+ "enum_header_string: {enumHeaderString}"
+ })
+ void testEnumParameters(@Param("enumHeaderStringArray") @javax.annotation.Nullable List enumHeaderStringArray, @Param("enumHeaderString") @javax.annotation.Nullable String enumHeaderString, @Param("enumQueryStringArray") @javax.annotation.Nullable List enumQueryStringArray, @Param("enumQueryString") @javax.annotation.Nullable String enumQueryString, @Param("enumQueryInteger") @javax.annotation.Nullable Integer enumQueryInteger, @Param("enumQueryDouble") @javax.annotation.Nullable Double enumQueryDouble, @Param("enumQueryModelArray") @javax.annotation.Nullable List enumQueryModelArray, @Param("enum_form_string_array") @javax.annotation.Nullable List enumFormStringArray, @Param("enum_form_string") @javax.annotation.Nullable String enumFormString);
+
+ /**
+ * To test enum parameters
+ * Similar to testEnumParameters
but it also returns the http response headers .
+ * To test enum parameters
+ * @param enumHeaderStringArray Header parameter enum test (string array) (optional)
+ * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg)
+ * @param enumQueryStringArray Query parameter enum test (string array) (optional)
+ * @param enumQueryString Query parameter enum test (string) (optional, default to -efg)
+ * @param enumQueryInteger Query parameter enum test (double) (optional)
+ * @param enumQueryDouble Query parameter enum test (double) (optional)
+ * @param enumQueryModelArray (optional)
+ * @param enumFormStringArray Form parameter enum test (string array) (optional)
+ * @param enumFormString Form parameter enum test (string) (optional, default to -efg)
+ */
+ @RequestLine("GET /fake?enum_query_string_array={enumQueryStringArray}&enum_query_string={enumQueryString}&enum_query_integer={enumQueryInteger}&enum_query_double={enumQueryDouble}&enum_query_model_array={enumQueryModelArray}")
+ @Headers({
+ "Content-Type: application/x-www-form-urlencoded",
+ "Accept: application/json",
+ "enum_header_string_array: {enumHeaderStringArray}",
+
+ "enum_header_string: {enumHeaderString}"
+ })
+ ApiResponse testEnumParametersWithHttpInfo(@Param("enumHeaderStringArray") @javax.annotation.Nullable List enumHeaderStringArray, @Param("enumHeaderString") @javax.annotation.Nullable String enumHeaderString, @Param("enumQueryStringArray") @javax.annotation.Nullable List enumQueryStringArray, @Param("enumQueryString") @javax.annotation.Nullable String enumQueryString, @Param("enumQueryInteger") @javax.annotation.Nullable Integer enumQueryInteger, @Param("enumQueryDouble") @javax.annotation.Nullable Double enumQueryDouble, @Param("enumQueryModelArray") @javax.annotation.Nullable List enumQueryModelArray, @Param("enum_form_string_array") @javax.annotation.Nullable List enumFormStringArray, @Param("enum_form_string") @javax.annotation.Nullable String enumFormString);
+
+
+ /**
+ * To test enum parameters
+ * To test enum parameters
+ * Note, this is equivalent to the other testEnumParameters
method,
+ * but with the query parameters collected into a single Map parameter. This
+ * is convenient for services with optional query parameters, especially when
+ * used with the {@link TestEnumParametersQueryParams} class that allows for
+ * building up this map in a fluent style.
+ * @param enumHeaderStringArray Header parameter enum test (string array) (optional)
+ * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg)
+ * @param enumFormStringArray Form parameter enum test (string array) (optional)
+ * @param enumFormString Form parameter enum test (string) (optional, default to -efg)
+ * @param queryParams Map of query parameters as name-value pairs
+ * The following elements may be specified in the query map:
+ *
+ * enumQueryStringArray - Query parameter enum test (string array) (optional)
+ * enumQueryString - Query parameter enum test (string) (optional, default to -efg)
+ * enumQueryInteger - Query parameter enum test (double) (optional)
+ * enumQueryDouble - Query parameter enum test (double) (optional)
+ * enumQueryModelArray - (optional)
+ *
+ */
+ @RequestLine("GET /fake?enum_query_string_array={enumQueryStringArray}&enum_query_string={enumQueryString}&enum_query_integer={enumQueryInteger}&enum_query_double={enumQueryDouble}&enum_query_model_array={enumQueryModelArray}")
+ @Headers({
+ "Content-Type: application/x-www-form-urlencoded",
+ "Accept: application/json",
+ "enum_header_string_array: {enumHeaderStringArray}",
+
+ "enum_header_string: {enumHeaderString}"
+ })
+ void testEnumParameters(@Param("enumHeaderStringArray") @javax.annotation.Nullable List enumHeaderStringArray, @Param("enumHeaderString") @javax.annotation.Nullable String enumHeaderString, @Param("enum_form_string_array") @javax.annotation.Nullable List enumFormStringArray, @Param("enum_form_string") @javax.annotation.Nullable String enumFormString, @QueryMap(encoded=true) TestEnumParametersQueryParams queryParams);
+
+ /**
+ * To test enum parameters
+ * To test enum parameters
+ * Note, this is equivalent to the other testEnumParameters
that receives the query parameters as a map,
+ * but this one also exposes the Http response headers
+ * @param enumHeaderStringArray Header parameter enum test (string array) (optional)
+ * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg)
+ * @param enumFormStringArray Form parameter enum test (string array) (optional)
+ * @param enumFormString Form parameter enum test (string) (optional, default to -efg)
+ * @param queryParams Map of query parameters as name-value pairs
+ * The following elements may be specified in the query map:
+ *
+ * enumQueryStringArray - Query parameter enum test (string array) (optional)
+ * enumQueryString - Query parameter enum test (string) (optional, default to -efg)
+ * enumQueryInteger - Query parameter enum test (double) (optional)
+ * enumQueryDouble - Query parameter enum test (double) (optional)
+ * enumQueryModelArray - (optional)
+ *
+ */
+ @RequestLine("GET /fake?enum_query_string_array={enumQueryStringArray}&enum_query_string={enumQueryString}&enum_query_integer={enumQueryInteger}&enum_query_double={enumQueryDouble}&enum_query_model_array={enumQueryModelArray}")
+ @Headers({
+ "Content-Type: application/x-www-form-urlencoded",
+ "Accept: application/json",
+ "enum_header_string_array: {enumHeaderStringArray}",
+
+ "enum_header_string: {enumHeaderString}"
+ })
+ ApiResponse testEnumParametersWithHttpInfo(@Param("enumHeaderStringArray") @javax.annotation.Nullable List enumHeaderStringArray, @Param("enumHeaderString") @javax.annotation.Nullable String enumHeaderString, @Param("enum_form_string_array") @javax.annotation.Nullable List enumFormStringArray, @Param("enum_form_string") @javax.annotation.Nullable String enumFormString, @QueryMap(encoded=true) TestEnumParametersQueryParams queryParams);
+
+
+ /**
+ * A convenience class for generating query parameters for the
+ * testEnumParameters
method in a fluent style.
+ */
+ public static class TestEnumParametersQueryParams extends HashMap {
+ public TestEnumParametersQueryParams enumQueryStringArray(@javax.annotation.Nullable final List value) {
+ put("enum_query_string_array", EncodingUtils.encodeCollection(value, "multi"));
+ return this;
+ }
+ public TestEnumParametersQueryParams enumQueryString(@javax.annotation.Nullable final String value) {
+ put("enum_query_string", EncodingUtils.encode(value));
+ return this;
+ }
+ public TestEnumParametersQueryParams enumQueryInteger(@javax.annotation.Nullable final Integer value) {
+ put("enum_query_integer", EncodingUtils.encode(value));
+ return this;
+ }
+ public TestEnumParametersQueryParams enumQueryDouble(@javax.annotation.Nullable final Double value) {
+ put("enum_query_double", EncodingUtils.encode(value));
+ return this;
+ }
+ public TestEnumParametersQueryParams enumQueryModelArray(@javax.annotation.Nullable final List value) {
+ put("enum_query_model_array", EncodingUtils.encodeCollection(value, "multi"));
+ return this;
+ }
+ }
+
+ /**
+ * Fake endpoint to test group parameters (optional)
+ * Fake endpoint to test group parameters (optional)
+ * @param requiredStringGroup Required String in group parameters (required)
+ * @param requiredBooleanGroup Required Boolean in group parameters (required)
+ * @param requiredInt64Group Required Integer in group parameters (required)
+ * @param stringGroup String in group parameters (optional)
+ * @param booleanGroup Boolean in group parameters (optional)
+ * @param int64Group Integer in group parameters (optional)
+ */
+ @RequestLine("DELETE /fake?required_string_group={requiredStringGroup}&required_int64_group={requiredInt64Group}&string_group={stringGroup}&int64_group={int64Group}")
+ @Headers({
+ "Accept: application/json",
+ "required_boolean_group: {requiredBooleanGroup}",
+
+ "boolean_group: {booleanGroup}"
+ })
+ void testGroupParameters(@Param("requiredStringGroup") @javax.annotation.Nonnull Integer requiredStringGroup, @Param("requiredBooleanGroup") @javax.annotation.Nonnull Boolean requiredBooleanGroup, @Param("requiredInt64Group") @javax.annotation.Nonnull Long requiredInt64Group, @Param("stringGroup") @javax.annotation.Nullable Integer stringGroup, @Param("booleanGroup") @javax.annotation.Nullable Boolean booleanGroup, @Param("int64Group") @javax.annotation.Nullable Long int64Group);
+
+ /**
+ * Fake endpoint to test group parameters (optional)
+ * Similar to testGroupParameters
but it also returns the http response headers .
+ * Fake endpoint to test group parameters (optional)
+ * @param requiredStringGroup Required String in group parameters (required)
+ * @param requiredBooleanGroup Required Boolean in group parameters (required)
+ * @param requiredInt64Group Required Integer in group parameters (required)
+ * @param stringGroup String in group parameters (optional)
+ * @param booleanGroup Boolean in group parameters (optional)
+ * @param int64Group Integer in group parameters (optional)
+ */
+ @RequestLine("DELETE /fake?required_string_group={requiredStringGroup}&required_int64_group={requiredInt64Group}&string_group={stringGroup}&int64_group={int64Group}")
+ @Headers({
+ "Accept: application/json",
+ "required_boolean_group: {requiredBooleanGroup}",
+
+ "boolean_group: {booleanGroup}"
+ })
+ ApiResponse testGroupParametersWithHttpInfo(@Param("requiredStringGroup") @javax.annotation.Nonnull Integer requiredStringGroup, @Param("requiredBooleanGroup") @javax.annotation.Nonnull Boolean requiredBooleanGroup, @Param("requiredInt64Group") @javax.annotation.Nonnull Long requiredInt64Group, @Param("stringGroup") @javax.annotation.Nullable Integer stringGroup, @Param("booleanGroup") @javax.annotation.Nullable Boolean booleanGroup, @Param("int64Group") @javax.annotation.Nullable Long int64Group);
+
+
+ /**
+ * Fake endpoint to test group parameters (optional)
+ * Fake endpoint to test group parameters (optional)
+ * Note, this is equivalent to the other testGroupParameters
method,
+ * but with the query parameters collected into a single Map parameter. This
+ * is convenient for services with optional query parameters, especially when
+ * used with the {@link TestGroupParametersQueryParams} class that allows for
+ * building up this map in a fluent style.
+ * @param requiredBooleanGroup Required Boolean in group parameters (required)
+ * @param booleanGroup Boolean in group parameters (optional)
+ * @param queryParams Map of query parameters as name-value pairs
+ * The following elements may be specified in the query map:
+ *
+ * requiredStringGroup - Required String in group parameters (required)
+ * requiredInt64Group - Required Integer in group parameters (required)
+ * stringGroup - String in group parameters (optional)
+ * int64Group - Integer in group parameters (optional)
+ *
+ */
+ @RequestLine("DELETE /fake?required_string_group={requiredStringGroup}&required_int64_group={requiredInt64Group}&string_group={stringGroup}&int64_group={int64Group}")
+ @Headers({
+ "Accept: application/json",
+ "required_boolean_group: {requiredBooleanGroup}",
+
+ "boolean_group: {booleanGroup}"
+ })
+ void testGroupParameters(@Param("requiredBooleanGroup") @javax.annotation.Nonnull Boolean requiredBooleanGroup, @Param("booleanGroup") @javax.annotation.Nullable Boolean booleanGroup, @QueryMap(encoded=true) TestGroupParametersQueryParams queryParams);
+
+ /**
+ * Fake endpoint to test group parameters (optional)
+ * Fake endpoint to test group parameters (optional)
+ * Note, this is equivalent to the other testGroupParameters
that receives the query parameters as a map,
+ * but this one also exposes the Http response headers
+ * @param requiredBooleanGroup Required Boolean in group parameters (required)
+ * @param booleanGroup Boolean in group parameters (optional)
+ * @param queryParams Map of query parameters as name-value pairs
+ * The following elements may be specified in the query map:
+ *
+ * requiredStringGroup - Required String in group parameters (required)
+ * requiredInt64Group - Required Integer in group parameters (required)
+ * stringGroup - String in group parameters (optional)
+ * int64Group - Integer in group parameters (optional)
+ *
+ */
+ @RequestLine("DELETE /fake?required_string_group={requiredStringGroup}&required_int64_group={requiredInt64Group}&string_group={stringGroup}&int64_group={int64Group}")
+ @Headers({
+ "Accept: application/json",
+ "required_boolean_group: {requiredBooleanGroup}",
+
+ "boolean_group: {booleanGroup}"
+ })
+ ApiResponse testGroupParametersWithHttpInfo(@Param("requiredBooleanGroup") @javax.annotation.Nonnull Boolean requiredBooleanGroup, @Param("booleanGroup") @javax.annotation.Nullable Boolean booleanGroup, @QueryMap(encoded=true) TestGroupParametersQueryParams queryParams);
+
+
+ /**
+ * A convenience class for generating query parameters for the
+ * testGroupParameters
method in a fluent style.
+ */
+ public static class TestGroupParametersQueryParams extends HashMap {
+ public TestGroupParametersQueryParams requiredStringGroup(@javax.annotation.Nonnull final Integer value) {
+ put("required_string_group", EncodingUtils.encode(value));
+ return this;
+ }
+ public TestGroupParametersQueryParams requiredInt64Group(@javax.annotation.Nonnull final Long value) {
+ put("required_int64_group", EncodingUtils.encode(value));
+ return this;
+ }
+ public TestGroupParametersQueryParams stringGroup(@javax.annotation.Nullable final Integer value) {
+ put("string_group", EncodingUtils.encode(value));
+ return this;
+ }
+ public TestGroupParametersQueryParams int64Group(@javax.annotation.Nullable final Long value) {
+ put("int64_group", EncodingUtils.encode(value));
+ return this;
+ }
+ }
+
+ /**
+ * test inline additionalProperties
+ *
+ * @param requestBody request body (required)
+ */
+ @RequestLine("POST /fake/inline-additionalProperties")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ void testInlineAdditionalProperties(@javax.annotation.Nonnull Map requestBody);
+
+ /**
+ * test inline additionalProperties
+ * Similar to testInlineAdditionalProperties
but it also returns the http response headers .
+ *
+ * @param requestBody request body (required)
+ */
+ @RequestLine("POST /fake/inline-additionalProperties")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ ApiResponse testInlineAdditionalPropertiesWithHttpInfo(@javax.annotation.Nonnull Map requestBody);
+
+
+
+ /**
+ * test inline free-form additionalProperties
+ *
+ * @param testInlineFreeformAdditionalPropertiesRequest request body (required)
+ */
+ @RequestLine("POST /fake/inline-freeform-additionalProperties")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ void testInlineFreeformAdditionalProperties(@javax.annotation.Nonnull TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest);
+
+ /**
+ * test inline free-form additionalProperties
+ * Similar to testInlineFreeformAdditionalProperties
but it also returns the http response headers .
+ *
+ * @param testInlineFreeformAdditionalPropertiesRequest request body (required)
+ */
+ @RequestLine("POST /fake/inline-freeform-additionalProperties")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ ApiResponse testInlineFreeformAdditionalPropertiesWithHttpInfo(@javax.annotation.Nonnull TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest);
+
+
+
+ /**
+ * test json serialization of form data
+ *
+ * @param param field1 (required)
+ * @param param2 field2 (required)
+ */
+ @RequestLine("GET /fake/jsonFormData")
+ @Headers({
+ "Content-Type: application/x-www-form-urlencoded",
+ "Accept: application/json",
+ })
+ void testJsonFormData(@Param("param") @javax.annotation.Nonnull String param, @Param("param2") @javax.annotation.Nonnull String param2);
+
+ /**
+ * test json serialization of form data
+ * Similar to testJsonFormData
but it also returns the http response headers .
+ *
+ * @param param field1 (required)
+ * @param param2 field2 (required)
+ */
+ @RequestLine("GET /fake/jsonFormData")
+ @Headers({
+ "Content-Type: application/x-www-form-urlencoded",
+ "Accept: application/json",
+ })
+ ApiResponse testJsonFormDataWithHttpInfo(@Param("param") @javax.annotation.Nonnull String param, @Param("param2") @javax.annotation.Nonnull String param2);
+
+
+
+ /**
+ * test nullable parent property
+ *
+ * @param childWithNullable request body (required)
+ */
+ @RequestLine("POST /fake/nullable")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ void testNullable(@javax.annotation.Nonnull ChildWithNullable childWithNullable);
+
+ /**
+ * test nullable parent property
+ * Similar to testNullable
but it also returns the http response headers .
+ *
+ * @param childWithNullable request body (required)
+ */
+ @RequestLine("POST /fake/nullable")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ ApiResponse testNullableWithHttpInfo(@javax.annotation.Nonnull ChildWithNullable childWithNullable);
+
+
+
+ /**
+ *
+ * To test the collection format in query parameters
+ * @param pipe (required)
+ * @param ioutil (required)
+ * @param http (required)
+ * @param url (required)
+ * @param context (required)
+ * @param allowEmpty (required)
+ * @param language (optional)
+ */
+ @RequestLine("PUT /fake/test-query-parameters?pipe={pipe}&ioutil={ioutil}&http={http}&url={url}&context={context}&language={language}&allowEmpty={allowEmpty}")
+ @Headers({
+ "Accept: application/json",
+ })
+ void testQueryParameterCollectionFormat(@Param("pipe") @javax.annotation.Nonnull List pipe, @Param("ioutil") @javax.annotation.Nonnull List ioutil, @Param("http") @javax.annotation.Nonnull List http, @Param("url") @javax.annotation.Nonnull List url, @Param("context") @javax.annotation.Nonnull List context, @Param("allowEmpty") @javax.annotation.Nonnull String allowEmpty, @Param("language") @javax.annotation.Nullable Map language);
+
+ /**
+ *
+ * Similar to testQueryParameterCollectionFormat
but it also returns the http response headers .
+ * To test the collection format in query parameters
+ * @param pipe (required)
+ * @param ioutil (required)
+ * @param http (required)
+ * @param url (required)
+ * @param context (required)
+ * @param allowEmpty (required)
+ * @param language (optional)
+ */
+ @RequestLine("PUT /fake/test-query-parameters?pipe={pipe}&ioutil={ioutil}&http={http}&url={url}&context={context}&language={language}&allowEmpty={allowEmpty}")
+ @Headers({
+ "Accept: application/json",
+ })
+ ApiResponse testQueryParameterCollectionFormatWithHttpInfo(@Param("pipe") @javax.annotation.Nonnull List pipe, @Param("ioutil") @javax.annotation.Nonnull List ioutil, @Param("http") @javax.annotation.Nonnull List http, @Param("url") @javax.annotation.Nonnull List url, @Param("context") @javax.annotation.Nonnull List context, @Param("allowEmpty") @javax.annotation.Nonnull String allowEmpty, @Param("language") @javax.annotation.Nullable Map language);
+
+
+ /**
+ *
+ * To test the collection format in query parameters
+ * Note, this is equivalent to the other testQueryParameterCollectionFormat
method,
+ * but with the query parameters collected into a single Map parameter. This
+ * is convenient for services with optional query parameters, especially when
+ * used with the {@link TestQueryParameterCollectionFormatQueryParams} class that allows for
+ * building up this map in a fluent style.
+ * @param queryParams Map of query parameters as name-value pairs
+ * The following elements may be specified in the query map:
+ *
+ * pipe - (required)
+ * ioutil - (required)
+ * http - (required)
+ * url - (required)
+ * context - (required)
+ * language - (optional)
+ * allowEmpty - (required)
+ *
+ */
+ @RequestLine("PUT /fake/test-query-parameters?pipe={pipe}&ioutil={ioutil}&http={http}&url={url}&context={context}&language={language}&allowEmpty={allowEmpty}")
+ @Headers({
+ "Accept: application/json",
+ })
+ void testQueryParameterCollectionFormat(@QueryMap(encoded=true) TestQueryParameterCollectionFormatQueryParams queryParams);
+
+ /**
+ *
+ * To test the collection format in query parameters
+ * Note, this is equivalent to the other testQueryParameterCollectionFormat
that receives the query parameters as a map,
+ * but this one also exposes the Http response headers
+ * @param queryParams Map of query parameters as name-value pairs
+ * The following elements may be specified in the query map:
+ *
+ * pipe - (required)
+ * ioutil - (required)
+ * http - (required)
+ * url - (required)
+ * context - (required)
+ * language - (optional)
+ * allowEmpty - (required)
+ *
+ */
+ @RequestLine("PUT /fake/test-query-parameters?pipe={pipe}&ioutil={ioutil}&http={http}&url={url}&context={context}&language={language}&allowEmpty={allowEmpty}")
+ @Headers({
+ "Accept: application/json",
+ })
+ ApiResponse testQueryParameterCollectionFormatWithHttpInfo(@QueryMap(encoded=true) TestQueryParameterCollectionFormatQueryParams queryParams);
+
+
+ /**
+ * A convenience class for generating query parameters for the
+ * testQueryParameterCollectionFormat
method in a fluent style.
+ */
+ public static class TestQueryParameterCollectionFormatQueryParams extends HashMap {
+ public TestQueryParameterCollectionFormatQueryParams pipe(@javax.annotation.Nonnull final List value) {
+ put("pipe", EncodingUtils.encodeCollection(value, "pipes"));
+ return this;
+ }
+ public TestQueryParameterCollectionFormatQueryParams ioutil(@javax.annotation.Nonnull final List value) {
+ put("ioutil", EncodingUtils.encodeCollection(value, "csv"));
+ return this;
+ }
+ public TestQueryParameterCollectionFormatQueryParams http(@javax.annotation.Nonnull final List value) {
+ put("http", EncodingUtils.encodeCollection(value, "ssv"));
+ return this;
+ }
+ public TestQueryParameterCollectionFormatQueryParams url(@javax.annotation.Nonnull final List value) {
+ put("url", EncodingUtils.encodeCollection(value, "csv"));
+ return this;
+ }
+ public TestQueryParameterCollectionFormatQueryParams context(@javax.annotation.Nonnull final List value) {
+ put("context", EncodingUtils.encodeCollection(value, "multi"));
+ return this;
+ }
+ public TestQueryParameterCollectionFormatQueryParams language(@javax.annotation.Nullable final Map value) {
+ put("language", EncodingUtils.encode(value));
+ return this;
+ }
+ public TestQueryParameterCollectionFormatQueryParams allowEmpty(@javax.annotation.Nonnull final String value) {
+ put("allowEmpty", EncodingUtils.encode(value));
+ return this;
+ }
+ }
+
+ /**
+ * test referenced string map
+ *
+ * @param requestBody request body (required)
+ */
+ @RequestLine("POST /fake/stringMap-reference")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ void testStringMapReference(@javax.annotation.Nonnull Map requestBody);
+
+ /**
+ * test referenced string map
+ * Similar to testStringMapReference
but it also returns the http response headers .
+ *
+ * @param requestBody request body (required)
+ */
+ @RequestLine("POST /fake/stringMap-reference")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ ApiResponse testStringMapReferenceWithHttpInfo(@javax.annotation.Nonnull Map requestBody);
+
+
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java
new file mode 100644
index 000000000000..41e56a2c4df0
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java
@@ -0,0 +1,47 @@
+package org.openapitools.client.api;
+
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.EncodingUtils;
+import org.openapitools.client.model.ApiResponse;
+
+import org.openapitools.client.model.Client;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import feign.*;
+
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public interface FakeClassnameTags123Api extends ApiClient.Api {
+
+
+ /**
+ * To test class name in snake case
+ * To test class name in snake case
+ * @param client client model (required)
+ * @return Client
+ */
+ @RequestLine("PATCH /fake_classname_test")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ Client testClassname(@javax.annotation.Nonnull Client client);
+
+ /**
+ * To test class name in snake case
+ * Similar to testClassname
but it also returns the http response headers .
+ * To test class name in snake case
+ * @param client client model (required)
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("PATCH /fake_classname_test")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ ApiResponse testClassnameWithHttpInfo(@javax.annotation.Nonnull Client client);
+
+
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/PetApi.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/PetApi.java
new file mode 100644
index 000000000000..7fde92afefeb
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/PetApi.java
@@ -0,0 +1,390 @@
+package org.openapitools.client.api;
+
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.EncodingUtils;
+import org.openapitools.client.model.ApiResponse;
+
+import java.io.File;
+import org.openapitools.client.model.ModelApiResponse;
+import org.openapitools.client.model.Pet;
+import java.util.Set;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import feign.*;
+
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public interface PetApi extends ApiClient.Api {
+
+
+ /**
+ * Add a new pet to the store
+ *
+ * @param pet Pet object that needs to be added to the store (required)
+ */
+ @RequestLine("POST /pet")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ void addPet(@javax.annotation.Nonnull Pet pet);
+
+ /**
+ * Add a new pet to the store
+ * Similar to addPet
but it also returns the http response headers .
+ *
+ * @param pet Pet object that needs to be added to the store (required)
+ */
+ @RequestLine("POST /pet")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ ApiResponse addPetWithHttpInfo(@javax.annotation.Nonnull Pet pet);
+
+
+
+ /**
+ * Deletes a pet
+ *
+ * @param petId Pet id to delete (required)
+ * @param apiKey (optional)
+ */
+ @RequestLine("DELETE /pet/{petId}")
+ @Headers({
+ "Accept: application/json",
+ "api_key: {apiKey}"
+ })
+ void deletePet(@Param("petId") @javax.annotation.Nonnull Long petId, @Param("apiKey") @javax.annotation.Nullable String apiKey);
+
+ /**
+ * Deletes a pet
+ * Similar to deletePet
but it also returns the http response headers .
+ *
+ * @param petId Pet id to delete (required)
+ * @param apiKey (optional)
+ */
+ @RequestLine("DELETE /pet/{petId}")
+ @Headers({
+ "Accept: application/json",
+ "api_key: {apiKey}"
+ })
+ ApiResponse deletePetWithHttpInfo(@Param("petId") @javax.annotation.Nonnull Long petId, @Param("apiKey") @javax.annotation.Nullable String apiKey);
+
+
+
+ /**
+ * Finds Pets by status
+ * Multiple status values can be provided with comma separated strings
+ * @param status Status values that need to be considered for filter (required)
+ * @return List<Pet>
+ */
+ @RequestLine("GET /pet/findByStatus?status={status}")
+ @Headers({
+ "Accept: application/json,application/xml",
+ })
+ List findPetsByStatus(@Param("status") @javax.annotation.Nonnull List status);
+
+ /**
+ * Finds Pets by status
+ * Similar to findPetsByStatus
but it also returns the http response headers .
+ * Multiple status values can be provided with comma separated strings
+ * @param status Status values that need to be considered for filter (required)
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("GET /pet/findByStatus?status={status}")
+ @Headers({
+ "Accept: application/json,application/xml",
+ })
+ ApiResponse> findPetsByStatusWithHttpInfo(@Param("status") @javax.annotation.Nonnull List status);
+
+
+ /**
+ * Finds Pets by status
+ * Multiple status values can be provided with comma separated strings
+ * Note, this is equivalent to the other findPetsByStatus
method,
+ * but with the query parameters collected into a single Map parameter. This
+ * is convenient for services with optional query parameters, especially when
+ * used with the {@link FindPetsByStatusQueryParams} class that allows for
+ * building up this map in a fluent style.
+ * @param queryParams Map of query parameters as name-value pairs
+ * The following elements may be specified in the query map:
+ *
+ * status - Status values that need to be considered for filter (required)
+ *
+ * @return List<Pet>
+ */
+ @RequestLine("GET /pet/findByStatus?status={status}")
+ @Headers({
+ "Accept: application/json,application/xml",
+ })
+ List findPetsByStatus(@QueryMap(encoded=true) FindPetsByStatusQueryParams queryParams);
+
+ /**
+ * Finds Pets by status
+ * Multiple status values can be provided with comma separated strings
+ * Note, this is equivalent to the other findPetsByStatus
that receives the query parameters as a map,
+ * but this one also exposes the Http response headers
+ * @param queryParams Map of query parameters as name-value pairs
+ * The following elements may be specified in the query map:
+ *
+ * status - Status values that need to be considered for filter (required)
+ *
+ * @return List<Pet>
+ */
+ @RequestLine("GET /pet/findByStatus?status={status}")
+ @Headers({
+ "Accept: application/json,application/xml",
+ })
+ ApiResponse> findPetsByStatusWithHttpInfo(@QueryMap(encoded=true) FindPetsByStatusQueryParams queryParams);
+
+
+ /**
+ * A convenience class for generating query parameters for the
+ * findPetsByStatus
method in a fluent style.
+ */
+ public static class FindPetsByStatusQueryParams extends HashMap {
+ public FindPetsByStatusQueryParams status(@javax.annotation.Nonnull final List value) {
+ put("status", EncodingUtils.encodeCollection(value, "csv"));
+ return this;
+ }
+ }
+
+ /**
+ * Finds Pets by tags
+ * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+ * @param tags Tags to filter by (required)
+ * @return Set<Pet>
+ * @deprecated
+ */
+ @Deprecated
+ @RequestLine("GET /pet/findByTags?tags={tags}")
+ @Headers({
+ "Accept: application/json,application/xml",
+ })
+ Set findPetsByTags(@Param("tags") @javax.annotation.Nonnull Set tags);
+
+ /**
+ * Finds Pets by tags
+ * Similar to findPetsByTags
but it also returns the http response headers .
+ * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+ * @param tags Tags to filter by (required)
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ * @deprecated
+ */
+ @Deprecated
+ @RequestLine("GET /pet/findByTags?tags={tags}")
+ @Headers({
+ "Accept: application/json,application/xml",
+ })
+ ApiResponse> findPetsByTagsWithHttpInfo(@Param("tags") @javax.annotation.Nonnull Set tags);
+
+
+ /**
+ * Finds Pets by tags
+ * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+ * Note, this is equivalent to the other findPetsByTags
method,
+ * but with the query parameters collected into a single Map parameter. This
+ * is convenient for services with optional query parameters, especially when
+ * used with the {@link FindPetsByTagsQueryParams} class that allows for
+ * building up this map in a fluent style.
+ * @param queryParams Map of query parameters as name-value pairs
+ * The following elements may be specified in the query map:
+ *
+ * tags - Tags to filter by (required)
+ *
+ * @return Set<Pet>
+ * @deprecated
+ */
+ @Deprecated
+ @RequestLine("GET /pet/findByTags?tags={tags}")
+ @Headers({
+ "Accept: application/json,application/xml",
+ })
+ Set findPetsByTags(@QueryMap(encoded=true) FindPetsByTagsQueryParams queryParams);
+
+ /**
+ * Finds Pets by tags
+ * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+ * Note, this is equivalent to the other findPetsByTags
that receives the query parameters as a map,
+ * but this one also exposes the Http response headers
+ * @param queryParams Map of query parameters as name-value pairs
+ * The following elements may be specified in the query map:
+ *
+ * tags - Tags to filter by (required)
+ *
+ * @return Set<Pet>
+ * @deprecated
+ */
+ @Deprecated
+ @RequestLine("GET /pet/findByTags?tags={tags}")
+ @Headers({
+ "Accept: application/json,application/xml",
+ })
+ ApiResponse> findPetsByTagsWithHttpInfo(@QueryMap(encoded=true) FindPetsByTagsQueryParams queryParams);
+
+
+ /**
+ * A convenience class for generating query parameters for the
+ * findPetsByTags
method in a fluent style.
+ */
+ public static class FindPetsByTagsQueryParams extends HashMap {
+ public FindPetsByTagsQueryParams tags(@javax.annotation.Nonnull final Set value) {
+ put("tags", EncodingUtils.encodeCollection(value, "csv"));
+ return this;
+ }
+ }
+
+ /**
+ * Find pet by ID
+ * Returns a single pet
+ * @param petId ID of pet to return (required)
+ * @return Pet
+ */
+ @RequestLine("GET /pet/{petId}")
+ @Headers({
+ "Accept: application/json,application/xml",
+ })
+ Pet getPetById(@Param("petId") @javax.annotation.Nonnull Long petId);
+
+ /**
+ * Find pet by ID
+ * Similar to getPetById
but it also returns the http response headers .
+ * Returns a single pet
+ * @param petId ID of pet to return (required)
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("GET /pet/{petId}")
+ @Headers({
+ "Accept: application/json,application/xml",
+ })
+ ApiResponse getPetByIdWithHttpInfo(@Param("petId") @javax.annotation.Nonnull Long petId);
+
+
+
+ /**
+ * Update an existing pet
+ *
+ * @param pet Pet object that needs to be added to the store (required)
+ */
+ @RequestLine("PUT /pet")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ void updatePet(@javax.annotation.Nonnull Pet pet);
+
+ /**
+ * Update an existing pet
+ * Similar to updatePet
but it also returns the http response headers .
+ *
+ * @param pet Pet object that needs to be added to the store (required)
+ */
+ @RequestLine("PUT /pet")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ ApiResponse updatePetWithHttpInfo(@javax.annotation.Nonnull Pet pet);
+
+
+
+ /**
+ * Updates a pet in the store with form data
+ *
+ * @param petId ID of pet that needs to be updated (required)
+ * @param name Updated name of the pet (optional)
+ * @param status Updated status of the pet (optional)
+ */
+ @RequestLine("POST /pet/{petId}")
+ @Headers({
+ "Content-Type: application/x-www-form-urlencoded",
+ "Accept: application/json",
+ })
+ void updatePetWithForm(@Param("petId") @javax.annotation.Nonnull Long petId, @Param("name") @javax.annotation.Nullable String name, @Param("status") @javax.annotation.Nullable String status);
+
+ /**
+ * Updates a pet in the store with form data
+ * Similar to updatePetWithForm
but it also returns the http response headers .
+ *
+ * @param petId ID of pet that needs to be updated (required)
+ * @param name Updated name of the pet (optional)
+ * @param status Updated status of the pet (optional)
+ */
+ @RequestLine("POST /pet/{petId}")
+ @Headers({
+ "Content-Type: application/x-www-form-urlencoded",
+ "Accept: application/json",
+ })
+ ApiResponse updatePetWithFormWithHttpInfo(@Param("petId") @javax.annotation.Nonnull Long petId, @Param("name") @javax.annotation.Nullable String name, @Param("status") @javax.annotation.Nullable String status);
+
+
+
+ /**
+ * uploads an image
+ *
+ * @param petId ID of pet to update (required)
+ * @param additionalMetadata Additional data to pass to server (optional)
+ * @param file file to upload (optional)
+ * @return ModelApiResponse
+ */
+ @RequestLine("POST /pet/{petId}/uploadImage")
+ @Headers({
+ "Content-Type: multipart/form-data",
+ "Accept: application/json",
+ })
+ ModelApiResponse uploadFile(@Param("petId") @javax.annotation.Nonnull Long petId, @Param("additionalMetadata") @javax.annotation.Nullable String additionalMetadata, @Param("file") @javax.annotation.Nullable File file);
+
+ /**
+ * uploads an image
+ * Similar to uploadFile
but it also returns the http response headers .
+ *
+ * @param petId ID of pet to update (required)
+ * @param additionalMetadata Additional data to pass to server (optional)
+ * @param file file to upload (optional)
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("POST /pet/{petId}/uploadImage")
+ @Headers({
+ "Content-Type: multipart/form-data",
+ "Accept: application/json",
+ })
+ ApiResponse uploadFileWithHttpInfo(@Param("petId") @javax.annotation.Nonnull Long petId, @Param("additionalMetadata") @javax.annotation.Nullable String additionalMetadata, @Param("file") @javax.annotation.Nullable File file);
+
+
+
+ /**
+ * uploads an image (required)
+ *
+ * @param petId ID of pet to update (required)
+ * @param requiredFile file to upload (required)
+ * @param additionalMetadata Additional data to pass to server (optional)
+ * @return ModelApiResponse
+ */
+ @RequestLine("POST /fake/{petId}/uploadImageWithRequiredFile")
+ @Headers({
+ "Content-Type: multipart/form-data",
+ "Accept: application/json",
+ })
+ ModelApiResponse uploadFileWithRequiredFile(@Param("petId") @javax.annotation.Nonnull Long petId, @Param("requiredFile") @javax.annotation.Nonnull File requiredFile, @Param("additionalMetadata") @javax.annotation.Nullable String additionalMetadata);
+
+ /**
+ * uploads an image (required)
+ * Similar to uploadFileWithRequiredFile
but it also returns the http response headers .
+ *
+ * @param petId ID of pet to update (required)
+ * @param requiredFile file to upload (required)
+ * @param additionalMetadata Additional data to pass to server (optional)
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("POST /fake/{petId}/uploadImageWithRequiredFile")
+ @Headers({
+ "Content-Type: multipart/form-data",
+ "Accept: application/json",
+ })
+ ApiResponse uploadFileWithRequiredFileWithHttpInfo(@Param("petId") @javax.annotation.Nonnull Long petId, @Param("requiredFile") @javax.annotation.Nonnull File requiredFile, @Param("additionalMetadata") @javax.annotation.Nullable String additionalMetadata);
+
+
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/StoreApi.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/StoreApi.java
new file mode 100644
index 000000000000..734535fc69d4
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/StoreApi.java
@@ -0,0 +1,124 @@
+package org.openapitools.client.api;
+
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.EncodingUtils;
+import org.openapitools.client.model.ApiResponse;
+
+import org.openapitools.client.model.Order;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import feign.*;
+
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public interface StoreApi extends ApiClient.Api {
+
+
+ /**
+ * Delete purchase order by ID
+ * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
+ * @param orderId ID of the order that needs to be deleted (required)
+ */
+ @RequestLine("DELETE /store/order/{orderId}")
+ @Headers({
+ "Accept: application/json",
+ })
+ void deleteOrder(@Param("orderId") @javax.annotation.Nonnull String orderId);
+
+ /**
+ * Delete purchase order by ID
+ * Similar to deleteOrder
but it also returns the http response headers .
+ * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
+ * @param orderId ID of the order that needs to be deleted (required)
+ */
+ @RequestLine("DELETE /store/order/{orderId}")
+ @Headers({
+ "Accept: application/json",
+ })
+ ApiResponse deleteOrderWithHttpInfo(@Param("orderId") @javax.annotation.Nonnull String orderId);
+
+
+
+ /**
+ * Returns pet inventories by status
+ * Returns a map of status codes to quantities
+ * @return Map<String, Integer>
+ */
+ @RequestLine("GET /store/inventory")
+ @Headers({
+ "Accept: application/json",
+ })
+ Map getInventory();
+
+ /**
+ * Returns pet inventories by status
+ * Similar to getInventory
but it also returns the http response headers .
+ * Returns a map of status codes to quantities
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("GET /store/inventory")
+ @Headers({
+ "Accept: application/json",
+ })
+ ApiResponse> getInventoryWithHttpInfo();
+
+
+
+ /**
+ * Find purchase order by ID
+ * For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions
+ * @param orderId ID of pet that needs to be fetched (required)
+ * @return Order
+ */
+ @RequestLine("GET /store/order/{orderId}")
+ @Headers({
+ "Accept: application/json,application/xml",
+ })
+ Order getOrderById(@Param("orderId") @javax.annotation.Nonnull Long orderId);
+
+ /**
+ * Find purchase order by ID
+ * Similar to getOrderById
but it also returns the http response headers .
+ * For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions
+ * @param orderId ID of pet that needs to be fetched (required)
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("GET /store/order/{orderId}")
+ @Headers({
+ "Accept: application/json,application/xml",
+ })
+ ApiResponse getOrderByIdWithHttpInfo(@Param("orderId") @javax.annotation.Nonnull Long orderId);
+
+
+
+ /**
+ * Place an order for a pet
+ *
+ * @param order order placed for purchasing the pet (required)
+ * @return Order
+ */
+ @RequestLine("POST /store/order")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json,application/xml",
+ })
+ Order placeOrder(@javax.annotation.Nonnull Order order);
+
+ /**
+ * Place an order for a pet
+ * Similar to placeOrder
but it also returns the http response headers .
+ *
+ * @param order order placed for purchasing the pet (required)
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("POST /store/order")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json,application/xml",
+ })
+ ApiResponse placeOrderWithHttpInfo(@javax.annotation.Nonnull Order order);
+
+
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/UserApi.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/UserApi.java
new file mode 100644
index 000000000000..21f96e1b2cff
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/api/UserApi.java
@@ -0,0 +1,289 @@
+package org.openapitools.client.api;
+
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.EncodingUtils;
+import org.openapitools.client.model.ApiResponse;
+
+import java.time.OffsetDateTime;
+import org.openapitools.client.model.User;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import feign.*;
+
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public interface UserApi extends ApiClient.Api {
+
+
+ /**
+ * Create user
+ * This can only be done by the logged in user.
+ * @param user Created user object (required)
+ */
+ @RequestLine("POST /user")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ void createUser(@javax.annotation.Nonnull User user);
+
+ /**
+ * Create user
+ * Similar to createUser
but it also returns the http response headers .
+ * This can only be done by the logged in user.
+ * @param user Created user object (required)
+ */
+ @RequestLine("POST /user")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ ApiResponse createUserWithHttpInfo(@javax.annotation.Nonnull User user);
+
+
+
+ /**
+ * Creates list of users with given input array
+ *
+ * @param user List of user object (required)
+ */
+ @RequestLine("POST /user/createWithArray")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ void createUsersWithArrayInput(@javax.annotation.Nonnull List user);
+
+ /**
+ * Creates list of users with given input array
+ * Similar to createUsersWithArrayInput
but it also returns the http response headers .
+ *
+ * @param user List of user object (required)
+ */
+ @RequestLine("POST /user/createWithArray")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ ApiResponse createUsersWithArrayInputWithHttpInfo(@javax.annotation.Nonnull List user);
+
+
+
+ /**
+ * Creates list of users with given input array
+ *
+ * @param user List of user object (required)
+ */
+ @RequestLine("POST /user/createWithList")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ void createUsersWithListInput(@javax.annotation.Nonnull List user);
+
+ /**
+ * Creates list of users with given input array
+ * Similar to createUsersWithListInput
but it also returns the http response headers .
+ *
+ * @param user List of user object (required)
+ */
+ @RequestLine("POST /user/createWithList")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ ApiResponse createUsersWithListInputWithHttpInfo(@javax.annotation.Nonnull List user);
+
+
+
+ /**
+ * Delete user
+ * This can only be done by the logged in user.
+ * @param username The name that needs to be deleted (required)
+ */
+ @RequestLine("DELETE /user/{username}")
+ @Headers({
+ "Accept: application/json",
+ })
+ void deleteUser(@Param("username") @javax.annotation.Nonnull String username);
+
+ /**
+ * Delete user
+ * Similar to deleteUser
but it also returns the http response headers .
+ * This can only be done by the logged in user.
+ * @param username The name that needs to be deleted (required)
+ */
+ @RequestLine("DELETE /user/{username}")
+ @Headers({
+ "Accept: application/json",
+ })
+ ApiResponse deleteUserWithHttpInfo(@Param("username") @javax.annotation.Nonnull String username);
+
+
+
+ /**
+ * Get user by user name
+ *
+ * @param username The name that needs to be fetched. Use user1 for testing. (required)
+ * @return User
+ */
+ @RequestLine("GET /user/{username}")
+ @Headers({
+ "Accept: application/json,application/xml",
+ })
+ User getUserByName(@Param("username") @javax.annotation.Nonnull String username);
+
+ /**
+ * Get user by user name
+ * Similar to getUserByName
but it also returns the http response headers .
+ *
+ * @param username The name that needs to be fetched. Use user1 for testing. (required)
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("GET /user/{username}")
+ @Headers({
+ "Accept: application/json,application/xml",
+ })
+ ApiResponse getUserByNameWithHttpInfo(@Param("username") @javax.annotation.Nonnull String username);
+
+
+
+ /**
+ * Logs user into the system
+ *
+ * @param username The user name for login (required)
+ * @param password The password for login in clear text (required)
+ * @return String
+ */
+ @RequestLine("GET /user/login?username={username}&password={password}")
+ @Headers({
+ "Accept: application/json,application/xml",
+ })
+ String loginUser(@Param("username") @javax.annotation.Nonnull String username, @Param("password") @javax.annotation.Nonnull String password);
+
+ /**
+ * Logs user into the system
+ * Similar to loginUser
but it also returns the http response headers .
+ *
+ * @param username The user name for login (required)
+ * @param password The password for login in clear text (required)
+ * @return A ApiResponse that wraps the response boyd and the http headers.
+ */
+ @RequestLine("GET /user/login?username={username}&password={password}")
+ @Headers({
+ "Accept: application/json,application/xml",
+ })
+ ApiResponse loginUserWithHttpInfo(@Param("username") @javax.annotation.Nonnull String username, @Param("password") @javax.annotation.Nonnull String password);
+
+
+ /**
+ * Logs user into the system
+ *
+ * Note, this is equivalent to the other loginUser
method,
+ * but with the query parameters collected into a single Map parameter. This
+ * is convenient for services with optional query parameters, especially when
+ * used with the {@link LoginUserQueryParams} class that allows for
+ * building up this map in a fluent style.
+ * @param queryParams Map of query parameters as name-value pairs
+ * The following elements may be specified in the query map:
+ *
+ * username - The user name for login (required)
+ * password - The password for login in clear text (required)
+ *
+ * @return String
+ */
+ @RequestLine("GET /user/login?username={username}&password={password}")
+ @Headers({
+ "Accept: application/json,application/xml",
+ })
+ String loginUser(@QueryMap(encoded=true) LoginUserQueryParams queryParams);
+
+ /**
+ * Logs user into the system
+ *
+ * Note, this is equivalent to the other loginUser
that receives the query parameters as a map,
+ * but this one also exposes the Http response headers
+ * @param queryParams Map of query parameters as name-value pairs
+ * The following elements may be specified in the query map:
+ *
+ * username - The user name for login (required)
+ * password - The password for login in clear text (required)
+ *
+ * @return String
+ */
+ @RequestLine("GET /user/login?username={username}&password={password}")
+ @Headers({
+ "Accept: application/json,application/xml",
+ })
+ ApiResponse loginUserWithHttpInfo(@QueryMap(encoded=true) LoginUserQueryParams queryParams);
+
+
+ /**
+ * A convenience class for generating query parameters for the
+ * loginUser
method in a fluent style.
+ */
+ public static class LoginUserQueryParams extends HashMap {
+ public LoginUserQueryParams username(@javax.annotation.Nonnull final String value) {
+ put("username", EncodingUtils.encode(value));
+ return this;
+ }
+ public LoginUserQueryParams password(@javax.annotation.Nonnull final String value) {
+ put("password", EncodingUtils.encode(value));
+ return this;
+ }
+ }
+
+ /**
+ * Logs out current logged in user session
+ *
+ */
+ @RequestLine("GET /user/logout")
+ @Headers({
+ "Accept: application/json",
+ })
+ void logoutUser();
+
+ /**
+ * Logs out current logged in user session
+ * Similar to logoutUser
but it also returns the http response headers .
+ *
+ */
+ @RequestLine("GET /user/logout")
+ @Headers({
+ "Accept: application/json",
+ })
+ ApiResponse logoutUserWithHttpInfo();
+
+
+
+ /**
+ * Updated user
+ * This can only be done by the logged in user.
+ * @param username name that need to be deleted (required)
+ * @param user Updated user object (required)
+ */
+ @RequestLine("PUT /user/{username}")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ void updateUser(@Param("username") @javax.annotation.Nonnull String username, @javax.annotation.Nonnull User user);
+
+ /**
+ * Updated user
+ * Similar to updateUser
but it also returns the http response headers .
+ * This can only be done by the logged in user.
+ * @param username name that need to be deleted (required)
+ * @param user Updated user object (required)
+ */
+ @RequestLine("PUT /user/{username}")
+ @Headers({
+ "Content-Type: application/json",
+ "Accept: application/json",
+ })
+ ApiResponse updateUserWithHttpInfo(@Param("username") @javax.annotation.Nonnull String username, @javax.annotation.Nonnull User user);
+
+
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/ApiErrorDecoder.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/ApiErrorDecoder.java
new file mode 100644
index 000000000000..468011998b40
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/ApiErrorDecoder.java
@@ -0,0 +1,40 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.auth;
+
+import java.util.Date;
+
+import feign.Response;
+import feign.RetryableException;
+import feign.codec.ErrorDecoder;
+
+/**
+ * Error decoder that makes the HTTP 401 and 403 Retryable. Sometimes the 401 or 403 may indicate an expired token
+ * All the other HTTP status are handled by the {@link feign.codec.ErrorDecoder.Default} decoder
+ */
+public class ApiErrorDecoder implements ErrorDecoder {
+
+ private final Default defaultErrorDecoder = new Default();
+
+ @Override
+ public Exception decode(String methodKey, Response response) {
+ //401/403 response codes most likely indicate an expired access token, unless it happens two times in a row
+ Exception httpException = defaultErrorDecoder.decode(methodKey, response);
+ if (response.status() == 401 || response.status() == 403) {
+ return new RetryableException(response.status(), "Received status " + response.status() + " trying to renew access token",
+ response.request().httpMethod(), httpException, (Date) null, response.request());
+ }
+ return httpException;
+ }
+}
\ No newline at end of file
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java
new file mode 100644
index 000000000000..ccf3f0810672
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java
@@ -0,0 +1,56 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.auth;
+
+import feign.RequestInterceptor;
+import feign.RequestTemplate;
+
+public class ApiKeyAuth implements RequestInterceptor {
+ private final String location;
+ private final String paramName;
+
+ private String apiKey;
+
+ public ApiKeyAuth(String location, String paramName) {
+ this.location = location;
+ this.paramName = paramName;
+ }
+
+ public String getLocation() {
+ return location;
+ }
+
+ public String getParamName() {
+ return paramName;
+ }
+
+ public String getApiKey() {
+ return apiKey;
+ }
+
+ public void setApiKey(String apiKey) {
+ this.apiKey = apiKey;
+ }
+
+ @Override
+ public void apply(RequestTemplate template) {
+ if ("query".equals(location)) {
+ template.query(paramName, apiKey);
+ } else if ("header".equals(location)) {
+ template.header(paramName, apiKey);
+ } else if ("cookie".equals(location)) {
+ template.header("Cookie", String.format("%s=%s", paramName, apiKey));
+ }
+ }
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/DefaultApi20Impl.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/DefaultApi20Impl.java
new file mode 100644
index 000000000000..924ac2c66d00
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/DefaultApi20Impl.java
@@ -0,0 +1,60 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.auth;
+
+import com.github.scribejava.core.builder.api.DefaultApi20;
+import com.github.scribejava.core.extractors.OAuth2AccessTokenJsonExtractor;
+import com.github.scribejava.core.extractors.TokenExtractor;
+import com.github.scribejava.core.model.OAuth2AccessToken;
+import com.github.scribejava.core.oauth2.bearersignature.BearerSignature;
+import com.github.scribejava.core.oauth2.bearersignature.BearerSignatureURIQueryParameter;
+import com.github.scribejava.core.oauth2.clientauthentication.ClientAuthentication;
+import com.github.scribejava.core.oauth2.clientauthentication.RequestBodyAuthenticationScheme;
+
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class DefaultApi20Impl extends DefaultApi20 {
+
+ private final String accessTokenEndpoint;
+ private final String authorizationBaseUrl;
+
+ protected DefaultApi20Impl(String authorizationBaseUrl, String accessTokenEndpoint) {
+ this.authorizationBaseUrl = authorizationBaseUrl;
+ this.accessTokenEndpoint = accessTokenEndpoint;
+ }
+
+ @Override
+ public String getAccessTokenEndpoint() {
+ return accessTokenEndpoint;
+ }
+
+ @Override
+ protected String getAuthorizationBaseUrl() {
+ return authorizationBaseUrl;
+ }
+
+ @Override
+ public BearerSignature getBearerSignature() {
+ return BearerSignatureURIQueryParameter.instance();
+ }
+
+ @Override
+ public ClientAuthentication getClientAuthentication() {
+ return RequestBodyAuthenticationScheme.instance();
+ }
+
+ @Override
+ public TokenExtractor getAccessTokenExtractor() {
+ return OAuth2AccessTokenJsonExtractor.instance();
+ }
+}
\ No newline at end of file
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java
new file mode 100644
index 000000000000..77fc2610f23e
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java
@@ -0,0 +1,54 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.auth;
+
+import feign.RequestInterceptor;
+import feign.RequestTemplate;
+import feign.auth.BasicAuthRequestInterceptor;
+
+/**
+ * An interceptor that adds the request header needed to use HTTP basic authentication.
+ */
+public class HttpBasicAuth implements RequestInterceptor {
+
+ private String username;
+ private String password;
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public void setCredentials(String username, String password) {
+ this.username = username;
+ this.password = password;
+ }
+
+ @Override
+ public void apply(RequestTemplate template) {
+ RequestInterceptor requestInterceptor = new BasicAuthRequestInterceptor(username, password);
+ requestInterceptor.apply(template);
+ }
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java
new file mode 100644
index 000000000000..4139c3fe73a9
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java
@@ -0,0 +1,72 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.auth;
+
+import feign.RequestInterceptor;
+import feign.RequestTemplate;
+import java.util.Optional;
+import java.util.function.Supplier;
+
+/**
+ * An interceptor that adds the request header needed to use HTTP bearer authentication.
+ */
+public class HttpBearerAuth implements RequestInterceptor {
+ private final String scheme;
+ private Supplier tokenSupplier;
+
+ public HttpBearerAuth(String scheme) {
+ this.scheme = scheme;
+ }
+
+ /**
+ * Gets the token, which together with the scheme, will be sent as the value of the Authorization header.
+ *
+ * @return The bearer token
+ */
+ public String getBearerToken() {
+ return tokenSupplier.get();
+ }
+
+ /**
+ * Sets the token, which together with the scheme, will be sent as the value of the Authorization header.
+ *
+ * @param bearerToken The bearer token to send in the Authorization header
+ */
+ public void setBearerToken(String bearerToken) {
+ this.tokenSupplier = () -> bearerToken;
+ }
+
+ /**
+ * Sets the supplier of tokens, which together with the scheme, will be sent as the value of the Authorization header.
+ *
+ * @param tokenSupplier The supplier of bearer tokens to send in the Authorization header
+ */
+ public void setBearerToken(Supplier tokenSupplier) {
+ this.tokenSupplier = tokenSupplier;
+ }
+
+ @Override
+ public void apply(RequestTemplate template) {
+ String bearerToken = Optional.ofNullable(tokenSupplier).map(Supplier::get).orElse(null);
+ if (bearerToken == null) {
+ return;
+ }
+
+ template.header("Authorization", (scheme != null ? upperCaseBearer(scheme) + " " : "") + bearerToken);
+ }
+
+ private static String upperCaseBearer(String scheme) {
+ return ("bearer".equalsIgnoreCase(scheme)) ? "Bearer" : scheme;
+ }
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/OAuth.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/OAuth.java
new file mode 100644
index 000000000000..cd183dd0bec6
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/OAuth.java
@@ -0,0 +1,109 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.auth;
+
+import com.github.scribejava.core.model.OAuth2AccessToken;
+import com.github.scribejava.core.oauth.OAuth20Service;
+import feign.RequestInterceptor;
+import feign.RequestTemplate;
+
+import java.util.Collection;
+
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public abstract class OAuth implements RequestInterceptor {
+
+ //https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.4
+ static final int LEEWAY_SECONDS = 10;
+
+ static final int MILLIS_PER_SECOND = 1000;
+
+ public interface AccessTokenListener {
+ void notify(OAuth2AccessToken token);
+ }
+
+ private volatile String accessToken;
+ private Long expirationTimeSeconds;
+ private AccessTokenListener accessTokenListener;
+
+ protected OAuth20Service service;
+ protected String scopes;
+ protected String authorizationUrl;
+ protected String tokenUrl;
+
+ public OAuth(String authorizationUrl, String tokenUrl, String scopes) {
+ this.scopes = scopes;
+ this.authorizationUrl = authorizationUrl;
+ this.tokenUrl = tokenUrl;
+ }
+
+ @Override
+ public void apply(RequestTemplate template) {
+ // If the request already have an authorization (eg. Basic auth), do nothing
+ if (requestContainsNonOauthAuthorization(template)) {
+ return;
+ }
+ String accessToken = getAccessToken();
+ if (accessToken != null) {
+ template.removeHeader("Authorization");
+ template.header("Authorization", "Bearer " + accessToken);
+ }
+ }
+
+ private boolean requestContainsNonOauthAuthorization(RequestTemplate template) {
+ Collection authorizations = template.headers().get("Authorization");
+ if (authorizations == null) {
+ return false;
+ }
+ return !authorizations.stream()
+ .anyMatch(authHeader -> !authHeader.equalsIgnoreCase("Bearer"));
+ }
+
+ private synchronized void updateAccessToken() {
+ OAuth2AccessToken accessTokenResponse;
+ accessTokenResponse = getOAuth2AccessToken();
+ if (accessTokenResponse != null && accessTokenResponse.getAccessToken() != null) {
+ setAccessToken(accessTokenResponse.getAccessToken(), accessTokenResponse.getExpiresIn());
+ if (accessTokenListener != null) {
+ accessTokenListener.notify(accessTokenResponse);
+ }
+ }
+ }
+
+ abstract OAuth2AccessToken getOAuth2AccessToken();
+
+ abstract OAuthFlow getFlow();
+
+ public synchronized void registerAccessTokenListener(AccessTokenListener accessTokenListener) {
+ this.accessTokenListener = accessTokenListener;
+ }
+
+ public synchronized String getAccessToken() {
+ // If first time, get the token
+ if (expirationTimeSeconds == null || System.currentTimeMillis() >= expirationTimeSeconds * MILLIS_PER_SECOND) {
+ updateAccessToken();
+ }
+ return accessToken;
+ }
+
+ /**
+ * Manually sets the access token
+ * @param accessToken The access token
+ * @param expiresIn Seconds until the token expires
+ */
+ public synchronized void setAccessToken(String accessToken, Integer expiresIn) {
+ this.accessToken = accessToken;
+ this.expirationTimeSeconds = expiresIn == null ? null : System.currentTimeMillis() / MILLIS_PER_SECOND + expiresIn - LEEWAY_SECONDS;
+ }
+
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/OAuthFlow.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/OAuthFlow.java
new file mode 100644
index 000000000000..077387664782
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/OAuthFlow.java
@@ -0,0 +1,25 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.auth;
+
+/**
+ * OAuth flows that are supported by this client
+ */
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public enum OAuthFlow {
+ ACCESS_CODE, //called authorizationCode in OpenAPI 3.0
+ IMPLICIT,
+ PASSWORD,
+ APPLICATION //called clientCredentials in OpenAPI 3.0
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/OauthClientCredentialsGrant.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/OauthClientCredentialsGrant.java
new file mode 100644
index 000000000000..3bb9bd2f0d72
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/OauthClientCredentialsGrant.java
@@ -0,0 +1,52 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.auth;
+
+import com.github.scribejava.core.builder.ServiceBuilder;
+import com.github.scribejava.core.model.OAuth2AccessToken;
+
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class OauthClientCredentialsGrant extends OAuth {
+
+ public OauthClientCredentialsGrant(String authorizationUrl, String tokenUrl, String scopes) {
+ super(authorizationUrl, tokenUrl, scopes);
+ }
+
+ @Override
+ protected OAuth2AccessToken getOAuth2AccessToken() {
+ try {
+ return service.getAccessTokenClientCredentialsGrant(scopes);
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to get oauth token", e);
+ }
+ }
+
+ @Override
+ protected OAuthFlow getFlow() {
+ return OAuthFlow.APPLICATION;
+ }
+
+ /**
+ * Configures the client credentials flow
+ *
+ * @param clientId
+ * @param clientSecret
+ */
+ public void configure(String clientId, String clientSecret) {
+ service = new ServiceBuilder(clientId)
+ .apiSecret(clientSecret)
+ .defaultScope(scopes)
+ .build(new DefaultApi20Impl(authorizationUrl, tokenUrl));
+ }
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/OauthPasswordGrant.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/OauthPasswordGrant.java
new file mode 100644
index 000000000000..6eb2256394d3
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/auth/OauthPasswordGrant.java
@@ -0,0 +1,61 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.auth;
+
+import com.github.scribejava.core.builder.ServiceBuilder;
+import com.github.scribejava.core.model.OAuth2AccessToken;
+
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class OauthPasswordGrant extends OAuth {
+
+ private String username;
+ private String password;
+
+ public OauthPasswordGrant(String tokenUrl, String scopes) {
+ super(null, tokenUrl, scopes);
+ }
+
+ @Override
+ protected OAuth2AccessToken getOAuth2AccessToken() {
+ try {
+ return service.getAccessTokenPasswordGrant(username, password);
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to get oauth token", e);
+ }
+ }
+
+ @Override
+ protected OAuthFlow getFlow() {
+ return OAuthFlow.PASSWORD;
+ }
+
+ /**
+ * Configures Oauth password grant flow
+ * Note: this flow is deprecated.
+ *
+ * @param username
+ * @param password
+ * @param clientId
+ * @param clientSecret
+ */
+ public void configure(String username, String password, String clientId, String clientSecret) {
+ this.username = username;
+ this.password = password;
+ //TODO the clientId and secret are optional according with the RFC
+ service = new ServiceBuilder(clientId)
+ .apiSecret(clientSecret)
+ .defaultScope(scopes)
+ .build(new DefaultApi20Impl(authorizationUrl, tokenUrl));
+ }
+}
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java
new file mode 100644
index 000000000000..519c95fe4e10
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java
@@ -0,0 +1,156 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import java.util.HashMap;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * AdditionalPropertiesClass
+ */
+@JsonPropertyOrder({
+ AdditionalPropertiesClass.JSON_PROPERTY_MAP_PROPERTY,
+ AdditionalPropertiesClass.JSON_PROPERTY_MAP_OF_MAP_PROPERTY
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class AdditionalPropertiesClass {
+ public static final String JSON_PROPERTY_MAP_PROPERTY = "map_property";
+ @javax.annotation.Nullable
+ private Map mapProperty = new HashMap<>();
+
+ public static final String JSON_PROPERTY_MAP_OF_MAP_PROPERTY = "map_of_map_property";
+ @javax.annotation.Nullable
+ private Map> mapOfMapProperty = new HashMap<>();
+
+ public AdditionalPropertiesClass() {
+ }
+
+ public AdditionalPropertiesClass mapProperty(@javax.annotation.Nullable Map mapProperty) {
+
+ this.mapProperty = mapProperty;
+ return this;
+ }
+
+ public AdditionalPropertiesClass putMapPropertyItem(String key, String mapPropertyItem) {
+ if (this.mapProperty == null) {
+ this.mapProperty = new HashMap<>();
+ }
+ this.mapProperty.put(key, mapPropertyItem);
+ return this;
+ }
+
+ /**
+ * Get mapProperty
+ * @return mapProperty
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_MAP_PROPERTY)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Map getMapProperty() {
+ return mapProperty;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_MAP_PROPERTY)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setMapProperty(@javax.annotation.Nullable Map mapProperty) {
+ this.mapProperty = mapProperty;
+ }
+
+
+ public AdditionalPropertiesClass mapOfMapProperty(@javax.annotation.Nullable Map> mapOfMapProperty) {
+
+ this.mapOfMapProperty = mapOfMapProperty;
+ return this;
+ }
+
+ public AdditionalPropertiesClass putMapOfMapPropertyItem(String key, Map mapOfMapPropertyItem) {
+ if (this.mapOfMapProperty == null) {
+ this.mapOfMapProperty = new HashMap<>();
+ }
+ this.mapOfMapProperty.put(key, mapOfMapPropertyItem);
+ return this;
+ }
+
+ /**
+ * Get mapOfMapProperty
+ * @return mapOfMapProperty
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_MAP_OF_MAP_PROPERTY)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Map> getMapOfMapProperty() {
+ return mapOfMapProperty;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_MAP_OF_MAP_PROPERTY)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setMapOfMapProperty(@javax.annotation.Nullable Map> mapOfMapProperty) {
+ this.mapOfMapProperty = mapOfMapProperty;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AdditionalPropertiesClass additionalPropertiesClass = (AdditionalPropertiesClass) o;
+ return Objects.equals(this.mapProperty, additionalPropertiesClass.mapProperty) &&
+ Objects.equals(this.mapOfMapProperty, additionalPropertiesClass.mapOfMapProperty);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mapProperty, mapOfMapProperty);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AdditionalPropertiesClass {\n");
+ sb.append(" mapProperty: ").append(toIndentedString(mapProperty)).append("\n");
+ sb.append(" mapOfMapProperty: ").append(toIndentedString(mapOfMapProperty)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/AllOfWithSingleRef.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/AllOfWithSingleRef.java
new file mode 100644
index 000000000000..951f485ef703
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/AllOfWithSingleRef.java
@@ -0,0 +1,139 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import org.openapitools.client.model.SingleRefType;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * AllOfWithSingleRef
+ */
+@JsonPropertyOrder({
+ AllOfWithSingleRef.JSON_PROPERTY_USERNAME,
+ AllOfWithSingleRef.JSON_PROPERTY_SINGLE_REF_TYPE
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class AllOfWithSingleRef {
+ public static final String JSON_PROPERTY_USERNAME = "username";
+ @javax.annotation.Nullable
+ private String username;
+
+ public static final String JSON_PROPERTY_SINGLE_REF_TYPE = "SingleRefType";
+ @javax.annotation.Nullable
+ private SingleRefType singleRefType;
+
+ public AllOfWithSingleRef() {
+ }
+
+ public AllOfWithSingleRef username(@javax.annotation.Nullable String username) {
+
+ this.username = username;
+ return this;
+ }
+
+ /**
+ * Get username
+ * @return username
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_USERNAME)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getUsername() {
+ return username;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_USERNAME)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setUsername(@javax.annotation.Nullable String username) {
+ this.username = username;
+ }
+
+
+ public AllOfWithSingleRef singleRefType(@javax.annotation.Nullable SingleRefType singleRefType) {
+
+ this.singleRefType = singleRefType;
+ return this;
+ }
+
+ /**
+ * Get singleRefType
+ * @return singleRefType
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_SINGLE_REF_TYPE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public SingleRefType getSingleRefType() {
+ return singleRefType;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_SINGLE_REF_TYPE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setSingleRefType(@javax.annotation.Nullable SingleRefType singleRefType) {
+ this.singleRefType = singleRefType;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AllOfWithSingleRef allOfWithSingleRef = (AllOfWithSingleRef) o;
+ return Objects.equals(this.username, allOfWithSingleRef.username) &&
+ Objects.equals(this.singleRefType, allOfWithSingleRef.singleRefType);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(username, singleRefType);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AllOfWithSingleRef {\n");
+ sb.append(" username: ").append(toIndentedString(username)).append("\n");
+ sb.append(" singleRefType: ").append(toIndentedString(singleRefType)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Animal.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Animal.java
new file mode 100644
index 000000000000..19e308b46a9f
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Animal.java
@@ -0,0 +1,151 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * Animal
+ */
+@JsonPropertyOrder({
+ Animal.JSON_PROPERTY_CLASS_NAME,
+ Animal.JSON_PROPERTY_COLOR
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+@JsonIgnoreProperties(
+ value = "className", // ignore manually set className, it will be automatically generated by Jackson during serialization
+ allowSetters = true // allows the className to be set during deserialization
+)
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "className", visible = true)
+@JsonSubTypes({
+ @JsonSubTypes.Type(value = Cat.class, name = "CAT"),
+ @JsonSubTypes.Type(value = Dog.class, name = "DOG"),
+})
+
+public class Animal {
+ public static final String JSON_PROPERTY_CLASS_NAME = "className";
+ @javax.annotation.Nonnull
+ protected String className;
+
+ public static final String JSON_PROPERTY_COLOR = "color";
+ @javax.annotation.Nullable
+ private String color = "red";
+
+ public Animal() {
+ }
+
+ public Animal className(@javax.annotation.Nonnull String className) {
+
+ this.className = className;
+ return this;
+ }
+
+ /**
+ * Get className
+ * @return className
+ */
+ @javax.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_CLASS_NAME)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+
+ public String getClassName() {
+ return className;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_CLASS_NAME)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setClassName(@javax.annotation.Nonnull String className) {
+ this.className = className;
+ }
+
+
+ public Animal color(@javax.annotation.Nullable String color) {
+
+ this.color = color;
+ return this;
+ }
+
+ /**
+ * Get color
+ * @return color
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_COLOR)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getColor() {
+ return color;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_COLOR)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setColor(@javax.annotation.Nullable String color) {
+ this.color = color;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ Animal animal = (Animal) o;
+ return Objects.equals(this.className, animal.className) &&
+ Objects.equals(this.color, animal.color);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(className, color);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class Animal {\n");
+ sb.append(" className: ").append(toIndentedString(className)).append("\n");
+ sb.append(" color: ").append(toIndentedString(color)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ApiResponse.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ApiResponse.java
new file mode 100644
index 000000000000..9b841f81714d
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ApiResponse.java
@@ -0,0 +1,56 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Map;
+import java.util.Collection;
+
+public class ApiResponse{
+
+ final private int statusCode;
+ final private Map> headers;
+ final private T data;
+
+ /**
+ * @param statusCode The status code of HTTP response
+ * @param headers The headers of HTTP response
+ */
+ public ApiResponse(int statusCode, Map> headers) {
+ this(statusCode, headers, null);
+ }
+
+ /**
+ * @param statusCode The status code of HTTP response
+ * @param headers The headers of HTTP response
+ * @param data The object deserialized from response bod
+ */
+ public ApiResponse(int statusCode, Map> headers, T data) {
+ this.statusCode = statusCode;
+ this.headers = headers;
+ this.data = data;
+ }
+
+ public int getStatusCode() {
+ return statusCode;
+ }
+
+ public Map> getHeaders() {
+ return headers;
+ }
+
+ public T getData() {
+ return data;
+ }
+
+}
\ No newline at end of file
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java
new file mode 100644
index 000000000000..ddbdf87f33fd
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java
@@ -0,0 +1,117 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * ArrayOfArrayOfNumberOnly
+ */
+@JsonPropertyOrder({
+ ArrayOfArrayOfNumberOnly.JSON_PROPERTY_ARRAY_ARRAY_NUMBER
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class ArrayOfArrayOfNumberOnly {
+ public static final String JSON_PROPERTY_ARRAY_ARRAY_NUMBER = "ArrayArrayNumber";
+ @javax.annotation.Nullable
+ private List> arrayArrayNumber = new ArrayList<>();
+
+ public ArrayOfArrayOfNumberOnly() {
+ }
+
+ public ArrayOfArrayOfNumberOnly arrayArrayNumber(@javax.annotation.Nullable List> arrayArrayNumber) {
+
+ this.arrayArrayNumber = arrayArrayNumber;
+ return this;
+ }
+
+ public ArrayOfArrayOfNumberOnly addArrayArrayNumberItem(List arrayArrayNumberItem) {
+ if (this.arrayArrayNumber == null) {
+ this.arrayArrayNumber = new ArrayList<>();
+ }
+ this.arrayArrayNumber.add(arrayArrayNumberItem);
+ return this;
+ }
+
+ /**
+ * Get arrayArrayNumber
+ * @return arrayArrayNumber
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_ARRAY_ARRAY_NUMBER)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public List> getArrayArrayNumber() {
+ return arrayArrayNumber;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_ARRAY_ARRAY_NUMBER)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setArrayArrayNumber(@javax.annotation.Nullable List> arrayArrayNumber) {
+ this.arrayArrayNumber = arrayArrayNumber;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ArrayOfArrayOfNumberOnly arrayOfArrayOfNumberOnly = (ArrayOfArrayOfNumberOnly) o;
+ return Objects.equals(this.arrayArrayNumber, arrayOfArrayOfNumberOnly.arrayArrayNumber);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(arrayArrayNumber);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class ArrayOfArrayOfNumberOnly {\n");
+ sb.append(" arrayArrayNumber: ").append(toIndentedString(arrayArrayNumber)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java
new file mode 100644
index 000000000000..d68310c80773
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java
@@ -0,0 +1,117 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * ArrayOfNumberOnly
+ */
+@JsonPropertyOrder({
+ ArrayOfNumberOnly.JSON_PROPERTY_ARRAY_NUMBER
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class ArrayOfNumberOnly {
+ public static final String JSON_PROPERTY_ARRAY_NUMBER = "ArrayNumber";
+ @javax.annotation.Nullable
+ private List arrayNumber = new ArrayList<>();
+
+ public ArrayOfNumberOnly() {
+ }
+
+ public ArrayOfNumberOnly arrayNumber(@javax.annotation.Nullable List arrayNumber) {
+
+ this.arrayNumber = arrayNumber;
+ return this;
+ }
+
+ public ArrayOfNumberOnly addArrayNumberItem(BigDecimal arrayNumberItem) {
+ if (this.arrayNumber == null) {
+ this.arrayNumber = new ArrayList<>();
+ }
+ this.arrayNumber.add(arrayNumberItem);
+ return this;
+ }
+
+ /**
+ * Get arrayNumber
+ * @return arrayNumber
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_ARRAY_NUMBER)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public List getArrayNumber() {
+ return arrayNumber;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_ARRAY_NUMBER)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setArrayNumber(@javax.annotation.Nullable List arrayNumber) {
+ this.arrayNumber = arrayNumber;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ArrayOfNumberOnly arrayOfNumberOnly = (ArrayOfNumberOnly) o;
+ return Objects.equals(this.arrayNumber, arrayOfNumberOnly.arrayNumber);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(arrayNumber);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class ArrayOfNumberOnly {\n");
+ sb.append(" arrayNumber: ").append(toIndentedString(arrayNumber)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ArrayTest.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ArrayTest.java
new file mode 100644
index 000000000000..c64553f65a00
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ArrayTest.java
@@ -0,0 +1,199 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import org.openapitools.client.model.ReadOnlyFirst;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * ArrayTest
+ */
+@JsonPropertyOrder({
+ ArrayTest.JSON_PROPERTY_ARRAY_OF_STRING,
+ ArrayTest.JSON_PROPERTY_ARRAY_ARRAY_OF_INTEGER,
+ ArrayTest.JSON_PROPERTY_ARRAY_ARRAY_OF_MODEL
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class ArrayTest {
+ public static final String JSON_PROPERTY_ARRAY_OF_STRING = "array_of_string";
+ @javax.annotation.Nullable
+ private List arrayOfString = new ArrayList<>();
+
+ public static final String JSON_PROPERTY_ARRAY_ARRAY_OF_INTEGER = "array_array_of_integer";
+ @javax.annotation.Nullable
+ private List> arrayArrayOfInteger = new ArrayList<>();
+
+ public static final String JSON_PROPERTY_ARRAY_ARRAY_OF_MODEL = "array_array_of_model";
+ @javax.annotation.Nullable
+ private List> arrayArrayOfModel = new ArrayList<>();
+
+ public ArrayTest() {
+ }
+
+ public ArrayTest arrayOfString(@javax.annotation.Nullable List arrayOfString) {
+
+ this.arrayOfString = arrayOfString;
+ return this;
+ }
+
+ public ArrayTest addArrayOfStringItem(String arrayOfStringItem) {
+ if (this.arrayOfString == null) {
+ this.arrayOfString = new ArrayList<>();
+ }
+ this.arrayOfString.add(arrayOfStringItem);
+ return this;
+ }
+
+ /**
+ * Get arrayOfString
+ * @return arrayOfString
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_ARRAY_OF_STRING)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public List getArrayOfString() {
+ return arrayOfString;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_ARRAY_OF_STRING)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setArrayOfString(@javax.annotation.Nullable List arrayOfString) {
+ this.arrayOfString = arrayOfString;
+ }
+
+
+ public ArrayTest arrayArrayOfInteger(@javax.annotation.Nullable List> arrayArrayOfInteger) {
+
+ this.arrayArrayOfInteger = arrayArrayOfInteger;
+ return this;
+ }
+
+ public ArrayTest addArrayArrayOfIntegerItem(List arrayArrayOfIntegerItem) {
+ if (this.arrayArrayOfInteger == null) {
+ this.arrayArrayOfInteger = new ArrayList<>();
+ }
+ this.arrayArrayOfInteger.add(arrayArrayOfIntegerItem);
+ return this;
+ }
+
+ /**
+ * Get arrayArrayOfInteger
+ * @return arrayArrayOfInteger
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_ARRAY_ARRAY_OF_INTEGER)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public List> getArrayArrayOfInteger() {
+ return arrayArrayOfInteger;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_ARRAY_ARRAY_OF_INTEGER)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setArrayArrayOfInteger(@javax.annotation.Nullable List> arrayArrayOfInteger) {
+ this.arrayArrayOfInteger = arrayArrayOfInteger;
+ }
+
+
+ public ArrayTest arrayArrayOfModel(@javax.annotation.Nullable List> arrayArrayOfModel) {
+
+ this.arrayArrayOfModel = arrayArrayOfModel;
+ return this;
+ }
+
+ public ArrayTest addArrayArrayOfModelItem(List arrayArrayOfModelItem) {
+ if (this.arrayArrayOfModel == null) {
+ this.arrayArrayOfModel = new ArrayList<>();
+ }
+ this.arrayArrayOfModel.add(arrayArrayOfModelItem);
+ return this;
+ }
+
+ /**
+ * Get arrayArrayOfModel
+ * @return arrayArrayOfModel
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_ARRAY_ARRAY_OF_MODEL)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public List> getArrayArrayOfModel() {
+ return arrayArrayOfModel;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_ARRAY_ARRAY_OF_MODEL)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setArrayArrayOfModel(@javax.annotation.Nullable List> arrayArrayOfModel) {
+ this.arrayArrayOfModel = arrayArrayOfModel;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ArrayTest arrayTest = (ArrayTest) o;
+ return Objects.equals(this.arrayOfString, arrayTest.arrayOfString) &&
+ Objects.equals(this.arrayArrayOfInteger, arrayTest.arrayArrayOfInteger) &&
+ Objects.equals(this.arrayArrayOfModel, arrayTest.arrayArrayOfModel);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(arrayOfString, arrayArrayOfInteger, arrayArrayOfModel);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class ArrayTest {\n");
+ sb.append(" arrayOfString: ").append(toIndentedString(arrayOfString)).append("\n");
+ sb.append(" arrayArrayOfInteger: ").append(toIndentedString(arrayArrayOfInteger)).append("\n");
+ sb.append(" arrayArrayOfModel: ").append(toIndentedString(arrayArrayOfModel)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Capitalization.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Capitalization.java
new file mode 100644
index 000000000000..08856f42ccaf
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Capitalization.java
@@ -0,0 +1,270 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * Capitalization
+ */
+@JsonPropertyOrder({
+ Capitalization.JSON_PROPERTY_SMALL_CAMEL,
+ Capitalization.JSON_PROPERTY_CAPITAL_CAMEL,
+ Capitalization.JSON_PROPERTY_SMALL_SNAKE,
+ Capitalization.JSON_PROPERTY_CAPITAL_SNAKE,
+ Capitalization.JSON_PROPERTY_SC_A_E_T_H_FLOW_POINTS,
+ Capitalization.JSON_PROPERTY_A_T_T_N_A_M_E
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class Capitalization {
+ public static final String JSON_PROPERTY_SMALL_CAMEL = "smallCamel";
+ @javax.annotation.Nullable
+ private String smallCamel;
+
+ public static final String JSON_PROPERTY_CAPITAL_CAMEL = "CapitalCamel";
+ @javax.annotation.Nullable
+ private String capitalCamel;
+
+ public static final String JSON_PROPERTY_SMALL_SNAKE = "small_Snake";
+ @javax.annotation.Nullable
+ private String smallSnake;
+
+ public static final String JSON_PROPERTY_CAPITAL_SNAKE = "Capital_Snake";
+ @javax.annotation.Nullable
+ private String capitalSnake;
+
+ public static final String JSON_PROPERTY_SC_A_E_T_H_FLOW_POINTS = "SCA_ETH_Flow_Points";
+ @javax.annotation.Nullable
+ private String scAETHFlowPoints;
+
+ public static final String JSON_PROPERTY_A_T_T_N_A_M_E = "ATT_NAME";
+ @javax.annotation.Nullable
+ private String ATT_NAME;
+
+ public Capitalization() {
+ }
+
+ public Capitalization smallCamel(@javax.annotation.Nullable String smallCamel) {
+
+ this.smallCamel = smallCamel;
+ return this;
+ }
+
+ /**
+ * Get smallCamel
+ * @return smallCamel
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_SMALL_CAMEL)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getSmallCamel() {
+ return smallCamel;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_SMALL_CAMEL)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setSmallCamel(@javax.annotation.Nullable String smallCamel) {
+ this.smallCamel = smallCamel;
+ }
+
+
+ public Capitalization capitalCamel(@javax.annotation.Nullable String capitalCamel) {
+
+ this.capitalCamel = capitalCamel;
+ return this;
+ }
+
+ /**
+ * Get capitalCamel
+ * @return capitalCamel
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_CAPITAL_CAMEL)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getCapitalCamel() {
+ return capitalCamel;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_CAPITAL_CAMEL)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setCapitalCamel(@javax.annotation.Nullable String capitalCamel) {
+ this.capitalCamel = capitalCamel;
+ }
+
+
+ public Capitalization smallSnake(@javax.annotation.Nullable String smallSnake) {
+
+ this.smallSnake = smallSnake;
+ return this;
+ }
+
+ /**
+ * Get smallSnake
+ * @return smallSnake
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_SMALL_SNAKE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getSmallSnake() {
+ return smallSnake;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_SMALL_SNAKE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setSmallSnake(@javax.annotation.Nullable String smallSnake) {
+ this.smallSnake = smallSnake;
+ }
+
+
+ public Capitalization capitalSnake(@javax.annotation.Nullable String capitalSnake) {
+
+ this.capitalSnake = capitalSnake;
+ return this;
+ }
+
+ /**
+ * Get capitalSnake
+ * @return capitalSnake
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_CAPITAL_SNAKE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getCapitalSnake() {
+ return capitalSnake;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_CAPITAL_SNAKE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setCapitalSnake(@javax.annotation.Nullable String capitalSnake) {
+ this.capitalSnake = capitalSnake;
+ }
+
+
+ public Capitalization scAETHFlowPoints(@javax.annotation.Nullable String scAETHFlowPoints) {
+
+ this.scAETHFlowPoints = scAETHFlowPoints;
+ return this;
+ }
+
+ /**
+ * Get scAETHFlowPoints
+ * @return scAETHFlowPoints
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_SC_A_E_T_H_FLOW_POINTS)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getScAETHFlowPoints() {
+ return scAETHFlowPoints;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_SC_A_E_T_H_FLOW_POINTS)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setScAETHFlowPoints(@javax.annotation.Nullable String scAETHFlowPoints) {
+ this.scAETHFlowPoints = scAETHFlowPoints;
+ }
+
+
+ public Capitalization ATT_NAME(@javax.annotation.Nullable String ATT_NAME) {
+
+ this.ATT_NAME = ATT_NAME;
+ return this;
+ }
+
+ /**
+ * Name of the pet
+ * @return ATT_NAME
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_A_T_T_N_A_M_E)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getATTNAME() {
+ return ATT_NAME;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_A_T_T_N_A_M_E)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setATTNAME(@javax.annotation.Nullable String ATT_NAME) {
+ this.ATT_NAME = ATT_NAME;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ Capitalization capitalization = (Capitalization) o;
+ return Objects.equals(this.smallCamel, capitalization.smallCamel) &&
+ Objects.equals(this.capitalCamel, capitalization.capitalCamel) &&
+ Objects.equals(this.smallSnake, capitalization.smallSnake) &&
+ Objects.equals(this.capitalSnake, capitalization.capitalSnake) &&
+ Objects.equals(this.scAETHFlowPoints, capitalization.scAETHFlowPoints) &&
+ Objects.equals(this.ATT_NAME, capitalization.ATT_NAME);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(smallCamel, capitalCamel, smallSnake, capitalSnake, scAETHFlowPoints, ATT_NAME);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class Capitalization {\n");
+ sb.append(" smallCamel: ").append(toIndentedString(smallCamel)).append("\n");
+ sb.append(" capitalCamel: ").append(toIndentedString(capitalCamel)).append("\n");
+ sb.append(" smallSnake: ").append(toIndentedString(smallSnake)).append("\n");
+ sb.append(" capitalSnake: ").append(toIndentedString(capitalSnake)).append("\n");
+ sb.append(" scAETHFlowPoints: ").append(toIndentedString(scAETHFlowPoints)).append("\n");
+ sb.append(" ATT_NAME: ").append(toIndentedString(ATT_NAME)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Cat.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Cat.java
new file mode 100644
index 000000000000..9ac4735cae75
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Cat.java
@@ -0,0 +1,118 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import org.openapitools.client.model.Animal;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * Cat
+ */
+@JsonPropertyOrder({
+ Cat.JSON_PROPERTY_DECLAWED
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+@JsonIgnoreProperties(
+ value = "className", // ignore manually set className, it will be automatically generated by Jackson during serialization
+ allowSetters = true // allows the className to be set during deserialization
+)
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "className", visible = true)
+
+public class Cat extends Animal {
+ public static final String JSON_PROPERTY_DECLAWED = "declawed";
+ @javax.annotation.Nullable
+ private Boolean declawed;
+
+ public Cat() {
+
+ }
+
+ public Cat declawed(@javax.annotation.Nullable Boolean declawed) {
+
+ this.declawed = declawed;
+ return this;
+ }
+
+ /**
+ * Get declawed
+ * @return declawed
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_DECLAWED)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Boolean isDeclawed() {
+ return declawed;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_DECLAWED)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setDeclawed(@javax.annotation.Nullable Boolean declawed) {
+ this.declawed = declawed;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ Cat cat = (Cat) o;
+ return Objects.equals(this.declawed, cat.declawed) &&
+ super.equals(o);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(declawed, super.hashCode());
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class Cat {\n");
+ sb.append(" ").append(toIndentedString(super.toString())).append("\n");
+ sb.append(" declawed: ").append(toIndentedString(declawed)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Category.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Category.java
new file mode 100644
index 000000000000..6176dcce5a53
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Category.java
@@ -0,0 +1,138 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * Category
+ */
+@JsonPropertyOrder({
+ Category.JSON_PROPERTY_ID,
+ Category.JSON_PROPERTY_NAME
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class Category {
+ public static final String JSON_PROPERTY_ID = "id";
+ @javax.annotation.Nullable
+ private Long id;
+
+ public static final String JSON_PROPERTY_NAME = "name";
+ @javax.annotation.Nonnull
+ private String name = "default-name";
+
+ public Category() {
+ }
+
+ public Category id(@javax.annotation.Nullable Long id) {
+
+ this.id = id;
+ return this;
+ }
+
+ /**
+ * Get id
+ * @return id
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_ID)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Long getId() {
+ return id;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_ID)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setId(@javax.annotation.Nullable Long id) {
+ this.id = id;
+ }
+
+
+ public Category name(@javax.annotation.Nonnull String name) {
+
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get name
+ * @return name
+ */
+ @javax.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_NAME)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+
+ public String getName() {
+ return name;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_NAME)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setName(@javax.annotation.Nonnull String name) {
+ this.name = name;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ Category category = (Category) o;
+ return Objects.equals(this.id, category.id) &&
+ Objects.equals(this.name, category.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, name);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class Category {\n");
+ sb.append(" id: ").append(toIndentedString(id)).append("\n");
+ sb.append(" name: ").append(toIndentedString(name)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ChildWithNullable.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ChildWithNullable.java
new file mode 100644
index 000000000000..6d28b846e134
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ChildWithNullable.java
@@ -0,0 +1,130 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import org.openapitools.client.model.ParentWithNullable;
+import org.openapitools.jackson.nullable.JsonNullable;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * ChildWithNullable
+ */
+@JsonPropertyOrder({
+ ChildWithNullable.JSON_PROPERTY_OTHER_PROPERTY
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+@JsonIgnoreProperties(
+ value = "type", // ignore manually set type, it will be automatically generated by Jackson during serialization
+ allowSetters = true // allows the type to be set during deserialization
+)
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type", visible = true)
+
+public class ChildWithNullable extends ParentWithNullable {
+ public static final String JSON_PROPERTY_OTHER_PROPERTY = "otherProperty";
+ @javax.annotation.Nullable
+ private String otherProperty;
+
+ public ChildWithNullable() {
+
+ }
+
+ public ChildWithNullable otherProperty(@javax.annotation.Nullable String otherProperty) {
+
+ this.otherProperty = otherProperty;
+ return this;
+ }
+
+ /**
+ * Get otherProperty
+ * @return otherProperty
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_OTHER_PROPERTY)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getOtherProperty() {
+ return otherProperty;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_OTHER_PROPERTY)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setOtherProperty(@javax.annotation.Nullable String otherProperty) {
+ this.otherProperty = otherProperty;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ChildWithNullable childWithNullable = (ChildWithNullable) o;
+ return Objects.equals(this.otherProperty, childWithNullable.otherProperty) &&
+ super.equals(o);
+ }
+
+ private static boolean equalsNullable(JsonNullable a, JsonNullable b) {
+ return a == b || (a != null && b != null && a.isPresent() && b.isPresent() && Objects.deepEquals(a.get(), b.get()));
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(otherProperty, super.hashCode());
+ }
+
+ private static int hashCodeNullable(JsonNullable a) {
+ if (a == null) {
+ return 1;
+ }
+ return a.isPresent() ? Arrays.deepHashCode(new Object[]{a.get()}) : 31;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class ChildWithNullable {\n");
+ sb.append(" ").append(toIndentedString(super.toString())).append("\n");
+ sb.append(" otherProperty: ").append(toIndentedString(otherProperty)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ClassModel.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ClassModel.java
new file mode 100644
index 000000000000..b0ee79bf0a2c
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ClassModel.java
@@ -0,0 +1,105 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * Model for testing model with \"_class\" property
+ */
+@JsonPropertyOrder({
+ ClassModel.JSON_PROPERTY_PROPERTY_CLASS
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class ClassModel {
+ public static final String JSON_PROPERTY_PROPERTY_CLASS = "_class";
+ @javax.annotation.Nullable
+ private String propertyClass;
+
+ public ClassModel() {
+ }
+
+ public ClassModel propertyClass(@javax.annotation.Nullable String propertyClass) {
+
+ this.propertyClass = propertyClass;
+ return this;
+ }
+
+ /**
+ * Get propertyClass
+ * @return propertyClass
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_PROPERTY_CLASS)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getPropertyClass() {
+ return propertyClass;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_PROPERTY_CLASS)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setPropertyClass(@javax.annotation.Nullable String propertyClass) {
+ this.propertyClass = propertyClass;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ClassModel classModel = (ClassModel) o;
+ return Objects.equals(this.propertyClass, classModel.propertyClass);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(propertyClass);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class ClassModel {\n");
+ sb.append(" propertyClass: ").append(toIndentedString(propertyClass)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Client.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Client.java
new file mode 100644
index 000000000000..36b415404a71
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Client.java
@@ -0,0 +1,105 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * Client
+ */
+@JsonPropertyOrder({
+ Client.JSON_PROPERTY_CLIENT
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class Client {
+ public static final String JSON_PROPERTY_CLIENT = "client";
+ @javax.annotation.Nullable
+ private String client;
+
+ public Client() {
+ }
+
+ public Client client(@javax.annotation.Nullable String client) {
+
+ this.client = client;
+ return this;
+ }
+
+ /**
+ * Get client
+ * @return client
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_CLIENT)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getClient() {
+ return client;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_CLIENT)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setClient(@javax.annotation.Nullable String client) {
+ this.client = client;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ Client client = (Client) o;
+ return Objects.equals(this.client, client.client);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(client);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class Client {\n");
+ sb.append(" client: ").append(toIndentedString(client)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/DeprecatedObject.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/DeprecatedObject.java
new file mode 100644
index 000000000000..3401d0a58ced
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/DeprecatedObject.java
@@ -0,0 +1,107 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * DeprecatedObject
+ * @deprecated
+ */
+@Deprecated
+@JsonPropertyOrder({
+ DeprecatedObject.JSON_PROPERTY_NAME
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class DeprecatedObject {
+ public static final String JSON_PROPERTY_NAME = "name";
+ @javax.annotation.Nullable
+ private String name;
+
+ public DeprecatedObject() {
+ }
+
+ public DeprecatedObject name(@javax.annotation.Nullable String name) {
+
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get name
+ * @return name
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_NAME)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getName() {
+ return name;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_NAME)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setName(@javax.annotation.Nullable String name) {
+ this.name = name;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ DeprecatedObject deprecatedObject = (DeprecatedObject) o;
+ return Objects.equals(this.name, deprecatedObject.name);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class DeprecatedObject {\n");
+ sb.append(" name: ").append(toIndentedString(name)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Dog.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Dog.java
new file mode 100644
index 000000000000..bf0eea90573a
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Dog.java
@@ -0,0 +1,118 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import org.openapitools.client.model.Animal;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * Dog
+ */
+@JsonPropertyOrder({
+ Dog.JSON_PROPERTY_BREED
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+@JsonIgnoreProperties(
+ value = "className", // ignore manually set className, it will be automatically generated by Jackson during serialization
+ allowSetters = true // allows the className to be set during deserialization
+)
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "className", visible = true)
+
+public class Dog extends Animal {
+ public static final String JSON_PROPERTY_BREED = "breed";
+ @javax.annotation.Nullable
+ private String breed;
+
+ public Dog() {
+
+ }
+
+ public Dog breed(@javax.annotation.Nullable String breed) {
+
+ this.breed = breed;
+ return this;
+ }
+
+ /**
+ * Get breed
+ * @return breed
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_BREED)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getBreed() {
+ return breed;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_BREED)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setBreed(@javax.annotation.Nullable String breed) {
+ this.breed = breed;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ Dog dog = (Dog) o;
+ return Objects.equals(this.breed, dog.breed) &&
+ super.equals(o);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(breed, super.hashCode());
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class Dog {\n");
+ sb.append(" ").append(toIndentedString(super.toString())).append("\n");
+ sb.append(" breed: ").append(toIndentedString(breed)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/EnumArrays.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/EnumArrays.java
new file mode 100644
index 000000000000..5d9be29b25c2
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/EnumArrays.java
@@ -0,0 +1,219 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * EnumArrays
+ */
+@JsonPropertyOrder({
+ EnumArrays.JSON_PROPERTY_JUST_SYMBOL,
+ EnumArrays.JSON_PROPERTY_ARRAY_ENUM
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class EnumArrays {
+ /**
+ * Gets or Sets justSymbol
+ */
+ public enum JustSymbolEnum {
+ GREATER_THAN_OR_EQUAL_TO(String.valueOf(">=")),
+
+ DOLLAR(String.valueOf("$"));
+
+ private String value;
+
+ JustSymbolEnum(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(value);
+ }
+
+ @JsonCreator
+ public static JustSymbolEnum fromValue(String value) {
+ for (JustSymbolEnum b : JustSymbolEnum.values()) {
+ if (b.value.equals(value)) {
+ return b;
+ }
+ }
+ throw new IllegalArgumentException("Unexpected value '" + value + "'");
+ }
+ }
+
+ public static final String JSON_PROPERTY_JUST_SYMBOL = "just_symbol";
+ @javax.annotation.Nullable
+ private JustSymbolEnum justSymbol;
+
+ /**
+ * Gets or Sets arrayEnum
+ */
+ public enum ArrayEnumEnum {
+ FISH(String.valueOf("fish")),
+
+ CRAB(String.valueOf("crab"));
+
+ private String value;
+
+ ArrayEnumEnum(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(value);
+ }
+
+ @JsonCreator
+ public static ArrayEnumEnum fromValue(String value) {
+ for (ArrayEnumEnum b : ArrayEnumEnum.values()) {
+ if (b.value.equals(value)) {
+ return b;
+ }
+ }
+ throw new IllegalArgumentException("Unexpected value '" + value + "'");
+ }
+ }
+
+ public static final String JSON_PROPERTY_ARRAY_ENUM = "array_enum";
+ @javax.annotation.Nullable
+ private List arrayEnum = new ArrayList<>();
+
+ public EnumArrays() {
+ }
+
+ public EnumArrays justSymbol(@javax.annotation.Nullable JustSymbolEnum justSymbol) {
+
+ this.justSymbol = justSymbol;
+ return this;
+ }
+
+ /**
+ * Get justSymbol
+ * @return justSymbol
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_JUST_SYMBOL)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public JustSymbolEnum getJustSymbol() {
+ return justSymbol;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_JUST_SYMBOL)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setJustSymbol(@javax.annotation.Nullable JustSymbolEnum justSymbol) {
+ this.justSymbol = justSymbol;
+ }
+
+
+ public EnumArrays arrayEnum(@javax.annotation.Nullable List arrayEnum) {
+
+ this.arrayEnum = arrayEnum;
+ return this;
+ }
+
+ public EnumArrays addArrayEnumItem(ArrayEnumEnum arrayEnumItem) {
+ if (this.arrayEnum == null) {
+ this.arrayEnum = new ArrayList<>();
+ }
+ this.arrayEnum.add(arrayEnumItem);
+ return this;
+ }
+
+ /**
+ * Get arrayEnum
+ * @return arrayEnum
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_ARRAY_ENUM)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public List getArrayEnum() {
+ return arrayEnum;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_ARRAY_ENUM)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setArrayEnum(@javax.annotation.Nullable List arrayEnum) {
+ this.arrayEnum = arrayEnum;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ EnumArrays enumArrays = (EnumArrays) o;
+ return Objects.equals(this.justSymbol, enumArrays.justSymbol) &&
+ Objects.equals(this.arrayEnum, enumArrays.arrayEnum);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(justSymbol, arrayEnum);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class EnumArrays {\n");
+ sb.append(" justSymbol: ").append(toIndentedString(justSymbol)).append("\n");
+ sb.append(" arrayEnum: ").append(toIndentedString(arrayEnum)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/EnumClass.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/EnumClass.java
new file mode 100644
index 000000000000..1190cf5abe3c
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/EnumClass.java
@@ -0,0 +1,61 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * Gets or Sets EnumClass
+ */
+public enum EnumClass {
+
+ _ABC("_abc"),
+
+ _EFG("-efg"),
+
+ _XYZ_("(xyz)");
+
+ private String value;
+
+ EnumClass(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(value);
+ }
+
+ @JsonCreator
+ public static EnumClass fromValue(String value) {
+ for (EnumClass b : EnumClass.values()) {
+ if (b.value.equals(value)) {
+ return b;
+ }
+ }
+ throw new IllegalArgumentException("Unexpected value '" + value + "'");
+ }
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/EnumTest.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/EnumTest.java
new file mode 100644
index 000000000000..2b09e9ebed33
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/EnumTest.java
@@ -0,0 +1,507 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import org.openapitools.client.model.OuterEnum;
+import org.openapitools.client.model.OuterEnumDefaultValue;
+import org.openapitools.client.model.OuterEnumInteger;
+import org.openapitools.client.model.OuterEnumIntegerDefaultValue;
+import org.openapitools.jackson.nullable.JsonNullable;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import org.openapitools.jackson.nullable.JsonNullable;
+import java.util.NoSuchElementException;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * EnumTest
+ */
+@JsonPropertyOrder({
+ EnumTest.JSON_PROPERTY_ENUM_STRING,
+ EnumTest.JSON_PROPERTY_ENUM_STRING_REQUIRED,
+ EnumTest.JSON_PROPERTY_ENUM_INTEGER,
+ EnumTest.JSON_PROPERTY_ENUM_NUMBER,
+ EnumTest.JSON_PROPERTY_OUTER_ENUM,
+ EnumTest.JSON_PROPERTY_OUTER_ENUM_INTEGER,
+ EnumTest.JSON_PROPERTY_OUTER_ENUM_DEFAULT_VALUE,
+ EnumTest.JSON_PROPERTY_OUTER_ENUM_INTEGER_DEFAULT_VALUE
+})
+@JsonTypeName("Enum_Test")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class EnumTest {
+ /**
+ * Gets or Sets enumString
+ */
+ public enum EnumStringEnum {
+ UPPER(String.valueOf("UPPER")),
+
+ LOWER(String.valueOf("lower")),
+
+ EMPTY(String.valueOf(""));
+
+ private String value;
+
+ EnumStringEnum(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(value);
+ }
+
+ @JsonCreator
+ public static EnumStringEnum fromValue(String value) {
+ for (EnumStringEnum b : EnumStringEnum.values()) {
+ if (b.value.equals(value)) {
+ return b;
+ }
+ }
+ throw new IllegalArgumentException("Unexpected value '" + value + "'");
+ }
+ }
+
+ public static final String JSON_PROPERTY_ENUM_STRING = "enum_string";
+ @javax.annotation.Nullable
+ private EnumStringEnum enumString;
+
+ /**
+ * Gets or Sets enumStringRequired
+ */
+ public enum EnumStringRequiredEnum {
+ UPPER(String.valueOf("UPPER")),
+
+ LOWER(String.valueOf("lower")),
+
+ EMPTY(String.valueOf(""));
+
+ private String value;
+
+ EnumStringRequiredEnum(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(value);
+ }
+
+ @JsonCreator
+ public static EnumStringRequiredEnum fromValue(String value) {
+ for (EnumStringRequiredEnum b : EnumStringRequiredEnum.values()) {
+ if (b.value.equals(value)) {
+ return b;
+ }
+ }
+ throw new IllegalArgumentException("Unexpected value '" + value + "'");
+ }
+ }
+
+ public static final String JSON_PROPERTY_ENUM_STRING_REQUIRED = "enum_string_required";
+ @javax.annotation.Nonnull
+ private EnumStringRequiredEnum enumStringRequired;
+
+ /**
+ * Gets or Sets enumInteger
+ */
+ public enum EnumIntegerEnum {
+ NUMBER_1(Integer.valueOf(1)),
+
+ NUMBER_MINUS_1(Integer.valueOf(-1));
+
+ private Integer value;
+
+ EnumIntegerEnum(Integer value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public Integer getValue() {
+ return value;
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(value);
+ }
+
+ @JsonCreator
+ public static EnumIntegerEnum fromValue(Integer value) {
+ for (EnumIntegerEnum b : EnumIntegerEnum.values()) {
+ if (b.value.equals(value)) {
+ return b;
+ }
+ }
+ throw new IllegalArgumentException("Unexpected value '" + value + "'");
+ }
+ }
+
+ public static final String JSON_PROPERTY_ENUM_INTEGER = "enum_integer";
+ @javax.annotation.Nullable
+ private EnumIntegerEnum enumInteger;
+
+ /**
+ * Gets or Sets enumNumber
+ */
+ public enum EnumNumberEnum {
+ NUMBER_1_DOT_1(Double.valueOf(1.1)),
+
+ NUMBER_MINUS_1_DOT_2(Double.valueOf(-1.2));
+
+ private Double value;
+
+ EnumNumberEnum(Double value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public Double getValue() {
+ return value;
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(value);
+ }
+
+ @JsonCreator
+ public static EnumNumberEnum fromValue(Double value) {
+ for (EnumNumberEnum b : EnumNumberEnum.values()) {
+ if (b.value.equals(value)) {
+ return b;
+ }
+ }
+ throw new IllegalArgumentException("Unexpected value '" + value + "'");
+ }
+ }
+
+ public static final String JSON_PROPERTY_ENUM_NUMBER = "enum_number";
+ @javax.annotation.Nullable
+ private EnumNumberEnum enumNumber;
+
+ public static final String JSON_PROPERTY_OUTER_ENUM = "outerEnum";
+ private JsonNullable outerEnum = JsonNullable.undefined();
+
+ public static final String JSON_PROPERTY_OUTER_ENUM_INTEGER = "outerEnumInteger";
+ @javax.annotation.Nullable
+ private OuterEnumInteger outerEnumInteger;
+
+ public static final String JSON_PROPERTY_OUTER_ENUM_DEFAULT_VALUE = "outerEnumDefaultValue";
+ @javax.annotation.Nullable
+ private OuterEnumDefaultValue outerEnumDefaultValue = OuterEnumDefaultValue.PLACED;
+
+ public static final String JSON_PROPERTY_OUTER_ENUM_INTEGER_DEFAULT_VALUE = "outerEnumIntegerDefaultValue";
+ @javax.annotation.Nullable
+ private OuterEnumIntegerDefaultValue outerEnumIntegerDefaultValue = OuterEnumIntegerDefaultValue.NUMBER_0;
+
+ public EnumTest() {
+ }
+
+ public EnumTest enumString(@javax.annotation.Nullable EnumStringEnum enumString) {
+
+ this.enumString = enumString;
+ return this;
+ }
+
+ /**
+ * Get enumString
+ * @return enumString
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_ENUM_STRING)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public EnumStringEnum getEnumString() {
+ return enumString;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_ENUM_STRING)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setEnumString(@javax.annotation.Nullable EnumStringEnum enumString) {
+ this.enumString = enumString;
+ }
+
+
+ public EnumTest enumStringRequired(@javax.annotation.Nonnull EnumStringRequiredEnum enumStringRequired) {
+
+ this.enumStringRequired = enumStringRequired;
+ return this;
+ }
+
+ /**
+ * Get enumStringRequired
+ * @return enumStringRequired
+ */
+ @javax.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_ENUM_STRING_REQUIRED)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+
+ public EnumStringRequiredEnum getEnumStringRequired() {
+ return enumStringRequired;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_ENUM_STRING_REQUIRED)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setEnumStringRequired(@javax.annotation.Nonnull EnumStringRequiredEnum enumStringRequired) {
+ this.enumStringRequired = enumStringRequired;
+ }
+
+
+ public EnumTest enumInteger(@javax.annotation.Nullable EnumIntegerEnum enumInteger) {
+
+ this.enumInteger = enumInteger;
+ return this;
+ }
+
+ /**
+ * Get enumInteger
+ * @return enumInteger
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_ENUM_INTEGER)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public EnumIntegerEnum getEnumInteger() {
+ return enumInteger;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_ENUM_INTEGER)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setEnumInteger(@javax.annotation.Nullable EnumIntegerEnum enumInteger) {
+ this.enumInteger = enumInteger;
+ }
+
+
+ public EnumTest enumNumber(@javax.annotation.Nullable EnumNumberEnum enumNumber) {
+
+ this.enumNumber = enumNumber;
+ return this;
+ }
+
+ /**
+ * Get enumNumber
+ * @return enumNumber
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_ENUM_NUMBER)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public EnumNumberEnum getEnumNumber() {
+ return enumNumber;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_ENUM_NUMBER)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setEnumNumber(@javax.annotation.Nullable EnumNumberEnum enumNumber) {
+ this.enumNumber = enumNumber;
+ }
+
+
+ public EnumTest outerEnum(@javax.annotation.Nullable OuterEnum outerEnum) {
+ this.outerEnum = JsonNullable.of(outerEnum);
+
+ return this;
+ }
+
+ /**
+ * Get outerEnum
+ * @return outerEnum
+ */
+ @javax.annotation.Nullable
+ @JsonIgnore
+
+ public OuterEnum getOuterEnum() {
+ return outerEnum.orElse(null);
+ }
+
+ @JsonProperty(JSON_PROPERTY_OUTER_ENUM)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public JsonNullable getOuterEnum_JsonNullable() {
+ return outerEnum;
+ }
+
+ @JsonProperty(JSON_PROPERTY_OUTER_ENUM)
+ public void setOuterEnum_JsonNullable(JsonNullable outerEnum) {
+ this.outerEnum = outerEnum;
+ }
+
+ public void setOuterEnum(@javax.annotation.Nullable OuterEnum outerEnum) {
+ this.outerEnum = JsonNullable.of(outerEnum);
+ }
+
+
+ public EnumTest outerEnumInteger(@javax.annotation.Nullable OuterEnumInteger outerEnumInteger) {
+
+ this.outerEnumInteger = outerEnumInteger;
+ return this;
+ }
+
+ /**
+ * Get outerEnumInteger
+ * @return outerEnumInteger
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_OUTER_ENUM_INTEGER)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public OuterEnumInteger getOuterEnumInteger() {
+ return outerEnumInteger;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_OUTER_ENUM_INTEGER)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setOuterEnumInteger(@javax.annotation.Nullable OuterEnumInteger outerEnumInteger) {
+ this.outerEnumInteger = outerEnumInteger;
+ }
+
+
+ public EnumTest outerEnumDefaultValue(@javax.annotation.Nullable OuterEnumDefaultValue outerEnumDefaultValue) {
+
+ this.outerEnumDefaultValue = outerEnumDefaultValue;
+ return this;
+ }
+
+ /**
+ * Get outerEnumDefaultValue
+ * @return outerEnumDefaultValue
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_OUTER_ENUM_DEFAULT_VALUE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public OuterEnumDefaultValue getOuterEnumDefaultValue() {
+ return outerEnumDefaultValue;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_OUTER_ENUM_DEFAULT_VALUE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setOuterEnumDefaultValue(@javax.annotation.Nullable OuterEnumDefaultValue outerEnumDefaultValue) {
+ this.outerEnumDefaultValue = outerEnumDefaultValue;
+ }
+
+
+ public EnumTest outerEnumIntegerDefaultValue(@javax.annotation.Nullable OuterEnumIntegerDefaultValue outerEnumIntegerDefaultValue) {
+
+ this.outerEnumIntegerDefaultValue = outerEnumIntegerDefaultValue;
+ return this;
+ }
+
+ /**
+ * Get outerEnumIntegerDefaultValue
+ * @return outerEnumIntegerDefaultValue
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_OUTER_ENUM_INTEGER_DEFAULT_VALUE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public OuterEnumIntegerDefaultValue getOuterEnumIntegerDefaultValue() {
+ return outerEnumIntegerDefaultValue;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_OUTER_ENUM_INTEGER_DEFAULT_VALUE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setOuterEnumIntegerDefaultValue(@javax.annotation.Nullable OuterEnumIntegerDefaultValue outerEnumIntegerDefaultValue) {
+ this.outerEnumIntegerDefaultValue = outerEnumIntegerDefaultValue;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ EnumTest enumTest = (EnumTest) o;
+ return Objects.equals(this.enumString, enumTest.enumString) &&
+ Objects.equals(this.enumStringRequired, enumTest.enumStringRequired) &&
+ Objects.equals(this.enumInteger, enumTest.enumInteger) &&
+ Objects.equals(this.enumNumber, enumTest.enumNumber) &&
+ equalsNullable(this.outerEnum, enumTest.outerEnum) &&
+ Objects.equals(this.outerEnumInteger, enumTest.outerEnumInteger) &&
+ Objects.equals(this.outerEnumDefaultValue, enumTest.outerEnumDefaultValue) &&
+ Objects.equals(this.outerEnumIntegerDefaultValue, enumTest.outerEnumIntegerDefaultValue);
+ }
+
+ private static boolean equalsNullable(JsonNullable a, JsonNullable b) {
+ return a == b || (a != null && b != null && a.isPresent() && b.isPresent() && Objects.deepEquals(a.get(), b.get()));
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(enumString, enumStringRequired, enumInteger, enumNumber, hashCodeNullable(outerEnum), outerEnumInteger, outerEnumDefaultValue, outerEnumIntegerDefaultValue);
+ }
+
+ private static int hashCodeNullable(JsonNullable a) {
+ if (a == null) {
+ return 1;
+ }
+ return a.isPresent() ? Arrays.deepHashCode(new Object[]{a.get()}) : 31;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class EnumTest {\n");
+ sb.append(" enumString: ").append(toIndentedString(enumString)).append("\n");
+ sb.append(" enumStringRequired: ").append(toIndentedString(enumStringRequired)).append("\n");
+ sb.append(" enumInteger: ").append(toIndentedString(enumInteger)).append("\n");
+ sb.append(" enumNumber: ").append(toIndentedString(enumNumber)).append("\n");
+ sb.append(" outerEnum: ").append(toIndentedString(outerEnum)).append("\n");
+ sb.append(" outerEnumInteger: ").append(toIndentedString(outerEnumInteger)).append("\n");
+ sb.append(" outerEnumDefaultValue: ").append(toIndentedString(outerEnumDefaultValue)).append("\n");
+ sb.append(" outerEnumIntegerDefaultValue: ").append(toIndentedString(outerEnumIntegerDefaultValue)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/FakeBigDecimalMap200Response.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/FakeBigDecimalMap200Response.java
new file mode 100644
index 000000000000..335206051a4c
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/FakeBigDecimalMap200Response.java
@@ -0,0 +1,150 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * FakeBigDecimalMap200Response
+ */
+@JsonPropertyOrder({
+ FakeBigDecimalMap200Response.JSON_PROPERTY_SOME_ID,
+ FakeBigDecimalMap200Response.JSON_PROPERTY_SOME_MAP
+})
+@JsonTypeName("fakeBigDecimalMap_200_response")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class FakeBigDecimalMap200Response {
+ public static final String JSON_PROPERTY_SOME_ID = "someId";
+ @javax.annotation.Nullable
+ private BigDecimal someId;
+
+ public static final String JSON_PROPERTY_SOME_MAP = "someMap";
+ @javax.annotation.Nullable
+ private Map someMap = new HashMap<>();
+
+ public FakeBigDecimalMap200Response() {
+ }
+
+ public FakeBigDecimalMap200Response someId(@javax.annotation.Nullable BigDecimal someId) {
+
+ this.someId = someId;
+ return this;
+ }
+
+ /**
+ * Get someId
+ * @return someId
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_SOME_ID)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public BigDecimal getSomeId() {
+ return someId;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_SOME_ID)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setSomeId(@javax.annotation.Nullable BigDecimal someId) {
+ this.someId = someId;
+ }
+
+
+ public FakeBigDecimalMap200Response someMap(@javax.annotation.Nullable Map someMap) {
+
+ this.someMap = someMap;
+ return this;
+ }
+
+ public FakeBigDecimalMap200Response putSomeMapItem(String key, BigDecimal someMapItem) {
+ if (this.someMap == null) {
+ this.someMap = new HashMap<>();
+ }
+ this.someMap.put(key, someMapItem);
+ return this;
+ }
+
+ /**
+ * Get someMap
+ * @return someMap
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_SOME_MAP)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Map getSomeMap() {
+ return someMap;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_SOME_MAP)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setSomeMap(@javax.annotation.Nullable Map someMap) {
+ this.someMap = someMap;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ FakeBigDecimalMap200Response fakeBigDecimalMap200Response = (FakeBigDecimalMap200Response) o;
+ return Objects.equals(this.someId, fakeBigDecimalMap200Response.someId) &&
+ Objects.equals(this.someMap, fakeBigDecimalMap200Response.someMap);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(someId, someMap);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class FakeBigDecimalMap200Response {\n");
+ sb.append(" someId: ").append(toIndentedString(someId)).append("\n");
+ sb.append(" someMap: ").append(toIndentedString(someMap)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/File.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/File.java
new file mode 100644
index 000000000000..0ccb2866e6f5
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/File.java
@@ -0,0 +1,105 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * Must be named `File` for test.
+ */
+@JsonPropertyOrder({
+ File.JSON_PROPERTY_SOURCE_U_R_I
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class File {
+ public static final String JSON_PROPERTY_SOURCE_U_R_I = "sourceURI";
+ @javax.annotation.Nullable
+ private String sourceURI;
+
+ public File() {
+ }
+
+ public File sourceURI(@javax.annotation.Nullable String sourceURI) {
+
+ this.sourceURI = sourceURI;
+ return this;
+ }
+
+ /**
+ * Test capitalization
+ * @return sourceURI
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_SOURCE_U_R_I)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getSourceURI() {
+ return sourceURI;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_SOURCE_U_R_I)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setSourceURI(@javax.annotation.Nullable String sourceURI) {
+ this.sourceURI = sourceURI;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ File file = (File) o;
+ return Objects.equals(this.sourceURI, file.sourceURI);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(sourceURI);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class File {\n");
+ sb.append(" sourceURI: ").append(toIndentedString(sourceURI)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java
new file mode 100644
index 000000000000..76f1b719b1e1
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/FileSchemaTestClass.java
@@ -0,0 +1,150 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * FileSchemaTestClass
+ */
+@JsonPropertyOrder({
+ FileSchemaTestClass.JSON_PROPERTY_FILE,
+ FileSchemaTestClass.JSON_PROPERTY_FILES
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class FileSchemaTestClass {
+ public static final String JSON_PROPERTY_FILE = "file";
+ @javax.annotation.Nullable
+ private File file;
+
+ public static final String JSON_PROPERTY_FILES = "files";
+ @javax.annotation.Nullable
+ private List files = new ArrayList<>();
+
+ public FileSchemaTestClass() {
+ }
+
+ public FileSchemaTestClass file(@javax.annotation.Nullable File file) {
+
+ this.file = file;
+ return this;
+ }
+
+ /**
+ * Get file
+ * @return file
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_FILE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public File getFile() {
+ return file;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_FILE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setFile(@javax.annotation.Nullable File file) {
+ this.file = file;
+ }
+
+
+ public FileSchemaTestClass files(@javax.annotation.Nullable List files) {
+
+ this.files = files;
+ return this;
+ }
+
+ public FileSchemaTestClass addFilesItem(File filesItem) {
+ if (this.files == null) {
+ this.files = new ArrayList<>();
+ }
+ this.files.add(filesItem);
+ return this;
+ }
+
+ /**
+ * Get files
+ * @return files
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_FILES)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public List getFiles() {
+ return files;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_FILES)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setFiles(@javax.annotation.Nullable List files) {
+ this.files = files;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ FileSchemaTestClass fileSchemaTestClass = (FileSchemaTestClass) o;
+ return Objects.equals(this.file, fileSchemaTestClass.file) &&
+ Objects.equals(this.files, fileSchemaTestClass.files);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(file, files);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class FileSchemaTestClass {\n");
+ sb.append(" file: ").append(toIndentedString(file)).append("\n");
+ sb.append(" files: ").append(toIndentedString(files)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Foo.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Foo.java
new file mode 100644
index 000000000000..463ae01d5cea
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Foo.java
@@ -0,0 +1,105 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * Foo
+ */
+@JsonPropertyOrder({
+ Foo.JSON_PROPERTY_BAR
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class Foo {
+ public static final String JSON_PROPERTY_BAR = "bar";
+ @javax.annotation.Nullable
+ private String bar = "bar";
+
+ public Foo() {
+ }
+
+ public Foo bar(@javax.annotation.Nullable String bar) {
+
+ this.bar = bar;
+ return this;
+ }
+
+ /**
+ * Get bar
+ * @return bar
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_BAR)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getBar() {
+ return bar;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_BAR)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setBar(@javax.annotation.Nullable String bar) {
+ this.bar = bar;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ Foo foo = (Foo) o;
+ return Objects.equals(this.bar, foo.bar);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(bar);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class Foo {\n");
+ sb.append(" bar: ").append(toIndentedString(bar)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/FooGetDefaultResponse.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/FooGetDefaultResponse.java
new file mode 100644
index 000000000000..43c21b188db5
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/FooGetDefaultResponse.java
@@ -0,0 +1,107 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import org.openapitools.client.model.Foo;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * FooGetDefaultResponse
+ */
+@JsonPropertyOrder({
+ FooGetDefaultResponse.JSON_PROPERTY_STRING
+})
+@JsonTypeName("_foo_get_default_response")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class FooGetDefaultResponse {
+ public static final String JSON_PROPERTY_STRING = "string";
+ @javax.annotation.Nullable
+ private Foo string;
+
+ public FooGetDefaultResponse() {
+ }
+
+ public FooGetDefaultResponse string(@javax.annotation.Nullable Foo string) {
+
+ this.string = string;
+ return this;
+ }
+
+ /**
+ * Get string
+ * @return string
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_STRING)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Foo getString() {
+ return string;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_STRING)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setString(@javax.annotation.Nullable Foo string) {
+ this.string = string;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ FooGetDefaultResponse fooGetDefaultResponse = (FooGetDefaultResponse) o;
+ return Objects.equals(this.string, fooGetDefaultResponse.string);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(string);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class FooGetDefaultResponse {\n");
+ sb.append(" string: ").append(toIndentedString(string)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/FormatTest.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/FormatTest.java
new file mode 100644
index 000000000000..2203497797d6
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/FormatTest.java
@@ -0,0 +1,616 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import java.io.File;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.OffsetDateTime;
+import java.util.UUID;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * FormatTest
+ */
+@JsonPropertyOrder({
+ FormatTest.JSON_PROPERTY_INTEGER,
+ FormatTest.JSON_PROPERTY_INT32,
+ FormatTest.JSON_PROPERTY_INT64,
+ FormatTest.JSON_PROPERTY_NUMBER,
+ FormatTest.JSON_PROPERTY_FLOAT,
+ FormatTest.JSON_PROPERTY_DOUBLE,
+ FormatTest.JSON_PROPERTY_DECIMAL,
+ FormatTest.JSON_PROPERTY_STRING,
+ FormatTest.JSON_PROPERTY_BYTE,
+ FormatTest.JSON_PROPERTY_BINARY,
+ FormatTest.JSON_PROPERTY_DATE,
+ FormatTest.JSON_PROPERTY_DATE_TIME,
+ FormatTest.JSON_PROPERTY_UUID,
+ FormatTest.JSON_PROPERTY_PASSWORD,
+ FormatTest.JSON_PROPERTY_PATTERN_WITH_DIGITS,
+ FormatTest.JSON_PROPERTY_PATTERN_WITH_DIGITS_AND_DELIMITER
+})
+@JsonTypeName("format_test")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class FormatTest {
+ public static final String JSON_PROPERTY_INTEGER = "integer";
+ @javax.annotation.Nullable
+ private Integer integer;
+
+ public static final String JSON_PROPERTY_INT32 = "int32";
+ @javax.annotation.Nullable
+ private Integer int32;
+
+ public static final String JSON_PROPERTY_INT64 = "int64";
+ @javax.annotation.Nullable
+ private Long int64;
+
+ public static final String JSON_PROPERTY_NUMBER = "number";
+ @javax.annotation.Nonnull
+ private BigDecimal number;
+
+ public static final String JSON_PROPERTY_FLOAT = "float";
+ @javax.annotation.Nullable
+ private Float _float;
+
+ public static final String JSON_PROPERTY_DOUBLE = "double";
+ @javax.annotation.Nullable
+ private Double _double;
+
+ public static final String JSON_PROPERTY_DECIMAL = "decimal";
+ @javax.annotation.Nullable
+ private BigDecimal decimal;
+
+ public static final String JSON_PROPERTY_STRING = "string";
+ @javax.annotation.Nullable
+ private String string;
+
+ public static final String JSON_PROPERTY_BYTE = "byte";
+ @javax.annotation.Nonnull
+ private byte[] _byte;
+
+ public static final String JSON_PROPERTY_BINARY = "binary";
+ @javax.annotation.Nullable
+ private File binary;
+
+ public static final String JSON_PROPERTY_DATE = "date";
+ @javax.annotation.Nonnull
+ private LocalDate date;
+
+ public static final String JSON_PROPERTY_DATE_TIME = "dateTime";
+ @javax.annotation.Nullable
+ private OffsetDateTime dateTime;
+
+ public static final String JSON_PROPERTY_UUID = "uuid";
+ @javax.annotation.Nullable
+ private UUID uuid;
+
+ public static final String JSON_PROPERTY_PASSWORD = "password";
+ @javax.annotation.Nonnull
+ private String password;
+
+ public static final String JSON_PROPERTY_PATTERN_WITH_DIGITS = "pattern_with_digits";
+ @javax.annotation.Nullable
+ private String patternWithDigits;
+
+ public static final String JSON_PROPERTY_PATTERN_WITH_DIGITS_AND_DELIMITER = "pattern_with_digits_and_delimiter";
+ @javax.annotation.Nullable
+ private String patternWithDigitsAndDelimiter;
+
+ public FormatTest() {
+ }
+
+ public FormatTest integer(@javax.annotation.Nullable Integer integer) {
+
+ this.integer = integer;
+ return this;
+ }
+
+ /**
+ * Get integer
+ * minimum: 10
+ * maximum: 100
+ * @return integer
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_INTEGER)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Integer getInteger() {
+ return integer;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_INTEGER)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setInteger(@javax.annotation.Nullable Integer integer) {
+ this.integer = integer;
+ }
+
+
+ public FormatTest int32(@javax.annotation.Nullable Integer int32) {
+
+ this.int32 = int32;
+ return this;
+ }
+
+ /**
+ * Get int32
+ * minimum: 20
+ * maximum: 200
+ * @return int32
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_INT32)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Integer getInt32() {
+ return int32;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_INT32)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setInt32(@javax.annotation.Nullable Integer int32) {
+ this.int32 = int32;
+ }
+
+
+ public FormatTest int64(@javax.annotation.Nullable Long int64) {
+
+ this.int64 = int64;
+ return this;
+ }
+
+ /**
+ * Get int64
+ * @return int64
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_INT64)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Long getInt64() {
+ return int64;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_INT64)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setInt64(@javax.annotation.Nullable Long int64) {
+ this.int64 = int64;
+ }
+
+
+ public FormatTest number(@javax.annotation.Nonnull BigDecimal number) {
+
+ this.number = number;
+ return this;
+ }
+
+ /**
+ * Get number
+ * minimum: 32.1
+ * maximum: 543.2
+ * @return number
+ */
+ @javax.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_NUMBER)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+
+ public BigDecimal getNumber() {
+ return number;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_NUMBER)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setNumber(@javax.annotation.Nonnull BigDecimal number) {
+ this.number = number;
+ }
+
+
+ public FormatTest _float(@javax.annotation.Nullable Float _float) {
+
+ this._float = _float;
+ return this;
+ }
+
+ /**
+ * Get _float
+ * minimum: 54.3
+ * maximum: 987.6
+ * @return _float
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_FLOAT)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Float getFloat() {
+ return _float;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_FLOAT)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setFloat(@javax.annotation.Nullable Float _float) {
+ this._float = _float;
+ }
+
+
+ public FormatTest _double(@javax.annotation.Nullable Double _double) {
+
+ this._double = _double;
+ return this;
+ }
+
+ /**
+ * Get _double
+ * minimum: 67.8
+ * maximum: 123.4
+ * @return _double
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_DOUBLE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Double getDouble() {
+ return _double;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_DOUBLE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setDouble(@javax.annotation.Nullable Double _double) {
+ this._double = _double;
+ }
+
+
+ public FormatTest decimal(@javax.annotation.Nullable BigDecimal decimal) {
+
+ this.decimal = decimal;
+ return this;
+ }
+
+ /**
+ * Get decimal
+ * @return decimal
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_DECIMAL)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public BigDecimal getDecimal() {
+ return decimal;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_DECIMAL)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setDecimal(@javax.annotation.Nullable BigDecimal decimal) {
+ this.decimal = decimal;
+ }
+
+
+ public FormatTest string(@javax.annotation.Nullable String string) {
+
+ this.string = string;
+ return this;
+ }
+
+ /**
+ * Get string
+ * @return string
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_STRING)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getString() {
+ return string;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_STRING)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setString(@javax.annotation.Nullable String string) {
+ this.string = string;
+ }
+
+
+ public FormatTest _byte(@javax.annotation.Nonnull byte[] _byte) {
+
+ this._byte = _byte;
+ return this;
+ }
+
+ /**
+ * Get _byte
+ * @return _byte
+ */
+ @javax.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_BYTE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+
+ public byte[] getByte() {
+ return _byte;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_BYTE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setByte(@javax.annotation.Nonnull byte[] _byte) {
+ this._byte = _byte;
+ }
+
+
+ public FormatTest binary(@javax.annotation.Nullable File binary) {
+
+ this.binary = binary;
+ return this;
+ }
+
+ /**
+ * Get binary
+ * @return binary
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_BINARY)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public File getBinary() {
+ return binary;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_BINARY)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setBinary(@javax.annotation.Nullable File binary) {
+ this.binary = binary;
+ }
+
+
+ public FormatTest date(@javax.annotation.Nonnull LocalDate date) {
+
+ this.date = date;
+ return this;
+ }
+
+ /**
+ * Get date
+ * @return date
+ */
+ @javax.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_DATE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+
+ public LocalDate getDate() {
+ return date;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_DATE)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setDate(@javax.annotation.Nonnull LocalDate date) {
+ this.date = date;
+ }
+
+
+ public FormatTest dateTime(@javax.annotation.Nullable OffsetDateTime dateTime) {
+
+ this.dateTime = dateTime;
+ return this;
+ }
+
+ /**
+ * Get dateTime
+ * @return dateTime
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_DATE_TIME)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public OffsetDateTime getDateTime() {
+ return dateTime;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_DATE_TIME)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setDateTime(@javax.annotation.Nullable OffsetDateTime dateTime) {
+ this.dateTime = dateTime;
+ }
+
+
+ public FormatTest uuid(@javax.annotation.Nullable UUID uuid) {
+
+ this.uuid = uuid;
+ return this;
+ }
+
+ /**
+ * Get uuid
+ * @return uuid
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_UUID)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public UUID getUuid() {
+ return uuid;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_UUID)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setUuid(@javax.annotation.Nullable UUID uuid) {
+ this.uuid = uuid;
+ }
+
+
+ public FormatTest password(@javax.annotation.Nonnull String password) {
+
+ this.password = password;
+ return this;
+ }
+
+ /**
+ * Get password
+ * @return password
+ */
+ @javax.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_PASSWORD)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+
+ public String getPassword() {
+ return password;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_PASSWORD)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setPassword(@javax.annotation.Nonnull String password) {
+ this.password = password;
+ }
+
+
+ public FormatTest patternWithDigits(@javax.annotation.Nullable String patternWithDigits) {
+
+ this.patternWithDigits = patternWithDigits;
+ return this;
+ }
+
+ /**
+ * A string that is a 10 digit number. Can have leading zeros.
+ * @return patternWithDigits
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_PATTERN_WITH_DIGITS)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getPatternWithDigits() {
+ return patternWithDigits;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_PATTERN_WITH_DIGITS)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setPatternWithDigits(@javax.annotation.Nullable String patternWithDigits) {
+ this.patternWithDigits = patternWithDigits;
+ }
+
+
+ public FormatTest patternWithDigitsAndDelimiter(@javax.annotation.Nullable String patternWithDigitsAndDelimiter) {
+
+ this.patternWithDigitsAndDelimiter = patternWithDigitsAndDelimiter;
+ return this;
+ }
+
+ /**
+ * A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01.
+ * @return patternWithDigitsAndDelimiter
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_PATTERN_WITH_DIGITS_AND_DELIMITER)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getPatternWithDigitsAndDelimiter() {
+ return patternWithDigitsAndDelimiter;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_PATTERN_WITH_DIGITS_AND_DELIMITER)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setPatternWithDigitsAndDelimiter(@javax.annotation.Nullable String patternWithDigitsAndDelimiter) {
+ this.patternWithDigitsAndDelimiter = patternWithDigitsAndDelimiter;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ FormatTest formatTest = (FormatTest) o;
+ return Objects.equals(this.integer, formatTest.integer) &&
+ Objects.equals(this.int32, formatTest.int32) &&
+ Objects.equals(this.int64, formatTest.int64) &&
+ Objects.equals(this.number, formatTest.number) &&
+ Objects.equals(this._float, formatTest._float) &&
+ Objects.equals(this._double, formatTest._double) &&
+ Objects.equals(this.decimal, formatTest.decimal) &&
+ Objects.equals(this.string, formatTest.string) &&
+ Arrays.equals(this._byte, formatTest._byte) &&
+ Objects.equals(this.binary, formatTest.binary) &&
+ Objects.equals(this.date, formatTest.date) &&
+ Objects.equals(this.dateTime, formatTest.dateTime) &&
+ Objects.equals(this.uuid, formatTest.uuid) &&
+ Objects.equals(this.password, formatTest.password) &&
+ Objects.equals(this.patternWithDigits, formatTest.patternWithDigits) &&
+ Objects.equals(this.patternWithDigitsAndDelimiter, formatTest.patternWithDigitsAndDelimiter);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(integer, int32, int64, number, _float, _double, decimal, string, Arrays.hashCode(_byte), binary, date, dateTime, uuid, password, patternWithDigits, patternWithDigitsAndDelimiter);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class FormatTest {\n");
+ sb.append(" integer: ").append(toIndentedString(integer)).append("\n");
+ sb.append(" int32: ").append(toIndentedString(int32)).append("\n");
+ sb.append(" int64: ").append(toIndentedString(int64)).append("\n");
+ sb.append(" number: ").append(toIndentedString(number)).append("\n");
+ sb.append(" _float: ").append(toIndentedString(_float)).append("\n");
+ sb.append(" _double: ").append(toIndentedString(_double)).append("\n");
+ sb.append(" decimal: ").append(toIndentedString(decimal)).append("\n");
+ sb.append(" string: ").append(toIndentedString(string)).append("\n");
+ sb.append(" _byte: ").append(toIndentedString(_byte)).append("\n");
+ sb.append(" binary: ").append(toIndentedString(binary)).append("\n");
+ sb.append(" date: ").append(toIndentedString(date)).append("\n");
+ sb.append(" dateTime: ").append(toIndentedString(dateTime)).append("\n");
+ sb.append(" uuid: ").append(toIndentedString(uuid)).append("\n");
+ sb.append(" password: ").append("*").append("\n");
+ sb.append(" patternWithDigits: ").append(toIndentedString(patternWithDigits)).append("\n");
+ sb.append(" patternWithDigitsAndDelimiter: ").append(toIndentedString(patternWithDigitsAndDelimiter)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java
new file mode 100644
index 000000000000..c4911fbaf299
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java
@@ -0,0 +1,127 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * HasOnlyReadOnly
+ */
+@JsonPropertyOrder({
+ HasOnlyReadOnly.JSON_PROPERTY_BAR,
+ HasOnlyReadOnly.JSON_PROPERTY_FOO
+})
+@JsonTypeName("hasOnlyReadOnly")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class HasOnlyReadOnly {
+ public static final String JSON_PROPERTY_BAR = "bar";
+ @javax.annotation.Nullable
+ private String bar;
+
+ public static final String JSON_PROPERTY_FOO = "foo";
+ @javax.annotation.Nullable
+ private String foo;
+
+ public HasOnlyReadOnly() {
+ }
+
+ @JsonCreator
+ public HasOnlyReadOnly(
+ @JsonProperty(JSON_PROPERTY_BAR) String bar,
+ @JsonProperty(JSON_PROPERTY_FOO) String foo
+ ) {
+ this();
+ this.bar = bar;
+ this.foo = foo;
+ }
+
+ /**
+ * Get bar
+ * @return bar
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_BAR)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getBar() {
+ return bar;
+ }
+
+
+
+
+ /**
+ * Get foo
+ * @return foo
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_FOO)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getFoo() {
+ return foo;
+ }
+
+
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ HasOnlyReadOnly hasOnlyReadOnly = (HasOnlyReadOnly) o;
+ return Objects.equals(this.bar, hasOnlyReadOnly.bar) &&
+ Objects.equals(this.foo, hasOnlyReadOnly.foo);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(bar, foo);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class HasOnlyReadOnly {\n");
+ sb.append(" bar: ").append(toIndentedString(bar)).append("\n");
+ sb.append(" foo: ").append(toIndentedString(foo)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/HealthCheckResult.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/HealthCheckResult.java
new file mode 100644
index 000000000000..04185c07159e
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/HealthCheckResult.java
@@ -0,0 +1,127 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import org.openapitools.jackson.nullable.JsonNullable;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import org.openapitools.jackson.nullable.JsonNullable;
+import java.util.NoSuchElementException;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * Just a string to inform instance is up and running. Make it nullable in hope to get it as pointer in generated model.
+ */
+@JsonPropertyOrder({
+ HealthCheckResult.JSON_PROPERTY_NULLABLE_MESSAGE
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class HealthCheckResult {
+ public static final String JSON_PROPERTY_NULLABLE_MESSAGE = "NullableMessage";
+ private JsonNullable nullableMessage = JsonNullable.undefined();
+
+ public HealthCheckResult() {
+ }
+
+ public HealthCheckResult nullableMessage(@javax.annotation.Nullable String nullableMessage) {
+ this.nullableMessage = JsonNullable.of(nullableMessage);
+
+ return this;
+ }
+
+ /**
+ * Get nullableMessage
+ * @return nullableMessage
+ */
+ @javax.annotation.Nullable
+ @JsonIgnore
+
+ public String getNullableMessage() {
+ return nullableMessage.orElse(null);
+ }
+
+ @JsonProperty(JSON_PROPERTY_NULLABLE_MESSAGE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public JsonNullable getNullableMessage_JsonNullable() {
+ return nullableMessage;
+ }
+
+ @JsonProperty(JSON_PROPERTY_NULLABLE_MESSAGE)
+ public void setNullableMessage_JsonNullable(JsonNullable nullableMessage) {
+ this.nullableMessage = nullableMessage;
+ }
+
+ public void setNullableMessage(@javax.annotation.Nullable String nullableMessage) {
+ this.nullableMessage = JsonNullable.of(nullableMessage);
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ HealthCheckResult healthCheckResult = (HealthCheckResult) o;
+ return equalsNullable(this.nullableMessage, healthCheckResult.nullableMessage);
+ }
+
+ private static boolean equalsNullable(JsonNullable a, JsonNullable b) {
+ return a == b || (a != null && b != null && a.isPresent() && b.isPresent() && Objects.deepEquals(a.get(), b.get()));
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(hashCodeNullable(nullableMessage));
+ }
+
+ private static int hashCodeNullable(JsonNullable a) {
+ if (a == null) {
+ return 1;
+ }
+ return a.isPresent() ? Arrays.deepHashCode(new Object[]{a.get()}) : 31;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class HealthCheckResult {\n");
+ sb.append(" nullableMessage: ").append(toIndentedString(nullableMessage)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/MapTest.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/MapTest.java
new file mode 100644
index 000000000000..7c7e8bf90863
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/MapTest.java
@@ -0,0 +1,273 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import java.util.HashMap;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * MapTest
+ */
+@JsonPropertyOrder({
+ MapTest.JSON_PROPERTY_MAP_MAP_OF_STRING,
+ MapTest.JSON_PROPERTY_MAP_OF_ENUM_STRING,
+ MapTest.JSON_PROPERTY_DIRECT_MAP,
+ MapTest.JSON_PROPERTY_INDIRECT_MAP
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class MapTest {
+ public static final String JSON_PROPERTY_MAP_MAP_OF_STRING = "map_map_of_string";
+ @javax.annotation.Nullable
+ private Map> mapMapOfString = new HashMap<>();
+
+ /**
+ * Gets or Sets inner
+ */
+ public enum InnerEnum {
+ UPPER(String.valueOf("UPPER")),
+
+ LOWER(String.valueOf("lower"));
+
+ private String value;
+
+ InnerEnum(String value) {
+ this.value = value;
+ }
+
+ @JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(value);
+ }
+
+ @JsonCreator
+ public static InnerEnum fromValue(String value) {
+ for (InnerEnum b : InnerEnum.values()) {
+ if (b.value.equals(value)) {
+ return b;
+ }
+ }
+ throw new IllegalArgumentException("Unexpected value '" + value + "'");
+ }
+ }
+
+ public static final String JSON_PROPERTY_MAP_OF_ENUM_STRING = "map_of_enum_string";
+ @javax.annotation.Nullable
+ private Map mapOfEnumString = new HashMap<>();
+
+ public static final String JSON_PROPERTY_DIRECT_MAP = "direct_map";
+ @javax.annotation.Nullable
+ private Map directMap = new HashMap<>();
+
+ public static final String JSON_PROPERTY_INDIRECT_MAP = "indirect_map";
+ @javax.annotation.Nullable
+ private Map indirectMap = new HashMap<>();
+
+ public MapTest() {
+ }
+
+ public MapTest mapMapOfString(@javax.annotation.Nullable Map> mapMapOfString) {
+
+ this.mapMapOfString = mapMapOfString;
+ return this;
+ }
+
+ public MapTest putMapMapOfStringItem(String key, Map mapMapOfStringItem) {
+ if (this.mapMapOfString == null) {
+ this.mapMapOfString = new HashMap<>();
+ }
+ this.mapMapOfString.put(key, mapMapOfStringItem);
+ return this;
+ }
+
+ /**
+ * Get mapMapOfString
+ * @return mapMapOfString
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_MAP_MAP_OF_STRING)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Map> getMapMapOfString() {
+ return mapMapOfString;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_MAP_MAP_OF_STRING)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setMapMapOfString(@javax.annotation.Nullable Map> mapMapOfString) {
+ this.mapMapOfString = mapMapOfString;
+ }
+
+
+ public MapTest mapOfEnumString(@javax.annotation.Nullable Map mapOfEnumString) {
+
+ this.mapOfEnumString = mapOfEnumString;
+ return this;
+ }
+
+ public MapTest putMapOfEnumStringItem(String key, InnerEnum mapOfEnumStringItem) {
+ if (this.mapOfEnumString == null) {
+ this.mapOfEnumString = new HashMap<>();
+ }
+ this.mapOfEnumString.put(key, mapOfEnumStringItem);
+ return this;
+ }
+
+ /**
+ * Get mapOfEnumString
+ * @return mapOfEnumString
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_MAP_OF_ENUM_STRING)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Map getMapOfEnumString() {
+ return mapOfEnumString;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_MAP_OF_ENUM_STRING)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setMapOfEnumString(@javax.annotation.Nullable Map mapOfEnumString) {
+ this.mapOfEnumString = mapOfEnumString;
+ }
+
+
+ public MapTest directMap(@javax.annotation.Nullable Map directMap) {
+
+ this.directMap = directMap;
+ return this;
+ }
+
+ public MapTest putDirectMapItem(String key, Boolean directMapItem) {
+ if (this.directMap == null) {
+ this.directMap = new HashMap<>();
+ }
+ this.directMap.put(key, directMapItem);
+ return this;
+ }
+
+ /**
+ * Get directMap
+ * @return directMap
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_DIRECT_MAP)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Map getDirectMap() {
+ return directMap;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_DIRECT_MAP)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setDirectMap(@javax.annotation.Nullable Map directMap) {
+ this.directMap = directMap;
+ }
+
+
+ public MapTest indirectMap(@javax.annotation.Nullable Map indirectMap) {
+
+ this.indirectMap = indirectMap;
+ return this;
+ }
+
+ public MapTest putIndirectMapItem(String key, Boolean indirectMapItem) {
+ if (this.indirectMap == null) {
+ this.indirectMap = new HashMap<>();
+ }
+ this.indirectMap.put(key, indirectMapItem);
+ return this;
+ }
+
+ /**
+ * Get indirectMap
+ * @return indirectMap
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_INDIRECT_MAP)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Map getIndirectMap() {
+ return indirectMap;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_INDIRECT_MAP)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setIndirectMap(@javax.annotation.Nullable Map indirectMap) {
+ this.indirectMap = indirectMap;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ MapTest mapTest = (MapTest) o;
+ return Objects.equals(this.mapMapOfString, mapTest.mapMapOfString) &&
+ Objects.equals(this.mapOfEnumString, mapTest.mapOfEnumString) &&
+ Objects.equals(this.directMap, mapTest.directMap) &&
+ Objects.equals(this.indirectMap, mapTest.indirectMap);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mapMapOfString, mapOfEnumString, directMap, indirectMap);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class MapTest {\n");
+ sb.append(" mapMapOfString: ").append(toIndentedString(mapMapOfString)).append("\n");
+ sb.append(" mapOfEnumString: ").append(toIndentedString(mapOfEnumString)).append("\n");
+ sb.append(" directMap: ").append(toIndentedString(directMap)).append("\n");
+ sb.append(" indirectMap: ").append(toIndentedString(indirectMap)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java
new file mode 100644
index 000000000000..b99867682dd6
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java
@@ -0,0 +1,184 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import java.time.OffsetDateTime;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+import org.openapitools.client.model.Animal;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * MixedPropertiesAndAdditionalPropertiesClass
+ */
+@JsonPropertyOrder({
+ MixedPropertiesAndAdditionalPropertiesClass.JSON_PROPERTY_UUID,
+ MixedPropertiesAndAdditionalPropertiesClass.JSON_PROPERTY_DATE_TIME,
+ MixedPropertiesAndAdditionalPropertiesClass.JSON_PROPERTY_MAP
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class MixedPropertiesAndAdditionalPropertiesClass {
+ public static final String JSON_PROPERTY_UUID = "uuid";
+ @javax.annotation.Nullable
+ private UUID uuid;
+
+ public static final String JSON_PROPERTY_DATE_TIME = "dateTime";
+ @javax.annotation.Nullable
+ private OffsetDateTime dateTime;
+
+ public static final String JSON_PROPERTY_MAP = "map";
+ @javax.annotation.Nullable
+ private Map map = new HashMap<>();
+
+ public MixedPropertiesAndAdditionalPropertiesClass() {
+ }
+
+ public MixedPropertiesAndAdditionalPropertiesClass uuid(@javax.annotation.Nullable UUID uuid) {
+
+ this.uuid = uuid;
+ return this;
+ }
+
+ /**
+ * Get uuid
+ * @return uuid
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_UUID)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public UUID getUuid() {
+ return uuid;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_UUID)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setUuid(@javax.annotation.Nullable UUID uuid) {
+ this.uuid = uuid;
+ }
+
+
+ public MixedPropertiesAndAdditionalPropertiesClass dateTime(@javax.annotation.Nullable OffsetDateTime dateTime) {
+
+ this.dateTime = dateTime;
+ return this;
+ }
+
+ /**
+ * Get dateTime
+ * @return dateTime
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_DATE_TIME)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public OffsetDateTime getDateTime() {
+ return dateTime;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_DATE_TIME)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setDateTime(@javax.annotation.Nullable OffsetDateTime dateTime) {
+ this.dateTime = dateTime;
+ }
+
+
+ public MixedPropertiesAndAdditionalPropertiesClass map(@javax.annotation.Nullable Map map) {
+
+ this.map = map;
+ return this;
+ }
+
+ public MixedPropertiesAndAdditionalPropertiesClass putMapItem(String key, Animal mapItem) {
+ if (this.map == null) {
+ this.map = new HashMap<>();
+ }
+ this.map.put(key, mapItem);
+ return this;
+ }
+
+ /**
+ * Get map
+ * @return map
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_MAP)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Map getMap() {
+ return map;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_MAP)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setMap(@javax.annotation.Nullable Map map) {
+ this.map = map;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ MixedPropertiesAndAdditionalPropertiesClass mixedPropertiesAndAdditionalPropertiesClass = (MixedPropertiesAndAdditionalPropertiesClass) o;
+ return Objects.equals(this.uuid, mixedPropertiesAndAdditionalPropertiesClass.uuid) &&
+ Objects.equals(this.dateTime, mixedPropertiesAndAdditionalPropertiesClass.dateTime) &&
+ Objects.equals(this.map, mixedPropertiesAndAdditionalPropertiesClass.map);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(uuid, dateTime, map);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class MixedPropertiesAndAdditionalPropertiesClass {\n");
+ sb.append(" uuid: ").append(toIndentedString(uuid)).append("\n");
+ sb.append(" dateTime: ").append(toIndentedString(dateTime)).append("\n");
+ sb.append(" map: ").append(toIndentedString(map)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Model200Response.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Model200Response.java
new file mode 100644
index 000000000000..32fee39581c0
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Model200Response.java
@@ -0,0 +1,139 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * Model for testing model name starting with number
+ */
+@JsonPropertyOrder({
+ Model200Response.JSON_PROPERTY_NAME,
+ Model200Response.JSON_PROPERTY_PROPERTY_CLASS
+})
+@JsonTypeName("200_response")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class Model200Response {
+ public static final String JSON_PROPERTY_NAME = "name";
+ @javax.annotation.Nullable
+ private Integer name;
+
+ public static final String JSON_PROPERTY_PROPERTY_CLASS = "class";
+ @javax.annotation.Nullable
+ private String propertyClass;
+
+ public Model200Response() {
+ }
+
+ public Model200Response name(@javax.annotation.Nullable Integer name) {
+
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get name
+ * @return name
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_NAME)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Integer getName() {
+ return name;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_NAME)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setName(@javax.annotation.Nullable Integer name) {
+ this.name = name;
+ }
+
+
+ public Model200Response propertyClass(@javax.annotation.Nullable String propertyClass) {
+
+ this.propertyClass = propertyClass;
+ return this;
+ }
+
+ /**
+ * Get propertyClass
+ * @return propertyClass
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_PROPERTY_CLASS)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getPropertyClass() {
+ return propertyClass;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_PROPERTY_CLASS)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setPropertyClass(@javax.annotation.Nullable String propertyClass) {
+ this.propertyClass = propertyClass;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ Model200Response _200response = (Model200Response) o;
+ return Objects.equals(this.name, _200response.name) &&
+ Objects.equals(this.propertyClass, _200response.propertyClass);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, propertyClass);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class Model200Response {\n");
+ sb.append(" name: ").append(toIndentedString(name)).append("\n");
+ sb.append(" propertyClass: ").append(toIndentedString(propertyClass)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ModelApiResponse.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ModelApiResponse.java
new file mode 100644
index 000000000000..0a5ba46129a9
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ModelApiResponse.java
@@ -0,0 +1,172 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * ModelApiResponse
+ */
+@JsonPropertyOrder({
+ ModelApiResponse.JSON_PROPERTY_CODE,
+ ModelApiResponse.JSON_PROPERTY_TYPE,
+ ModelApiResponse.JSON_PROPERTY_MESSAGE
+})
+@JsonTypeName("ApiResponse")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class ModelApiResponse {
+ public static final String JSON_PROPERTY_CODE = "code";
+ @javax.annotation.Nullable
+ private Integer code;
+
+ public static final String JSON_PROPERTY_TYPE = "type";
+ @javax.annotation.Nullable
+ private String type;
+
+ public static final String JSON_PROPERTY_MESSAGE = "message";
+ @javax.annotation.Nullable
+ private String message;
+
+ public ModelApiResponse() {
+ }
+
+ public ModelApiResponse code(@javax.annotation.Nullable Integer code) {
+
+ this.code = code;
+ return this;
+ }
+
+ /**
+ * Get code
+ * @return code
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_CODE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Integer getCode() {
+ return code;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_CODE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setCode(@javax.annotation.Nullable Integer code) {
+ this.code = code;
+ }
+
+
+ public ModelApiResponse type(@javax.annotation.Nullable String type) {
+
+ this.type = type;
+ return this;
+ }
+
+ /**
+ * Get type
+ * @return type
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_TYPE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getType() {
+ return type;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_TYPE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setType(@javax.annotation.Nullable String type) {
+ this.type = type;
+ }
+
+
+ public ModelApiResponse message(@javax.annotation.Nullable String message) {
+
+ this.message = message;
+ return this;
+ }
+
+ /**
+ * Get message
+ * @return message
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_MESSAGE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getMessage() {
+ return message;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_MESSAGE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setMessage(@javax.annotation.Nullable String message) {
+ this.message = message;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ModelApiResponse _apiResponse = (ModelApiResponse) o;
+ return Objects.equals(this.code, _apiResponse.code) &&
+ Objects.equals(this.type, _apiResponse.type) &&
+ Objects.equals(this.message, _apiResponse.message);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(code, type, message);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class ModelApiResponse {\n");
+ sb.append(" code: ").append(toIndentedString(code)).append("\n");
+ sb.append(" type: ").append(toIndentedString(type)).append("\n");
+ sb.append(" message: ").append(toIndentedString(message)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ModelList.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ModelList.java
new file mode 100644
index 000000000000..2c483607d79c
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ModelList.java
@@ -0,0 +1,106 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * ModelList
+ */
+@JsonPropertyOrder({
+ ModelList.JSON_PROPERTY_123LIST
+})
+@JsonTypeName("List")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class ModelList {
+ public static final String JSON_PROPERTY_123LIST = "123-list";
+ @javax.annotation.Nullable
+ private String _123list;
+
+ public ModelList() {
+ }
+
+ public ModelList _123list(@javax.annotation.Nullable String _123list) {
+
+ this._123list = _123list;
+ return this;
+ }
+
+ /**
+ * Get _123list
+ * @return _123list
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_123LIST)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String get123list() {
+ return _123list;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_123LIST)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void set123list(@javax.annotation.Nullable String _123list) {
+ this._123list = _123list;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ModelList _list = (ModelList) o;
+ return Objects.equals(this._123list, _list._123list);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(_123list);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class ModelList {\n");
+ sb.append(" _123list: ").append(toIndentedString(_123list)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ModelReturn.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ModelReturn.java
new file mode 100644
index 000000000000..9be47ab8e0bf
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/ModelReturn.java
@@ -0,0 +1,106 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * Model for testing reserved words
+ */
+@JsonPropertyOrder({
+ ModelReturn.JSON_PROPERTY_RETURN
+})
+@JsonTypeName("Return")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class ModelReturn {
+ public static final String JSON_PROPERTY_RETURN = "return";
+ @javax.annotation.Nullable
+ private Integer _return;
+
+ public ModelReturn() {
+ }
+
+ public ModelReturn _return(@javax.annotation.Nullable Integer _return) {
+
+ this._return = _return;
+ return this;
+ }
+
+ /**
+ * Get _return
+ * @return _return
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_RETURN)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Integer getReturn() {
+ return _return;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_RETURN)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setReturn(@javax.annotation.Nullable Integer _return) {
+ this._return = _return;
+ }
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ModelReturn _return = (ModelReturn) o;
+ return Objects.equals(this._return, _return._return);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(_return);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class ModelReturn {\n");
+ sb.append(" _return: ").append(toIndentedString(_return)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Name.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Name.java
new file mode 100644
index 000000000000..063860b55176
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/Name.java
@@ -0,0 +1,192 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * Model for testing model name same as property name
+ */
+@JsonPropertyOrder({
+ Name.JSON_PROPERTY_NAME,
+ Name.JSON_PROPERTY_SNAKE_CASE,
+ Name.JSON_PROPERTY_PROPERTY,
+ Name.JSON_PROPERTY_123NUMBER
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class Name {
+ public static final String JSON_PROPERTY_NAME = "name";
+ @javax.annotation.Nonnull
+ private Integer name;
+
+ public static final String JSON_PROPERTY_SNAKE_CASE = "snake_case";
+ @javax.annotation.Nullable
+ private Integer snakeCase;
+
+ public static final String JSON_PROPERTY_PROPERTY = "property";
+ @javax.annotation.Nullable
+ private String property;
+
+ public static final String JSON_PROPERTY_123NUMBER = "123Number";
+ @javax.annotation.Nullable
+ private Integer _123number;
+
+ public Name() {
+ }
+
+ @JsonCreator
+ public Name(
+ @JsonProperty(JSON_PROPERTY_SNAKE_CASE) Integer snakeCase,
+ @JsonProperty(JSON_PROPERTY_123NUMBER) Integer _123number
+ ) {
+ this();
+ this.snakeCase = snakeCase;
+ this._123number = _123number;
+ }
+
+ public Name name(@javax.annotation.Nonnull Integer name) {
+
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get name
+ * @return name
+ */
+ @javax.annotation.Nonnull
+ @JsonProperty(JSON_PROPERTY_NAME)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+
+ public Integer getName() {
+ return name;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_NAME)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public void setName(@javax.annotation.Nonnull Integer name) {
+ this.name = name;
+ }
+
+
+ /**
+ * Get snakeCase
+ * @return snakeCase
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_SNAKE_CASE)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Integer getSnakeCase() {
+ return snakeCase;
+ }
+
+
+
+
+ public Name property(@javax.annotation.Nullable String property) {
+
+ this.property = property;
+ return this;
+ }
+
+ /**
+ * Get property
+ * @return property
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_PROPERTY)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public String getProperty() {
+ return property;
+ }
+
+
+ @JsonProperty(JSON_PROPERTY_PROPERTY)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public void setProperty(@javax.annotation.Nullable String property) {
+ this.property = property;
+ }
+
+
+ /**
+ * Get _123number
+ * @return _123number
+ */
+ @javax.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_123NUMBER)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+ public Integer get123number() {
+ return _123number;
+ }
+
+
+
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ Name name = (Name) o;
+ return Objects.equals(this.name, name.name) &&
+ Objects.equals(this.snakeCase, name.snakeCase) &&
+ Objects.equals(this.property, name.property) &&
+ Objects.equals(this._123number, name._123number);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, snakeCase, property, _123number);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class Name {\n");
+ sb.append(" name: ").append(toIndentedString(name)).append("\n");
+ sb.append(" snakeCase: ").append(toIndentedString(snakeCase)).append("\n");
+ sb.append(" property: ").append(toIndentedString(property)).append("\n");
+ sb.append(" _123number: ").append(toIndentedString(_123number)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+
+}
+
diff --git a/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/NullableClass.java b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/NullableClass.java
new file mode 100644
index 000000000000..4996df36423c
--- /dev/null
+++ b/samples/client/petstore/java/feign-hc5/src/main/java/org/openapitools/client/model/NullableClass.java
@@ -0,0 +1,674 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client.model;
+
+import java.util.Map;
+import java.util.HashMap;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import java.util.Objects;
+import java.util.Arrays;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonValue;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.OffsetDateTime;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.openapitools.jackson.nullable.JsonNullable;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import org.openapitools.jackson.nullable.JsonNullable;
+import java.util.NoSuchElementException;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * NullableClass
+ */
+@JsonPropertyOrder({
+ NullableClass.JSON_PROPERTY_INTEGER_PROP,
+ NullableClass.JSON_PROPERTY_NUMBER_PROP,
+ NullableClass.JSON_PROPERTY_BOOLEAN_PROP,
+ NullableClass.JSON_PROPERTY_STRING_PROP,
+ NullableClass.JSON_PROPERTY_DATE_PROP,
+ NullableClass.JSON_PROPERTY_DATETIME_PROP,
+ NullableClass.JSON_PROPERTY_ARRAY_NULLABLE_PROP,
+ NullableClass.JSON_PROPERTY_ARRAY_AND_ITEMS_NULLABLE_PROP,
+ NullableClass.JSON_PROPERTY_ARRAY_ITEMS_NULLABLE,
+ NullableClass.JSON_PROPERTY_OBJECT_NULLABLE_PROP,
+ NullableClass.JSON_PROPERTY_OBJECT_AND_ITEMS_NULLABLE_PROP,
+ NullableClass.JSON_PROPERTY_OBJECT_ITEMS_NULLABLE
+})
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0-SNAPSHOT")
+public class NullableClass {
+ public static final String JSON_PROPERTY_INTEGER_PROP = "integer_prop";
+ private JsonNullable integerProp = JsonNullable.undefined();
+
+ public static final String JSON_PROPERTY_NUMBER_PROP = "number_prop";
+ private JsonNullable numberProp = JsonNullable.undefined();
+
+ public static final String JSON_PROPERTY_BOOLEAN_PROP = "boolean_prop";
+ private JsonNullable booleanProp = JsonNullable.undefined();
+
+ public static final String JSON_PROPERTY_STRING_PROP = "string_prop";
+ private JsonNullable