From 141b580c8c499cdc0a17badf9b48fe4c9e9184fc Mon Sep 17 00:00:00 2001 From: xhh Date: Sun, 24 May 2015 08:51:08 +0800 Subject: [PATCH 1/8] Minor improvement to Java API client accept and content-type header --- .../src/main/resources/Java/api.mustache | 18 ++- .../main/resources/Java/apiInvoker.mustache | 30 ++++- .../java/io/swagger/client/ApiInvoker.java | 30 ++++- .../java/io/swagger/client/api/PetApi.java | 122 ++++++++++++------ .../java/io/swagger/client/api/StoreApi.java | 56 +++++--- .../java/io/swagger/client/api/UserApi.java | 112 +++++++++++----- 6 files changed, 273 insertions(+), 95 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/Java/api.mustache b/modules/swagger-codegen/src/main/resources/Java/api.mustache index 78bac41d9d6..34dea4ae7e9 100644 --- a/modules/swagger-codegen/src/main/resources/Java/api.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/api.mustache @@ -64,13 +64,19 @@ public class {{classname}} { {{#queryParams}}if ({{paramName}} != null) queryParams.put("{{baseName}}", ApiInvoker.parameterToString({{paramName}})); {{/queryParams}} + + final String[] accepts = { + {{#produces}}"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/produces}} + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { + {{#consumes}}"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/consumes}} + }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); + {{#headerParams}}headerParams.put("{{baseName}}", ApiInvoker.parameterToString({{paramName}})); {{/headerParams}} - String[] contentTypes = { - {{#consumes}}"{{mediaType}}"{{#hasMore}},{{/hasMore}}{{/consumes}} - }; - - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -92,7 +98,7 @@ public class {{classname}} { } try { - String response = apiInvoker.invokeAPI(basePath, path, "{{httpMethod}}", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "{{httpMethod}}", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return {{#returnType}}({{{returnType}}}) ApiInvoker.deserialize(response, "{{returnContainer}}", {{returnBaseType}}.class){{/returnType}}; } diff --git a/modules/swagger-codegen/src/main/resources/Java/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/Java/apiInvoker.mustache index c30ba4cdd12..a013a968ccb 100644 --- a/modules/swagger-codegen/src/main/resources/Java/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/apiInvoker.mustache @@ -16,6 +16,7 @@ import com.sun.jersey.multipart.FormDataMultiPart; import javax.ws.rs.core.Response.Status.Family; import javax.ws.rs.core.MediaType; +import java.util.Arrays; import java.util.Collection; import java.util.Map; import java.util.Map.Entry; @@ -105,6 +106,31 @@ public class ApiInvoker { return String.valueOf(param); } } + + public static String selectHeaderAccept(String[] accepts) { + if (accepts.length == 0) return "application/json"; + if (Arrays.asList(accepts).contains("application/json")) return "application/json"; + return joinString(accepts, ","); + } + + public static String selectHeaderContentType(String[] contentTypes) { + if (contentTypes.length == 0) return "application/json"; + if (Arrays.asList(contentTypes).contains("application/json")) return "application/json"; + return contentTypes[0]; + } + + public static String joinString(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(); + } + public void enableDebug() { isDebug = true; } @@ -163,7 +189,7 @@ public class ApiInvoker { } } - public String invokeAPI(String host, String path, String method, Map queryParams, Object body, Map headerParams, Map formParams, String contentType) throws ApiException { + public String invokeAPI(String host, String path, String method, Map queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType) throws ApiException { Client client = getClient(host); StringBuilder b = new StringBuilder(); @@ -180,7 +206,7 @@ public class ApiInvoker { } String querystring = b.toString(); - Builder builder = client.resource(host + path + querystring).accept("application/json"); + Builder builder = client.resource(host + path + querystring).accept(accept); for(String key : headerParams.keySet()) { builder = builder.header(key, headerParams.get(key)); } diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiInvoker.java b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiInvoker.java index 69d13136274..77361e7aa4a 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiInvoker.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiInvoker.java @@ -16,6 +16,7 @@ import com.sun.jersey.multipart.FormDataMultiPart; import javax.ws.rs.core.Response.Status.Family; import javax.ws.rs.core.MediaType; +import java.util.Arrays; import java.util.Collection; import java.util.Map; import java.util.Map.Entry; @@ -105,6 +106,31 @@ public class ApiInvoker { return String.valueOf(param); } } + + public static String selectHeaderAccept(String[] accepts) { + if (accepts.length == 0) return "application/json"; + if (Arrays.asList(accepts).contains("application/json")) return "application/json"; + return joinString(accepts, ","); + } + + public static String selectHeaderContentType(String[] contentTypes) { + if (contentTypes.length == 0) return "application/json"; + if (Arrays.asList(contentTypes).contains("application/json")) return "application/json"; + return contentTypes[0]; + } + + public static String joinString(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(); + } + public void enableDebug() { isDebug = true; } @@ -163,7 +189,7 @@ public class ApiInvoker { } } - public String invokeAPI(String host, String path, String method, Map queryParams, Object body, Map headerParams, Map formParams, String contentType) throws ApiException { + public String invokeAPI(String host, String path, String method, Map queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType) throws ApiException { Client client = getClient(host); StringBuilder b = new StringBuilder(); @@ -180,7 +206,7 @@ public class ApiInvoker { } String querystring = b.toString(); - Builder builder = client.resource(host + path + querystring).accept("application/json"); + Builder builder = client.resource(host + path + querystring).accept(accept); for(String key : headerParams.keySet()) { builder = builder.header(key, headerParams.get(key)); } diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/api/PetApi.java b/samples/client/petstore/java/src/main/java/io/swagger/client/api/PetApi.java index 10326d8a2d6..5af1d585ad0 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/api/PetApi.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/api/PetApi.java @@ -55,12 +55,18 @@ public class PetApi { Map formParams = new HashMap(); - - String[] contentTypes = { - "application/json","application/xml" - }; - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { + "application/json", "application/xml" + }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); + + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -74,7 +80,7 @@ public class PetApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "PUT", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "PUT", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return ; } @@ -105,12 +111,18 @@ public class PetApi { Map formParams = new HashMap(); - - String[] contentTypes = { - "application/json","application/xml" - }; - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { + "application/json", "application/xml" + }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); + + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -124,7 +136,7 @@ public class PetApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return ; } @@ -157,12 +169,18 @@ public class PetApi { if (status != null) queryParams.put("status", ApiInvoker.parameterToString(status)); - - String[] contentTypes = { + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -176,7 +194,7 @@ public class PetApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return (List) ApiInvoker.deserialize(response, "array", Pet.class); } @@ -209,12 +227,18 @@ public class PetApi { if (tags != null) queryParams.put("tags", ApiInvoker.parameterToString(tags)); - - String[] contentTypes = { + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -228,7 +252,7 @@ public class PetApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return (List) ApiInvoker.deserialize(response, "array", Pet.class); } @@ -265,12 +289,18 @@ public class PetApi { Map formParams = new HashMap(); - - String[] contentTypes = { + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -284,7 +314,7 @@ public class PetApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return (Pet) ApiInvoker.deserialize(response, "", Pet.class); } @@ -323,12 +353,18 @@ public class PetApi { Map formParams = new HashMap(); - - String[] contentTypes = { + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { "application/x-www-form-urlencoded" }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -350,7 +386,7 @@ public class PetApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return ; } @@ -388,13 +424,19 @@ public class PetApi { Map formParams = new HashMap(); - headerParams.put("api_key", ApiInvoker.parameterToString(apiKey)); - - String[] contentTypes = { + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + headerParams.put("api_key", ApiInvoker.parameterToString(apiKey)); + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -408,7 +450,7 @@ public class PetApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return ; } @@ -447,12 +489,18 @@ public class PetApi { Map formParams = new HashMap(); - - String[] contentTypes = { + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { "multipart/form-data" }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -475,7 +523,7 @@ public class PetApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return ; } diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/api/StoreApi.java b/samples/client/petstore/java/src/main/java/io/swagger/client/api/StoreApi.java index 6da7b5abb2f..89b683e5a23 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/api/StoreApi.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/api/StoreApi.java @@ -54,12 +54,18 @@ public class StoreApi { Map formParams = new HashMap(); - - String[] contentTypes = { + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -73,7 +79,7 @@ public class StoreApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return (Map) ApiInvoker.deserialize(response, "map", Map.class); } @@ -104,12 +110,18 @@ public class StoreApi { Map formParams = new HashMap(); - - String[] contentTypes = { + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -123,7 +135,7 @@ public class StoreApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return (Order) ApiInvoker.deserialize(response, "", Order.class); } @@ -160,12 +172,18 @@ public class StoreApi { Map formParams = new HashMap(); - - String[] contentTypes = { + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -179,7 +197,7 @@ public class StoreApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return (Order) ApiInvoker.deserialize(response, "", Order.class); } @@ -216,12 +234,18 @@ public class StoreApi { Map formParams = new HashMap(); - - String[] contentTypes = { + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -235,7 +259,7 @@ public class StoreApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return ; } diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/api/UserApi.java b/samples/client/petstore/java/src/main/java/io/swagger/client/api/UserApi.java index d0974d95a52..44c2f67bd63 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/api/UserApi.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/api/UserApi.java @@ -55,12 +55,18 @@ public class UserApi { Map formParams = new HashMap(); - - String[] contentTypes = { + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -74,7 +80,7 @@ public class UserApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return ; } @@ -105,12 +111,18 @@ public class UserApi { Map formParams = new HashMap(); - - String[] contentTypes = { + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -124,7 +136,7 @@ public class UserApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return ; } @@ -155,12 +167,18 @@ public class UserApi { Map formParams = new HashMap(); - - String[] contentTypes = { + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -174,7 +192,7 @@ public class UserApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return ; } @@ -210,12 +228,18 @@ public class UserApi { if (password != null) queryParams.put("password", ApiInvoker.parameterToString(password)); - - String[] contentTypes = { + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -229,7 +253,7 @@ public class UserApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return (String) ApiInvoker.deserialize(response, "", String.class); } @@ -259,12 +283,18 @@ public class UserApi { Map formParams = new HashMap(); - - String[] contentTypes = { + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -278,7 +308,7 @@ public class UserApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return ; } @@ -315,12 +345,18 @@ public class UserApi { Map formParams = new HashMap(); - - String[] contentTypes = { + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -334,7 +370,7 @@ public class UserApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return (User) ApiInvoker.deserialize(response, "", User.class); } @@ -372,12 +408,18 @@ public class UserApi { Map formParams = new HashMap(); - - String[] contentTypes = { + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -391,7 +433,7 @@ public class UserApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "PUT", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "PUT", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return ; } @@ -428,12 +470,18 @@ public class UserApi { Map formParams = new HashMap(); - - String[] contentTypes = { + + final String[] accepts = { + "application/json", "application/xml" + }; + final String accept = ApiInvoker.selectHeaderAccept(accepts); + + final String[] contentTypes = { }; + final String contentType = ApiInvoker.selectHeaderContentType(contentTypes); - String contentType = contentTypes.length > 0 ? contentTypes[0] : "application/json"; + if(contentType.startsWith("multipart/form-data")) { boolean hasFields = false; @@ -447,7 +495,7 @@ public class UserApi { } try { - String response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, postBody, headerParams, formParams, contentType); + String response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, postBody, headerParams, formParams, accept, contentType); if(response != null){ return ; } From fff8972a77a1042c8366907f66484e9a5ba51e54 Mon Sep 17 00:00:00 2001 From: xhh Date: Mon, 25 May 2015 12:29:41 +0800 Subject: [PATCH 2/8] Extract utility methods to the StringUtil class and ignore case when comparing Accept/Content-Type --- .../codegen/languages/JavaClientCodegen.java | 8 ++++--- .../main/resources/Java/StringUtil.mustache | 23 +++++++++++++++++++ .../main/resources/Java/apiInvoker.mustache | 8 +++---- 3 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 modules/swagger-codegen/src/main/resources/Java/StringUtil.mustache diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/JavaClientCodegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/JavaClientCodegen.java index 7c0ac7422ff..ee1af833ad4 100644 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/JavaClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/JavaClientCodegen.java @@ -51,11 +51,13 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { additionalProperties.put("artifactVersion", artifactVersion); supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml")); - supportingFiles.add(new SupportingFile("apiInvoker.mustache", + supportingFiles.add(new SupportingFile("apiInvoker.mustache", (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "ApiInvoker.java")); - supportingFiles.add(new SupportingFile("JsonUtil.mustache", + supportingFiles.add(new SupportingFile("JsonUtil.mustache", (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "JsonUtil.java")); - supportingFiles.add(new SupportingFile("apiException.mustache", + supportingFiles.add(new SupportingFile("StringUtil.mustache", + (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "StringUtil.java")); + supportingFiles.add(new SupportingFile("apiException.mustache", (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "ApiException.java")); languageSpecificPrimitives = new HashSet( diff --git a/modules/swagger-codegen/src/main/resources/Java/StringUtil.mustache b/modules/swagger-codegen/src/main/resources/Java/StringUtil.mustache new file mode 100644 index 00000000000..536c0b577e4 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/Java/StringUtil.mustache @@ -0,0 +1,23 @@ +package {{invokerPackage}}; + +public class StringUtil { + 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; + } + + 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(); + } +} diff --git a/modules/swagger-codegen/src/main/resources/Java/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/Java/apiInvoker.mustache index a013a968ccb..fdfde75133f 100644 --- a/modules/swagger-codegen/src/main/resources/Java/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/apiInvoker.mustache @@ -109,13 +109,13 @@ public class ApiInvoker { public static String selectHeaderAccept(String[] accepts) { if (accepts.length == 0) return "application/json"; - if (Arrays.asList(accepts).contains("application/json")) return "application/json"; - return joinString(accepts, ","); + if (StringUtil.containsIgnoreCase(accepts, "application/json")) return "application/json"; + return StringUtil.join(accepts, ","); } public static String selectHeaderContentType(String[] contentTypes) { if (contentTypes.length == 0) return "application/json"; - if (Arrays.asList(contentTypes).contains("application/json")) return "application/json"; + if (StringUtil.containsIgnoreCase(contentTypes, "application/json")) return "application/json"; return contentTypes[0]; } @@ -323,4 +323,4 @@ public class ApiInvoker { } return hostMap.get(host); } -} \ No newline at end of file +} From 85d0e08a80c0d155d96c4440ea7f708e12296ce5 Mon Sep 17 00:00:00 2001 From: xhh Date: Mon, 25 May 2015 12:31:54 +0800 Subject: [PATCH 3/8] Rebuild Java Petstore client --- .../java/io/swagger/client/ApiInvoker.java | 8 +-- .../java/io/swagger/client/StringUtil.java | 23 +++++++ .../io/swagger/client/model/ApiResponse.java | 64 ------------------- 3 files changed, 27 insertions(+), 68 deletions(-) create mode 100644 samples/client/petstore/java/src/main/java/io/swagger/client/StringUtil.java delete mode 100644 samples/client/petstore/java/src/main/java/io/swagger/client/model/ApiResponse.java diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiInvoker.java b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiInvoker.java index 77361e7aa4a..190ec59936c 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiInvoker.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiInvoker.java @@ -109,13 +109,13 @@ public class ApiInvoker { public static String selectHeaderAccept(String[] accepts) { if (accepts.length == 0) return "application/json"; - if (Arrays.asList(accepts).contains("application/json")) return "application/json"; - return joinString(accepts, ","); + if (StringUtil.containsIgnoreCase(accepts, "application/json")) return "application/json"; + return StringUtil.join(accepts, ","); } public static String selectHeaderContentType(String[] contentTypes) { if (contentTypes.length == 0) return "application/json"; - if (Arrays.asList(contentTypes).contains("application/json")) return "application/json"; + if (StringUtil.containsIgnoreCase(contentTypes, "application/json")) return "application/json"; return contentTypes[0]; } @@ -323,4 +323,4 @@ public class ApiInvoker { } return hostMap.get(host); } -} \ No newline at end of file +} diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/StringUtil.java b/samples/client/petstore/java/src/main/java/io/swagger/client/StringUtil.java new file mode 100644 index 00000000000..f8be7d04531 --- /dev/null +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/StringUtil.java @@ -0,0 +1,23 @@ +package io.swagger.client; + +public class StringUtil { + 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; + } + + 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(); + } +} diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/model/ApiResponse.java b/samples/client/petstore/java/src/main/java/io/swagger/client/model/ApiResponse.java deleted file mode 100644 index cd9ff24975c..00000000000 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/model/ApiResponse.java +++ /dev/null @@ -1,64 +0,0 @@ -package io.swagger.client.model; - - -import com.wordnik.swagger.annotations.*; -import com.fasterxml.jackson.annotation.JsonProperty; - - -@ApiModel(description = "") -public class ApiResponse { - - private Integer code = null; - private String type = null; - private String message = null; - - - /** - **/ - @ApiModelProperty(required = false, value = "") - @JsonProperty("code") - public Integer getCode() { - return code; - } - public void setCode(Integer code) { - this.code = code; - } - - - /** - **/ - @ApiModelProperty(required = false, value = "") - @JsonProperty("type") - public String getType() { - return type; - } - public void setType(String type) { - this.type = type; - } - - - /** - **/ - @ApiModelProperty(required = false, value = "") - @JsonProperty("message") - public String getMessage() { - return message; - } - public void setMessage(String message) { - this.message = message; - } - - - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class ApiResponse {\n"); - - sb.append(" code: ").append(code).append("\n"); - sb.append(" type: ").append(type).append("\n"); - sb.append(" message: ").append(message).append("\n"); - sb.append("}\n"); - return sb.toString(); - } -} From 19a8ac4841bac064595f4736b948a763cf11aa42 Mon Sep 17 00:00:00 2001 From: xhh Date: Mon, 25 May 2015 12:32:24 +0800 Subject: [PATCH 4/8] Add unit tests --- .../io/swagger/client/ApiInvokerTest.java | 42 +++++++++++++++++++ .../io/swagger/client/StringUtilTest.java | 32 ++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 samples/client/petstore/java/src/test/java/io/swagger/client/ApiInvokerTest.java create mode 100644 samples/client/petstore/java/src/test/java/io/swagger/client/StringUtilTest.java diff --git a/samples/client/petstore/java/src/test/java/io/swagger/client/ApiInvokerTest.java b/samples/client/petstore/java/src/test/java/io/swagger/client/ApiInvokerTest.java new file mode 100644 index 00000000000..ec5a54c2aa9 --- /dev/null +++ b/samples/client/petstore/java/src/test/java/io/swagger/client/ApiInvokerTest.java @@ -0,0 +1,42 @@ +package io.swagger.client; + +import static org.junit.Assert.*; +import org.junit.*; + +public class ApiInvokerTest { + @Test + public void testSelectHeaderAccept() { + String[] accepts = { "APPLICATION/JSON", "APPLICATION/XML" }; + assertEquals("application/json", ApiInvoker.selectHeaderAccept(accepts)); + + accepts = new String[] { "application/json", "application/xml" }; + assertEquals("application/json", ApiInvoker.selectHeaderAccept(accepts)); + + accepts = new String[] { "application/xml", "application/json" }; + assertEquals("application/json", ApiInvoker.selectHeaderAccept(accepts)); + + accepts = new String[] { "text/plain", "application/xml" }; + assertEquals("text/plain,application/xml", ApiInvoker.selectHeaderAccept(accepts)); + + accepts = new String[] { }; + assertEquals("application/json", ApiInvoker.selectHeaderAccept(accepts)); + } + + @Test + public void testSelectHeaderContentType() { + String[] contentTypes = { "APPLICATION/JSON", "APPLICATION/XML" }; + assertEquals("application/json", ApiInvoker.selectHeaderContentType(contentTypes)); + + contentTypes = new String[] { "application/json", "application/xml" }; + assertEquals("application/json", ApiInvoker.selectHeaderContentType(contentTypes)); + + contentTypes = new String[] { "application/xml", "application/json" }; + assertEquals("application/json", ApiInvoker.selectHeaderContentType(contentTypes)); + + contentTypes = new String[] { "text/plain", "application/xml" }; + assertEquals("text/plain", ApiInvoker.selectHeaderContentType(contentTypes)); + + contentTypes = new String[] { }; + assertEquals("application/json", ApiInvoker.selectHeaderContentType(contentTypes)); + } +} diff --git a/samples/client/petstore/java/src/test/java/io/swagger/client/StringUtilTest.java b/samples/client/petstore/java/src/test/java/io/swagger/client/StringUtilTest.java new file mode 100644 index 00000000000..a9abfb03290 --- /dev/null +++ b/samples/client/petstore/java/src/test/java/io/swagger/client/StringUtilTest.java @@ -0,0 +1,32 @@ +package io.swagger.client; + +import static org.junit.Assert.*; +import org.junit.*; + +public class StringUtilTest { + @Test + public void testContainsIgnoreCase() { + assertTrue(StringUtil.containsIgnoreCase(new String[]{ "abc" }, "abc")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{ "abc" }, "ABC")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{ "ABC" }, "abc")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{ null, "abc" }, "ABC")); + assertTrue(StringUtil.containsIgnoreCase(new String[]{ null, "abc" }, null)); + + assertFalse(StringUtil.containsIgnoreCase(new String[]{ "abc" }, "def")); + assertFalse(StringUtil.containsIgnoreCase(new String[]{ }, "ABC")); + assertFalse(StringUtil.containsIgnoreCase(new String[]{ }, null)); + } + + @Test + public void testJoin() { + String[] array = { "aa", "bb", "cc" }; + assertEquals("aa,bb,cc", StringUtil.join(array, ",")); + assertEquals("aa, bb, cc", StringUtil.join(array, ", ")); + assertEquals("aabbcc", StringUtil.join(array, "")); + assertEquals("aa bb cc", StringUtil.join(array, " ")); + assertEquals("aa\nbb\ncc", StringUtil.join(array, "\n")); + + assertEquals("", StringUtil.join(new String[]{ }, ",")); + assertEquals("abc", StringUtil.join(new String[]{ "abc" }, ",")); + } +} From ed14c515bf73b5a814a872bc4f1472b6a2f1773c Mon Sep 17 00:00:00 2001 From: xhh Date: Mon, 25 May 2015 16:01:57 +0800 Subject: [PATCH 5/8] Add comments to string utility methods --- .../main/resources/Java/StringUtil.mustache | 18 ++++++++++++++++++ .../java/io/swagger/client/StringUtil.java | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/modules/swagger-codegen/src/main/resources/Java/StringUtil.mustache b/modules/swagger-codegen/src/main/resources/Java/StringUtil.mustache index 536c0b577e4..035d6739dce 100644 --- a/modules/swagger-codegen/src/main/resources/Java/StringUtil.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/StringUtil.mustache @@ -1,6 +1,13 @@ package {{invokerPackage}}; 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; @@ -9,6 +16,17 @@ public class StringUtil { 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 ""; diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/StringUtil.java b/samples/client/petstore/java/src/main/java/io/swagger/client/StringUtil.java index f8be7d04531..5b5af2d5ce0 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/StringUtil.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/StringUtil.java @@ -1,6 +1,13 @@ package io.swagger.client; 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; @@ -9,6 +16,17 @@ public class StringUtil { 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 ""; From aa03be7f76e88b231a34c7d3d26b5bbb1e7f5354 Mon Sep 17 00:00:00 2001 From: xhh Date: Mon, 25 May 2015 17:25:01 +0800 Subject: [PATCH 6/8] Clean up old code --- .../src/main/resources/Java/apiInvoker.mustache | 12 ------------ .../src/main/java/io/swagger/client/ApiInvoker.java | 12 ------------ 2 files changed, 24 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/Java/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/Java/apiInvoker.mustache index fdfde75133f..0104dc16b3e 100644 --- a/modules/swagger-codegen/src/main/resources/Java/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/apiInvoker.mustache @@ -119,18 +119,6 @@ public class ApiInvoker { return contentTypes[0]; } - public static String joinString(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(); - } - public void enableDebug() { isDebug = true; } diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiInvoker.java b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiInvoker.java index 190ec59936c..440f2e0e0b4 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiInvoker.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiInvoker.java @@ -119,18 +119,6 @@ public class ApiInvoker { return contentTypes[0]; } - public static String joinString(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(); - } - public void enableDebug() { isDebug = true; } From 951b7a907569d8b111e77cdc0839956f05200577 Mon Sep 17 00:00:00 2001 From: xhh Date: Tue, 26 May 2015 10:35:49 +0800 Subject: [PATCH 7/8] Do not use JSON as default Accept header when no produces present --- .../src/main/resources/Java/apiInvoker.mustache | 8 ++++++-- .../java/src/main/java/io/swagger/client/ApiInvoker.java | 8 ++++++-- .../src/test/java/io/swagger/client/ApiInvokerTest.java | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/Java/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/Java/apiInvoker.mustache index 0104dc16b3e..0255a11ad8a 100644 --- a/modules/swagger-codegen/src/main/resources/Java/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/apiInvoker.mustache @@ -108,7 +108,7 @@ public class ApiInvoker { } public static String selectHeaderAccept(String[] accepts) { - if (accepts.length == 0) return "application/json"; + if (accepts.length == 0) return null; if (StringUtil.containsIgnoreCase(accepts, "application/json")) return "application/json"; return StringUtil.join(accepts, ","); } @@ -194,7 +194,11 @@ public class ApiInvoker { } String querystring = b.toString(); - Builder builder = client.resource(host + path + querystring).accept(accept); + Builder builder; + if (accept == null) + builder = client.resource(host + path + querystring).getRequestBuilder(); + else + builder = client.resource(host + path + querystring).accept(accept); for(String key : headerParams.keySet()) { builder = builder.header(key, headerParams.get(key)); } diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiInvoker.java b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiInvoker.java index 440f2e0e0b4..e1bfbe12873 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiInvoker.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiInvoker.java @@ -108,7 +108,7 @@ public class ApiInvoker { } public static String selectHeaderAccept(String[] accepts) { - if (accepts.length == 0) return "application/json"; + if (accepts.length == 0) return null; if (StringUtil.containsIgnoreCase(accepts, "application/json")) return "application/json"; return StringUtil.join(accepts, ","); } @@ -194,7 +194,11 @@ public class ApiInvoker { } String querystring = b.toString(); - Builder builder = client.resource(host + path + querystring).accept(accept); + Builder builder; + if (accept == null) + builder = client.resource(host + path + querystring).getRequestBuilder(); + else + builder = client.resource(host + path + querystring).accept(accept); for(String key : headerParams.keySet()) { builder = builder.header(key, headerParams.get(key)); } diff --git a/samples/client/petstore/java/src/test/java/io/swagger/client/ApiInvokerTest.java b/samples/client/petstore/java/src/test/java/io/swagger/client/ApiInvokerTest.java index ec5a54c2aa9..f117e6364df 100644 --- a/samples/client/petstore/java/src/test/java/io/swagger/client/ApiInvokerTest.java +++ b/samples/client/petstore/java/src/test/java/io/swagger/client/ApiInvokerTest.java @@ -19,7 +19,7 @@ public class ApiInvokerTest { assertEquals("text/plain,application/xml", ApiInvoker.selectHeaderAccept(accepts)); accepts = new String[] { }; - assertEquals("application/json", ApiInvoker.selectHeaderAccept(accepts)); + assertNull(ApiInvoker.selectHeaderAccept(accepts)); } @Test From d70742119bd688c4915880f9965cfcc788b943d5 Mon Sep 17 00:00:00 2001 From: xhh Date: Fri, 5 Jun 2015 16:45:19 +0800 Subject: [PATCH 8/8] Update unit tests --- .../java/io/swagger/client/ApiClientTest.java | 48 +++++++++++++++++++ .../io/swagger/client/ApiInvokerTest.java | 42 ---------------- 2 files changed, 48 insertions(+), 42 deletions(-) create mode 100644 samples/client/petstore/java/src/test/java/io/swagger/client/ApiClientTest.java delete mode 100644 samples/client/petstore/java/src/test/java/io/swagger/client/ApiInvokerTest.java diff --git a/samples/client/petstore/java/src/test/java/io/swagger/client/ApiClientTest.java b/samples/client/petstore/java/src/test/java/io/swagger/client/ApiClientTest.java new file mode 100644 index 00000000000..891b8e17d13 --- /dev/null +++ b/samples/client/petstore/java/src/test/java/io/swagger/client/ApiClientTest.java @@ -0,0 +1,48 @@ +package io.swagger.client; + +import static org.junit.Assert.*; +import org.junit.*; + +public class ApiClientTest { + ApiClient apiClient = null; + + @Before + public void setup() { + apiClient = new ApiClient(); + } + @Test + public void testSelectHeaderAccept() { + String[] accepts = { "APPLICATION/JSON", "APPLICATION/XML" }; + assertEquals("application/json", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[] { "application/json", "application/xml" }; + assertEquals("application/json", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[] { "application/xml", "application/json" }; + assertEquals("application/json", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[] { "text/plain", "application/xml" }; + assertEquals("text/plain,application/xml", apiClient.selectHeaderAccept(accepts)); + + accepts = new String[] { }; + assertNull(apiClient.selectHeaderAccept(accepts)); + } + + @Test + public void testSelectHeaderContentType() { + String[] contentTypes = { "APPLICATION/JSON", "APPLICATION/XML" }; + assertEquals("application/json", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[] { "application/json", "application/xml" }; + assertEquals("application/json", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[] { "application/xml", "application/json" }; + assertEquals("application/json", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[] { "text/plain", "application/xml" }; + assertEquals("text/plain", apiClient.selectHeaderContentType(contentTypes)); + + contentTypes = new String[] { }; + assertEquals("application/json", apiClient.selectHeaderContentType(contentTypes)); + } +} diff --git a/samples/client/petstore/java/src/test/java/io/swagger/client/ApiInvokerTest.java b/samples/client/petstore/java/src/test/java/io/swagger/client/ApiInvokerTest.java deleted file mode 100644 index f117e6364df..00000000000 --- a/samples/client/petstore/java/src/test/java/io/swagger/client/ApiInvokerTest.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.swagger.client; - -import static org.junit.Assert.*; -import org.junit.*; - -public class ApiInvokerTest { - @Test - public void testSelectHeaderAccept() { - String[] accepts = { "APPLICATION/JSON", "APPLICATION/XML" }; - assertEquals("application/json", ApiInvoker.selectHeaderAccept(accepts)); - - accepts = new String[] { "application/json", "application/xml" }; - assertEquals("application/json", ApiInvoker.selectHeaderAccept(accepts)); - - accepts = new String[] { "application/xml", "application/json" }; - assertEquals("application/json", ApiInvoker.selectHeaderAccept(accepts)); - - accepts = new String[] { "text/plain", "application/xml" }; - assertEquals("text/plain,application/xml", ApiInvoker.selectHeaderAccept(accepts)); - - accepts = new String[] { }; - assertNull(ApiInvoker.selectHeaderAccept(accepts)); - } - - @Test - public void testSelectHeaderContentType() { - String[] contentTypes = { "APPLICATION/JSON", "APPLICATION/XML" }; - assertEquals("application/json", ApiInvoker.selectHeaderContentType(contentTypes)); - - contentTypes = new String[] { "application/json", "application/xml" }; - assertEquals("application/json", ApiInvoker.selectHeaderContentType(contentTypes)); - - contentTypes = new String[] { "application/xml", "application/json" }; - assertEquals("application/json", ApiInvoker.selectHeaderContentType(contentTypes)); - - contentTypes = new String[] { "text/plain", "application/xml" }; - assertEquals("text/plain", ApiInvoker.selectHeaderContentType(contentTypes)); - - contentTypes = new String[] { }; - assertEquals("application/json", ApiInvoker.selectHeaderContentType(contentTypes)); - } -}