From 786747a14aee7cf4ba9e04516772749c1690b38f Mon Sep 17 00:00:00 2001
From: William Cheng <wing328hk@gmail.com>
Date: Thu, 10 Oct 2019 16:00:42 +0800
Subject: [PATCH 1/2] fix kotlin okhttp3, add CI test

---
 .gitignore                                    |  1 +
 bin/kotlin-client-okhttp3.sh                  |  4 +-
 .../codegen/CodegenConstants.java             |  3 --
 .../languages/AbstractKotlinCodegen.java      | 26 +++++++----
 .../kotlin-client/data_class.mustache         | 26 +++++++----
 .../kotlin-server/data_class.mustache         | 20 ++++++--
 pom.xml                                       |  1 +
 .../openapitools/client/models/ApiResponse.kt |  2 -
 .../openapitools/client/models/Category.kt    |  2 -
 .../org/openapitools/client/models/Order.kt   | 11 +----
 .../org/openapitools/client/models/Pet.kt     | 11 +----
 .../org/openapitools/client/models/Tag.kt     |  2 -
 .../org/openapitools/client/models/User.kt    |  2 -
 .../kotlin-okhttp3/.openapi-generator/VERSION |  2 +-
 .../client/petstore/kotlin-okhttp3/pom.xml    | 46 +++++++++++++++++++
 .../client/infrastructure/ApiClient.kt        |  2 +-
 .../openapitools/client/models/ApiResponse.kt |  8 ++--
 .../openapitools/client/models/Category.kt    |  8 ++--
 .../org/openapitools/client/models/Order.kt   | 15 ++----
 .../org/openapitools/client/models/Pet.kt     | 15 ++----
 .../org/openapitools/client/models/Tag.kt     |  8 ++--
 .../org/openapitools/client/models/User.kt    |  8 ++--
 .../org/openapitools/client/models/Order.kt   |  8 ----
 .../org/openapitools/client/models/Pet.kt     |  8 ----
 .../openapitools/client/models/ApiResponse.kt |  2 -
 .../openapitools/client/models/Category.kt    |  2 -
 .../org/openapitools/client/models/Order.kt   | 12 +----
 .../org/openapitools/client/models/Pet.kt     | 12 +----
 .../org/openapitools/client/models/Tag.kt     |  2 -
 .../org/openapitools/client/models/User.kt    |  2 -
 .../org/openapitools/client/models/Order.kt   |  8 ----
 .../org/openapitools/client/models/Pet.kt     |  8 ----
 32 files changed, 129 insertions(+), 158 deletions(-)
 create mode 100644 samples/client/petstore/kotlin-okhttp3/pom.xml

diff --git a/.gitignore b/.gitignore
index 18d2a7a1027..f73850f56b0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -188,6 +188,7 @@ samples/openapi3/client/petstore/kotlin/build
 samples/server/petstore/kotlin-server/ktor/build
 samples/server/petstore/kotlin-springboot/build
 samples/client/petstore/kotlin-multiplatform/build/
+samples/client/petstore/kotlin-okhttp3/build/
 \?
 
 # haskell
diff --git a/bin/kotlin-client-okhttp3.sh b/bin/kotlin-client-okhttp3.sh
index abc0b50669e..c2fbb300874 100755
--- a/bin/kotlin-client-okhttp3.sh
+++ b/bin/kotlin-client-okhttp3.sh
@@ -27,8 +27,8 @@ fi
 
 # if you've executed sbt assembly previously it will use that instead.
 export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties"
-ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-okhttp3 --library jvm-okhttp3 --additional-properties parcelizeModels=true -o samples/client/petstore/kotlin-okhttp3 $@"
+ags="generate -t modules/openapi-generator/src/main/resources/kotlin-client -i modules/openapi-generator/src/test/resources/2_0/petstore.yaml -g kotlin --artifact-id kotlin-petstore-okhttp3 --library jvm-okhttp3 -o samples/client/petstore/kotlin-okhttp3 $@"
 
 java ${JAVA_OPTS} -jar ${executable} ${ags}
 
