From 30315c8570622db2a9507c04f5fc50d2768b33c4 Mon Sep 17 00:00:00 2001 From: tharders Date: Mon, 23 Jan 2017 08:14:06 +0100 Subject: [PATCH] Fix Issue 4554 - handle 204 server response in javascript (#4604) * issues 4554: Handle 204 response and handle deserialize exceptions * issue-4554: generate javascript client updated template Used petstore-with-fake-endpoints-models-for-testing.yaml * use petstore-with-fake-endpoints-models-for-testing.yaml like sh script --- bin/windows/javascript-petstore.bat | 2 +- .../main/resources/Javascript/ApiClient.mustache | 16 ++++++++++++---- .../client/petstore/javascript/src/ApiClient.js | 8 ++++++-- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/bin/windows/javascript-petstore.bat b/bin/windows/javascript-petstore.bat index cb7f97bab2c..615712377bb 100755 --- a/bin/windows/javascript-petstore.bat +++ b/bin/windows/javascript-petstore.bat @@ -5,6 +5,6 @@ If Not Exist %executable% ( ) REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M -set ags=generate -i modules\swagger-codegen\src\test\resources\2_0\petstore.json -l javascript -o samples\client\petstore\javascript +set ags=generate -i modules\swagger-codegen\src\test\resources\2_0\petstore-with-fake-endpoints-models-for-testing.yaml -l javascript -o samples\client\petstore\javascript java %JAVA_OPTS% -jar %executable% %ags% diff --git a/modules/swagger-codegen/src/main/resources/Javascript/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/Javascript/ApiClient.mustache index 164f11d4747..934201a0404 100644 --- a/modules/swagger-codegen/src/main/resources/Javascript/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/Javascript/ApiClient.mustache @@ -311,7 +311,7 @@ * @returns A value of the specified type. */ {{/emitJSDoc}} exports.prototype.deserialize = function deserialize(response, returnType) { - if (response == null || returnType == null) { + if (response == null || returnType == null || response.status == 204) { return null; } // Rely on SuperAgent for parsing response body. @@ -410,8 +410,12 @@ if (error) { reject(error); } else { - var data = _this.deserialize(response, returnType); - resolve(data); + try { + var data = _this.deserialize(response, returnType); + resolve(data); + } catch (err) { + reject(err); + } } }); });{{/usePromises}} @@ -419,7 +423,11 @@ if (callback) { var data = null; if (!error) { - data = _this.deserialize(response, returnType); + try { + data = _this.deserialize(response, returnType); + } catch (err) { + error = err; + } } callback(error, data, response); } diff --git a/samples/client/petstore/javascript/src/ApiClient.js b/samples/client/petstore/javascript/src/ApiClient.js index 54b1f806af6..96fccb169e1 100644 --- a/samples/client/petstore/javascript/src/ApiClient.js +++ b/samples/client/petstore/javascript/src/ApiClient.js @@ -314,7 +314,7 @@ * @returns A value of the specified type. */ exports.prototype.deserialize = function deserialize(response, returnType) { - if (response == null || returnType == null) { + if (response == null || returnType == null || response.status == 204) { return null; } // Rely on SuperAgent for parsing response body. @@ -413,7 +413,11 @@ if (callback) { var data = null; if (!error) { - data = _this.deserialize(response, returnType); + try { + data = _this.deserialize(response, returnType); + } catch (err) { + error = err; + } } callback(error, data, response); }