enumValues) {
+ this.description = description;
+ this.defaultValue = defaultValue;
+ this.enumValues = enumValues;
+ }
+}
diff --git a/samples/client/petstore/java/retrofit2rx3/src/main/java/org/openapitools/client/StringUtil.java b/samples/client/petstore/java/retrofit2rx3/src/main/java/org/openapitools/client/StringUtil.java
new file mode 100644
index 000000000000..747a23f5bf23
--- /dev/null
+++ b/samples/client/petstore/java/retrofit2rx3/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;
+
+
+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/retrofit2rx3/src/main/java/org/openapitools/client/api/AnotherFakeApi.java b/samples/client/petstore/java/retrofit2rx3/src/main/java/org/openapitools/client/api/AnotherFakeApi.java
new file mode 100644
index 000000000000..3fb4359eb983
--- /dev/null
+++ b/samples/client/petstore/java/retrofit2rx3/src/main/java/org/openapitools/client/api/AnotherFakeApi.java
@@ -0,0 +1,35 @@
+package org.openapitools.client.api;
+
+import org.openapitools.client.CollectionFormats.*;
+
+import io.reactivex.rxjava3.core.Observable;
+import io.reactivex.rxjava3.core.Completable;
+import retrofit2.http.*;
+
+import okhttp3.RequestBody;
+import okhttp3.ResponseBody;
+import okhttp3.MultipartBody;
+
+import org.openapitools.client.model.Client;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public interface AnotherFakeApi {
+ /**
+ * To test special tags
+ * To test special tags and operation ID starting with number
+ * @param body client model (required)
+ * @return Observable<Client>
+ */
+ @Headers({
+ "Content-Type:application/json"
+ })
+ @PATCH("another-fake/dummy")
+ Observable call123testSpecialTags(
+ @retrofit2.http.Body Client body
+ );
+
+}
diff --git a/samples/client/petstore/java/retrofit2rx3/src/main/java/org/openapitools/client/api/FakeApi.java b/samples/client/petstore/java/retrofit2rx3/src/main/java/org/openapitools/client/api/FakeApi.java
new file mode 100644
index 000000000000..983a776a3646
--- /dev/null
+++ b/samples/client/petstore/java/retrofit2rx3/src/main/java/org/openapitools/client/api/FakeApi.java
@@ -0,0 +1,232 @@
+package org.openapitools.client.api;
+
+import org.openapitools.client.CollectionFormats.*;
+
+import io.reactivex.rxjava3.core.Observable;
+import io.reactivex.rxjava3.core.Completable;
+import retrofit2.http.*;
+
+import okhttp3.RequestBody;
+import okhttp3.ResponseBody;
+import okhttp3.MultipartBody;
+
+import java.math.BigDecimal;
+import org.openapitools.client.model.Client;
+import java.io.File;
+import org.openapitools.client.model.FileSchemaTestClass;
+import org.threeten.bp.LocalDate;
+import org.threeten.bp.OffsetDateTime;
+import org.openapitools.client.model.OuterComposite;
+import org.openapitools.client.model.User;
+import org.openapitools.client.model.XmlItem;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public interface FakeApi {
+ /**
+ * creates an XmlItem
+ * this route creates an XmlItem
+ * @param xmlItem XmlItem Body (required)
+ * @return Completable
+ */
+ @Headers({
+ "Content-Type:application/xml"
+ })
+ @POST("fake/create_xml_item")
+ Completable createXmlItem(
+ @retrofit2.http.Body XmlItem xmlItem
+ );
+
+ /**
+ *
+ * Test serialization of outer boolean types
+ * @param body Input boolean as post body (optional)
+ * @return Observable<Boolean>
+ */
+ @POST("fake/outer/boolean")
+ Observable fakeOuterBooleanSerialize(
+ @retrofit2.http.Body Boolean body
+ );
+
+ /**
+ *
+ * Test serialization of object with outer number type
+ * @param body Input composite as post body (optional)
+ * @return Observable<OuterComposite>
+ */
+ @POST("fake/outer/composite")
+ Observable fakeOuterCompositeSerialize(
+ @retrofit2.http.Body OuterComposite body
+ );
+
+ /**
+ *
+ * Test serialization of outer number types
+ * @param body Input number as post body (optional)
+ * @return Observable<BigDecimal>
+ */
+ @POST("fake/outer/number")
+ Observable fakeOuterNumberSerialize(
+ @retrofit2.http.Body BigDecimal body
+ );
+
+ /**
+ *
+ * Test serialization of outer string types
+ * @param body Input string as post body (optional)
+ * @return Observable<String>
+ */
+ @POST("fake/outer/string")
+ Observable fakeOuterStringSerialize(
+ @retrofit2.http.Body String body
+ );
+
+ /**
+ *
+ * For this test, the body for this request much reference a schema named `File`.
+ * @param body (required)
+ * @return Completable
+ */
+ @Headers({
+ "Content-Type:application/json"
+ })
+ @PUT("fake/body-with-file-schema")
+ Completable testBodyWithFileSchema(
+ @retrofit2.http.Body FileSchemaTestClass body
+ );
+
+ /**
+ *
+ *
+ * @param query (required)
+ * @param body (required)
+ * @return Completable
+ */
+ @Headers({
+ "Content-Type:application/json"
+ })
+ @PUT("fake/body-with-query-params")
+ Completable testBodyWithQueryParams(
+ @retrofit2.http.Query("query") String query, @retrofit2.http.Body User body
+ );
+
+ /**
+ * To test \"client\" model
+ * To test \"client\" model
+ * @param body client model (required)
+ * @return Observable<Client>
+ */
+ @Headers({
+ "Content-Type:application/json"
+ })
+ @PATCH("fake")
+ Observable testClientModel(
+ @retrofit2.http.Body Client body
+ );
+
+ /**
+ * 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)
+ * @return Completable
+ */
+ @retrofit2.http.FormUrlEncoded
+ @POST("fake")
+ Completable testEndpointParameters(
+ @retrofit2.http.Field("number") BigDecimal number, @retrofit2.http.Field("double") Double _double, @retrofit2.http.Field("pattern_without_delimiter") String patternWithoutDelimiter, @retrofit2.http.Field("byte") byte[] _byte, @retrofit2.http.Field("integer") Integer integer, @retrofit2.http.Field("int32") Integer int32, @retrofit2.http.Field("int64") Long int64, @retrofit2.http.Field("float") Float _float, @retrofit2.http.Field("string") String string, @retrofit2.http.Field("binary") MultipartBody.Part binary, @retrofit2.http.Field("date") LocalDate date, @retrofit2.http.Field("dateTime") OffsetDateTime dateTime, @retrofit2.http.Field("password") String password, @retrofit2.http.Field("callback") String paramCallback
+ );
+
+ /**
+ * To test enum parameters
+ * To test enum parameters
+ * @param enumHeaderStringArray Header parameter enum test (string array) (optional, default to new ArrayList<String>())
+ * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg)
+ * @param enumQueryStringArray Query parameter enum test (string array) (optional, default to new ArrayList<String>())
+ * @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 enumFormStringArray Form parameter enum test (string array) (optional, default to $)
+ * @param enumFormString Form parameter enum test (string) (optional, default to -efg)
+ * @return Completable
+ */
+ @retrofit2.http.FormUrlEncoded
+ @GET("fake")
+ Completable testEnumParameters(
+ @retrofit2.http.Header("enum_header_string_array") List enumHeaderStringArray, @retrofit2.http.Header("enum_header_string") String enumHeaderString, @retrofit2.http.Query("enum_query_string_array") CSVParams enumQueryStringArray, @retrofit2.http.Query("enum_query_string") String enumQueryString, @retrofit2.http.Query("enum_query_integer") Integer enumQueryInteger, @retrofit2.http.Query("enum_query_double") Double enumQueryDouble, @retrofit2.http.Field("enum_form_string_array") List enumFormStringArray, @retrofit2.http.Field("enum_form_string") String enumFormString
+ );
+
+ /**
+ * 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)
+ * @return Completable
+ */
+ @DELETE("fake")
+ Completable testGroupParameters(
+ @retrofit2.http.Query("required_string_group") Integer requiredStringGroup, @retrofit2.http.Header("required_boolean_group") Boolean requiredBooleanGroup, @retrofit2.http.Query("required_int64_group") Long requiredInt64Group, @retrofit2.http.Query("string_group") Integer stringGroup, @retrofit2.http.Header("boolean_group") Boolean booleanGroup, @retrofit2.http.Query("int64_group") Long int64Group
+ );
+
+ /**
+ * test inline additionalProperties
+ *
+ * @param param request body (required)
+ * @return Completable
+ */
+ @Headers({
+ "Content-Type:application/json"
+ })
+ @POST("fake/inline-additionalProperties")
+ Completable testInlineAdditionalProperties(
+ @retrofit2.http.Body Map param
+ );
+
+ /**
+ * test json serialization of form data
+ *
+ * @param param field1 (required)
+ * @param param2 field2 (required)
+ * @return Completable
+ */
+ @retrofit2.http.FormUrlEncoded
+ @GET("fake/jsonFormData")
+ Completable testJsonFormData(
+ @retrofit2.http.Field("param") String param, @retrofit2.http.Field("param2") String param2
+ );
+
+ /**
+ *
+ * To test the collection format in query parameters
+ * @param pipe (required)
+ * @param ioutil (required)
+ * @param http (required)
+ * @param url (required)
+ * @param context (required)
+ * @return Completable
+ */
+ @PUT("fake/test-query-paramters")
+ Completable testQueryParameterCollectionFormat(
+ @retrofit2.http.Query("pipe") CSVParams pipe, @retrofit2.http.Query("ioutil") CSVParams ioutil, @retrofit2.http.Query("http") SSVParams http, @retrofit2.http.Query("url") CSVParams url, @retrofit2.http.Query("context") List context
+ );
+
+}
diff --git a/samples/client/petstore/java/retrofit2rx3/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java b/samples/client/petstore/java/retrofit2rx3/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java
new file mode 100644
index 000000000000..9a95837b215a
--- /dev/null
+++ b/samples/client/petstore/java/retrofit2rx3/src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java
@@ -0,0 +1,35 @@
+package org.openapitools.client.api;
+
+import org.openapitools.client.CollectionFormats.*;
+
+import io.reactivex.rxjava3.core.Observable;
+import io.reactivex.rxjava3.core.Completable;
+import retrofit2.http.*;
+
+import okhttp3.RequestBody;
+import okhttp3.ResponseBody;
+import okhttp3.MultipartBody;
+
+import org.openapitools.client.model.Client;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public interface FakeClassnameTags123Api {
+ /**
+ * To test class name in snake case
+ * To test class name in snake case
+ * @param body client model (required)
+ * @return Observable<Client>
+ */
+ @Headers({
+ "Content-Type:application/json"
+ })
+ @PATCH("fake_classname_test")
+ Observable testClassname(
+ @retrofit2.http.Body Client body
+ );
+
+}
diff --git a/samples/client/petstore/java/retrofit2rx3/src/main/java/org/openapitools/client/api/PetApi.java b/samples/client/petstore/java/retrofit2rx3/src/main/java/org/openapitools/client/api/PetApi.java
new file mode 100644
index 000000000000..9c3cdc37f7a2
--- /dev/null
+++ b/samples/client/petstore/java/retrofit2rx3/src/main/java/org/openapitools/client/api/PetApi.java
@@ -0,0 +1,141 @@
+package org.openapitools.client.api;
+
+import org.openapitools.client.CollectionFormats.*;
+
+import io.reactivex.rxjava3.core.Observable;
+import io.reactivex.rxjava3.core.Completable;
+import retrofit2.http.*;
+
+import okhttp3.RequestBody;
+import okhttp3.ResponseBody;
+import okhttp3.MultipartBody;
+
+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;
+
+public interface PetApi {
+ /**
+ * Add a new pet to the store
+ *
+ * @param body Pet object that needs to be added to the store (required)
+ * @return Completable
+ */
+ @Headers({
+ "Content-Type:application/json"
+ })
+ @POST("pet")
+ Completable addPet(
+ @retrofit2.http.Body Pet body
+ );
+
+ /**
+ * Deletes a pet
+ *
+ * @param petId Pet id to delete (required)
+ * @param apiKey (optional)
+ * @return Completable
+ */
+ @DELETE("pet/{petId}")
+ Completable deletePet(
+ @retrofit2.http.Path("petId") Long petId, @retrofit2.http.Header("api_key") 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 Observable<List<Pet>>
+ */
+ @GET("pet/findByStatus")
+ Observable> findPetsByStatus(
+ @retrofit2.http.Query("status") CSVParams status
+ );
+
+ /**
+ * 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 Observable<Set<Pet>>
+ * @deprecated
+ */
+ @Deprecated
+ @GET("pet/findByTags")
+ Observable> findPetsByTags(
+ @retrofit2.http.Query("tags") CSVParams tags
+ );
+
+ /**
+ * Find pet by ID
+ * Returns a single pet
+ * @param petId ID of pet to return (required)
+ * @return Observable<Pet>
+ */
+ @GET("pet/{petId}")
+ Observable getPetById(
+ @retrofit2.http.Path("petId") Long petId
+ );
+
+ /**
+ * Update an existing pet
+ *
+ * @param body Pet object that needs to be added to the store (required)
+ * @return Completable
+ */
+ @Headers({
+ "Content-Type:application/json"
+ })
+ @PUT("pet")
+ Completable updatePet(
+ @retrofit2.http.Body Pet body
+ );
+
+ /**
+ * 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)
+ * @return Completable
+ */
+ @retrofit2.http.FormUrlEncoded
+ @POST("pet/{petId}")
+ Completable updatePetWithForm(
+ @retrofit2.http.Path("petId") Long petId, @retrofit2.http.Field("name") String name, @retrofit2.http.Field("status") 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 Observable<ModelApiResponse>
+ */
+ @retrofit2.http.Multipart
+ @POST("pet/{petId}/uploadImage")
+ Observable uploadFile(
+ @retrofit2.http.Path("petId") Long petId, @retrofit2.http.Part("additionalMetadata") String additionalMetadata, @retrofit2.http.Part MultipartBody.Part 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 Observable<ModelApiResponse>
+ */
+ @retrofit2.http.Multipart
+ @POST("fake/{petId}/uploadImageWithRequiredFile")
+ Observable uploadFileWithRequiredFile(
+ @retrofit2.http.Path("petId") Long petId, @retrofit2.http.Part MultipartBody.Part requiredFile, @retrofit2.http.Part("additionalMetadata") String additionalMetadata
+ );
+
+}
diff --git a/samples/client/petstore/java/retrofit2rx3/src/main/java/org/openapitools/client/api/StoreApi.java b/samples/client/petstore/java/retrofit2rx3/src/main/java/org/openapitools/client/api/StoreApi.java
new file mode 100644
index 000000000000..99ada34679ba
--- /dev/null
+++ b/samples/client/petstore/java/retrofit2rx3/src/main/java/org/openapitools/client/api/StoreApi.java
@@ -0,0 +1,63 @@
+package org.openapitools.client.api;
+
+import org.openapitools.client.CollectionFormats.*;
+
+import io.reactivex.rxjava3.core.Observable;
+import io.reactivex.rxjava3.core.Completable;
+import retrofit2.http.*;
+
+import okhttp3.RequestBody;
+import okhttp3.ResponseBody;
+import okhttp3.MultipartBody;
+
+import org.openapitools.client.model.Order;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public interface StoreApi {
+ /**
+ * 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)
+ * @return Completable
+ */
+ @DELETE("store/order/{order_id}")
+ Completable deleteOrder(
+ @retrofit2.http.Path("order_id") String orderId
+ );
+
+ /**
+ * Returns pet inventories by status
+ * Returns a map of status codes to quantities
+ * @return Observable<Map<String, Integer>>
+ */
+ @GET("store/inventory")
+ Observable