-cp CI/samples.ci/client/petstore/kotlin-okhttp3/pom.xml samples/client/petstore/kotlin-okhttp3/pom.xml
+#cp CI/samples.ci/client/petstore/kotlin-okhttp3/pom.xml samples/client/petstore/kotlin-okhttp3/pom.xml
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java
index 18d530d21b5..8a1c158c9f1 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java
@@ -251,9 +251,6 @@ public class CodegenConstants {
     public static final String CASE_INSENSITIVE_RESPONSE_HEADERS = "caseInsensitiveResponseHeaders";
     public static final String CASE_INSENSITIVE_RESPONSE_HEADERS_DESC = "Make API response's headers case-insensitive";
 
-    public static final String NEEDS_DATACLASS_BODY = "needsDataClassBody";
-    public static final String NEEDS_DATACLASS_BODY_DESC = "Specifies if the kotlin data class needs a body with curly braces or not.";
-
     // Not user-configurable. System provided for use in templates.
 
     public static final String GENERATE_APIS = "generateApis";
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java
index 03cd06a017f..340bd746fd0 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java
@@ -25,6 +25,7 @@ import org.openapitools.codegen.CliOption;
 import org.openapitools.codegen.CodegenConfig;
 import org.openapitools.codegen.CodegenConstants;
 import org.openapitools.codegen.CodegenModel;
+import org.openapitools.codegen.CodegenProperty;
 import org.openapitools.codegen.DefaultCodegen;
 import org.openapitools.codegen.utils.ModelUtils;
 import org.slf4j.Logger;
@@ -58,7 +59,6 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
     protected boolean parcelizeModels = false;
     protected boolean serializableModel = false;
     protected boolean needsDataClassBody = false;
-    protected boolean hasEnums = false;
 
     protected CodegenConstants.ENUM_PROPERTY_NAMING_TYPE enumPropertyNaming = CodegenConstants.ENUM_PROPERTY_NAMING_TYPE.camelCase;
     protected SERIALIZATION_LIBRARY_TYPE serializationLibrary = SERIALIZATION_LIBRARY_TYPE.moshi;
@@ -236,7 +236,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
 
     @Override
     public String apiTestFileFolder() {
-        return (outputFolder + File.separator + testFolder + File.separator + apiPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar) ;
+        return (outputFolder + File.separator + testFolder + File.separator + apiPackage().replace('.', File.separatorChar)).replace('/', File.separatorChar);
     }
 
     @Override
@@ -285,7 +285,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
      * Sets the serialization engine for Kotlin
      *
      * @param enumSerializationLibrary The string representation of the serialization library as defined by
-     * {@link org.openapitools.codegen.languages.AbstractKotlinCodegen.SERIALIZATION_LIBRARY_TYPE}
+     *                                 {@link org.openapitools.codegen.languages.AbstractKotlinCodegen.SERIALIZATION_LIBRARY_TYPE}
      */
     public void setSerializationLibrary(final String enumSerializationLibrary) {
         try {
@@ -352,7 +352,20 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
 
     @Override
     public Map<String, Object> postProcessModels(Map<String, Object> objs) {
-        return postProcessModelsEnum(super.postProcessModels(objs));
+        objs = super.postProcessModelsEnum(objs);
+        List<Object> models = (List<Object>) objs.get("models");
+        for (Object _mo : models) {
+            Map<String, Object> mo = (Map<String, Object>) _mo;
+            CodegenModel cm = (CodegenModel) mo.get("model");
+
+            for (CodegenProperty var : cm.vars) {
+                if (var.isEnum || isSerializableModel()) {
+                    cm.vendorExtensions.put("x-has-data-class-body", true);
+                    break;
+                }
+            }
+        }
+        return postProcessModelsEnum(objs);
     }
 
     @Override
@@ -371,8 +384,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
         if (additionalProperties.containsKey(CodegenConstants.SERIALIZATION_LIBRARY)) {
             setSerializationLibrary((String) additionalProperties.get(CodegenConstants.SERIALIZATION_LIBRARY));
             additionalProperties.put(this.serializationLibrary.name(), true);
-        }
-        else {
+        } else {
             additionalProperties.put(this.serializationLibrary.name(), true);
         }
 
@@ -430,7 +442,6 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
             additionalProperties.put(CodegenConstants.PARCELIZE_MODELS, parcelizeModels);
         }
 
-        additionalProperties.put(CodegenConstants.NEEDS_DATACLASS_BODY, this.hasEnums || serializableModel);
         additionalProperties.put(CodegenConstants.API_PACKAGE, apiPackage());
         additionalProperties.put(CodegenConstants.MODEL_PACKAGE, modelPackage());
 
@@ -765,7 +776,6 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
         CodegenModel m = super.fromModel(name, schema);
         m.optionalVars = m.optionalVars.stream().distinct().collect(Collectors.toList());
         m.allVars.stream().filter(p -> !m.vars.contains(p)).forEach(p -> p.isInherited = true);
-        this.hasEnums = m.hasEnums;
         return m;
     }
 
diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache
index d23344f59d7..807425bc302 100644
--- a/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache
+++ b/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache
@@ -37,20 +37,25 @@ data class {{classname}} (
 ) {{^serializableModel}}{{#parcelizeModels}} : Parcelable{{/parcelizeModels}}{{/serializableModel}}
 {{^parcelizeModels}}{{#serializableModel}}: Serializable {{/serializableModel}}{{/parcelizeModels}}
 {{#parcelizeModels}}{{#serializableModel}} : Parcelable, Serializable {{/serializableModel}}{{/parcelizeModels}}
-{{#needsDataClassBody}}{{=<% %>=}}{<%={{ }}=%>{{/needsDataClassBody}}
+{{#vendorExtensions.x-has-data-class-body}}
+{
+{{/vendorExtensions.x-has-data-class-body}}
 {{#serializableModel}}
 	companion object {
 		private const val serialVersionUID: Long = 123
 	}
-{{/serializableModel}}{{#hasEnums}}
-{{#vars}}{{#isEnum}}
+{{/serializableModel}}
+{{#hasEnums}}
+{{#vars}}
+{{#isEnum}}
     /**
     * {{{description}}}
     * Values: {{#allowableValues}}{{#enumVars}}{{&name}}{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}}
     */
     {{#multiplatform}}@Serializable(with = {{nameInCamelCase}}.Serializer::class){{/multiplatform}}
     enum class {{{nameInCamelCase}}}(val value: {{#isListContainer}}{{{ nestedType }}}{{/isListContainer}}{{^isListContainer}}{{{dataType}}}{{/isListContainer}}){
-    {{#allowableValues}}{{#enumVars}}
+    {{#allowableValues}}
+    {{#enumVars}}
         {{#jvm}}
         {{#moshi}}
         @Json(name = {{{value}}}) {{&name}}({{{value}}}){{^-last}},{{/-last}}{{#-last}};{{/-last}}
@@ -62,11 +67,16 @@ data class {{classname}} (
         {{#multiplatform}}
         {{&name}}({{{value}}}){{^-last}},{{/-last}}{{#-last}};{{/-last}}
         {{/multiplatform}}
-    {{/enumVars}}{{/allowableValues}}
-
+    {{/enumVars}}
+    {{/allowableValues}}
     {{#multiplatform}}
+
         object Serializer : CommonEnumSerializer<{{nameInCamelCase}}>("{{nameInCamelCase}}", values(), values().map { it.value }.toTypedArray())
     {{/multiplatform}}
     }
-{{/isEnum}}{{/vars}}
-{{/hasEnums}}{{#needsDataClassBody}}{{=<% %>=}}}<%={{ }}=%>{{/needsDataClassBody}}
+{{/isEnum}}
+{{/vars}}
+{{/hasEnums}}
+{{#vendorExtensions.x-has-data-class-body}}
+}
+{{/vendorExtensions.x-has-data-class-body}}
diff --git a/modules/openapi-generator/src/main/resources/kotlin-server/data_class.mustache b/modules/openapi-generator/src/main/resources/kotlin-server/data_class.mustache
index eb5b0d565ee..6c251cee2a6 100644
--- a/modules/openapi-generator/src/main/resources/kotlin-server/data_class.mustache
+++ b/modules/openapi-generator/src/main/resources/kotlin-server/data_class.mustache
@@ -22,21 +22,31 @@ data class {{classname}} (
 {{/hasOptional}}{{/hasRequired}}{{#optionalVars}}{{>data_class_opt_var}}{{^-last}},
 {{/-last}}{{/optionalVars}}
 ) {{^serializableModel}}{{#parcelizeModels}} : Parcelable{{/parcelizeModels}}{{/serializableModel}}{{^parcelizeModels}}{{#serializableModel}}: Serializable {{/serializableModel}}{{/parcelizeModels}}{{#parcelizeModels}}{{#serializableModel}} : Parcelable, Serializable {{/serializableModel}}{{/parcelizeModels}}
-{{#needsDataClassBody}}{{=<% %>=}}{<%={{ }}=%>{{/needsDataClassBody}}
+{{#vendorExtensions.x-has-data-class-body}}
+{
+{{/vendorExtensions.x-has-data-class-body}}
 {{#serializableModel}}
 	companion object {
 		private const val serialVersionUID: Long = 123
 	}
 {{/serializableModel}}
 {{#hasEnums}}
-	{{#vars}}{{#isEnum}}
+	{{#vars}}
+    {{#isEnum}}
     /**
     * {{{description}}}
     * Values: {{#allowableValues}}{{#enumVars}}{{&name}}{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}}
     */
     enum class {{nameInCamelCase}}(val value: {{dataType}}){
-    {{#allowableValues}}{{#enumVars}}
+    {{#allowableValues}}
+    {{#enumVars}}
         {{&name}}({{{value}}}){{^-last}},{{/-last}}{{#-last}};{{/-last}}
-    {{/enumVars}}{{/allowableValues}}
+    {{/enumVars}}
+    {{/allowableValues}}
     }
-{{/isEnum}}{{/vars}}{{/hasEnums}}{{#needsDataClassBody}}{{=<% %>=}}}<%={{ }}=%>{{/needsDataClassBody}}
+{{/isEnum}}
+{{/vars}}
+{{/hasEnums}}
+{{#vendorExtensions.x-has-data-class-body}}
+}
+{{/vendorExtensions.x-has-data-class-body}}
diff --git a/pom.xml b/pom.xml
index ff8078abda1..4c28cd4778f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1245,6 +1245,7 @@
                 <module>samples/client/petstore/erlang-proper</module>
                 <module>samples/client/petstore/kotlin-multiplatform</module>
                 <module>samples/client/petstore/kotlin/</module>
+                <module>samples/client/petstore/kotlin-okhttp3/</module>
                 <module>samples/client/petstore/kotlin-threetenbp/</module>
                 <module>samples/client/petstore/kotlin-string/</module>
                 <!-- servers -->
diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ApiResponse.kt
index 831b50ef770..3f05f17779e 100644
--- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ApiResponse.kt
+++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ApiResponse.kt
@@ -29,5 +29,3 @@ data class ApiResponse (
 
 
 
-
-
diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt
index 2f08fc27d6b..eff7d12a4ab 100644
--- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt
@@ -27,5 +27,3 @@ data class Category (
 
 
 
-
-
diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt
index 57ebfbf1a67..7cf06b85d50 100644
--- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt
@@ -35,25 +35,18 @@ data class Order (
 ) 
 
 
-
-
-
+{
     /**
     * Order Status
     * Values: placed,approved,delivered
     */
     @Serializable(with = Status.Serializer::class)
     enum class Status(val value: kotlin.String){
-    
         placed("placed"),
-    
         approved("approved"),
-    
         delivered("delivered");
-    
 
         object Serializer : CommonEnumSerializer<Status>("Status", values(), values().map { it.value }.toTypedArray())
     }
-
-
+}
 
diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt
index 1e0d08a1b85..180c5ff98e6 100644
--- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt
@@ -37,25 +37,18 @@ data class Pet (
 ) 
 
 
-
-
-
+{
     /**
     * pet status in the store
     * Values: available,pending,sold
     */
     @Serializable(with = Status.Serializer::class)
     enum class Status(val value: kotlin.String){
-    
         available("available"),
-    
         pending("pending"),
-    
         sold("sold");
-    
 
         object Serializer : CommonEnumSerializer<Status>("Status", values(), values().map { it.value }.toTypedArray())
     }
-
-
+}
 
diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt
index 29ebfaf424f..6c5ce642e78 100644
--- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt
@@ -27,5 +27,3 @@ data class Tag (
 
 
 
-
-
diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt
index 78d48510ade..dd092dfd707 100644
--- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt
@@ -40,5 +40,3 @@ data class User (
 
 
 
-
-
diff --git a/samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION b/samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION
index 0e97bd19efb..c3a2c7076fa 100644
--- a/samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION
+++ b/samples/client/petstore/kotlin-okhttp3/.openapi-generator/VERSION
@@ -1 +1 @@
-4.1.3-SNAPSHOT
\ No newline at end of file
+4.2.0-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin-okhttp3/pom.xml b/samples/client/petstore/kotlin-okhttp3/pom.xml
new file mode 100644
index 00000000000..37cf659dcac
--- /dev/null
+++ b/samples/client/petstore/kotlin-okhttp3/pom.xml
@@ -0,0 +1,46 @@
+<project>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>io.swagger</groupId>
+    <artifactId>KotlinOkhttp3PetstoreClientTests</artifactId>
+    <packaging>pom</packaging>
+    <version>1.0-SNAPSHOT</version>
+    <name>Kotlin Okhttp3 Petstore Client</name>
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>copy-dependencies</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${project.build.directory}</outputDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>exec-maven-plugin</artifactId>
+                <version>1.2.1</version>
+                <executions>
+                    <execution>
+                        <id>bundle-test</id>
+                        <phase>integration-test</phase>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <configuration>
+                            <executable>gradle</executable>
+                            <arguments>
+                                <argument>test</argument>
+                            </arguments>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
index 5b4056205eb..3c5a60ccd30 100644
--- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
+++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
@@ -122,7 +122,7 @@ open class ApiClient(val baseUrl: String) {
         val contentType = (headers[ContentType] as String).substringBefore(";").toLowerCase()
 
         val request = when (requestConfig.method) {
-            RequestMethod.DELETE -> Request.Builder().url(url).delete()
+            RequestMethod.DELETE -> Request.Builder().url(url).delete(requestBody(body, contentType))
             RequestMethod.GET -> Request.Builder().url(url)
             RequestMethod.HEAD -> Request.Builder().url(url).head()
             RequestMethod.PATCH -> Request.Builder().url(url).patch(requestBody(body, contentType))
diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
index 4bbbf9bf027..47766821f18 100644
--- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
+++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
@@ -13,16 +13,12 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
-import android.os.Parcelable
-import kotlinx.android.parcel.Parcelize
-
 /**
  * Describes the result of uploading an image resource
  * @param code 
  * @param type 
  * @param message 
  */
-@Parcelize
 
 data class ApiResponse (
     @Json(name = "code")
@@ -31,5 +27,7 @@ data class ApiResponse (
     val type: kotlin.String? = null,
     @Json(name = "message")
     val message: kotlin.String? = null
-) : Parcelable
+) 
+
+
 
diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Category.kt
index 39e411bca0b..edb16cc1270 100644
--- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -13,20 +13,18 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
-import android.os.Parcelable
-import kotlinx.android.parcel.Parcelize
-
 /**
  * A category for a pet
  * @param id 
  * @param name 
  */
-@Parcelize
 
 data class Category (
     @Json(name = "id")
     val id: kotlin.Long? = null,
     @Json(name = "name")
     val name: kotlin.String? = null
-) : Parcelable
+) 
+
+
 
diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Order.kt
index 23d2053b786..bcdb149159b 100644
--- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -13,9 +13,6 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
-import android.os.Parcelable
-import kotlinx.android.parcel.Parcelize
-
 /**
  * An order for a pets from the pet store
  * @param id 
@@ -25,7 +22,6 @@ import kotlinx.android.parcel.Parcelize
  * @param status Order Status
  * @param complete 
  */
-@Parcelize
 
 data class Order (
     @Json(name = "id")
@@ -41,24 +37,19 @@ data class Order (
     val status: Order.Status? = null,
     @Json(name = "complete")
     val complete: kotlin.Boolean? = null
-) : Parcelable
-{
+) 
+
 
+{
     /**
     * Order Status
     * Values: placed,approved,delivered
     */
     
     enum class Status(val value: kotlin.String){
-    
         @Json(name = "placed") placed("placed"),
-    
         @Json(name = "approved") approved("approved"),
-    
         @Json(name = "delivered") delivered("delivered");
-    
-
     }
-
 }
 
diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Pet.kt
index 73c8e903679..f6f7371601f 100644
--- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -15,9 +15,6 @@ import org.openapitools.client.models.Category
 import org.openapitools.client.models.Tag
 
 import com.squareup.moshi.Json
-import android.os.Parcelable
-import kotlinx.android.parcel.Parcelize
-
 /**
  * A pet for sale in the pet store
  * @param id 
@@ -27,7 +24,6 @@ import kotlinx.android.parcel.Parcelize
  * @param tags 
  * @param status pet status in the store
  */
-@Parcelize
 
 data class Pet (
     @Json(name = "name")
@@ -43,24 +39,19 @@ data class Pet (
     /* pet status in the store */
     @Json(name = "status")
     val status: Pet.Status? = null
-) : Parcelable
-{
+) 
+
 
+{
     /**
     * pet status in the store
     * Values: available,pending,sold
     */
     
     enum class Status(val value: kotlin.String){
-    
         @Json(name = "available") available("available"),
-    
         @Json(name = "pending") pending("pending"),
-    
         @Json(name = "sold") sold("sold");
-    
-
     }
-
 }
 
diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Tag.kt
index 817461e739b..05dc7c9afef 100644
--- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -13,20 +13,18 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
-import android.os.Parcelable
-import kotlinx.android.parcel.Parcelize
-
 /**
  * A tag for a pet
  * @param id 
  * @param name 
  */
-@Parcelize
 
 data class Tag (
     @Json(name = "id")
     val id: kotlin.Long? = null,
     @Json(name = "name")
     val name: kotlin.String? = null
-) : Parcelable
+) 
+
+
 
diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/User.kt
index 9ed1a2a1188..537b01d3c27 100644
--- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -13,9 +13,6 @@ package org.openapitools.client.models
 
 
 import com.squareup.moshi.Json
-import android.os.Parcelable
-import kotlinx.android.parcel.Parcelize
-
 /**
  * A User who is purchasing from the pet store
  * @param id 
@@ -27,7 +24,6 @@ import kotlinx.android.parcel.Parcelize
  * @param phone 
  * @param userStatus User Status
  */
-@Parcelize
 
 data class User (
     @Json(name = "id")
@@ -47,5 +43,7 @@ data class User (
     /* User Status */
     @Json(name = "userStatus")
     val userStatus: kotlin.Int? = null
-) : Parcelable
+) 
+
+
 
diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Order.kt
index 451109b15f5..cb75cf72b89 100644
--- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -45,23 +45,15 @@ data class Order (
 	companion object {
 		private const val serialVersionUID: Long = 123
 	}
-
-
     /**
     * Order Status
     * Values: placed,approved,delivered
     */
     
     enum class Status(val value: kotlin.String){
-    
         @Json(name = "placed") placed("placed"),
-    
         @Json(name = "approved") approved("approved"),
-    
         @Json(name = "delivered") delivered("delivered");
-    
-
     }
-
 }
 
diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Pet.kt
index 9771dda248c..2f0e9aecfc1 100644
--- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -47,23 +47,15 @@ data class Pet (
 	companion object {
 		private const val serialVersionUID: Long = 123
 	}
-
-
     /**
     * pet status in the store
     * Values: available,pending,sold
     */
     
     enum class Status(val value: kotlin.String){
-    
         @Json(name = "available") available("available"),
-    
         @Json(name = "pending") pending("pending"),
-    
         @Json(name = "sold") sold("sold");
-    
-
     }
-
 }
 
diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
index 90b60bdccfc..47766821f18 100644
--- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
+++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
@@ -31,5 +31,3 @@ data class ApiResponse (
 
 
 
-
-
diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Category.kt
index f28b1fa2cdd..edb16cc1270 100644
--- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -28,5 +28,3 @@ data class Category (
 
 
 
-
-
diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Order.kt
index 800a7fd6406..a1e3c6e200d 100644
--- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -40,24 +40,16 @@ data class Order (
 ) 
 
 
-
-
-
+{
     /**
     * Order Status
     * Values: placed,approved,delivered
     */
     
     enum class Status(val value: kotlin.String){
-    
         @Json(name = "placed") placed("placed"),
-    
         @Json(name = "approved") approved("approved"),
-    
         @Json(name = "delivered") delivered("delivered");
-    
-
     }
-
-
+}
 
diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Pet.kt
index a85f990e1e8..f6f7371601f 100644
--- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -42,24 +42,16 @@ data class Pet (
 ) 
 
 
-
-
-
+{
     /**
     * pet status in the store
     * Values: available,pending,sold
     */
     
     enum class Status(val value: kotlin.String){
-    
         @Json(name = "available") available("available"),
-    
         @Json(name = "pending") pending("pending"),
-    
         @Json(name = "sold") sold("sold");
-    
-
     }
-
-
+}
 
diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Tag.kt
index 16c40f6039c..05dc7c9afef 100644
--- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -28,5 +28,3 @@ data class Tag (
 
 
 
-
-
diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/User.kt
index bb6442aefcb..537b01d3c27 100644
--- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -47,5 +47,3 @@ data class User (
 
 
 
-
-
diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Order.kt
index 2e883cccdd0..47862cfb7b6 100644
--- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -45,23 +45,15 @@ data class Order (
 	companion object {
 		private const val serialVersionUID: Long = 123
 	}
-
-
     /**
     * Order Status
     * Values: placed,approved,delivered
     */
     
     enum class Status(val value: kotlin.String){
-    
         @Json(name = "placed") placed("placed"),
-    
         @Json(name = "approved") approved("approved"),
-    
         @Json(name = "delivered") delivered("delivered");
-    
-
     }
-
 }
 
diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Pet.kt
index 9771dda248c..2f0e9aecfc1 100644
--- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -47,23 +47,15 @@ data class Pet (
 	companion object {
 		private const val serialVersionUID: Long = 123
 	}
-
-
     /**
     * pet status in the store
     * Values: available,pending,sold
     */
     
     enum class Status(val value: kotlin.String){
-    
         @Json(name = "available") available("available"),
-    
         @Json(name = "pending") pending("pending"),
-    
         @Json(name = "sold") sold("sold");
-    
-
     }
-
 }
 
-- 
GitLab


From 93587f42ced6437f1c55379049f4f7aecef8aec9 Mon Sep 17 00:00:00 2001
From: William Cheng <wing328hk@gmail.com>
Date: Thu, 10 Oct 2019 17:04:50 +0800
Subject: [PATCH 2/2] update kotlin server sample

---
 .../src/main/kotlin/org/openapitools/server/models/Order.kt  | 5 -----
 .../src/main/kotlin/org/openapitools/server/models/Pet.kt    | 5 -----
 2 files changed, 10 deletions(-)

diff --git a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Order.kt b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Order.kt
index d2200d829dc..dc79ef79e70 100644
--- a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Order.kt
+++ b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Order.kt
@@ -35,19 +35,14 @@ data class Order (
 	companion object {
 		private const val serialVersionUID: Long = 123
 	}
-	
     /**
     * Order Status
     * Values: placed,approved,delivered
     */
     enum class Status(val value: kotlin.String){
-    
         placed("placed"),
-    
         approved("approved"),
-    
         delivered("delivered");
-    
     }
 }
 
diff --git a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Pet.kt b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Pet.kt
index 4dd9cc4d650..acf21c3e9fd 100644
--- a/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Pet.kt
+++ b/samples/server/petstore/kotlin-server/ktor/src/main/kotlin/org/openapitools/server/models/Pet.kt
@@ -37,19 +37,14 @@ data class Pet (
 	companion object {
 		private const val serialVersionUID: Long = 123
 	}
-	
     /**
     * pet status in the store
     * Values: available,pending,sold
     */
     enum class Status(val value: kotlin.String){
-    
         available("available"),
-    
         pending("pending"),
-    
         sold("sold");
-    
     }
 }
 
-- 
GitLab