From c3fe225b38a1f0818e79471ba2e4bd3ee4fb4b55 Mon Sep 17 00:00:00 2001
From: William Cheng <wing328hk@gmail.com>
Date: Thu, 11 Jun 2020 18:29:33 +0800
Subject: [PATCH 1/8] fix isDefault in response

---
 .../java/org/openapitools/codegen/DefaultCodegen.java | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
index 15228ef7dda..8a0256d5c45 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
@@ -3613,7 +3613,7 @@ public class DefaultCodegen implements CodegenConfig {
                     op.uniqueItems = true;
                     imports.add(typeMapping.get(r.containerType));
                 }
-                r.isDefault = response == methodResponse;
+                //r.isDefault = response == methodResponse;
                 op.responses.add(r);
                 if (Boolean.TRUE.equals(r.isBinary) && Boolean.TRUE.equals(r.isDefault)) {
                     op.isResponseBinary = Boolean.TRUE;
@@ -3845,11 +3845,14 @@ public class DefaultCodegen implements CodegenConfig {
             }
         }
 
+        r.code = responseCode;
         if ("default".equals(responseCode) || "defaultResponse".equals(responseCode)) {
             r.code = "0";
-        } else {
-            r.code = responseCode;
+        }
             switch (r.code.charAt(0)) {
+                case '0':
+                    r.isDefault = true;
+                    break;
                 case '1':
                     r.is1xx = true;
                     break;
@@ -3868,7 +3871,7 @@ public class DefaultCodegen implements CodegenConfig {
                 default:
                     throw new RuntimeException("Invalid response code " + responseCode);
             }
-        }
+        
         Schema responseSchema;
         if (this.openAPI != null && this.openAPI.getComponents() != null) {
             responseSchema = ModelUtils.unaliasSchema(this.openAPI, ModelUtils.getSchemaFromResponse(response),
-- 
GitLab


From 9107b709cf72865150aae79d52972bff427a187d Mon Sep 17 00:00:00 2001
From: William Cheng <wing328hk@gmail.com>
Date: Thu, 11 Jun 2020 18:53:54 +0800
Subject: [PATCH 2/8] fix response

---
 .../org/openapitools/codegen/DefaultCodegen.java   | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
index 8a0256d5c45..62ee5a9856b 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
@@ -3615,10 +3615,10 @@ public class DefaultCodegen implements CodegenConfig {
                 }
                 //r.isDefault = response == methodResponse;
                 op.responses.add(r);
-                if (Boolean.TRUE.equals(r.isBinary) && Boolean.TRUE.equals(r.isDefault)) {
+                if (Boolean.TRUE.equals(r.isBinary) && Boolean.TRUE.equals(r.is2xx) && Boolean.FALSE.equals(op.isResponseBinary)) {
                     op.isResponseBinary = Boolean.TRUE;
                 }
-                if (Boolean.TRUE.equals(r.isFile) && Boolean.TRUE.equals(r.isDefault)) {
+                if (Boolean.TRUE.equals(r.isFile) && Boolean.TRUE.equals(r.is2xx) && Boolean.FALSE.equals(op.isResponseFile)) {
                     op.isResponseFile = Boolean.TRUE;
                 }
             }
@@ -3845,14 +3845,12 @@ public class DefaultCodegen implements CodegenConfig {
             }
         }
 
-        r.code = responseCode;
         if ("default".equals(responseCode) || "defaultResponse".equals(responseCode)) {
             r.code = "0";
-        }
+            r.isDefault = true;
+        } else {
+            r.code = responseCode;
             switch (r.code.charAt(0)) {
-                case '0':
-                    r.isDefault = true;
-                    break;
                 case '1':
                     r.is1xx = true;
                     break;
@@ -3871,7 +3869,7 @@ public class DefaultCodegen implements CodegenConfig {
                 default:
                     throw new RuntimeException("Invalid response code " + responseCode);
             }
-        
+        }
         Schema responseSchema;
         if (this.openAPI != null && this.openAPI.getComponents() != null) {
             responseSchema = ModelUtils.unaliasSchema(this.openAPI, ModelUtils.getSchemaFromResponse(response),
-- 
GitLab


From 285bed292a42c57bdda4ac63a19c3390839f8995 Mon Sep 17 00:00:00 2001
From: William Cheng <wing328hk@gmail.com>
Date: Thu, 11 Jun 2020 20:46:10 +0800
Subject: [PATCH 3/8] update samples

---
 .../org/openapitools/client/api/PetApi.scala  | 14 +++++------
 .../openapitools/client/api/StoreApi.scala    |  6 ++---
 .../org/openapitools/client/api/UserApi.scala |  4 ++--
 .../client/elm/src/Api/Request/Default.elm    | 24 +++++++++----------
 .../client/elm/src/Api/Request/Primitive.elm  |  4 ++--
 .../Controller/PetController.php              |  8 +++----
 .../Controller/StoreController.php            |  6 ++---
 .../Controller/UserController.php             |  4 ++--
 8 files changed, 35 insertions(+), 35 deletions(-)

diff --git a/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/PetApi.scala b/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/PetApi.scala
index c0ba5d4c6ae..d3f44100454 100644
--- a/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/PetApi.scala
+++ b/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/PetApi.scala
@@ -35,7 +35,7 @@ class PetApi(baseUrl: String) {
   def addPet(pet: Pet): ApiRequest[Pet] =
     ApiRequest[Pet](ApiMethods.POST, baseUrl, "/pet", "application/json")
       .withBody(pet)
-      .withSuccessResponse[Pet](200)
+      .withErrorResponse[Pet](200)
       .withErrorResponse[Unit](405)
       
 
@@ -65,7 +65,7 @@ class PetApi(baseUrl: String) {
   def findPetsByStatus(status: Seq[String]): ApiRequest[Seq[Pet]] =
     ApiRequest[Seq[Pet]](ApiMethods.GET, baseUrl, "/pet/findByStatus", "application/json")
       .withQueryParam("status", ArrayValues(status, CSV))
-      .withSuccessResponse[Seq[Pet]](200)
+      .withErrorResponse[Seq[Pet]](200)
       .withErrorResponse[Unit](400)
       
 
@@ -81,7 +81,7 @@ class PetApi(baseUrl: String) {
   def findPetsByTags(tags: Seq[String]): ApiRequest[Seq[Pet]] =
     ApiRequest[Seq[Pet]](ApiMethods.GET, baseUrl, "/pet/findByTags", "application/json")
       .withQueryParam("tags", ArrayValues(tags, CSV))
-      .withSuccessResponse[Seq[Pet]](200)
+      .withErrorResponse[Seq[Pet]](200)
       .withErrorResponse[Unit](400)
       
 
@@ -102,7 +102,7 @@ class PetApi(baseUrl: String) {
     ApiRequest[Pet](ApiMethods.GET, baseUrl, "/pet/{petId}", "application/json")
       .withApiKey(apiKey, "api_key", HEADER)
       .withPathParam("petId", petId)
-      .withSuccessResponse[Pet](200)
+      .withErrorResponse[Pet](200)
       .withErrorResponse[Unit](400)
       .withErrorResponse[Unit](404)
       
@@ -119,7 +119,7 @@ class PetApi(baseUrl: String) {
   def updatePet(pet: Pet): ApiRequest[Pet] =
     ApiRequest[Pet](ApiMethods.PUT, baseUrl, "/pet", "application/json")
       .withBody(pet)
-      .withSuccessResponse[Pet](200)
+      .withErrorResponse[Pet](200)
       .withErrorResponse[Unit](400)
       .withErrorResponse[Unit](404)
       .withErrorResponse[Unit](405)
@@ -139,7 +139,7 @@ class PetApi(baseUrl: String) {
       .withFormParam("name", name)
       .withFormParam("status", status)
       .withPathParam("petId", petId)
-      .withSuccessResponse[Unit](200)
+      .withErrorResponse[Unit](200)
       .withErrorResponse[Unit](405)
       
 
@@ -156,7 +156,7 @@ class PetApi(baseUrl: String) {
       .withFormParam("additionalMetadata", additionalMetadata)
       .withFormParam("file", file)
       .withPathParam("petId", petId)
-      .withSuccessResponse[ApiResponse](200)
+      .withErrorResponse[ApiResponse](200)
       
 
 
diff --git a/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/StoreApi.scala b/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/StoreApi.scala
index ba8a34ef6ec..e1b685d6876 100644
--- a/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/StoreApi.scala
+++ b/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/StoreApi.scala
@@ -51,7 +51,7 @@ class StoreApi(baseUrl: String) {
   def getInventory()(implicit apiKey: ApiKeyValue): ApiRequest[Map[String, Int]] =
     ApiRequest[Map[String, Int]](ApiMethods.GET, baseUrl, "/store/inventory", "application/json")
       .withApiKey(apiKey, "api_key", HEADER)
-      .withSuccessResponse[Map[String, Int]](200)
+      .withErrorResponse[Map[String, Int]](200)
       
 
   /**
@@ -67,7 +67,7 @@ class StoreApi(baseUrl: String) {
   def getOrderById(orderId: Long): ApiRequest[Order] =
     ApiRequest[Order](ApiMethods.GET, baseUrl, "/store/order/{orderId}", "application/json")
       .withPathParam("orderId", orderId)
-      .withSuccessResponse[Order](200)
+      .withErrorResponse[Order](200)
       .withErrorResponse[Unit](400)
       .withErrorResponse[Unit](404)
       
@@ -82,7 +82,7 @@ class StoreApi(baseUrl: String) {
   def placeOrder(order: Order): ApiRequest[Order] =
     ApiRequest[Order](ApiMethods.POST, baseUrl, "/store/order", "application/json")
       .withBody(order)
-      .withSuccessResponse[Order](200)
+      .withErrorResponse[Order](200)
       .withErrorResponse[Unit](400)
       
 
diff --git a/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/UserApi.scala b/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/UserApi.scala
index 54809067608..a7f00850e34 100644
--- a/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/UserApi.scala
+++ b/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/UserApi.scala
@@ -104,7 +104,7 @@ class UserApi(baseUrl: String) {
   def getUserByName(username: String): ApiRequest[User] =
     ApiRequest[User](ApiMethods.GET, baseUrl, "/user/{username}", "application/json")
       .withPathParam("username", username)
-      .withSuccessResponse[User](200)
+      .withErrorResponse[User](200)
       .withErrorResponse[Unit](400)
       .withErrorResponse[Unit](404)
       
@@ -125,7 +125,7 @@ class UserApi(baseUrl: String) {
     ApiRequest[String](ApiMethods.GET, baseUrl, "/user/login", "application/json")
       .withQueryParam("username", username)
       .withQueryParam("password", password)
-      .withSuccessResponse[String](200)
+      .withErrorResponse[String](200)
       .withErrorResponse[Unit](400)
       
   object LoginUserHeaders {
diff --git a/samples/openapi3/client/elm/src/Api/Request/Default.elm b/samples/openapi3/client/elm/src/Api/Request/Default.elm
index 23e998284eb..548df127583 100644
--- a/samples/openapi3/client/elm/src/Api/Request/Default.elm
+++ b/samples/openapi3/client/elm/src/Api/Request/Default.elm
@@ -114,7 +114,7 @@ stringFromEnum model =
 
 
 
-headerPost : String -> Maybe Int -> Maybe HeaderType -> Api.Request String
+headerPost : String -> Maybe Int -> Maybe HeaderType -> Api.Request 
 headerPost string_header integer_header headerType_header =
     Api.request
         "POST"
@@ -123,11 +123,11 @@ headerPost string_header integer_header headerType_header =
         []
         [ ( "string", Just <| identity string_header ), ( "integer", Maybe.map String.fromInt integer_header ), ( "headerType", Maybe.map stringFromHeaderType headerType_header ) ]
         Nothing
-        Json.Decode.string
+        
 
 
 
-maybeGet : Api.Request Api.Data.Maybe_
+maybeGet : Api.Request 
 maybeGet =
     Api.request
         "GET"
@@ -136,11 +136,11 @@ maybeGet =
         []
         []
         Nothing
-        Api.Data.maybeDecoder
+        
 
 
 
-pathStringIntegerEnumerationGet : String -> Int -> Enumeration -> Api.Request ()
+pathStringIntegerEnumerationGet : String -> Int -> Enumeration -> Api.Request 
 pathStringIntegerEnumerationGet string_path integer_path enumeration_path =
     Api.request
         "GET"
@@ -149,11 +149,11 @@ pathStringIntegerEnumerationGet string_path integer_path enumeration_path =
         []
         []
         Nothing
-        (Json.Decode.succeed ())
+        
 
 
 
-queryGet : Maybe String -> Maybe Int -> Maybe Enum -> Api.Request ()
+queryGet : Maybe String -> Maybe Int -> Maybe Enum -> Api.Request 
 queryGet string_query int_query enum_query =
     Api.request
         "GET"
@@ -162,11 +162,11 @@ queryGet string_query int_query enum_query =
         [ ( "string", Maybe.map identity string_query ), ( "int", Maybe.map String.fromInt int_query ), ( "enum", Maybe.map stringFromEnum enum_query ) ]
         []
         Nothing
-        (Json.Decode.succeed ())
+        
 
 
 
-securedPost : String -> Api.Request ()
+securedPost : String -> Api.Request 
 securedPost auth_token =
     Api.request
         "POST"
@@ -175,12 +175,12 @@ securedPost auth_token =
         []
         []
         Nothing
-        (Json.Decode.succeed ())
+        
         |> Api.withBearerToken auth_token
 
 
 
-uuidGet : Maybe Uuid -> Api.Request Uuid
+uuidGet : Maybe Uuid -> Api.Request 
 uuidGet value_query =
     Api.request
         "GET"
@@ -189,4 +189,4 @@ uuidGet value_query =
         [ ( "value", Maybe.map Uuid.toString value_query ) ]
         []
         Nothing
-        Uuid.decoder
+        
diff --git a/samples/openapi3/client/elm/src/Api/Request/Primitive.elm b/samples/openapi3/client/elm/src/Api/Request/Primitive.elm
index 05f36eea518..b270e7725ae 100644
--- a/samples/openapi3/client/elm/src/Api/Request/Primitive.elm
+++ b/samples/openapi3/client/elm/src/Api/Request/Primitive.elm
@@ -26,7 +26,7 @@ import Json.Encode
 
 
 
-update : Api.Data.Primitive -> Api.Request Api.Data.Primitive
+update : Api.Data.Primitive -> Api.Request 
 update primitive_body =
     Api.request
         "POST"
@@ -35,4 +35,4 @@ update primitive_body =
         []
         []
         (Just (Api.Data.encodePrimitive primitive_body))
-        Api.Data.primitiveDecoder
+        
diff --git a/samples/server/petstore/php-symfony/SymfonyBundle-php/Controller/PetController.php b/samples/server/petstore/php-symfony/SymfonyBundle-php/Controller/PetController.php
index 3f574ee2e49..ba7ecc50c5c 100644
--- a/samples/server/petstore/php-symfony/SymfonyBundle-php/Controller/PetController.php
+++ b/samples/server/petstore/php-symfony/SymfonyBundle-php/Controller/PetController.php
@@ -275,7 +275,7 @@ class PetController extends Controller
             $result = $handler->findPetsByStatus($status, $responseCode, $responseHeaders);
 
             // Find default response message
-            $message = 'successful operation';
+            $message = '';
 
             // Find a more specific message, if available
             switch ($responseCode) {
@@ -363,7 +363,7 @@ class PetController extends Controller
             $result = $handler->findPetsByTags($tags, $responseCode, $responseHeaders);
 
             // Find default response message
-            $message = 'successful operation';
+            $message = '';
 
             // Find a more specific message, if available
             switch ($responseCode) {
@@ -448,7 +448,7 @@ class PetController extends Controller
             $result = $handler->getPetById($petId, $responseCode, $responseHeaders);
 
             // Find default response message
-            $message = 'successful operation';
+            $message = '';
 
             // Find a more specific message, if available
             switch ($responseCode) {
@@ -727,7 +727,7 @@ class PetController extends Controller
             $result = $handler->uploadFile($petId, $additionalMetadata, $file, $responseCode, $responseHeaders);
 
             // Find default response message
-            $message = 'successful operation';
+            $message = '';
 
             // Find a more specific message, if available
             switch ($responseCode) {
diff --git a/samples/server/petstore/php-symfony/SymfonyBundle-php/Controller/StoreController.php b/samples/server/petstore/php-symfony/SymfonyBundle-php/Controller/StoreController.php
index 288d35c8a70..d6e9e33bb36 100644
--- a/samples/server/petstore/php-symfony/SymfonyBundle-php/Controller/StoreController.php
+++ b/samples/server/petstore/php-symfony/SymfonyBundle-php/Controller/StoreController.php
@@ -162,7 +162,7 @@ class StoreController extends Controller
             $result = $handler->getInventory($responseCode, $responseHeaders);
 
             // Find default response message
-            $message = 'successful operation';
+            $message = '';
 
             // Find a more specific message, if available
             switch ($responseCode) {
@@ -241,7 +241,7 @@ class StoreController extends Controller
             $result = $handler->getOrderById($orderId, $responseCode, $responseHeaders);
 
             // Find default response message
-            $message = 'successful operation';
+            $message = '';
 
             // Find a more specific message, if available
             switch ($responseCode) {
@@ -334,7 +334,7 @@ class StoreController extends Controller
             $result = $handler->placeOrder($body, $responseCode, $responseHeaders);
 
             // Find default response message
-            $message = 'successful operation';
+            $message = '';
 
             // Find a more specific message, if available
             switch ($responseCode) {
diff --git a/samples/server/petstore/php-symfony/SymfonyBundle-php/Controller/UserController.php b/samples/server/petstore/php-symfony/SymfonyBundle-php/Controller/UserController.php
index 83b8d08027a..3328426b049 100644
--- a/samples/server/petstore/php-symfony/SymfonyBundle-php/Controller/UserController.php
+++ b/samples/server/petstore/php-symfony/SymfonyBundle-php/Controller/UserController.php
@@ -406,7 +406,7 @@ class UserController extends Controller
             $result = $handler->getUserByName($username, $responseCode, $responseHeaders);
 
             // Find default response message
-            $message = 'successful operation';
+            $message = '';
 
             // Find a more specific message, if available
             switch ($responseCode) {
@@ -499,7 +499,7 @@ class UserController extends Controller
             $result = $handler->loginUser($username, $password, $responseCode, $responseHeaders);
 
             // Find default response message
-            $message = 'successful operation';
+            $message = '';
 
             // Find a more specific message, if available
             switch ($responseCode) {
-- 
GitLab


From 757f5abad6d27424f2eca4435678480015345550 Mon Sep 17 00:00:00 2001
From: William Cheng <wing328hk@gmail.com>
Date: Thu, 11 Jun 2020 23:56:04 +0800
Subject: [PATCH 4/8] fix scala akka template

---
 .../scala-akka-client/responseState.mustache       |  2 +-
 .../scala/org/openapitools/client/api/PetApi.scala | 14 +++++++-------
 .../org/openapitools/client/api/StoreApi.scala     |  6 +++---
 .../org/openapitools/client/api/UserApi.scala      | 12 ++++++------
 4 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/modules/openapi-generator/src/main/resources/scala-akka-client/responseState.mustache b/modules/openapi-generator/src/main/resources/scala-akka-client/responseState.mustache
index d1b3798e6de..5b428552346 100644
--- a/modules/openapi-generator/src/main/resources/scala-akka-client/responseState.mustache
+++ b/modules/openapi-generator/src/main/resources/scala-akka-client/responseState.mustache
@@ -1 +1 @@
-{{#isDefault}}Success{{/isDefault}}{{^isDefault}}Error{{/isDefault}}
\ No newline at end of file
+{{#is2xx}}Success{{/is2xx}}{{#is3xx}}Success{{/is3xx}}{{#is4xx}}Error{{/is4xx}}{{#is5xx}}Error{{/is5xx}}{{#isDefault}}Error{{/isDefault}}
\ No newline at end of file
diff --git a/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/PetApi.scala b/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/PetApi.scala
index d3f44100454..c0ba5d4c6ae 100644
--- a/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/PetApi.scala
+++ b/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/PetApi.scala
@@ -35,7 +35,7 @@ class PetApi(baseUrl: String) {
   def addPet(pet: Pet): ApiRequest[Pet] =
     ApiRequest[Pet](ApiMethods.POST, baseUrl, "/pet", "application/json")
       .withBody(pet)
-      .withErrorResponse[Pet](200)
+      .withSuccessResponse[Pet](200)
       .withErrorResponse[Unit](405)
       
 
@@ -65,7 +65,7 @@ class PetApi(baseUrl: String) {
   def findPetsByStatus(status: Seq[String]): ApiRequest[Seq[Pet]] =
     ApiRequest[Seq[Pet]](ApiMethods.GET, baseUrl, "/pet/findByStatus", "application/json")
       .withQueryParam("status", ArrayValues(status, CSV))
-      .withErrorResponse[Seq[Pet]](200)
+      .withSuccessResponse[Seq[Pet]](200)
       .withErrorResponse[Unit](400)
       
 
@@ -81,7 +81,7 @@ class PetApi(baseUrl: String) {
   def findPetsByTags(tags: Seq[String]): ApiRequest[Seq[Pet]] =
     ApiRequest[Seq[Pet]](ApiMethods.GET, baseUrl, "/pet/findByTags", "application/json")
       .withQueryParam("tags", ArrayValues(tags, CSV))
-      .withErrorResponse[Seq[Pet]](200)
+      .withSuccessResponse[Seq[Pet]](200)
       .withErrorResponse[Unit](400)
       
 
@@ -102,7 +102,7 @@ class PetApi(baseUrl: String) {
     ApiRequest[Pet](ApiMethods.GET, baseUrl, "/pet/{petId}", "application/json")
       .withApiKey(apiKey, "api_key", HEADER)
       .withPathParam("petId", petId)
-      .withErrorResponse[Pet](200)
+      .withSuccessResponse[Pet](200)
       .withErrorResponse[Unit](400)
       .withErrorResponse[Unit](404)
       
@@ -119,7 +119,7 @@ class PetApi(baseUrl: String) {
   def updatePet(pet: Pet): ApiRequest[Pet] =
     ApiRequest[Pet](ApiMethods.PUT, baseUrl, "/pet", "application/json")
       .withBody(pet)
-      .withErrorResponse[Pet](200)
+      .withSuccessResponse[Pet](200)
       .withErrorResponse[Unit](400)
       .withErrorResponse[Unit](404)
       .withErrorResponse[Unit](405)
@@ -139,7 +139,7 @@ class PetApi(baseUrl: String) {
       .withFormParam("name", name)
       .withFormParam("status", status)
       .withPathParam("petId", petId)
-      .withErrorResponse[Unit](200)
+      .withSuccessResponse[Unit](200)
       .withErrorResponse[Unit](405)
       
 
@@ -156,7 +156,7 @@ class PetApi(baseUrl: String) {
       .withFormParam("additionalMetadata", additionalMetadata)
       .withFormParam("file", file)
       .withPathParam("petId", petId)
-      .withErrorResponse[ApiResponse](200)
+      .withSuccessResponse[ApiResponse](200)
       
 
 
diff --git a/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/StoreApi.scala b/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/StoreApi.scala
index e1b685d6876..ba8a34ef6ec 100644
--- a/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/StoreApi.scala
+++ b/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/StoreApi.scala
@@ -51,7 +51,7 @@ class StoreApi(baseUrl: String) {
   def getInventory()(implicit apiKey: ApiKeyValue): ApiRequest[Map[String, Int]] =
     ApiRequest[Map[String, Int]](ApiMethods.GET, baseUrl, "/store/inventory", "application/json")
       .withApiKey(apiKey, "api_key", HEADER)
-      .withErrorResponse[Map[String, Int]](200)
+      .withSuccessResponse[Map[String, Int]](200)
       
 
   /**
@@ -67,7 +67,7 @@ class StoreApi(baseUrl: String) {
   def getOrderById(orderId: Long): ApiRequest[Order] =
     ApiRequest[Order](ApiMethods.GET, baseUrl, "/store/order/{orderId}", "application/json")
       .withPathParam("orderId", orderId)
-      .withErrorResponse[Order](200)
+      .withSuccessResponse[Order](200)
       .withErrorResponse[Unit](400)
       .withErrorResponse[Unit](404)
       
@@ -82,7 +82,7 @@ class StoreApi(baseUrl: String) {
   def placeOrder(order: Order): ApiRequest[Order] =
     ApiRequest[Order](ApiMethods.POST, baseUrl, "/store/order", "application/json")
       .withBody(order)
-      .withErrorResponse[Order](200)
+      .withSuccessResponse[Order](200)
       .withErrorResponse[Unit](400)
       
 
diff --git a/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/UserApi.scala b/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/UserApi.scala
index a7f00850e34..83a7a46de65 100644
--- a/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/UserApi.scala
+++ b/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/api/UserApi.scala
@@ -38,7 +38,7 @@ class UserApi(baseUrl: String) {
     ApiRequest[Unit](ApiMethods.POST, baseUrl, "/user", "application/json")
       .withApiKey(apiKey, "AUTH_KEY", COOKIE)
       .withBody(user)
-      .withDefaultSuccessResponse[Unit]
+      .withDefaultErrorResponse[Unit]
       
 
   /**
@@ -54,7 +54,7 @@ class UserApi(baseUrl: String) {
     ApiRequest[Unit](ApiMethods.POST, baseUrl, "/user/createWithArray", "application/json")
       .withApiKey(apiKey, "AUTH_KEY", COOKIE)
       .withBody(user)
-      .withDefaultSuccessResponse[Unit]
+      .withDefaultErrorResponse[Unit]
       
 
   /**
@@ -70,7 +70,7 @@ class UserApi(baseUrl: String) {
     ApiRequest[Unit](ApiMethods.POST, baseUrl, "/user/createWithList", "application/json")
       .withApiKey(apiKey, "AUTH_KEY", COOKIE)
       .withBody(user)
-      .withDefaultSuccessResponse[Unit]
+      .withDefaultErrorResponse[Unit]
       
 
   /**
@@ -104,7 +104,7 @@ class UserApi(baseUrl: String) {
   def getUserByName(username: String): ApiRequest[User] =
     ApiRequest[User](ApiMethods.GET, baseUrl, "/user/{username}", "application/json")
       .withPathParam("username", username)
-      .withErrorResponse[User](200)
+      .withSuccessResponse[User](200)
       .withErrorResponse[Unit](400)
       .withErrorResponse[Unit](404)
       
@@ -125,7 +125,7 @@ class UserApi(baseUrl: String) {
     ApiRequest[String](ApiMethods.GET, baseUrl, "/user/login", "application/json")
       .withQueryParam("username", username)
       .withQueryParam("password", password)
-      .withErrorResponse[String](200)
+      .withSuccessResponse[String](200)
       .withErrorResponse[Unit](400)
       
   object LoginUserHeaders {
@@ -144,7 +144,7 @@ class UserApi(baseUrl: String) {
   def logoutUser()(implicit apiKey: ApiKeyValue): ApiRequest[Unit] =
     ApiRequest[Unit](ApiMethods.GET, baseUrl, "/user/logout", "application/json")
       .withApiKey(apiKey, "AUTH_KEY", COOKIE)
-      .withDefaultSuccessResponse[Unit]
+      .withDefaultErrorResponse[Unit]
       
 
   /**
-- 
GitLab


From 0d0e05908ee69746959279e6613b797a1f72a83f Mon Sep 17 00:00:00 2001
From: William Cheng <wing328hk@gmail.com>
Date: Fri, 12 Jun 2020 00:01:51 +0800
Subject: [PATCH 5/8] fix elm template

---
 .../main/resources/elm/fieldDecoder.mustache  |  4 +--
 .../src/main/resources/elm/operation.mustache |  6 ++---
 .../client/elm/src/Api/Request/Default.elm    | 25 ++++++++++---------
 .../client/elm/src/Api/Request/Primitive.elm  |  5 ++--
 4 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/modules/openapi-generator/src/main/resources/elm/fieldDecoder.mustache b/modules/openapi-generator/src/main/resources/elm/fieldDecoder.mustache
index 7495eb50c77..e964653d447 100644
--- a/modules/openapi-generator/src/main/resources/elm/fieldDecoder.mustache
+++ b/modules/openapi-generator/src/main/resources/elm/fieldDecoder.mustache
@@ -12,6 +12,6 @@
 {{#isBoolean}}Json.Decode.bool{{/isBoolean}}
 {{#isUuid}}Uuid.decoder{{/isUuid}}
 {{^isDateTime}}{{^isDate}}{{^isByteArray}}{{^isBinary}}{{^isString}}{{^isNumeric}}{{^isBoolean}}{{^isUuid}}
-{{#isDefault}}Api.Data.{{/isDefault}}{{#lambda.camelcase}}{{#isEnum}}{{classname}}{{enumName}}{{/isEnum}}{{^isEnum}}{{dataType}}{{/isEnum}}{{/lambda.camelcase}}Decoder
+{{#is2xx}}Api.Data.{{/is2xx}}{{#is3xx}}Api.Data.{{/is3xx}}{{#lambda.camelcase}}{{#isEnum}}{{classname}}{{enumName}}{{/isEnum}}{{^isEnum}}{{dataType}}{{/isEnum}}{{/lambda.camelcase}}Decoder
 {{/isUuid}}{{/isBoolean}}{{/isNumeric}}{{/isString}}{{/isBinary}}{{/isByteArray}}{{/isDate}}{{/isDateTime}}
-{{/lambda.removeWhitespace}}
\ No newline at end of file
+{{/lambda.removeWhitespace}}
diff --git a/modules/openapi-generator/src/main/resources/elm/operation.mustache b/modules/openapi-generator/src/main/resources/elm/operation.mustache
index ed872dddc56..ed26610244a 100644
--- a/modules/openapi-generator/src/main/resources/elm/operation.mustache
+++ b/modules/openapi-generator/src/main/resources/elm/operation.mustache
@@ -33,7 +33,7 @@ import Uuid exposing (Uuid){{/includeUuid}}
 {-| {{{notes}}}
 -}
 {{/notes}}
-{{operationId}} : {{#allParams}}{{^required}}Maybe {{/required}}{{#isListContainer}}List {{/isListContainer}}{{#datatypeWithEnum}}{{.}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{#isModel}}Api.Data.{{/isModel}}{{dataType}}{{/datatypeWithEnum}} -> {{/allParams}}{{#authMethods}}{{#isBasicBearer}}String -> {{/isBasicBearer}}{{/authMethods}}Api.Request {{^responses}}(){{/responses}}{{#responses}}{{#isDefault}}{{^dataType}}(){{/dataType}}{{#isMapContainer}}(Dict.Dict String {{/isMapContainer}}{{#isListContainer}}(List {{/isListContainer}}{{^primitiveType}}{{^isUuid}}Api.Data.{{/isUuid}}{{/primitiveType}}{{#items}}{{#isModel}}Api.Data.{{/isModel}}{{/items}}{{dataType}}{{#isListContainer}}){{/isListContainer}}{{#isMapContainer}}){{/isMapContainer}}{{/isDefault}}{{/responses}}
+{{operationId}} : {{#allParams}}{{^required}}Maybe {{/required}}{{#isListContainer}}List {{/isListContainer}}{{#datatypeWithEnum}}{{.}}{{/datatypeWithEnum}}{{^datatypeWithEnum}}{{#isModel}}Api.Data.{{/isModel}}{{dataType}}{{/datatypeWithEnum}} -> {{/allParams}}{{#authMethods}}{{#isBasicBearer}}String -> {{/isBasicBearer}}{{/authMethods}}Api.Request {{^responses}}(){{/responses}}{{#responses}}{{#is2xx}}{{^dataType}}(){{/dataType}}{{#isMapContainer}}(Dict.Dict String {{/isMapContainer}}{{#isListContainer}}(List {{/isListContainer}}{{^primitiveType}}{{^isUuid}}Api.Data.{{/isUuid}}{{/primitiveType}}{{#items}}{{#isModel}}Api.Data.{{/isModel}}{{/items}}{{dataType}}{{#isListContainer}}){{/isListContainer}}{{#isMapContainer}}){{/isMapContainer}}{{/is2xx}}{{/responses}}
 {{operationId}}{{#allParams}} {{>paramName}}{{/allParams}}{{#authMethods}}{{#isBasicBearer}} auth_token{{/isBasicBearer}}{{/authMethods}} =
     Api.request
         "{{httpMethod}}"
@@ -42,6 +42,6 @@ import Uuid exposing (Uuid){{/includeUuid}}
         [{{#queryParams}} ( "{{baseName}}", {{#required}}Just <| {{/required}}{{^required}}Maybe.map {{/required}}{{>paramToString}} {{>paramName}} ){{#-last}} {{/-last}}{{^-last}},{{/-last}}{{/queryParams}}]
         [{{#headerParams}} ( "{{baseName}}", {{#required}}Just <| {{/required}}{{^required}}Maybe.map {{/required}}{{>paramToString}} {{>paramName}} ){{#-last}} {{/-last}}{{^-last}},{{/-last}}{{/headerParams}}]
         {{#bodyParam}}({{#required}}Just ({{/required}}{{^required}}Maybe.map {{/required}}{{#isModel}}Api.Data.{{/isModel}}{{>recordFieldValueEncoder}} {{>paramName}}{{#required}}){{/required}}){{/bodyParam}}{{^bodyParam}}Nothing{{/bodyParam}}
-        {{^responses}}(Json.Decode.succeed ()){{/responses}}{{#responses}}{{#isDefault}}{{^dataType}}(Json.Decode.succeed ()){{/dataType}}{{#dataType}}{{>recordFieldValueDecoder}}{{/dataType}}{{/isDefault}}{{/responses}}{{#authMethods}}{{#isBasicBearer}}
+        {{^responses}}(Json.Decode.succeed ()){{/responses}}{{#responses}}{{#is2xx}}{{^dataType}}(Json.Decode.succeed ()){{/dataType}}{{#dataType}}{{>recordFieldValueDecoder}}{{/dataType}}{{/is2xx}}{{/responses}}{{#authMethods}}{{#isBasicBearer}}
         |> Api.withBearerToken auth_token{{/isBasicBearer}}{{/authMethods}}
-{{/operation}}{{/operations}}
\ No newline at end of file
+{{/operation}}{{/operations}}
diff --git a/samples/openapi3/client/elm/src/Api/Request/Default.elm b/samples/openapi3/client/elm/src/Api/Request/Default.elm
index 548df127583..03e114d594f 100644
--- a/samples/openapi3/client/elm/src/Api/Request/Default.elm
+++ b/samples/openapi3/client/elm/src/Api/Request/Default.elm
@@ -114,7 +114,7 @@ stringFromEnum model =
 
 
 
-headerPost : String -> Maybe Int -> Maybe HeaderType -> Api.Request 
+headerPost : String -> Maybe Int -> Maybe HeaderType -> Api.Request String
 headerPost string_header integer_header headerType_header =
     Api.request
         "POST"
@@ -123,11 +123,11 @@ headerPost string_header integer_header headerType_header =
         []
         [ ( "string", Just <| identity string_header ), ( "integer", Maybe.map String.fromInt integer_header ), ( "headerType", Maybe.map stringFromHeaderType headerType_header ) ]
         Nothing
-        
+        Json.Decode.string
 
 
 
-maybeGet : Api.Request 
+maybeGet : Api.Request Api.Data.Maybe_
 maybeGet =
     Api.request
         "GET"
@@ -136,11 +136,11 @@ maybeGet =
         []
         []
         Nothing
-        
+        Api.Data.maybeDecoder
 
 
 
-pathStringIntegerEnumerationGet : String -> Int -> Enumeration -> Api.Request 
+pathStringIntegerEnumerationGet : String -> Int -> Enumeration -> Api.Request ()
 pathStringIntegerEnumerationGet string_path integer_path enumeration_path =
     Api.request
         "GET"
@@ -149,11 +149,11 @@ pathStringIntegerEnumerationGet string_path integer_path enumeration_path =
         []
         []
         Nothing
-        
+        (Json.Decode.succeed ())
 
 
 
-queryGet : Maybe String -> Maybe Int -> Maybe Enum -> Api.Request 
+queryGet : Maybe String -> Maybe Int -> Maybe Enum -> Api.Request ()
 queryGet string_query int_query enum_query =
     Api.request
         "GET"
@@ -162,11 +162,11 @@ queryGet string_query int_query enum_query =
         [ ( "string", Maybe.map identity string_query ), ( "int", Maybe.map String.fromInt int_query ), ( "enum", Maybe.map stringFromEnum enum_query ) ]
         []
         Nothing
-        
+        (Json.Decode.succeed ())
 
 
 
-securedPost : String -> Api.Request 
+securedPost : String -> Api.Request ()
 securedPost auth_token =
     Api.request
         "POST"
@@ -175,12 +175,12 @@ securedPost auth_token =
         []
         []
         Nothing
-        
+        (Json.Decode.succeed ())
         |> Api.withBearerToken auth_token
 
 
 
-uuidGet : Maybe Uuid -> Api.Request 
+uuidGet : Maybe Uuid -> Api.Request Uuid
 uuidGet value_query =
     Api.request
         "GET"
@@ -189,4 +189,5 @@ uuidGet value_query =
         [ ( "value", Maybe.map Uuid.toString value_query ) ]
         []
         Nothing
-        
+        Uuid.decoder
+
diff --git a/samples/openapi3/client/elm/src/Api/Request/Primitive.elm b/samples/openapi3/client/elm/src/Api/Request/Primitive.elm
index b270e7725ae..2295ae47d81 100644
--- a/samples/openapi3/client/elm/src/Api/Request/Primitive.elm
+++ b/samples/openapi3/client/elm/src/Api/Request/Primitive.elm
@@ -26,7 +26,7 @@ import Json.Encode
 
 
 
-update : Api.Data.Primitive -> Api.Request 
+update : Api.Data.Primitive -> Api.Request Api.Data.Primitive
 update primitive_body =
     Api.request
         "POST"
@@ -35,4 +35,5 @@ update primitive_body =
         []
         []
         (Just (Api.Data.encodePrimitive primitive_body))
-        
+        Api.Data.primitiveDecoder
+
-- 
GitLab


From a2d9c92eaeaa11509c5d5933d1f714dd1e139f2c Mon Sep 17 00:00:00 2001
From: William Cheng <wing328hk@gmail.com>
Date: Fri, 12 Jun 2020 00:05:41 +0800
Subject: [PATCH 6/8] remove commented code

---
 .../src/main/java/org/openapitools/codegen/DefaultCodegen.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
index 62ee5a9856b..8bfc119e766 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
@@ -3613,7 +3613,7 @@ public class DefaultCodegen implements CodegenConfig {
                     op.uniqueItems = true;
                     imports.add(typeMapping.get(r.containerType));
                 }
-                //r.isDefault = response == methodResponse;
+
                 op.responses.add(r);
                 if (Boolean.TRUE.equals(r.isBinary) && Boolean.TRUE.equals(r.is2xx) && Boolean.FALSE.equals(op.isResponseBinary)) {
                     op.isResponseBinary = Boolean.TRUE;
-- 
GitLab


From 5f102c5da72d7516e35546a52fd81a3624f93263 Mon Sep 17 00:00:00 2001
From: William Cheng <wing328hk@gmail.com>
Date: Fri, 12 Jun 2020 00:06:38 +0800
Subject: [PATCH 7/8] remove eof

---
 .../src/main/resources/elm/fieldDecoder.mustache                | 2 +-
 .../openapi-generator/src/main/resources/elm/operation.mustache | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/modules/openapi-generator/src/main/resources/elm/fieldDecoder.mustache b/modules/openapi-generator/src/main/resources/elm/fieldDecoder.mustache
index e964653d447..964b3cf9a84 100644
--- a/modules/openapi-generator/src/main/resources/elm/fieldDecoder.mustache
+++ b/modules/openapi-generator/src/main/resources/elm/fieldDecoder.mustache
@@ -14,4 +14,4 @@
 {{^isDateTime}}{{^isDate}}{{^isByteArray}}{{^isBinary}}{{^isString}}{{^isNumeric}}{{^isBoolean}}{{^isUuid}}
 {{#is2xx}}Api.Data.{{/is2xx}}{{#is3xx}}Api.Data.{{/is3xx}}{{#lambda.camelcase}}{{#isEnum}}{{classname}}{{enumName}}{{/isEnum}}{{^isEnum}}{{dataType}}{{/isEnum}}{{/lambda.camelcase}}Decoder
 {{/isUuid}}{{/isBoolean}}{{/isNumeric}}{{/isString}}{{/isBinary}}{{/isByteArray}}{{/isDate}}{{/isDateTime}}
-{{/lambda.removeWhitespace}}
+{{/lambda.removeWhitespace}}
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/elm/operation.mustache b/modules/openapi-generator/src/main/resources/elm/operation.mustache
index ed26610244a..f83584bbd94 100644
--- a/modules/openapi-generator/src/main/resources/elm/operation.mustache
+++ b/modules/openapi-generator/src/main/resources/elm/operation.mustache
@@ -44,4 +44,4 @@ import Uuid exposing (Uuid){{/includeUuid}}
         {{#bodyParam}}({{#required}}Just ({{/required}}{{^required}}Maybe.map {{/required}}{{#isModel}}Api.Data.{{/isModel}}{{>recordFieldValueEncoder}} {{>paramName}}{{#required}}){{/required}}){{/bodyParam}}{{^bodyParam}}Nothing{{/bodyParam}}
         {{^responses}}(Json.Decode.succeed ()){{/responses}}{{#responses}}{{#is2xx}}{{^dataType}}(Json.Decode.succeed ()){{/dataType}}{{#dataType}}{{>recordFieldValueDecoder}}{{/dataType}}{{/is2xx}}{{/responses}}{{#authMethods}}{{#isBasicBearer}}
         |> Api.withBearerToken auth_token{{/isBasicBearer}}{{/authMethods}}
-{{/operation}}{{/operations}}
+{{/operation}}{{/operations}}
\ No newline at end of file
-- 
GitLab


From c7fd3749f4baf8a834636855c9d819783794d024 Mon Sep 17 00:00:00 2001
From: William Cheng <wing328hk@gmail.com>
Date: Fri, 12 Jun 2020 08:33:54 +0800
Subject: [PATCH 8/8] update elm samples

---
 samples/openapi3/client/elm/src/Api/Request/Default.elm   | 1 -
 samples/openapi3/client/elm/src/Api/Request/Primitive.elm | 1 -
 2 files changed, 2 deletions(-)

diff --git a/samples/openapi3/client/elm/src/Api/Request/Default.elm b/samples/openapi3/client/elm/src/Api/Request/Default.elm
index 03e114d594f..23e998284eb 100644
--- a/samples/openapi3/client/elm/src/Api/Request/Default.elm
+++ b/samples/openapi3/client/elm/src/Api/Request/Default.elm
@@ -190,4 +190,3 @@ uuidGet value_query =
         []
         Nothing
         Uuid.decoder
-
diff --git a/samples/openapi3/client/elm/src/Api/Request/Primitive.elm b/samples/openapi3/client/elm/src/Api/Request/Primitive.elm
index 2295ae47d81..05f36eea518 100644
--- a/samples/openapi3/client/elm/src/Api/Request/Primitive.elm
+++ b/samples/openapi3/client/elm/src/Api/Request/Primitive.elm
@@ -36,4 +36,3 @@ update primitive_body =
         []
         (Just (Api.Data.encodePrimitive primitive_body))
         Api.Data.primitiveDecoder
-
-- 
GitLab