From 7a9a41fe01d4c7d1f7bfc53c2c36440913c43e84 Mon Sep 17 00:00:00 2001 From: Raghav Sidhanti Date: Fri, 19 Jun 2015 14:06:25 -0700 Subject: [PATCH 1/8] Java and Android template changes to accommodate query params defined by the collection-format. --- .../languages/AndroidClientCodegen.java | 2 + .../codegen/languages/JavaClientCodegen.java | 1 + .../main/resources/Java/ApiClient.mustache | 79 ++++++++++++++++--- .../main/resources/Java/QueryParam.mustache | 38 +++++++++ .../src/main/resources/Java/api.mustache | 9 ++- .../resources/Java/auth/ApiKeyAuth.mustache | 7 +- .../Java/auth/Authentication.mustache | 5 +- .../Java/auth/HttpBasicAuth.mustache | 5 +- .../main/resources/Java/auth/OAuth.mustache | 5 +- .../android-java/QueryParam.mustache | 38 +++++++++ .../main/resources/android-java/api.mustache | 10 ++- .../android-java/apiInvoker.mustache | 78 +++++++++++++++--- .../java/io/swagger/client/ApiInvoker.java | 78 +++++++++++++++--- .../java/io/swagger/client/QueryParam.java | 38 +++++++++ .../java/io/swagger/client/api/PetApi.java | 26 +++--- .../java/io/swagger/client/api/StoreApi.java | 9 ++- .../java/io/swagger/client/api/UserApi.java | 25 +++--- .../java/io/swagger/client/model/Pet.java | 2 +- .../java/io/swagger/client/ApiClient.java | 79 ++++++++++++++++--- .../java/io/swagger/client/QueryParam.java | 38 +++++++++ .../java/io/swagger/client/api/PetApi.java | 29 +++---- .../java/io/swagger/client/api/StoreApi.java | 9 ++- .../java/io/swagger/client/api/UserApi.java | 25 +++--- .../io/swagger/client/auth/ApiKeyAuth.java | 7 +- .../swagger/client/auth/Authentication.java | 5 +- .../io/swagger/client/auth/HttpBasicAuth.java | 5 +- .../java/io/swagger/client/auth/OAuth.java | 5 +- .../java/io/swagger/client/model/Pet.java | 2 +- .../swagger/client/auth/ApiKeyAuthTest.java | 12 ++- .../client/auth/HttpBasicAuthTest.java | 5 +- 30 files changed, 556 insertions(+), 120 deletions(-) create mode 100644 modules/swagger-codegen/src/main/resources/Java/QueryParam.mustache create mode 100644 modules/swagger-codegen/src/main/resources/android-java/QueryParam.mustache create mode 100644 samples/client/petstore/android-java/src/main/java/io/swagger/client/QueryParam.java create mode 100644 samples/client/petstore/java/src/main/java/io/swagger/client/QueryParam.java diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidClientCodegen.java index 9a3237d92ca..2d0af4c6c0b 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidClientCodegen.java @@ -232,6 +232,8 @@ public class AndroidClientCodegen extends DefaultCodegen implements CodegenConfi (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "JsonUtil.java")); supportingFiles.add(new SupportingFile("apiException.mustache", (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "ApiException.java")); + supportingFiles.add(new SupportingFile("QueryParam.mustache", + (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "QueryParam.java")); } public Boolean getUseAndroidMavenGradlePlugin() { diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java index fcec455e9b3..0f4e8c212ac 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java @@ -116,6 +116,7 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("Configuration.mustache", invokerFolder, "Configuration.java")); supportingFiles.add(new SupportingFile("JsonUtil.mustache", invokerFolder, "JsonUtil.java")); supportingFiles.add(new SupportingFile("StringUtil.mustache", invokerFolder, "StringUtil.java")); + supportingFiles.add(new SupportingFile("QueryParam.mustache", invokerFolder, "QueryParam.java")); final String authFolder = (sourceFolder + File.separator + invokerPackage + ".auth").replace(".", File.separator); supportingFiles.add(new SupportingFile("auth/Authentication.mustache", authFolder, "Authentication.java")); diff --git a/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache index 352401ba0d8..59a0ee73281 100644 --- a/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache @@ -22,6 +22,8 @@ import java.util.Map; import java.util.Map.Entry; import java.util.HashMap; import java.util.List; +import java.util.Set; +import java.util.HashSet; import java.util.Date; import java.util.TimeZone; @@ -238,6 +240,61 @@ public class ApiClient { } } + /* + Format to {@code QueryParam} objects. + */ + public Set parameterToQueryParams(String collectionFormat, String name, Object value){ + Set params = new HashSet(); + + // preconditions + if (name == null || name.isEmpty() || value == null) return params; + + Collection valueCollection = null; + if (value instanceof Collection) { + valueCollection = (Collection) value; + } + + if (valueCollection == null) { + params.add(new QueryParam(name, String.valueOf(value))); + return params; + } else if (valueCollection.isEmpty()) { + return params; + } + + collectionFormat = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat); // default: csv + + if (collectionFormat.equals("csv")) { + params.add(new QueryParam(name, parameterToString(value))); + } else if (collectionFormat.equals("multi")) { + for (String item : valueCollection) { + params.add(new QueryParam(name, item)); + } + } else if (collectionFormat.equals("ssv")) { + StringBuilder sb = new StringBuilder() ; + for (String item : valueCollection) { + sb.append(" "); + sb.append(item); + } + params.add(new QueryParam(name, sb.substring(1))); + } else if (collectionFormat.equals("tsv")) { + StringBuilder sb = new StringBuilder() ; + for (String item : valueCollection) { + sb.append("\t"); + sb.append(item); + } + params.add(new QueryParam(name, sb.substring(1))); + } else if (collectionFormat.equals("pipes")) { + StringBuilder sb = new StringBuilder() ; + for (String item : valueCollection) { + sb.append("|"); + sb.append(item); + } + params.add(new QueryParam(name, sb.substring(1))); + } + + return params; + } + /** * Select the Accept header's value from the given accepts array: * if JSON exists in the given array, use it; @@ -341,23 +398,25 @@ public class ApiClient { * @param authNames The authentications to apply * @return The response body in type of string */ - public String invokeAPI(String path, String method, Map queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType, String[] authNames) throws ApiException { + public String invokeAPI(String path, String method, Set queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType, String[] authNames) throws ApiException { updateParamsForAuth(authNames, queryParams, headerParams); Client client = getClient(); StringBuilder b = new StringBuilder(); - for(String key : queryParams.keySet()) { - String value = queryParams.get(key); - if (value != null){ - if(b.toString().length() == 0) - b.append("?"); - else + b.append("?"); + if (queryParams != null){ + for (QueryParam queryParam : queryParams){ + if (!queryParam.getName().isEmpty()) { + b.append(escapeString(queryParam.getName())); + b.append("="); + b.append(escapeString(queryParam.getValue())); b.append("&"); - b.append(escapeString(key)).append("=").append(escapeString(value)); + } } } - String querystring = b.toString(); + + String querystring = b.substring(0, b.length() - 1); Builder builder; if (accept == null) @@ -457,7 +516,7 @@ public class ApiClient { * * @param authNames The authentications to apply */ - private void updateParamsForAuth(String[] authNames, Map queryParams, Map headerParams) { + private void updateParamsForAuth(String[] authNames, Set queryParams, Map headerParams) { for (String authName : authNames) { Authentication auth = authentications.get(authName); if (auth == null) throw new RuntimeException("Authentication undefined: " + authName); diff --git a/modules/swagger-codegen/src/main/resources/Java/QueryParam.mustache b/modules/swagger-codegen/src/main/resources/Java/QueryParam.mustache new file mode 100644 index 00000000000..23b1b26f55c --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/Java/QueryParam.mustache @@ -0,0 +1,38 @@ +package {{invokerPackage}}; + +public class QueryParam { + private String name = ""; + private String value = ""; + + public QueryParam(String name, String value) { + setName(name); + setValue(value); + } + + private void setName(String name) { + if (!isValidString(name)) return; + + this.name = name; + } + + private void setValue(String value) { + if (!isValidString(value)) return; + + this.value = value; + } + + public String getName() { + return this.name; + } + + public String getValue() { + return this.value; + } + + private boolean isValidString(String arg) { + if (arg == null) return false; + if (arg.trim().isEmpty()) return false; + + return true; + } +} diff --git a/modules/swagger-codegen/src/main/resources/Java/api.mustache b/modules/swagger-codegen/src/main/resources/Java/api.mustache index 63357afd896..66dc25d66bf 100644 --- a/modules/swagger-codegen/src/main/resources/Java/api.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/api.mustache @@ -3,6 +3,7 @@ package {{package}}; import {{invokerPackage}}.ApiException; import {{invokerPackage}}.ApiClient; import {{invokerPackage}}.Configuration; +import {{invokerPackage}}.QueryParam; import {{modelPackage}}.*; @@ -61,16 +62,16 @@ public class {{classname}} { .replaceAll("\\{" + "{{paramName}}" + "\\}", apiClient.escapeString({{{paramName}}}.toString())){{/pathParams}}; // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); - {{#queryParams}}if ({{paramName}} != null) - queryParams.put("{{baseName}}", apiClient.parameterToString({{paramName}})); + {{#queryParams}} + queryParams.addAll(apiClient.parameterToQueryParams("{{#collectionFormat}}{{{collectionFormat}}}{{/collectionFormat}}", "{{baseName}}", {{paramName}})); {{/queryParams}} {{#headerParams}}if ({{paramName}} != null) - headerParams.put("{{baseName}}", apiClient.parameterToString({{paramName}})); + headerParams.put("{{baseName}}", apiClient.parameterToString({{paramName}})); {{/headerParams}} final String[] accepts = { diff --git a/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache b/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache index 65720b958cb..46fa51087b6 100644 --- a/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache @@ -1,6 +1,9 @@ package {{invokerPackage}}.auth; +import {{invokerPackage}}.QueryParam; + import java.util.Map; +import java.util.Set; public class ApiKeyAuth implements Authentication { private final String location; @@ -39,7 +42,7 @@ public class ApiKeyAuth implements Authentication { } @Override - public void applyToParams(Map queryParams, Map headerParams) { + public void applyToParams(Set queryParams, Map headerParams) { String value; if (apiKeyPrefix != null) { value = apiKeyPrefix + " " + apiKey; @@ -47,7 +50,7 @@ public class ApiKeyAuth implements Authentication { value = apiKey; } if (location == "query") { - queryParams.put(paramName, value); + queryParams.add(new QueryParam(paramName, value)); } else if (location == "header") { headerParams.put(paramName, value); } diff --git a/modules/swagger-codegen/src/main/resources/Java/auth/Authentication.mustache b/modules/swagger-codegen/src/main/resources/Java/auth/Authentication.mustache index 1b2e2bc2fbe..1f39a402b2c 100644 --- a/modules/swagger-codegen/src/main/resources/Java/auth/Authentication.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/auth/Authentication.mustache @@ -1,8 +1,11 @@ package {{invokerPackage}}.auth; +import {{invokerPackage}}.QueryParam; + import java.util.Map; +import java.util.Set; public interface Authentication { /** Apply authentication settings to header and query params. */ - void applyToParams(Map queryParams, Map headerParams); + void applyToParams(Set queryParams, Map headerParams); } diff --git a/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache b/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache index 22a64b1a24e..b5bc993f7c4 100644 --- a/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache @@ -1,6 +1,9 @@ package {{invokerPackage}}.auth; +import {{invokerPackage}}.QueryParam; + import java.util.Map; +import java.util.Set; import java.io.UnsupportedEncodingException; import javax.xml.bind.DatatypeConverter; @@ -26,7 +29,7 @@ public class HttpBasicAuth implements Authentication { } @Override - public void applyToParams(Map queryParams, Map headerParams) { + public void applyToParams(Set queryParams, Map headerParams) { String str = (username == null ? "" : username) + ":" + (password == null ? "" : password); try { headerParams.put("Authorization", "Basic " + DatatypeConverter.printBase64Binary(str.getBytes("UTF-8"))); diff --git a/modules/swagger-codegen/src/main/resources/Java/auth/OAuth.mustache b/modules/swagger-codegen/src/main/resources/Java/auth/OAuth.mustache index ef84b8cc05e..ab634489eda 100644 --- a/modules/swagger-codegen/src/main/resources/Java/auth/OAuth.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/auth/OAuth.mustache @@ -1,10 +1,13 @@ package {{invokerPackage}}.auth; +import {{invokerPackage}}.QueryParam; + import java.util.Map; +import java.util.Set; public class OAuth implements Authentication { @Override - public void applyToParams(Map queryParams, Map headerParams) { + public void applyToParams(Set queryParams, Map headerParams) { // TODO: support oauth } } diff --git a/modules/swagger-codegen/src/main/resources/android-java/QueryParam.mustache b/modules/swagger-codegen/src/main/resources/android-java/QueryParam.mustache new file mode 100644 index 00000000000..23b1b26f55c --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/android-java/QueryParam.mustache @@ -0,0 +1,38 @@ +package {{invokerPackage}}; + +public class QueryParam { + private String name = ""; + private String value = ""; + + public QueryParam(String name, String value) { + setName(name); + setValue(value); + } + + private void setName(String name) { + if (!isValidString(name)) return; + + this.name = name; + } + + private void setValue(String value) { + if (!isValidString(value)) return; + + this.value = value; + } + + public String getName() { + return this.name; + } + + public String getValue() { + return this.value; + } + + private boolean isValidString(String arg) { + if (arg == null) return false; + if (arg.trim().isEmpty()) return false; + + return true; + } +} diff --git a/modules/swagger-codegen/src/main/resources/android-java/api.mustache b/modules/swagger-codegen/src/main/resources/android-java/api.mustache index ed9538c1594..6e34a898ad0 100644 --- a/modules/swagger-codegen/src/main/resources/android-java/api.mustache +++ b/modules/swagger-codegen/src/main/resources/android-java/api.mustache @@ -2,6 +2,7 @@ package {{package}}; import {{invokerPackage}}.ApiException; import {{invokerPackage}}.ApiInvoker; +import {{invokerPackage}}.QueryParam; import {{modelPackage}}.*; @@ -58,17 +59,18 @@ public class {{classname}} { String path = "{{path}}".replaceAll("\\{format\\}","json"){{#pathParams}}.replaceAll("\\{" + "{{paramName}}" + "\\}", apiInvoker.escapeString({{{paramName}}}.toString())){{/pathParams}}; // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params Map formParams = new HashMap(); - {{#queryParams}}if ({{paramName}} != null) - queryParams.put("{{baseName}}", ApiInvoker.parameterToString({{paramName}})); + {{#queryParams}} + queryParams.addAll(ApiInvoker.parameterToQueryParams("{{#collectionFormat}}{{{collectionFormat}}}{{/collectionFormat}}", "{{baseName}}", {{paramName}})); {{/queryParams}} - {{#headerParams}}headerParams.put("{{baseName}}", ApiInvoker.parameterToString({{paramName}})); + {{#headerParams}} + headerParams.put("{{baseName}}", ApiInvoker.parameterToString({{paramName}})); {{/headerParams}} String[] contentTypes = { diff --git a/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache index e759f8264a4..d7a9d8b357c 100644 --- a/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache @@ -23,6 +23,8 @@ import java.util.Collection; import java.util.Map; import java.util.HashMap; import java.util.List; +import java.util.Set; +import java.util.HashSet; import java.io.IOException; import java.io.UnsupportedEncodingException; @@ -132,6 +134,61 @@ public class ApiInvoker { } } + /* + Format to {@code QueryParam} objects. + */ + public Set parameterToQueryParams(String collectionFormat, String name, Object value){ + Set params = new HashSet(); + + // preconditions + if (name == null || name.isEmpty() || value == null) return params; + + Collection valueCollection = null; + if (value instanceof Collection) { + valueCollection = (Collection) value; + } + + if (valueCollection == null) { + params.add(new QueryParam(name, String.valueOf(value))); + return params; + } else if (valueCollection.isEmpty()) { + return params; + } + + collectionFormat = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat); // default: csv + + if (collectionFormat.equals("csv")) { + params.add(new QueryParam(name, parameterToString(value))); + } else if (collectionFormat.equals("multi")) { + for (String item : valueCollection) { + params.add(new QueryParam(name, item)); + } + } else if (collectionFormat.equals("ssv")) { + StringBuilder sb = new StringBuilder() ; + for (String item : valueCollection) { + sb.append(" "); + sb.append(item); + } + params.add(new QueryParam(name, sb.substring(1))); + } else if (collectionFormat.equals("tsv")) { + StringBuilder sb = new StringBuilder() ; + for (String item : valueCollection) { + sb.append("\t"); + sb.append(item); + } + params.add(new QueryParam(name, sb.substring(1))); + } else if (collectionFormat.equals("pipes")) { + StringBuilder sb = new StringBuilder() ; + for (String item : valueCollection) { + sb.append("|"); + sb.append(item); + } + params.add(new QueryParam(name, sb.substring(1))); + } + + return params; + } + public ApiInvoker() { initConnectionManager(); } @@ -184,21 +241,24 @@ 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, Set queryParams, Object body, Map headerParams, Map formParams, String contentType) throws ApiException { HttpClient client = getClient(host); StringBuilder b = new StringBuilder(); - for(String key : queryParams.keySet()) { - String value = queryParams.get(key); - if (value != null){ - if(b.toString().length() == 0) - b.append("?"); - else + b.append("?"); + if (queryParams != null){ + for (QueryParam queryParam : queryParams){ + if (!queryParam.getName().isEmpty()) { + b.append(escapeString(queryParam.getName())); + b.append("="); + b.append(escapeString(queryParam.getValue())); b.append("&"); - b.append(escapeString(key)).append("=").append(escapeString(value)); + } } } - String url = host + path + b.toString(); + + String querystring = b.substring(0, b.length() - 1); + String url = host + path + querystring; HashMap headers = new HashMap(); diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java index ec6218e602c..58ecbde38c6 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java @@ -23,6 +23,8 @@ import java.util.Collection; import java.util.Map; import java.util.HashMap; import java.util.List; +import java.util.Set; +import java.util.HashSet; import java.io.IOException; import java.io.UnsupportedEncodingException; @@ -132,6 +134,61 @@ public class ApiInvoker { } } + /* + Format to {@code QueryParam} objects. + */ + public Set parameterToQueryParams(String collectionFormat, String name, Object value){ + Set params = new HashSet(); + + // preconditions + if (name == null || name.isEmpty() || value == null) return params; + + Collection valueCollection = null; + if (value instanceof Collection) { + valueCollection = (Collection) value; + } + + if (valueCollection == null) { + params.add(new QueryParam(name, String.valueOf(value))); + return params; + } else if (valueCollection.isEmpty()) { + return params; + } + + collectionFormat = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat); // default: csv + + if (collectionFormat.equals("csv")) { + params.add(new QueryParam(name, parameterToString(value))); + } else if (collectionFormat.equals("multi")) { + for (String item : valueCollection) { + params.add(new QueryParam(name, item)); + } + } else if (collectionFormat.equals("ssv")) { + StringBuilder sb = new StringBuilder() ; + for (String item : valueCollection) { + sb.append(" "); + sb.append(item); + } + params.add(new QueryParam(name, sb.substring(1))); + } else if (collectionFormat.equals("tsv")) { + StringBuilder sb = new StringBuilder() ; + for (String item : valueCollection) { + sb.append("\t"); + sb.append(item); + } + params.add(new QueryParam(name, sb.substring(1))); + } else if (collectionFormat.equals("pipes")) { + StringBuilder sb = new StringBuilder() ; + for (String item : valueCollection) { + sb.append("|"); + sb.append(item); + } + params.add(new QueryParam(name, sb.substring(1))); + } + + return params; + } + public ApiInvoker() { initConnectionManager(); } @@ -184,21 +241,24 @@ 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, Set queryParams, Object body, Map headerParams, Map formParams, String contentType) throws ApiException { HttpClient client = getClient(host); StringBuilder b = new StringBuilder(); - for(String key : queryParams.keySet()) { - String value = queryParams.get(key); - if (value != null){ - if(b.toString().length() == 0) - b.append("?"); - else + b.append("?"); + if (queryParams != null){ + for (QueryParam queryParam : queryParams){ + if (!queryParam.getName().isEmpty()) { + b.append(escapeString(queryParam.getName())); + b.append("="); + b.append(escapeString(queryParam.getValue())); b.append("&"); - b.append(escapeString(key)).append("=").append(escapeString(value)); + } } } - String url = host + path + b.toString(); + + String querystring = b.substring(0, b.length() - 1); + String url = host + path + querystring; HashMap headers = new HashMap(); diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/QueryParam.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/QueryParam.java new file mode 100644 index 00000000000..240352e890f --- /dev/null +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/QueryParam.java @@ -0,0 +1,38 @@ +package io.swagger.client; + +public class QueryParam { + private String name = ""; + private String value = ""; + + public QueryParam(String name, String value) { + setName(name); + setValue(value); + } + + private void setName(String name) { + if (!isValidString(name)) return; + + this.name = name; + } + + private void setValue(String value) { + if (!isValidString(value)) return; + + this.value = value; + } + + public String getName() { + return this.name; + } + + public String getValue() { + return this.value; + } + + private boolean isValidString(String arg) { + if (arg == null) return false; + if (arg.trim().isEmpty()) return false; + + return true; + } +} diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/PetApi.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/PetApi.java index ebf600d787e..db10c57f112 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/PetApi.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/PetApi.java @@ -2,6 +2,7 @@ package io.swagger.client.api; import io.swagger.client.ApiException; import io.swagger.client.ApiInvoker; +import io.swagger.client.QueryParam; import io.swagger.client.model.*; @@ -52,7 +53,7 @@ public class PetApi { String path = "/pet".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -106,7 +107,7 @@ public class PetApi { String path = "/pet".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -160,14 +161,14 @@ public class PetApi { String path = "/pet/findByStatus".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params Map formParams = new HashMap(); - if (status != null) - queryParams.put("status", ApiInvoker.parameterToString(status)); + + queryParams.addAll(ApiInvoker.parameterToQueryParams("multi", "status", status)); @@ -216,14 +217,14 @@ public class PetApi { String path = "/pet/findByTags".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params Map formParams = new HashMap(); - if (tags != null) - queryParams.put("tags", ApiInvoker.parameterToString(tags)); + + queryParams.addAll(ApiInvoker.parameterToQueryParams("multi", "tags", tags)); @@ -277,7 +278,7 @@ public class PetApi { String path = "/pet/{petId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "petId" + "\\}", apiInvoker.escapeString(petId.toString())); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -338,7 +339,7 @@ public class PetApi { String path = "/pet/{petId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "petId" + "\\}", apiInvoker.escapeString(petId.toString())); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -408,7 +409,7 @@ public class PetApi { String path = "/pet/{petId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "petId" + "\\}", apiInvoker.escapeString(petId.toString())); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -416,6 +417,7 @@ public class PetApi { + headerParams.put("api_key", ApiInvoker.parameterToString(apiKey)); @@ -470,7 +472,7 @@ public class PetApi { String path = "/pet/{petId}/uploadImage".replaceAll("\\{format\\}","json").replaceAll("\\{" + "petId" + "\\}", apiInvoker.escapeString(petId.toString())); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/StoreApi.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/StoreApi.java index ecd8e833049..e8d50c30df7 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/StoreApi.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/StoreApi.java @@ -2,6 +2,7 @@ package io.swagger.client.api; import io.swagger.client.ApiException; import io.swagger.client.ApiInvoker; +import io.swagger.client.QueryParam; import io.swagger.client.model.*; @@ -51,7 +52,7 @@ public class StoreApi { String path = "/store/inventory".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -105,7 +106,7 @@ public class StoreApi { String path = "/store/order".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -164,7 +165,7 @@ public class StoreApi { String path = "/store/order/{orderId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "orderId" + "\\}", apiInvoker.escapeString(orderId.toString())); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -223,7 +224,7 @@ public class StoreApi { String path = "/store/order/{orderId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "orderId" + "\\}", apiInvoker.escapeString(orderId.toString())); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/UserApi.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/UserApi.java index e1df3fd4f12..d7505874940 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/UserApi.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/UserApi.java @@ -2,6 +2,7 @@ package io.swagger.client.api; import io.swagger.client.ApiException; import io.swagger.client.ApiInvoker; +import io.swagger.client.QueryParam; import io.swagger.client.model.*; @@ -52,7 +53,7 @@ public class UserApi { String path = "/user".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -106,7 +107,7 @@ public class UserApi { String path = "/user/createWithArray".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -160,7 +161,7 @@ public class UserApi { String path = "/user/createWithList".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -215,16 +216,16 @@ public class UserApi { String path = "/user/login".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params Map formParams = new HashMap(); - if (username != null) - queryParams.put("username", ApiInvoker.parameterToString(username)); - if (password != null) - queryParams.put("password", ApiInvoker.parameterToString(password)); + + queryParams.addAll(ApiInvoker.parameterToQueryParams("", "username", username)); + + queryParams.addAll(ApiInvoker.parameterToQueryParams("", "password", password)); @@ -272,7 +273,7 @@ public class UserApi { String path = "/user/logout".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -331,7 +332,7 @@ public class UserApi { String path = "/user/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}", apiInvoker.escapeString(username.toString())); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -391,7 +392,7 @@ public class UserApi { String path = "/user/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}", apiInvoker.escapeString(username.toString())); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -450,7 +451,7 @@ public class UserApi { String path = "/user/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}", apiInvoker.escapeString(username.toString())); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/model/Pet.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/model/Pet.java index 26219b16a45..90a840e6e42 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/model/Pet.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/model/Pet.java @@ -1,8 +1,8 @@ package io.swagger.client.model; import io.swagger.client.model.Category; -import java.util.*; import io.swagger.client.model.Tag; +import java.util.*; import io.swagger.annotations.*; import com.google.gson.annotations.SerializedName; diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java index 0adcbe7031d..dd14a1c2454 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java @@ -22,6 +22,8 @@ import java.util.Map; import java.util.Map.Entry; import java.util.HashMap; import java.util.List; +import java.util.Set; +import java.util.HashSet; import java.util.Date; import java.util.TimeZone; @@ -237,6 +239,61 @@ public class ApiClient { } } + /* + Format to {@code QueryParam} objects. + */ + public Set parameterToQueryParams(String collectionFormat, String name, Object value){ + Set params = new HashSet(); + + // preconditions + if (name == null || name.isEmpty() || value == null) return params; + + Collection valueCollection = null; + if (value instanceof Collection) { + valueCollection = (Collection) value; + } + + if (valueCollection == null) { + params.add(new QueryParam(name, String.valueOf(value))); + return params; + } else if (valueCollection.isEmpty()) { + return params; + } + + collectionFormat = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat); // default: csv + + if (collectionFormat.equals("csv")) { + params.add(new QueryParam(name, parameterToString(value))); + } else if (collectionFormat.equals("multi")) { + for (String item : valueCollection) { + params.add(new QueryParam(name, item)); + } + } else if (collectionFormat.equals("ssv")) { + StringBuilder sb = new StringBuilder() ; + for (String item : valueCollection) { + sb.append(" "); + sb.append(item); + } + params.add(new QueryParam(name, sb.substring(1))); + } else if (collectionFormat.equals("tsv")) { + StringBuilder sb = new StringBuilder() ; + for (String item : valueCollection) { + sb.append("\t"); + sb.append(item); + } + params.add(new QueryParam(name, sb.substring(1))); + } else if (collectionFormat.equals("pipes")) { + StringBuilder sb = new StringBuilder() ; + for (String item : valueCollection) { + sb.append("|"); + sb.append(item); + } + params.add(new QueryParam(name, sb.substring(1))); + } + + return params; + } + /** * Select the Accept header's value from the given accepts array: * if JSON exists in the given array, use it; @@ -340,23 +397,25 @@ public class ApiClient { * @param authNames The authentications to apply * @return The response body in type of string */ - public String invokeAPI(String path, String method, Map queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType, String[] authNames) throws ApiException { + public String invokeAPI(String path, String method, Set queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType, String[] authNames) throws ApiException { updateParamsForAuth(authNames, queryParams, headerParams); Client client = getClient(); StringBuilder b = new StringBuilder(); - for(String key : queryParams.keySet()) { - String value = queryParams.get(key); - if (value != null){ - if(b.toString().length() == 0) - b.append("?"); - else + b.append("?"); + if (queryParams != null){ + for (QueryParam queryParam : queryParams){ + if (!queryParam.getName().isEmpty()) { + b.append(escapeString(queryParam.getName())); + b.append("="); + b.append(escapeString(queryParam.getValue())); b.append("&"); - b.append(escapeString(key)).append("=").append(escapeString(value)); + } } } - String querystring = b.toString(); + + String querystring = b.substring(0, b.length() - 1); Builder builder; if (accept == null) @@ -456,7 +515,7 @@ public class ApiClient { * * @param authNames The authentications to apply */ - private void updateParamsForAuth(String[] authNames, Map queryParams, Map headerParams) { + private void updateParamsForAuth(String[] authNames, Set queryParams, Map headerParams) { for (String authName : authNames) { Authentication auth = authentications.get(authName); if (auth == null) throw new RuntimeException("Authentication undefined: " + authName); diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/QueryParam.java b/samples/client/petstore/java/src/main/java/io/swagger/client/QueryParam.java new file mode 100644 index 00000000000..240352e890f --- /dev/null +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/QueryParam.java @@ -0,0 +1,38 @@ +package io.swagger.client; + +public class QueryParam { + private String name = ""; + private String value = ""; + + public QueryParam(String name, String value) { + setName(name); + setValue(value); + } + + private void setName(String name) { + if (!isValidString(name)) return; + + this.name = name; + } + + private void setValue(String value) { + if (!isValidString(value)) return; + + this.value = value; + } + + public String getName() { + return this.name; + } + + public String getValue() { + return this.value; + } + + private boolean isValidString(String arg) { + if (arg == null) return false; + if (arg.trim().isEmpty()) return false; + + return true; + } +} 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 c102cf00b51..3fc9bd267e4 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 @@ -3,6 +3,7 @@ package io.swagger.client.api; import io.swagger.client.ApiException; import io.swagger.client.ApiClient; import io.swagger.client.Configuration; +import io.swagger.client.QueryParam; import io.swagger.client.model.*; @@ -54,7 +55,7 @@ public class PetApi { String path = "/pet".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -111,7 +112,7 @@ public class PetApi { String path = "/pet".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -168,12 +169,12 @@ public class PetApi { String path = "/pet/findByStatus".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); - if (status != null) - queryParams.put("status", apiClient.parameterToString(status)); + + queryParams.addAll(apiClient.parameterToQueryParams("multi", "status", status)); @@ -227,12 +228,12 @@ public class PetApi { String path = "/pet/findByTags".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); - if (tags != null) - queryParams.put("tags", apiClient.parameterToString(tags)); + + queryParams.addAll(apiClient.parameterToQueryParams("multi", "tags", tags)); @@ -292,7 +293,7 @@ public class PetApi { .replaceAll("\\{" + "petId" + "\\}", apiClient.escapeString(petId.toString())); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -322,7 +323,7 @@ public class PetApi { } try { - String[] authNames = new String[] { "petstore_auth", "api_key" }; + String[] authNames = new String[] { "api_key", "petstore_auth" }; String response = apiClient.invokeAPI(path, "GET", queryParams, postBody, headerParams, formParams, accept, contentType, authNames); if(response != null){ return (Pet) apiClient.deserialize(response, "", Pet.class); @@ -357,7 +358,7 @@ public class PetApi { .replaceAll("\\{" + "petId" + "\\}", apiClient.escapeString(petId.toString())); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -435,14 +436,14 @@ public class PetApi { .replaceAll("\\{" + "petId" + "\\}", apiClient.escapeString(petId.toString())); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); if (apiKey != null) - headerParams.put("api_key", apiClient.parameterToString(apiKey)); + headerParams.put("api_key", apiClient.parameterToString(apiKey)); final String[] accepts = { @@ -502,7 +503,7 @@ public class PetApi { .replaceAll("\\{" + "petId" + "\\}", apiClient.escapeString(petId.toString())); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); 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 727e791c603..f15b7140a5c 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 @@ -3,6 +3,7 @@ package io.swagger.client.api; import io.swagger.client.ApiException; import io.swagger.client.ApiClient; import io.swagger.client.Configuration; +import io.swagger.client.QueryParam; import io.swagger.client.model.*; @@ -53,7 +54,7 @@ public class StoreApi { String path = "/store/inventory".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -110,7 +111,7 @@ public class StoreApi { String path = "/store/order".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -173,7 +174,7 @@ public class StoreApi { .replaceAll("\\{" + "orderId" + "\\}", apiClient.escapeString(orderId.toString())); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -236,7 +237,7 @@ public class StoreApi { .replaceAll("\\{" + "orderId" + "\\}", apiClient.escapeString(orderId.toString())); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); 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 9e55bbed590..a0c977c7256 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 @@ -3,6 +3,7 @@ package io.swagger.client.api; import io.swagger.client.ApiException; import io.swagger.client.ApiClient; import io.swagger.client.Configuration; +import io.swagger.client.QueryParam; import io.swagger.client.model.*; @@ -54,7 +55,7 @@ public class UserApi { String path = "/user".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -111,7 +112,7 @@ public class UserApi { String path = "/user/createWithArray".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -168,7 +169,7 @@ public class UserApi { String path = "/user/createWithList".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -226,14 +227,14 @@ public class UserApi { String path = "/user/login".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); - if (username != null) - queryParams.put("username", apiClient.parameterToString(username)); - if (password != null) - queryParams.put("password", apiClient.parameterToString(password)); + + queryParams.addAll(apiClient.parameterToQueryParams("", "username", username)); + + queryParams.addAll(apiClient.parameterToQueryParams("", "password", password)); @@ -286,7 +287,7 @@ public class UserApi { String path = "/user/logout".replaceAll("\\{format\\}","json"); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -349,7 +350,7 @@ public class UserApi { .replaceAll("\\{" + "username" + "\\}", apiClient.escapeString(username.toString())); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -413,7 +414,7 @@ public class UserApi { .replaceAll("\\{" + "username" + "\\}", apiClient.escapeString(username.toString())); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -476,7 +477,7 @@ public class UserApi { .replaceAll("\\{" + "username" + "\\}", apiClient.escapeString(username.toString())); // query params - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/ApiKeyAuth.java b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/ApiKeyAuth.java index ce55babb51d..d72432ce2e9 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/ApiKeyAuth.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/ApiKeyAuth.java @@ -1,6 +1,9 @@ package io.swagger.client.auth; +import io.swagger.client.QueryParam; + import java.util.Map; +import java.util.Set; public class ApiKeyAuth implements Authentication { private final String location; @@ -39,7 +42,7 @@ public class ApiKeyAuth implements Authentication { } @Override - public void applyToParams(Map queryParams, Map headerParams) { + public void applyToParams(Set queryParams, Map headerParams) { String value; if (apiKeyPrefix != null) { value = apiKeyPrefix + " " + apiKey; @@ -47,7 +50,7 @@ public class ApiKeyAuth implements Authentication { value = apiKey; } if (location == "query") { - queryParams.put(paramName, value); + queryParams.add(new QueryParam(paramName, value)); } else if (location == "header") { headerParams.put(paramName, value); } diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/Authentication.java b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/Authentication.java index 3f372404c8d..4f661852f34 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/Authentication.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/Authentication.java @@ -1,8 +1,11 @@ package io.swagger.client.auth; +import io.swagger.client.QueryParam; + import java.util.Map; +import java.util.Set; public interface Authentication { /** Apply authentication settings to header and query params. */ - void applyToParams(Map queryParams, Map headerParams); + void applyToParams(Set queryParams, Map headerParams); } diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/HttpBasicAuth.java b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/HttpBasicAuth.java index 24bff8c2266..4beaee8b675 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/HttpBasicAuth.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/HttpBasicAuth.java @@ -1,6 +1,9 @@ package io.swagger.client.auth; +import io.swagger.client.QueryParam; + import java.util.Map; +import java.util.Set; import java.io.UnsupportedEncodingException; import javax.xml.bind.DatatypeConverter; @@ -26,7 +29,7 @@ public class HttpBasicAuth implements Authentication { } @Override - public void applyToParams(Map queryParams, Map headerParams) { + public void applyToParams(Set queryParams, Map headerParams) { String str = (username == null ? "" : username) + ":" + (password == null ? "" : password); try { headerParams.put("Authorization", "Basic " + DatatypeConverter.printBase64Binary(str.getBytes("UTF-8"))); diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/OAuth.java b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/OAuth.java index d834f4580c2..b754567564f 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/OAuth.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/OAuth.java @@ -1,10 +1,13 @@ package io.swagger.client.auth; +import io.swagger.client.QueryParam; + import java.util.Map; +import java.util.Set; public class OAuth implements Authentication { @Override - public void applyToParams(Map queryParams, Map headerParams) { + public void applyToParams(Set queryParams, Map headerParams) { // TODO: support oauth } } diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/model/Pet.java b/samples/client/petstore/java/src/main/java/io/swagger/client/model/Pet.java index ddd0e1038c0..cf7ace02309 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/model/Pet.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/model/Pet.java @@ -1,8 +1,8 @@ package io.swagger.client.model; import io.swagger.client.model.Category; -import java.util.*; import io.swagger.client.model.Tag; +import java.util.*; import io.swagger.annotations.*; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/samples/client/petstore/java/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java b/samples/client/petstore/java/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java index 0a0bf57da61..e99f310f94f 100644 --- a/samples/client/petstore/java/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java +++ b/samples/client/petstore/java/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java @@ -1,8 +1,11 @@ package io.swagger.client.auth; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Set; +import io.swagger.client.QueryParam; import org.junit.*; import static org.junit.Assert.*; @@ -10,7 +13,7 @@ import static org.junit.Assert.*; public class ApiKeyAuthTest { @Test public void testApplyToParamsInQuery() { - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); ApiKeyAuth auth = new ApiKeyAuth("query", "api_key"); @@ -18,14 +21,17 @@ public class ApiKeyAuthTest { auth.applyToParams(queryParams, headerParams); assertEquals(1, queryParams.size()); - assertEquals("my-api-key", queryParams.get("api_key")); + for (QueryParam queryParam : queryParams) { + assertEquals("my-api-key", queryParam.getValue()); + } + // no changes to header parameters assertEquals(0, headerParams.size()); } @Test public void testApplyToParamsInHeaderWithPrefix() { - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); ApiKeyAuth auth = new ApiKeyAuth("header", "X-API-TOKEN"); diff --git a/samples/client/petstore/java/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java b/samples/client/petstore/java/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java index a621cb60e48..5125abce49b 100644 --- a/samples/client/petstore/java/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java +++ b/samples/client/petstore/java/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java @@ -1,8 +1,11 @@ package io.swagger.client.auth; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Set; +import io.swagger.client.QueryParam; import org.junit.*; import static org.junit.Assert.*; @@ -17,7 +20,7 @@ public class HttpBasicAuthTest { @Test public void testApplyToParams() { - Map queryParams = new HashMap(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); auth.setUsername("my-username"); From ecddfb7ccf4376b2986c65cab6eca8d7eca206e7 Mon Sep 17 00:00:00 2001 From: Raghav Sidhanti Date: Mon, 22 Jun 2015 15:16:45 -0700 Subject: [PATCH 2/8] Renamed QueryParam to Pair class in Java templates. --- .../codegen/languages/JavaClientCodegen.java | 2 +- .../main/resources/Java/ApiClient.mustache | 24 +++++++++---------- .../{QueryParam.mustache => Pair.mustache} | 4 ++-- .../src/main/resources/Java/api.mustache | 4 ++-- .../resources/Java/auth/ApiKeyAuth.mustache | 6 ++--- .../Java/auth/Authentication.mustache | 4 ++-- .../Java/auth/HttpBasicAuth.mustache | 4 ++-- .../main/resources/Java/auth/OAuth.mustache | 4 ++-- .../java/io/swagger/client/ApiClient.java | 24 +++++++++---------- .../client/{QueryParam.java => Pair.java} | 4 ++-- .../java/io/swagger/client/api/PetApi.java | 18 +++++++------- .../java/io/swagger/client/api/StoreApi.java | 10 ++++---- .../java/io/swagger/client/api/UserApi.java | 18 +++++++------- .../io/swagger/client/auth/ApiKeyAuth.java | 6 ++--- .../swagger/client/auth/Authentication.java | 4 ++-- .../io/swagger/client/auth/HttpBasicAuth.java | 4 ++-- .../java/io/swagger/client/auth/OAuth.java | 4 ++-- .../swagger/client/auth/ApiKeyAuthTest.java | 8 +++---- .../client/auth/HttpBasicAuthTest.java | 4 ++-- 19 files changed, 78 insertions(+), 78 deletions(-) rename modules/swagger-codegen/src/main/resources/Java/{QueryParam.mustache => Pair.mustache} (89%) rename samples/client/petstore/java/src/main/java/io/swagger/client/{QueryParam.java => Pair.java} (89%) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java index 0f4e8c212ac..2f31cddec6f 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java @@ -116,7 +116,7 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("Configuration.mustache", invokerFolder, "Configuration.java")); supportingFiles.add(new SupportingFile("JsonUtil.mustache", invokerFolder, "JsonUtil.java")); supportingFiles.add(new SupportingFile("StringUtil.mustache", invokerFolder, "StringUtil.java")); - supportingFiles.add(new SupportingFile("QueryParam.mustache", invokerFolder, "QueryParam.java")); + supportingFiles.add(new SupportingFile("Pair.mustache", invokerFolder, "Pair.java")); final String authFolder = (sourceFolder + File.separator + invokerPackage + ".auth").replace(".", File.separator); supportingFiles.add(new SupportingFile("auth/Authentication.mustache", authFolder, "Authentication.java")); diff --git a/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache index 59a0ee73281..888f407a412 100644 --- a/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache @@ -241,10 +241,10 @@ public class ApiClient { } /* - Format to {@code QueryParam} objects. + Format to {@code Pair} objects. */ - public Set parameterToQueryParams(String collectionFormat, String name, Object value){ - Set params = new HashSet(); + public Set parameterToQueryParams(String collectionFormat, String name, Object value){ + Set params = new HashSet(); // preconditions if (name == null || name.isEmpty() || value == null) return params; @@ -255,7 +255,7 @@ public class ApiClient { } if (valueCollection == null) { - params.add(new QueryParam(name, String.valueOf(value))); + params.add(new Pair(name, String.valueOf(value))); return params; } else if (valueCollection.isEmpty()) { return params; @@ -264,10 +264,10 @@ public class ApiClient { collectionFormat = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat); // default: csv if (collectionFormat.equals("csv")) { - params.add(new QueryParam(name, parameterToString(value))); + params.add(new Pair(name, parameterToString(value))); } else if (collectionFormat.equals("multi")) { for (String item : valueCollection) { - params.add(new QueryParam(name, item)); + params.add(new Pair(name, item)); } } else if (collectionFormat.equals("ssv")) { StringBuilder sb = new StringBuilder() ; @@ -275,21 +275,21 @@ public class ApiClient { sb.append(" "); sb.append(item); } - params.add(new QueryParam(name, sb.substring(1))); + params.add(new Pair(name, sb.substring(1))); } else if (collectionFormat.equals("tsv")) { StringBuilder sb = new StringBuilder() ; for (String item : valueCollection) { sb.append("\t"); sb.append(item); } - params.add(new QueryParam(name, sb.substring(1))); + params.add(new Pair(name, sb.substring(1))); } else if (collectionFormat.equals("pipes")) { StringBuilder sb = new StringBuilder() ; for (String item : valueCollection) { sb.append("|"); sb.append(item); } - params.add(new QueryParam(name, sb.substring(1))); + params.add(new Pair(name, sb.substring(1))); } return params; @@ -398,7 +398,7 @@ public class ApiClient { * @param authNames The authentications to apply * @return The response body in type of string */ - public String invokeAPI(String path, String method, Set queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType, String[] authNames) throws ApiException { + public String invokeAPI(String path, String method, Set queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType, String[] authNames) throws ApiException { updateParamsForAuth(authNames, queryParams, headerParams); Client client = getClient(); @@ -406,7 +406,7 @@ public class ApiClient { StringBuilder b = new StringBuilder(); b.append("?"); if (queryParams != null){ - for (QueryParam queryParam : queryParams){ + for (Pair queryParam : queryParams){ if (!queryParam.getName().isEmpty()) { b.append(escapeString(queryParam.getName())); b.append("="); @@ -516,7 +516,7 @@ public class ApiClient { * * @param authNames The authentications to apply */ - private void updateParamsForAuth(String[] authNames, Set queryParams, Map headerParams) { + private void updateParamsForAuth(String[] authNames, Set queryParams, Map headerParams) { for (String authName : authNames) { Authentication auth = authentications.get(authName); if (auth == null) throw new RuntimeException("Authentication undefined: " + authName); diff --git a/modules/swagger-codegen/src/main/resources/Java/QueryParam.mustache b/modules/swagger-codegen/src/main/resources/Java/Pair.mustache similarity index 89% rename from modules/swagger-codegen/src/main/resources/Java/QueryParam.mustache rename to modules/swagger-codegen/src/main/resources/Java/Pair.mustache index 23b1b26f55c..9805c74903b 100644 --- a/modules/swagger-codegen/src/main/resources/Java/QueryParam.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/Pair.mustache @@ -1,10 +1,10 @@ package {{invokerPackage}}; -public class QueryParam { +public class Pair { private String name = ""; private String value = ""; - public QueryParam(String name, String value) { + public Pair (String name, String value) { setName(name); setValue(value); } diff --git a/modules/swagger-codegen/src/main/resources/Java/api.mustache b/modules/swagger-codegen/src/main/resources/Java/api.mustache index 66dc25d66bf..8d8709da186 100644 --- a/modules/swagger-codegen/src/main/resources/Java/api.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/api.mustache @@ -3,7 +3,7 @@ package {{package}}; import {{invokerPackage}}.ApiException; import {{invokerPackage}}.ApiClient; import {{invokerPackage}}.Configuration; -import {{invokerPackage}}.QueryParam; +import {{invokerPackage}}.Pair; import {{modelPackage}}.*; @@ -62,7 +62,7 @@ public class {{classname}} { .replaceAll("\\{" + "{{paramName}}" + "\\}", apiClient.escapeString({{{paramName}}}.toString())){{/pathParams}}; // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); diff --git a/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache b/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache index 46fa51087b6..aefbe453efd 100644 --- a/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache @@ -1,6 +1,6 @@ package {{invokerPackage}}.auth; -import {{invokerPackage}}.QueryParam; +import {{invokerPackage}}.Pair; import java.util.Map; import java.util.Set; @@ -42,7 +42,7 @@ public class ApiKeyAuth implements Authentication { } @Override - public void applyToParams(Set queryParams, Map headerParams) { + public void applyToParams(Set queryParams, Map headerParams) { String value; if (apiKeyPrefix != null) { value = apiKeyPrefix + " " + apiKey; @@ -50,7 +50,7 @@ public class ApiKeyAuth implements Authentication { value = apiKey; } if (location == "query") { - queryParams.add(new QueryParam(paramName, value)); + queryParams.add(new Pair(paramName, value)); } else if (location == "header") { headerParams.put(paramName, value); } diff --git a/modules/swagger-codegen/src/main/resources/Java/auth/Authentication.mustache b/modules/swagger-codegen/src/main/resources/Java/auth/Authentication.mustache index 1f39a402b2c..9e0b328915c 100644 --- a/modules/swagger-codegen/src/main/resources/Java/auth/Authentication.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/auth/Authentication.mustache @@ -1,11 +1,11 @@ package {{invokerPackage}}.auth; -import {{invokerPackage}}.QueryParam; +import {{invokerPackage}}.Pair; import java.util.Map; import java.util.Set; public interface Authentication { /** Apply authentication settings to header and query params. */ - void applyToParams(Set queryParams, Map headerParams); + void applyToParams(Set queryParams, Map headerParams); } diff --git a/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache b/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache index b5bc993f7c4..73c52d96ff1 100644 --- a/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache @@ -1,6 +1,6 @@ package {{invokerPackage}}.auth; -import {{invokerPackage}}.QueryParam; +import {{invokerPackage}}.Pair; import java.util.Map; import java.util.Set; @@ -29,7 +29,7 @@ public class HttpBasicAuth implements Authentication { } @Override - public void applyToParams(Set queryParams, Map headerParams) { + public void applyToParams(Set queryParams, Map headerParams) { String str = (username == null ? "" : username) + ":" + (password == null ? "" : password); try { headerParams.put("Authorization", "Basic " + DatatypeConverter.printBase64Binary(str.getBytes("UTF-8"))); diff --git a/modules/swagger-codegen/src/main/resources/Java/auth/OAuth.mustache b/modules/swagger-codegen/src/main/resources/Java/auth/OAuth.mustache index ab634489eda..4de2fbed905 100644 --- a/modules/swagger-codegen/src/main/resources/Java/auth/OAuth.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/auth/OAuth.mustache @@ -1,13 +1,13 @@ package {{invokerPackage}}.auth; -import {{invokerPackage}}.QueryParam; +import {{invokerPackage}}.Pair; import java.util.Map; import java.util.Set; public class OAuth implements Authentication { @Override - public void applyToParams(Set queryParams, Map headerParams) { + public void applyToParams(Set queryParams, Map headerParams) { // TODO: support oauth } } diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java index dd14a1c2454..441e5cc1f3c 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java @@ -240,10 +240,10 @@ public class ApiClient { } /* - Format to {@code QueryParam} objects. + Format to {@code Pair} objects. */ - public Set parameterToQueryParams(String collectionFormat, String name, Object value){ - Set params = new HashSet(); + public Set parameterToQueryParams(String collectionFormat, String name, Object value){ + Set params = new HashSet(); // preconditions if (name == null || name.isEmpty() || value == null) return params; @@ -254,7 +254,7 @@ public class ApiClient { } if (valueCollection == null) { - params.add(new QueryParam(name, String.valueOf(value))); + params.add(new Pair(name, String.valueOf(value))); return params; } else if (valueCollection.isEmpty()) { return params; @@ -263,10 +263,10 @@ public class ApiClient { collectionFormat = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat); // default: csv if (collectionFormat.equals("csv")) { - params.add(new QueryParam(name, parameterToString(value))); + params.add(new Pair(name, parameterToString(value))); } else if (collectionFormat.equals("multi")) { for (String item : valueCollection) { - params.add(new QueryParam(name, item)); + params.add(new Pair(name, item)); } } else if (collectionFormat.equals("ssv")) { StringBuilder sb = new StringBuilder() ; @@ -274,21 +274,21 @@ public class ApiClient { sb.append(" "); sb.append(item); } - params.add(new QueryParam(name, sb.substring(1))); + params.add(new Pair(name, sb.substring(1))); } else if (collectionFormat.equals("tsv")) { StringBuilder sb = new StringBuilder() ; for (String item : valueCollection) { sb.append("\t"); sb.append(item); } - params.add(new QueryParam(name, sb.substring(1))); + params.add(new Pair(name, sb.substring(1))); } else if (collectionFormat.equals("pipes")) { StringBuilder sb = new StringBuilder() ; for (String item : valueCollection) { sb.append("|"); sb.append(item); } - params.add(new QueryParam(name, sb.substring(1))); + params.add(new Pair(name, sb.substring(1))); } return params; @@ -397,7 +397,7 @@ public class ApiClient { * @param authNames The authentications to apply * @return The response body in type of string */ - public String invokeAPI(String path, String method, Set queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType, String[] authNames) throws ApiException { + public String invokeAPI(String path, String method, Set queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType, String[] authNames) throws ApiException { updateParamsForAuth(authNames, queryParams, headerParams); Client client = getClient(); @@ -405,7 +405,7 @@ public class ApiClient { StringBuilder b = new StringBuilder(); b.append("?"); if (queryParams != null){ - for (QueryParam queryParam : queryParams){ + for (Pair queryParam : queryParams){ if (!queryParam.getName().isEmpty()) { b.append(escapeString(queryParam.getName())); b.append("="); @@ -515,7 +515,7 @@ public class ApiClient { * * @param authNames The authentications to apply */ - private void updateParamsForAuth(String[] authNames, Set queryParams, Map headerParams) { + private void updateParamsForAuth(String[] authNames, Set queryParams, Map headerParams) { for (String authName : authNames) { Authentication auth = authentications.get(authName); if (auth == null) throw new RuntimeException("Authentication undefined: " + authName); diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/QueryParam.java b/samples/client/petstore/java/src/main/java/io/swagger/client/Pair.java similarity index 89% rename from samples/client/petstore/java/src/main/java/io/swagger/client/QueryParam.java rename to samples/client/petstore/java/src/main/java/io/swagger/client/Pair.java index 240352e890f..4b7112f6db6 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/QueryParam.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/Pair.java @@ -1,10 +1,10 @@ package io.swagger.client; -public class QueryParam { +public class Pair { private String name = ""; private String value = ""; - public QueryParam(String name, String value) { + public Pair (String name, String value) { setName(name); setValue(value); } 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 3fc9bd267e4..85d87534175 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 @@ -3,7 +3,7 @@ package io.swagger.client.api; import io.swagger.client.ApiException; import io.swagger.client.ApiClient; import io.swagger.client.Configuration; -import io.swagger.client.QueryParam; +import io.swagger.client.Pair; import io.swagger.client.model.*; @@ -55,7 +55,7 @@ public class PetApi { String path = "/pet".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -112,7 +112,7 @@ public class PetApi { String path = "/pet".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -169,7 +169,7 @@ public class PetApi { String path = "/pet/findByStatus".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -228,7 +228,7 @@ public class PetApi { String path = "/pet/findByTags".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -293,7 +293,7 @@ public class PetApi { .replaceAll("\\{" + "petId" + "\\}", apiClient.escapeString(petId.toString())); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -358,7 +358,7 @@ public class PetApi { .replaceAll("\\{" + "petId" + "\\}", apiClient.escapeString(petId.toString())); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -436,7 +436,7 @@ public class PetApi { .replaceAll("\\{" + "petId" + "\\}", apiClient.escapeString(petId.toString())); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -503,7 +503,7 @@ public class PetApi { .replaceAll("\\{" + "petId" + "\\}", apiClient.escapeString(petId.toString())); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); 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 f15b7140a5c..a94a57990c3 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 @@ -3,7 +3,7 @@ package io.swagger.client.api; import io.swagger.client.ApiException; import io.swagger.client.ApiClient; import io.swagger.client.Configuration; -import io.swagger.client.QueryParam; +import io.swagger.client.Pair; import io.swagger.client.model.*; @@ -54,7 +54,7 @@ public class StoreApi { String path = "/store/inventory".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -111,7 +111,7 @@ public class StoreApi { String path = "/store/order".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -174,7 +174,7 @@ public class StoreApi { .replaceAll("\\{" + "orderId" + "\\}", apiClient.escapeString(orderId.toString())); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -237,7 +237,7 @@ public class StoreApi { .replaceAll("\\{" + "orderId" + "\\}", apiClient.escapeString(orderId.toString())); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); 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 a0c977c7256..4a3a69fe3e4 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 @@ -3,7 +3,7 @@ package io.swagger.client.api; import io.swagger.client.ApiException; import io.swagger.client.ApiClient; import io.swagger.client.Configuration; -import io.swagger.client.QueryParam; +import io.swagger.client.Pair; import io.swagger.client.model.*; @@ -55,7 +55,7 @@ public class UserApi { String path = "/user".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -112,7 +112,7 @@ public class UserApi { String path = "/user/createWithArray".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -169,7 +169,7 @@ public class UserApi { String path = "/user/createWithList".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -227,7 +227,7 @@ public class UserApi { String path = "/user/login".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -287,7 +287,7 @@ public class UserApi { String path = "/user/logout".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -350,7 +350,7 @@ public class UserApi { .replaceAll("\\{" + "username" + "\\}", apiClient.escapeString(username.toString())); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -414,7 +414,7 @@ public class UserApi { .replaceAll("\\{" + "username" + "\\}", apiClient.escapeString(username.toString())); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -477,7 +477,7 @@ public class UserApi { .replaceAll("\\{" + "username" + "\\}", apiClient.escapeString(username.toString())); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); Map formParams = new HashMap(); diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/ApiKeyAuth.java b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/ApiKeyAuth.java index d72432ce2e9..edd98a16414 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/ApiKeyAuth.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/ApiKeyAuth.java @@ -1,6 +1,6 @@ package io.swagger.client.auth; -import io.swagger.client.QueryParam; +import io.swagger.client.Pair; import java.util.Map; import java.util.Set; @@ -42,7 +42,7 @@ public class ApiKeyAuth implements Authentication { } @Override - public void applyToParams(Set queryParams, Map headerParams) { + public void applyToParams(Set queryParams, Map headerParams) { String value; if (apiKeyPrefix != null) { value = apiKeyPrefix + " " + apiKey; @@ -50,7 +50,7 @@ public class ApiKeyAuth implements Authentication { value = apiKey; } if (location == "query") { - queryParams.add(new QueryParam(paramName, value)); + queryParams.add(new Pair(paramName, value)); } else if (location == "header") { headerParams.put(paramName, value); } diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/Authentication.java b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/Authentication.java index 4f661852f34..32e61103cd7 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/Authentication.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/Authentication.java @@ -1,11 +1,11 @@ package io.swagger.client.auth; -import io.swagger.client.QueryParam; +import io.swagger.client.Pair; import java.util.Map; import java.util.Set; public interface Authentication { /** Apply authentication settings to header and query params. */ - void applyToParams(Set queryParams, Map headerParams); + void applyToParams(Set queryParams, Map headerParams); } diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/HttpBasicAuth.java b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/HttpBasicAuth.java index 4beaee8b675..0f2428222ac 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/HttpBasicAuth.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/HttpBasicAuth.java @@ -1,6 +1,6 @@ package io.swagger.client.auth; -import io.swagger.client.QueryParam; +import io.swagger.client.Pair; import java.util.Map; import java.util.Set; @@ -29,7 +29,7 @@ public class HttpBasicAuth implements Authentication { } @Override - public void applyToParams(Set queryParams, Map headerParams) { + public void applyToParams(Set queryParams, Map headerParams) { String str = (username == null ? "" : username) + ":" + (password == null ? "" : password); try { headerParams.put("Authorization", "Basic " + DatatypeConverter.printBase64Binary(str.getBytes("UTF-8"))); diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/OAuth.java b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/OAuth.java index b754567564f..e0b8f942b39 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/OAuth.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/OAuth.java @@ -1,13 +1,13 @@ package io.swagger.client.auth; -import io.swagger.client.QueryParam; +import io.swagger.client.Pair; import java.util.Map; import java.util.Set; public class OAuth implements Authentication { @Override - public void applyToParams(Set queryParams, Map headerParams) { + public void applyToParams(Set queryParams, Map headerParams) { // TODO: support oauth } } diff --git a/samples/client/petstore/java/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java b/samples/client/petstore/java/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java index e99f310f94f..1f0c150cabb 100644 --- a/samples/client/petstore/java/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java +++ b/samples/client/petstore/java/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java @@ -5,7 +5,7 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -import io.swagger.client.QueryParam; +import io.swagger.client.Pair; import org.junit.*; import static org.junit.Assert.*; @@ -13,7 +13,7 @@ import static org.junit.Assert.*; public class ApiKeyAuthTest { @Test public void testApplyToParamsInQuery() { - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); ApiKeyAuth auth = new ApiKeyAuth("query", "api_key"); @@ -21,7 +21,7 @@ public class ApiKeyAuthTest { auth.applyToParams(queryParams, headerParams); assertEquals(1, queryParams.size()); - for (QueryParam queryParam : queryParams) { + for (Pair queryParam : queryParams) { assertEquals("my-api-key", queryParam.getValue()); } @@ -31,7 +31,7 @@ public class ApiKeyAuthTest { @Test public void testApplyToParamsInHeaderWithPrefix() { - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); ApiKeyAuth auth = new ApiKeyAuth("header", "X-API-TOKEN"); diff --git a/samples/client/petstore/java/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java b/samples/client/petstore/java/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java index 5125abce49b..562daa5ba89 100644 --- a/samples/client/petstore/java/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java +++ b/samples/client/petstore/java/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java @@ -5,7 +5,7 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -import io.swagger.client.QueryParam; +import io.swagger.client.Pair; import org.junit.*; import static org.junit.Assert.*; @@ -20,7 +20,7 @@ public class HttpBasicAuthTest { @Test public void testApplyToParams() { - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); Map headerParams = new HashMap(); auth.setUsername("my-username"); From a1b56c9b83757b61db0fbf5b7d824e34b94550cf Mon Sep 17 00:00:00 2001 From: Raghav Sidhanti Date: Mon, 22 Jun 2015 15:28:29 -0700 Subject: [PATCH 3/8] Renamed QueryParam to Pair class in Android templates. --- .../languages/AndroidClientCodegen.java | 4 ++-- .../{QueryParam.mustache => Pair.mustache} | 4 ++-- .../main/resources/android-java/api.mustache | 4 ++-- .../android-java/apiInvoker.mustache | 22 +++++++++---------- .../java/io/swagger/client/ApiInvoker.java | 22 +++++++++---------- .../client/{QueryParam.java => Pair.java} | 4 ++-- .../java/io/swagger/client/api/PetApi.java | 18 +++++++-------- .../java/io/swagger/client/api/StoreApi.java | 10 ++++----- .../java/io/swagger/client/api/UserApi.java | 18 +++++++-------- 9 files changed, 53 insertions(+), 53 deletions(-) rename modules/swagger-codegen/src/main/resources/android-java/{QueryParam.mustache => Pair.mustache} (89%) rename samples/client/petstore/android-java/src/main/java/io/swagger/client/{QueryParam.java => Pair.java} (89%) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidClientCodegen.java index 2d0af4c6c0b..e65736a63f0 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AndroidClientCodegen.java @@ -232,8 +232,8 @@ public class AndroidClientCodegen extends DefaultCodegen implements CodegenConfi (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "JsonUtil.java")); supportingFiles.add(new SupportingFile("apiException.mustache", (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "ApiException.java")); - supportingFiles.add(new SupportingFile("QueryParam.mustache", - (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "QueryParam.java")); + supportingFiles.add(new SupportingFile("Pair.mustache", + (sourceFolder + File.separator + invokerPackage).replace(".", java.io.File.separator), "Pair.java")); } public Boolean getUseAndroidMavenGradlePlugin() { diff --git a/modules/swagger-codegen/src/main/resources/android-java/QueryParam.mustache b/modules/swagger-codegen/src/main/resources/android-java/Pair.mustache similarity index 89% rename from modules/swagger-codegen/src/main/resources/android-java/QueryParam.mustache rename to modules/swagger-codegen/src/main/resources/android-java/Pair.mustache index 23b1b26f55c..5456028a1a0 100644 --- a/modules/swagger-codegen/src/main/resources/android-java/QueryParam.mustache +++ b/modules/swagger-codegen/src/main/resources/android-java/Pair.mustache @@ -1,10 +1,10 @@ package {{invokerPackage}}; -public class QueryParam { +public class Pair { private String name = ""; private String value = ""; - public QueryParam(String name, String value) { + public Pair(String name, String value) { setName(name); setValue(value); } diff --git a/modules/swagger-codegen/src/main/resources/android-java/api.mustache b/modules/swagger-codegen/src/main/resources/android-java/api.mustache index 6e34a898ad0..326f4fbac2c 100644 --- a/modules/swagger-codegen/src/main/resources/android-java/api.mustache +++ b/modules/swagger-codegen/src/main/resources/android-java/api.mustache @@ -2,7 +2,7 @@ package {{package}}; import {{invokerPackage}}.ApiException; import {{invokerPackage}}.ApiInvoker; -import {{invokerPackage}}.QueryParam; +import {{invokerPackage}}.Pair; import {{modelPackage}}.*; @@ -59,7 +59,7 @@ public class {{classname}} { String path = "{{path}}".replaceAll("\\{format\\}","json"){{#pathParams}}.replaceAll("\\{" + "{{paramName}}" + "\\}", apiInvoker.escapeString({{{paramName}}}.toString())){{/pathParams}}; // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params diff --git a/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache index d7a9d8b357c..55d85018500 100644 --- a/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache @@ -135,10 +135,10 @@ public class ApiInvoker { } /* - Format to {@code QueryParam} objects. + Format to {@code Pair} objects. */ - public Set parameterToQueryParams(String collectionFormat, String name, Object value){ - Set params = new HashSet(); + public Set parameterToQueryParams(String collectionFormat, String name, Object value){ + Set params = new HashSet(); // preconditions if (name == null || name.isEmpty() || value == null) return params; @@ -149,7 +149,7 @@ public class ApiInvoker { } if (valueCollection == null) { - params.add(new QueryParam(name, String.valueOf(value))); + params.add(new Pair(name, String.valueOf(value))); return params; } else if (valueCollection.isEmpty()) { return params; @@ -158,10 +158,10 @@ public class ApiInvoker { collectionFormat = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat); // default: csv if (collectionFormat.equals("csv")) { - params.add(new QueryParam(name, parameterToString(value))); + params.add(new Pair(name, parameterToString(value))); } else if (collectionFormat.equals("multi")) { for (String item : valueCollection) { - params.add(new QueryParam(name, item)); + params.add(new Pair(name, item)); } } else if (collectionFormat.equals("ssv")) { StringBuilder sb = new StringBuilder() ; @@ -169,21 +169,21 @@ public class ApiInvoker { sb.append(" "); sb.append(item); } - params.add(new QueryParam(name, sb.substring(1))); + params.add(new Pair(name, sb.substring(1))); } else if (collectionFormat.equals("tsv")) { StringBuilder sb = new StringBuilder() ; for (String item : valueCollection) { sb.append("\t"); sb.append(item); } - params.add(new QueryParam(name, sb.substring(1))); + params.add(new Pair(name, sb.substring(1))); } else if (collectionFormat.equals("pipes")) { StringBuilder sb = new StringBuilder() ; for (String item : valueCollection) { sb.append("|"); sb.append(item); } - params.add(new QueryParam(name, sb.substring(1))); + params.add(new Pair(name, sb.substring(1))); } return params; @@ -241,13 +241,13 @@ public class ApiInvoker { } } - public String invokeAPI(String host, String path, String method, Set queryParams, Object body, Map headerParams, Map formParams, String contentType) throws ApiException { + public String invokeAPI(String host, String path, String method, Set queryParams, Object body, Map headerParams, Map formParams, String contentType) throws ApiException { HttpClient client = getClient(host); StringBuilder b = new StringBuilder(); b.append("?"); if (queryParams != null){ - for (QueryParam queryParam : queryParams){ + for (Pair queryParam : queryParams){ if (!queryParam.getName().isEmpty()) { b.append(escapeString(queryParam.getName())); b.append("="); diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java index 58ecbde38c6..f148a6fcbb7 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java @@ -135,10 +135,10 @@ public class ApiInvoker { } /* - Format to {@code QueryParam} objects. + Format to {@code Pair} objects. */ - public Set parameterToQueryParams(String collectionFormat, String name, Object value){ - Set params = new HashSet(); + public Set parameterToQueryParams(String collectionFormat, String name, Object value){ + Set params = new HashSet(); // preconditions if (name == null || name.isEmpty() || value == null) return params; @@ -149,7 +149,7 @@ public class ApiInvoker { } if (valueCollection == null) { - params.add(new QueryParam(name, String.valueOf(value))); + params.add(new Pair(name, String.valueOf(value))); return params; } else if (valueCollection.isEmpty()) { return params; @@ -158,10 +158,10 @@ public class ApiInvoker { collectionFormat = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat); // default: csv if (collectionFormat.equals("csv")) { - params.add(new QueryParam(name, parameterToString(value))); + params.add(new Pair(name, parameterToString(value))); } else if (collectionFormat.equals("multi")) { for (String item : valueCollection) { - params.add(new QueryParam(name, item)); + params.add(new Pair(name, item)); } } else if (collectionFormat.equals("ssv")) { StringBuilder sb = new StringBuilder() ; @@ -169,21 +169,21 @@ public class ApiInvoker { sb.append(" "); sb.append(item); } - params.add(new QueryParam(name, sb.substring(1))); + params.add(new Pair(name, sb.substring(1))); } else if (collectionFormat.equals("tsv")) { StringBuilder sb = new StringBuilder() ; for (String item : valueCollection) { sb.append("\t"); sb.append(item); } - params.add(new QueryParam(name, sb.substring(1))); + params.add(new Pair(name, sb.substring(1))); } else if (collectionFormat.equals("pipes")) { StringBuilder sb = new StringBuilder() ; for (String item : valueCollection) { sb.append("|"); sb.append(item); } - params.add(new QueryParam(name, sb.substring(1))); + params.add(new Pair(name, sb.substring(1))); } return params; @@ -241,13 +241,13 @@ public class ApiInvoker { } } - public String invokeAPI(String host, String path, String method, Set queryParams, Object body, Map headerParams, Map formParams, String contentType) throws ApiException { + public String invokeAPI(String host, String path, String method, Set queryParams, Object body, Map headerParams, Map formParams, String contentType) throws ApiException { HttpClient client = getClient(host); StringBuilder b = new StringBuilder(); b.append("?"); if (queryParams != null){ - for (QueryParam queryParam : queryParams){ + for (Pair queryParam : queryParams){ if (!queryParam.getName().isEmpty()) { b.append(escapeString(queryParam.getName())); b.append("="); diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/QueryParam.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/Pair.java similarity index 89% rename from samples/client/petstore/android-java/src/main/java/io/swagger/client/QueryParam.java rename to samples/client/petstore/android-java/src/main/java/io/swagger/client/Pair.java index 240352e890f..2710fb5a99b 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/QueryParam.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/Pair.java @@ -1,10 +1,10 @@ package io.swagger.client; -public class QueryParam { +public class Pair { private String name = ""; private String value = ""; - public QueryParam(String name, String value) { + public Pair(String name, String value) { setName(name); setValue(value); } diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/PetApi.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/PetApi.java index db10c57f112..7b792996535 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/PetApi.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/PetApi.java @@ -2,7 +2,7 @@ package io.swagger.client.api; import io.swagger.client.ApiException; import io.swagger.client.ApiInvoker; -import io.swagger.client.QueryParam; +import io.swagger.client.Pair; import io.swagger.client.model.*; @@ -53,7 +53,7 @@ public class PetApi { String path = "/pet".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -107,7 +107,7 @@ public class PetApi { String path = "/pet".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -161,7 +161,7 @@ public class PetApi { String path = "/pet/findByStatus".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -217,7 +217,7 @@ public class PetApi { String path = "/pet/findByTags".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -278,7 +278,7 @@ public class PetApi { String path = "/pet/{petId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "petId" + "\\}", apiInvoker.escapeString(petId.toString())); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -339,7 +339,7 @@ public class PetApi { String path = "/pet/{petId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "petId" + "\\}", apiInvoker.escapeString(petId.toString())); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -409,7 +409,7 @@ public class PetApi { String path = "/pet/{petId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "petId" + "\\}", apiInvoker.escapeString(petId.toString())); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -472,7 +472,7 @@ public class PetApi { String path = "/pet/{petId}/uploadImage".replaceAll("\\{format\\}","json").replaceAll("\\{" + "petId" + "\\}", apiInvoker.escapeString(petId.toString())); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/StoreApi.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/StoreApi.java index e8d50c30df7..e038962ac6e 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/StoreApi.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/StoreApi.java @@ -2,7 +2,7 @@ package io.swagger.client.api; import io.swagger.client.ApiException; import io.swagger.client.ApiInvoker; -import io.swagger.client.QueryParam; +import io.swagger.client.Pair; import io.swagger.client.model.*; @@ -52,7 +52,7 @@ public class StoreApi { String path = "/store/inventory".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -106,7 +106,7 @@ public class StoreApi { String path = "/store/order".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -165,7 +165,7 @@ public class StoreApi { String path = "/store/order/{orderId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "orderId" + "\\}", apiInvoker.escapeString(orderId.toString())); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -224,7 +224,7 @@ public class StoreApi { String path = "/store/order/{orderId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "orderId" + "\\}", apiInvoker.escapeString(orderId.toString())); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/UserApi.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/UserApi.java index d7505874940..3b74f343299 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/UserApi.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/UserApi.java @@ -2,7 +2,7 @@ package io.swagger.client.api; import io.swagger.client.ApiException; import io.swagger.client.ApiInvoker; -import io.swagger.client.QueryParam; +import io.swagger.client.Pair; import io.swagger.client.model.*; @@ -53,7 +53,7 @@ public class UserApi { String path = "/user".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -107,7 +107,7 @@ public class UserApi { String path = "/user/createWithArray".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -161,7 +161,7 @@ public class UserApi { String path = "/user/createWithList".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -216,7 +216,7 @@ public class UserApi { String path = "/user/login".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -273,7 +273,7 @@ public class UserApi { String path = "/user/logout".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -332,7 +332,7 @@ public class UserApi { String path = "/user/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}", apiInvoker.escapeString(username.toString())); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -392,7 +392,7 @@ public class UserApi { String path = "/user/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}", apiInvoker.escapeString(username.toString())); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params @@ -451,7 +451,7 @@ public class UserApi { String path = "/user/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}", apiInvoker.escapeString(username.toString())); // query params - Set queryParams = new HashSet(); + Set queryParams = new HashSet(); // header params Map headerParams = new HashMap(); // form params From 79a5614be9a8fb7928feca37bc8960e6f6dc60dd Mon Sep 17 00:00:00 2001 From: Raghav Sidhanti Date: Mon, 22 Jun 2015 15:55:29 -0700 Subject: [PATCH 4/8] Invalid strings will be passed as blank query param. --- .../src/main/resources/Java/ApiClient.mustache | 7 ++++++- .../src/main/resources/android-java/apiInvoker.mustache | 7 ++++++- .../src/main/java/io/swagger/client/ApiInvoker.java | 7 ++++++- .../java/src/main/java/io/swagger/client/ApiClient.java | 7 ++++++- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache index 888f407a412..9392277b52c 100644 --- a/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache @@ -247,7 +247,12 @@ public class ApiClient { Set params = new HashSet(); // preconditions - if (name == null || name.isEmpty() || value == null) return params; + if (name == null || name.isEmpty()) return params; + + if (value == null) { + params.add(new Pair(name, value)); + return params; + } Collection valueCollection = null; if (value instanceof Collection) { diff --git a/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache index 55d85018500..61baf88e8ea 100644 --- a/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache @@ -141,7 +141,12 @@ public class ApiInvoker { Set params = new HashSet(); // preconditions - if (name == null || name.isEmpty() || value == null) return params; + if (name == null || name.isEmpty()) return params; + + if (value == null) { + params.add(new Pair(name, value)); + return params; + } Collection valueCollection = null; if (value instanceof Collection) { diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java index f148a6fcbb7..73dc1ddc65b 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java @@ -141,7 +141,12 @@ public class ApiInvoker { Set params = new HashSet(); // preconditions - if (name == null || name.isEmpty() || value == null) return params; + if (name == null || name.isEmpty()) return params; + + if (value == null) { + params.add(new Pair(name, value)); + return params; + } Collection valueCollection = null; if (value instanceof Collection) { diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java index 441e5cc1f3c..cd801e0d763 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java @@ -246,7 +246,12 @@ public class ApiClient { Set params = new HashSet(); // preconditions - if (name == null || name.isEmpty() || value == null) return params; + if (name == null || name.isEmpty()) return params; + + if (value == null) { + params.add(new Pair(name, value)); + return params; + } Collection valueCollection = null; if (value instanceof Collection) { From 32b50e7c8e0202f9dbefadcee3fdd01ec8fdf516 Mon Sep 17 00:00:00 2001 From: Raghav Sidhanti Date: Mon, 22 Jun 2015 17:02:00 -0700 Subject: [PATCH 5/8] Refactored parameterToPairs --- .../main/resources/Java/ApiClient.mustache | 73 ++++++++++--------- .../src/main/resources/Java/api.mustache | 2 +- .../main/resources/android-java/api.mustache | 2 +- .../android-java/apiInvoker.mustache | 73 ++++++++++--------- .../java/io/swagger/client/ApiInvoker.java | 73 ++++++++++--------- .../java/io/swagger/client/api/PetApi.java | 4 +- .../java/io/swagger/client/api/UserApi.java | 4 +- .../java/io/swagger/client/ApiClient.java | 73 ++++++++++--------- .../java/io/swagger/client/api/PetApi.java | 4 +- .../java/io/swagger/client/api/UserApi.java | 4 +- 10 files changed, 158 insertions(+), 154 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache index 9392277b52c..bfa33ac0764 100644 --- a/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache @@ -243,60 +243,61 @@ public class ApiClient { /* Format to {@code Pair} objects. */ - public Set parameterToQueryParams(String collectionFormat, String name, Object value){ + public Set parameterToPairs(String collectionFormat, String name, Object value){ Set params = new HashSet(); // preconditions if (name == null || name.isEmpty()) return params; if (value == null) { - params.add(new Pair(name, value)); + params.add(new Pair(name, "")); return params; } - Collection valueCollection = null; + Collection valueCollection = null; if (value instanceof Collection) { - valueCollection = (Collection) value; - } - - if (valueCollection == null) { - params.add(new Pair(name, String.valueOf(value))); - return params; - } else if (valueCollection.isEmpty()) { + valueCollection = (Collection) value; + } else { + params.add(new Pair(name, parameterToString(value))); return params; } + if (valueCollection.isEmpty()){ + return params; + } + + // get the collection format collectionFormat = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat); // default: csv - if (collectionFormat.equals("csv")) { - params.add(new Pair(name, parameterToString(value))); - } else if (collectionFormat.equals("multi")) { - for (String item : valueCollection) { - params.add(new Pair(name, item)); + // create the params based on the collection format + if (collectionFormat.equals("multi")) { + for (Object item : valueCollection) { + params.add(new Pair(name, parameterToString(item))); } - } else if (collectionFormat.equals("ssv")) { - StringBuilder sb = new StringBuilder() ; - for (String item : valueCollection) { - sb.append(" "); - sb.append(item); - } - params.add(new Pair(name, sb.substring(1))); - } else if (collectionFormat.equals("tsv")) { - StringBuilder sb = new StringBuilder() ; - for (String item : valueCollection) { - sb.append("\t"); - sb.append(item); - } - params.add(new Pair(name, sb.substring(1))); - } else if (collectionFormat.equals("pipes")) { - StringBuilder sb = new StringBuilder() ; - for (String item : valueCollection) { - sb.append("|"); - sb.append(item); - } - params.add(new Pair(name, sb.substring(1))); + + return params; } + String delimiter = ","; + + if (collectionFormat.equals("csv")) { + delimiter = ","; + } else if (collectionFormat.equals("ssv")) { + delimiter = " "; + } else if (collectionFormat.equals("tsv")) { + delimiter = "\t"; + } else if (collectionFormat.equals("pipes")) { + delimiter = "|"; + } + + StringBuilder sb = new StringBuilder() ; + for (Object item : valueCollection) { + sb.append(delimiter); + sb.append(parameterToString(item)); + } + + params.add(new Pair(name, sb.substring(1))); + return params; } diff --git a/modules/swagger-codegen/src/main/resources/Java/api.mustache b/modules/swagger-codegen/src/main/resources/Java/api.mustache index 8d8709da186..c279e4d223e 100644 --- a/modules/swagger-codegen/src/main/resources/Java/api.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/api.mustache @@ -67,7 +67,7 @@ public class {{classname}} { Map formParams = new HashMap(); {{#queryParams}} - queryParams.addAll(apiClient.parameterToQueryParams("{{#collectionFormat}}{{{collectionFormat}}}{{/collectionFormat}}", "{{baseName}}", {{paramName}})); + queryParams.addAll(apiClient.parameterToPairs("{{#collectionFormat}}{{{collectionFormat}}}{{/collectionFormat}}", "{{baseName}}", {{paramName}})); {{/queryParams}} {{#headerParams}}if ({{paramName}} != null) diff --git a/modules/swagger-codegen/src/main/resources/android-java/api.mustache b/modules/swagger-codegen/src/main/resources/android-java/api.mustache index 326f4fbac2c..5113116deb8 100644 --- a/modules/swagger-codegen/src/main/resources/android-java/api.mustache +++ b/modules/swagger-codegen/src/main/resources/android-java/api.mustache @@ -66,7 +66,7 @@ public class {{classname}} { Map formParams = new HashMap(); {{#queryParams}} - queryParams.addAll(ApiInvoker.parameterToQueryParams("{{#collectionFormat}}{{{collectionFormat}}}{{/collectionFormat}}", "{{baseName}}", {{paramName}})); + queryParams.addAll(ApiInvoker.parameterToPairs("{{#collectionFormat}}{{{collectionFormat}}}{{/collectionFormat}}", "{{baseName}}", {{paramName}})); {{/queryParams}} {{#headerParams}} diff --git a/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache index 61baf88e8ea..c3bc2cd39c9 100644 --- a/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache @@ -137,60 +137,61 @@ public class ApiInvoker { /* Format to {@code Pair} objects. */ - public Set parameterToQueryParams(String collectionFormat, String name, Object value){ + public static Set parameterToPairs(String collectionFormat, String name, Object value){ Set params = new HashSet(); // preconditions if (name == null || name.isEmpty()) return params; if (value == null) { - params.add(new Pair(name, value)); + params.add(new Pair(name, "")); return params; } - Collection valueCollection = null; + Collection valueCollection = null; if (value instanceof Collection) { - valueCollection = (Collection) value; - } - - if (valueCollection == null) { - params.add(new Pair(name, String.valueOf(value))); - return params; - } else if (valueCollection.isEmpty()) { + valueCollection = (Collection) value; + } else { + params.add(new Pair(name, parameterToString(value))); return params; } + if (valueCollection.isEmpty()){ + return params; + } + + // get the collection format collectionFormat = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat); // default: csv - if (collectionFormat.equals("csv")) { - params.add(new Pair(name, parameterToString(value))); - } else if (collectionFormat.equals("multi")) { - for (String item : valueCollection) { - params.add(new Pair(name, item)); + // create the params based on the collection format + if (collectionFormat.equals("multi")) { + for (Object item : valueCollection) { + params.add(new Pair(name, parameterToString(item))); } - } else if (collectionFormat.equals("ssv")) { - StringBuilder sb = new StringBuilder() ; - for (String item : valueCollection) { - sb.append(" "); - sb.append(item); - } - params.add(new Pair(name, sb.substring(1))); - } else if (collectionFormat.equals("tsv")) { - StringBuilder sb = new StringBuilder() ; - for (String item : valueCollection) { - sb.append("\t"); - sb.append(item); - } - params.add(new Pair(name, sb.substring(1))); - } else if (collectionFormat.equals("pipes")) { - StringBuilder sb = new StringBuilder() ; - for (String item : valueCollection) { - sb.append("|"); - sb.append(item); - } - params.add(new Pair(name, sb.substring(1))); + + return params; } + String delimiter = ","; + + if (collectionFormat.equals("csv")) { + delimiter = ","; + } else if (collectionFormat.equals("ssv")) { + delimiter = " "; + } else if (collectionFormat.equals("tsv")) { + delimiter = "\t"; + } else if (collectionFormat.equals("pipes")) { + delimiter = "|"; + } + + StringBuilder sb = new StringBuilder() ; + for (Object item : valueCollection) { + sb.append(delimiter); + sb.append(parameterToString(item)); + } + + params.add(new Pair(name, sb.substring(1))); + return params; } diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java index 73dc1ddc65b..f831a54c14b 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java @@ -137,60 +137,61 @@ public class ApiInvoker { /* Format to {@code Pair} objects. */ - public Set parameterToQueryParams(String collectionFormat, String name, Object value){ + public static Set parameterToPairs(String collectionFormat, String name, Object value){ Set params = new HashSet(); // preconditions if (name == null || name.isEmpty()) return params; if (value == null) { - params.add(new Pair(name, value)); + params.add(new Pair(name, "")); return params; } - Collection valueCollection = null; + Collection valueCollection = null; if (value instanceof Collection) { - valueCollection = (Collection) value; - } - - if (valueCollection == null) { - params.add(new Pair(name, String.valueOf(value))); - return params; - } else if (valueCollection.isEmpty()) { + valueCollection = (Collection) value; + } else { + params.add(new Pair(name, parameterToString(value))); return params; } + if (valueCollection.isEmpty()){ + return params; + } + + // get the collection format collectionFormat = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat); // default: csv - if (collectionFormat.equals("csv")) { - params.add(new Pair(name, parameterToString(value))); - } else if (collectionFormat.equals("multi")) { - for (String item : valueCollection) { - params.add(new Pair(name, item)); + // create the params based on the collection format + if (collectionFormat.equals("multi")) { + for (Object item : valueCollection) { + params.add(new Pair(name, parameterToString(item))); } - } else if (collectionFormat.equals("ssv")) { - StringBuilder sb = new StringBuilder() ; - for (String item : valueCollection) { - sb.append(" "); - sb.append(item); - } - params.add(new Pair(name, sb.substring(1))); - } else if (collectionFormat.equals("tsv")) { - StringBuilder sb = new StringBuilder() ; - for (String item : valueCollection) { - sb.append("\t"); - sb.append(item); - } - params.add(new Pair(name, sb.substring(1))); - } else if (collectionFormat.equals("pipes")) { - StringBuilder sb = new StringBuilder() ; - for (String item : valueCollection) { - sb.append("|"); - sb.append(item); - } - params.add(new Pair(name, sb.substring(1))); + + return params; } + String delimiter = ","; + + if (collectionFormat.equals("csv")) { + delimiter = ","; + } else if (collectionFormat.equals("ssv")) { + delimiter = " "; + } else if (collectionFormat.equals("tsv")) { + delimiter = "\t"; + } else if (collectionFormat.equals("pipes")) { + delimiter = "|"; + } + + StringBuilder sb = new StringBuilder() ; + for (Object item : valueCollection) { + sb.append(delimiter); + sb.append(parameterToString(item)); + } + + params.add(new Pair(name, sb.substring(1))); + return params; } diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/PetApi.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/PetApi.java index 7b792996535..8580512c742 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/PetApi.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/PetApi.java @@ -168,7 +168,7 @@ public class PetApi { Map formParams = new HashMap(); - queryParams.addAll(ApiInvoker.parameterToQueryParams("multi", "status", status)); + queryParams.addAll(ApiInvoker.parameterToPairs("multi", "status", status)); @@ -224,7 +224,7 @@ public class PetApi { Map formParams = new HashMap(); - queryParams.addAll(ApiInvoker.parameterToQueryParams("multi", "tags", tags)); + queryParams.addAll(ApiInvoker.parameterToPairs("multi", "tags", tags)); diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/UserApi.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/UserApi.java index 3b74f343299..f8096cb2a87 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/UserApi.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/UserApi.java @@ -223,9 +223,9 @@ public class UserApi { Map formParams = new HashMap(); - queryParams.addAll(ApiInvoker.parameterToQueryParams("", "username", username)); + queryParams.addAll(ApiInvoker.parameterToPairs("", "username", username)); - queryParams.addAll(ApiInvoker.parameterToQueryParams("", "password", password)); + queryParams.addAll(ApiInvoker.parameterToPairs("", "password", password)); diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java index cd801e0d763..b0258026896 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java @@ -242,60 +242,61 @@ public class ApiClient { /* Format to {@code Pair} objects. */ - public Set parameterToQueryParams(String collectionFormat, String name, Object value){ + public Set parameterToPairs(String collectionFormat, String name, Object value){ Set params = new HashSet(); // preconditions if (name == null || name.isEmpty()) return params; if (value == null) { - params.add(new Pair(name, value)); + params.add(new Pair(name, "")); return params; } - Collection valueCollection = null; + Collection valueCollection = null; if (value instanceof Collection) { - valueCollection = (Collection) value; - } - - if (valueCollection == null) { - params.add(new Pair(name, String.valueOf(value))); - return params; - } else if (valueCollection.isEmpty()) { + valueCollection = (Collection) value; + } else { + params.add(new Pair(name, parameterToString(value))); return params; } + if (valueCollection.isEmpty()){ + return params; + } + + // get the collection format collectionFormat = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat); // default: csv - if (collectionFormat.equals("csv")) { - params.add(new Pair(name, parameterToString(value))); - } else if (collectionFormat.equals("multi")) { - for (String item : valueCollection) { - params.add(new Pair(name, item)); + // create the params based on the collection format + if (collectionFormat.equals("multi")) { + for (Object item : valueCollection) { + params.add(new Pair(name, parameterToString(item))); } - } else if (collectionFormat.equals("ssv")) { - StringBuilder sb = new StringBuilder() ; - for (String item : valueCollection) { - sb.append(" "); - sb.append(item); - } - params.add(new Pair(name, sb.substring(1))); - } else if (collectionFormat.equals("tsv")) { - StringBuilder sb = new StringBuilder() ; - for (String item : valueCollection) { - sb.append("\t"); - sb.append(item); - } - params.add(new Pair(name, sb.substring(1))); - } else if (collectionFormat.equals("pipes")) { - StringBuilder sb = new StringBuilder() ; - for (String item : valueCollection) { - sb.append("|"); - sb.append(item); - } - params.add(new Pair(name, sb.substring(1))); + + return params; } + String delimiter = ","; + + if (collectionFormat.equals("csv")) { + delimiter = ","; + } else if (collectionFormat.equals("ssv")) { + delimiter = " "; + } else if (collectionFormat.equals("tsv")) { + delimiter = "\t"; + } else if (collectionFormat.equals("pipes")) { + delimiter = "|"; + } + + StringBuilder sb = new StringBuilder() ; + for (Object item : valueCollection) { + sb.append(delimiter); + sb.append(parameterToString(item)); + } + + params.add(new Pair(name, sb.substring(1))); + return params; } 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 85d87534175..922084ec48f 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 @@ -174,7 +174,7 @@ public class PetApi { Map formParams = new HashMap(); - queryParams.addAll(apiClient.parameterToQueryParams("multi", "status", status)); + queryParams.addAll(apiClient.parameterToPairs("multi", "status", status)); @@ -233,7 +233,7 @@ public class PetApi { Map formParams = new HashMap(); - queryParams.addAll(apiClient.parameterToQueryParams("multi", "tags", tags)); + queryParams.addAll(apiClient.parameterToPairs("multi", "tags", tags)); 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 4a3a69fe3e4..a8e2fa37a85 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 @@ -232,9 +232,9 @@ public class UserApi { Map formParams = new HashMap(); - queryParams.addAll(apiClient.parameterToQueryParams("", "username", username)); + queryParams.addAll(apiClient.parameterToPairs("", "username", username)); - queryParams.addAll(apiClient.parameterToQueryParams("", "password", password)); + queryParams.addAll(apiClient.parameterToPairs("", "password", password)); From 6958db3d3de9fa905be72f3193631ba31e1d74e9 Mon Sep 17 00:00:00 2001 From: Raghav Sidhanti Date: Mon, 22 Jun 2015 17:14:18 -0700 Subject: [PATCH 6/8] Refactored Pairs to use List instead of Set. --- .../src/main/resources/Java/ApiClient.mustache | 11 +++++------ .../src/main/resources/Java/api.mustache | 2 +- .../main/resources/Java/auth/ApiKeyAuth.mustache | 4 ++-- .../resources/Java/auth/Authentication.mustache | 4 ++-- .../resources/Java/auth/HttpBasicAuth.mustache | 4 ++-- .../src/main/resources/Java/auth/OAuth.mustache | 4 ++-- .../src/main/resources/android-java/api.mustache | 2 +- .../resources/android-java/apiInvoker.mustache | 9 ++++----- .../main/java/io/swagger/client/ApiInvoker.java | 9 ++++----- .../main/java/io/swagger/client/api/PetApi.java | 16 ++++++++-------- .../java/io/swagger/client/api/StoreApi.java | 8 ++++---- .../main/java/io/swagger/client/api/UserApi.java | 16 ++++++++-------- .../main/java/io/swagger/client/ApiClient.java | 11 +++++------ .../main/java/io/swagger/client/api/PetApi.java | 16 ++++++++-------- .../java/io/swagger/client/api/StoreApi.java | 8 ++++---- .../main/java/io/swagger/client/api/UserApi.java | 16 ++++++++-------- .../java/io/swagger/client/auth/ApiKeyAuth.java | 4 ++-- .../io/swagger/client/auth/Authentication.java | 4 ++-- .../io/swagger/client/auth/HttpBasicAuth.java | 4 ++-- .../main/java/io/swagger/client/auth/OAuth.java | 4 ++-- .../io/swagger/client/auth/ApiKeyAuthTest.java | 8 ++++---- .../swagger/client/auth/HttpBasicAuthTest.java | 6 +++--- 22 files changed, 83 insertions(+), 87 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache index bfa33ac0764..d8c48e93b10 100644 --- a/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache @@ -22,8 +22,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.HashMap; import java.util.List; -import java.util.Set; -import java.util.HashSet; +import java.util.ArrayList; import java.util.Date; import java.util.TimeZone; @@ -243,8 +242,8 @@ public class ApiClient { /* Format to {@code Pair} objects. */ - public Set parameterToPairs(String collectionFormat, String name, Object value){ - Set params = new HashSet(); + public List parameterToPairs(String collectionFormat, String name, Object value){ + List params = new ArrayList(); // preconditions if (name == null || name.isEmpty()) return params; @@ -404,7 +403,7 @@ public class ApiClient { * @param authNames The authentications to apply * @return The response body in type of string */ - public String invokeAPI(String path, String method, Set queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType, String[] authNames) throws ApiException { + public String invokeAPI(String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType, String[] authNames) throws ApiException { updateParamsForAuth(authNames, queryParams, headerParams); Client client = getClient(); @@ -522,7 +521,7 @@ public class ApiClient { * * @param authNames The authentications to apply */ - private void updateParamsForAuth(String[] authNames, Set queryParams, Map headerParams) { + private void updateParamsForAuth(String[] authNames, List queryParams, Map headerParams) { for (String authName : authNames) { Authentication auth = authentications.get(authName); if (auth == null) throw new RuntimeException("Authentication undefined: " + authName); diff --git a/modules/swagger-codegen/src/main/resources/Java/api.mustache b/modules/swagger-codegen/src/main/resources/Java/api.mustache index c279e4d223e..afb28293cad 100644 --- a/modules/swagger-codegen/src/main/resources/Java/api.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/api.mustache @@ -62,7 +62,7 @@ public class {{classname}} { .replaceAll("\\{" + "{{paramName}}" + "\\}", apiClient.escapeString({{{paramName}}}.toString())){{/pathParams}}; // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); diff --git a/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache b/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache index aefbe453efd..a1824b551ca 100644 --- a/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/auth/ApiKeyAuth.mustache @@ -3,7 +3,7 @@ package {{invokerPackage}}.auth; import {{invokerPackage}}.Pair; import java.util.Map; -import java.util.Set; +import java.util.List; public class ApiKeyAuth implements Authentication { private final String location; @@ -42,7 +42,7 @@ public class ApiKeyAuth implements Authentication { } @Override - public void applyToParams(Set queryParams, Map headerParams) { + public void applyToParams(List queryParams, Map headerParams) { String value; if (apiKeyPrefix != null) { value = apiKeyPrefix + " " + apiKey; diff --git a/modules/swagger-codegen/src/main/resources/Java/auth/Authentication.mustache b/modules/swagger-codegen/src/main/resources/Java/auth/Authentication.mustache index 9e0b328915c..265c74cb76f 100644 --- a/modules/swagger-codegen/src/main/resources/Java/auth/Authentication.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/auth/Authentication.mustache @@ -3,9 +3,9 @@ package {{invokerPackage}}.auth; import {{invokerPackage}}.Pair; import java.util.Map; -import java.util.Set; +import java.util.List; public interface Authentication { /** Apply authentication settings to header and query params. */ - void applyToParams(Set queryParams, Map headerParams); + void applyToParams(List queryParams, Map headerParams); } diff --git a/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache b/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache index 73c52d96ff1..032ea57d4e8 100644 --- a/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/auth/HttpBasicAuth.mustache @@ -3,7 +3,7 @@ package {{invokerPackage}}.auth; import {{invokerPackage}}.Pair; import java.util.Map; -import java.util.Set; +import java.util.List; import java.io.UnsupportedEncodingException; import javax.xml.bind.DatatypeConverter; @@ -29,7 +29,7 @@ public class HttpBasicAuth implements Authentication { } @Override - public void applyToParams(Set queryParams, Map headerParams) { + public void applyToParams(List queryParams, Map headerParams) { String str = (username == null ? "" : username) + ":" + (password == null ? "" : password); try { headerParams.put("Authorization", "Basic " + DatatypeConverter.printBase64Binary(str.getBytes("UTF-8"))); diff --git a/modules/swagger-codegen/src/main/resources/Java/auth/OAuth.mustache b/modules/swagger-codegen/src/main/resources/Java/auth/OAuth.mustache index 4de2fbed905..66cf2ac8f0f 100644 --- a/modules/swagger-codegen/src/main/resources/Java/auth/OAuth.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/auth/OAuth.mustache @@ -3,11 +3,11 @@ package {{invokerPackage}}.auth; import {{invokerPackage}}.Pair; import java.util.Map; -import java.util.Set; +import java.util.List; public class OAuth implements Authentication { @Override - public void applyToParams(Set queryParams, Map headerParams) { + public void applyToParams(List queryParams, Map headerParams) { // TODO: support oauth } } diff --git a/modules/swagger-codegen/src/main/resources/android-java/api.mustache b/modules/swagger-codegen/src/main/resources/android-java/api.mustache index 5113116deb8..9f341301cf0 100644 --- a/modules/swagger-codegen/src/main/resources/android-java/api.mustache +++ b/modules/swagger-codegen/src/main/resources/android-java/api.mustache @@ -59,7 +59,7 @@ public class {{classname}} { String path = "{{path}}".replaceAll("\\{format\\}","json"){{#pathParams}}.replaceAll("\\{" + "{{paramName}}" + "\\}", apiInvoker.escapeString({{{paramName}}}.toString())){{/pathParams}}; // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params diff --git a/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache index c3bc2cd39c9..3aeb9b8505d 100644 --- a/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache @@ -23,8 +23,7 @@ import java.util.Collection; import java.util.Map; import java.util.HashMap; import java.util.List; -import java.util.Set; -import java.util.HashSet; +import java.util.ArrayList; import java.io.IOException; import java.io.UnsupportedEncodingException; @@ -137,8 +136,8 @@ public class ApiInvoker { /* Format to {@code Pair} objects. */ - public static Set parameterToPairs(String collectionFormat, String name, Object value){ - Set params = new HashSet(); + public static List parameterToPairs(String collectionFormat, String name, Object value){ + List params = new ArrayList(); // preconditions if (name == null || name.isEmpty()) return params; @@ -247,7 +246,7 @@ public class ApiInvoker { } } - public String invokeAPI(String host, String path, String method, Set queryParams, Object body, Map headerParams, Map formParams, String contentType) throws ApiException { + public String invokeAPI(String host, String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String contentType) throws ApiException { HttpClient client = getClient(host); StringBuilder b = new StringBuilder(); diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java index f831a54c14b..c55e127cddf 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java @@ -23,8 +23,7 @@ import java.util.Collection; import java.util.Map; import java.util.HashMap; import java.util.List; -import java.util.Set; -import java.util.HashSet; +import java.util.ArrayList; import java.io.IOException; import java.io.UnsupportedEncodingException; @@ -137,8 +136,8 @@ public class ApiInvoker { /* Format to {@code Pair} objects. */ - public static Set parameterToPairs(String collectionFormat, String name, Object value){ - Set params = new HashSet(); + public static List parameterToPairs(String collectionFormat, String name, Object value){ + List params = new ArrayList(); // preconditions if (name == null || name.isEmpty()) return params; @@ -247,7 +246,7 @@ public class ApiInvoker { } } - public String invokeAPI(String host, String path, String method, Set queryParams, Object body, Map headerParams, Map formParams, String contentType) throws ApiException { + public String invokeAPI(String host, String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String contentType) throws ApiException { HttpClient client = getClient(host); StringBuilder b = new StringBuilder(); diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/PetApi.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/PetApi.java index 8580512c742..21ee69d089b 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/PetApi.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/PetApi.java @@ -53,7 +53,7 @@ public class PetApi { String path = "/pet".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params @@ -107,7 +107,7 @@ public class PetApi { String path = "/pet".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params @@ -161,7 +161,7 @@ public class PetApi { String path = "/pet/findByStatus".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params @@ -217,7 +217,7 @@ public class PetApi { String path = "/pet/findByTags".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params @@ -278,7 +278,7 @@ public class PetApi { String path = "/pet/{petId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "petId" + "\\}", apiInvoker.escapeString(petId.toString())); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params @@ -339,7 +339,7 @@ public class PetApi { String path = "/pet/{petId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "petId" + "\\}", apiInvoker.escapeString(petId.toString())); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params @@ -409,7 +409,7 @@ public class PetApi { String path = "/pet/{petId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "petId" + "\\}", apiInvoker.escapeString(petId.toString())); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params @@ -472,7 +472,7 @@ public class PetApi { String path = "/pet/{petId}/uploadImage".replaceAll("\\{format\\}","json").replaceAll("\\{" + "petId" + "\\}", apiInvoker.escapeString(petId.toString())); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/StoreApi.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/StoreApi.java index e038962ac6e..49a3ac4aa9a 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/StoreApi.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/StoreApi.java @@ -52,7 +52,7 @@ public class StoreApi { String path = "/store/inventory".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params @@ -106,7 +106,7 @@ public class StoreApi { String path = "/store/order".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params @@ -165,7 +165,7 @@ public class StoreApi { String path = "/store/order/{orderId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "orderId" + "\\}", apiInvoker.escapeString(orderId.toString())); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params @@ -224,7 +224,7 @@ public class StoreApi { String path = "/store/order/{orderId}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "orderId" + "\\}", apiInvoker.escapeString(orderId.toString())); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/UserApi.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/UserApi.java index f8096cb2a87..a16a745c7f8 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/UserApi.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/api/UserApi.java @@ -53,7 +53,7 @@ public class UserApi { String path = "/user".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params @@ -107,7 +107,7 @@ public class UserApi { String path = "/user/createWithArray".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params @@ -161,7 +161,7 @@ public class UserApi { String path = "/user/createWithList".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params @@ -216,7 +216,7 @@ public class UserApi { String path = "/user/login".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params @@ -273,7 +273,7 @@ public class UserApi { String path = "/user/logout".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params @@ -332,7 +332,7 @@ public class UserApi { String path = "/user/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}", apiInvoker.escapeString(username.toString())); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params @@ -392,7 +392,7 @@ public class UserApi { String path = "/user/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}", apiInvoker.escapeString(username.toString())); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params @@ -451,7 +451,7 @@ public class UserApi { String path = "/user/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}", apiInvoker.escapeString(username.toString())); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); // header params Map headerParams = new HashMap(); // form params diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java index b0258026896..4d50ab3ce84 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java @@ -22,8 +22,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.HashMap; import java.util.List; -import java.util.Set; -import java.util.HashSet; +import java.util.ArrayList; import java.util.Date; import java.util.TimeZone; @@ -242,8 +241,8 @@ public class ApiClient { /* Format to {@code Pair} objects. */ - public Set parameterToPairs(String collectionFormat, String name, Object value){ - Set params = new HashSet(); + public List parameterToPairs(String collectionFormat, String name, Object value){ + List params = new ArrayList(); // preconditions if (name == null || name.isEmpty()) return params; @@ -403,7 +402,7 @@ public class ApiClient { * @param authNames The authentications to apply * @return The response body in type of string */ - public String invokeAPI(String path, String method, Set queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType, String[] authNames) throws ApiException { + public String invokeAPI(String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String accept, String contentType, String[] authNames) throws ApiException { updateParamsForAuth(authNames, queryParams, headerParams); Client client = getClient(); @@ -521,7 +520,7 @@ public class ApiClient { * * @param authNames The authentications to apply */ - private void updateParamsForAuth(String[] authNames, Set queryParams, Map headerParams) { + private void updateParamsForAuth(String[] authNames, List queryParams, Map headerParams) { for (String authName : authNames) { Authentication auth = authentications.get(authName); if (auth == null) throw new RuntimeException("Authentication undefined: " + authName); 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 922084ec48f..402fc9da953 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,7 +55,7 @@ public class PetApi { String path = "/pet".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -112,7 +112,7 @@ public class PetApi { String path = "/pet".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -169,7 +169,7 @@ public class PetApi { String path = "/pet/findByStatus".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -228,7 +228,7 @@ public class PetApi { String path = "/pet/findByTags".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -293,7 +293,7 @@ public class PetApi { .replaceAll("\\{" + "petId" + "\\}", apiClient.escapeString(petId.toString())); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -358,7 +358,7 @@ public class PetApi { .replaceAll("\\{" + "petId" + "\\}", apiClient.escapeString(petId.toString())); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -436,7 +436,7 @@ public class PetApi { .replaceAll("\\{" + "petId" + "\\}", apiClient.escapeString(petId.toString())); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -503,7 +503,7 @@ public class PetApi { .replaceAll("\\{" + "petId" + "\\}", apiClient.escapeString(petId.toString())); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); 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 a94a57990c3..498b6d4a6b8 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,7 +54,7 @@ public class StoreApi { String path = "/store/inventory".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -111,7 +111,7 @@ public class StoreApi { String path = "/store/order".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -174,7 +174,7 @@ public class StoreApi { .replaceAll("\\{" + "orderId" + "\\}", apiClient.escapeString(orderId.toString())); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -237,7 +237,7 @@ public class StoreApi { .replaceAll("\\{" + "orderId" + "\\}", apiClient.escapeString(orderId.toString())); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); 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 a8e2fa37a85..3bff204ac02 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,7 +55,7 @@ public class UserApi { String path = "/user".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -112,7 +112,7 @@ public class UserApi { String path = "/user/createWithArray".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -169,7 +169,7 @@ public class UserApi { String path = "/user/createWithList".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -227,7 +227,7 @@ public class UserApi { String path = "/user/login".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -287,7 +287,7 @@ public class UserApi { String path = "/user/logout".replaceAll("\\{format\\}","json"); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -350,7 +350,7 @@ public class UserApi { .replaceAll("\\{" + "username" + "\\}", apiClient.escapeString(username.toString())); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -414,7 +414,7 @@ public class UserApi { .replaceAll("\\{" + "username" + "\\}", apiClient.escapeString(username.toString())); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); @@ -477,7 +477,7 @@ public class UserApi { .replaceAll("\\{" + "username" + "\\}", apiClient.escapeString(username.toString())); // query params - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); Map formParams = new HashMap(); diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/ApiKeyAuth.java b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/ApiKeyAuth.java index edd98a16414..0e5ca9c7c53 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/ApiKeyAuth.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/ApiKeyAuth.java @@ -3,7 +3,7 @@ package io.swagger.client.auth; import io.swagger.client.Pair; import java.util.Map; -import java.util.Set; +import java.util.List; public class ApiKeyAuth implements Authentication { private final String location; @@ -42,7 +42,7 @@ public class ApiKeyAuth implements Authentication { } @Override - public void applyToParams(Set queryParams, Map headerParams) { + public void applyToParams(List queryParams, Map headerParams) { String value; if (apiKeyPrefix != null) { value = apiKeyPrefix + " " + apiKey; diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/Authentication.java b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/Authentication.java index 32e61103cd7..98b1a6900b9 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/Authentication.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/Authentication.java @@ -3,9 +3,9 @@ package io.swagger.client.auth; import io.swagger.client.Pair; import java.util.Map; -import java.util.Set; +import java.util.List; public interface Authentication { /** Apply authentication settings to header and query params. */ - void applyToParams(Set queryParams, Map headerParams); + void applyToParams(List queryParams, Map headerParams); } diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/HttpBasicAuth.java b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/HttpBasicAuth.java index 0f2428222ac..980b24311be 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/HttpBasicAuth.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/HttpBasicAuth.java @@ -3,7 +3,7 @@ package io.swagger.client.auth; import io.swagger.client.Pair; import java.util.Map; -import java.util.Set; +import java.util.List; import java.io.UnsupportedEncodingException; import javax.xml.bind.DatatypeConverter; @@ -29,7 +29,7 @@ public class HttpBasicAuth implements Authentication { } @Override - public void applyToParams(Set queryParams, Map headerParams) { + public void applyToParams(List queryParams, Map headerParams) { String str = (username == null ? "" : username) + ":" + (password == null ? "" : password); try { headerParams.put("Authorization", "Basic " + DatatypeConverter.printBase64Binary(str.getBytes("UTF-8"))); diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/OAuth.java b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/OAuth.java index e0b8f942b39..39fba5498c0 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/auth/OAuth.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/auth/OAuth.java @@ -3,11 +3,11 @@ package io.swagger.client.auth; import io.swagger.client.Pair; import java.util.Map; -import java.util.Set; +import java.util.List; public class OAuth implements Authentication { @Override - public void applyToParams(Set queryParams, Map headerParams) { + public void applyToParams(List queryParams, Map headerParams) { // TODO: support oauth } } diff --git a/samples/client/petstore/java/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java b/samples/client/petstore/java/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java index 1f0c150cabb..5bdb4fb78fb 100644 --- a/samples/client/petstore/java/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java +++ b/samples/client/petstore/java/src/test/java/io/swagger/client/auth/ApiKeyAuthTest.java @@ -1,9 +1,9 @@ package io.swagger.client.auth; import java.util.HashMap; -import java.util.HashSet; +import java.util.ArrayList; import java.util.Map; -import java.util.Set; +import java.util.List; import io.swagger.client.Pair; import org.junit.*; @@ -13,7 +13,7 @@ import static org.junit.Assert.*; public class ApiKeyAuthTest { @Test public void testApplyToParamsInQuery() { - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); ApiKeyAuth auth = new ApiKeyAuth("query", "api_key"); @@ -31,7 +31,7 @@ public class ApiKeyAuthTest { @Test public void testApplyToParamsInHeaderWithPrefix() { - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); ApiKeyAuth auth = new ApiKeyAuth("header", "X-API-TOKEN"); diff --git a/samples/client/petstore/java/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java b/samples/client/petstore/java/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java index 562daa5ba89..52c5497ba83 100644 --- a/samples/client/petstore/java/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java +++ b/samples/client/petstore/java/src/test/java/io/swagger/client/auth/HttpBasicAuthTest.java @@ -1,9 +1,9 @@ package io.swagger.client.auth; import java.util.HashMap; -import java.util.HashSet; +import java.util.ArrayList; import java.util.Map; -import java.util.Set; +import java.util.List; import io.swagger.client.Pair; import org.junit.*; @@ -20,7 +20,7 @@ public class HttpBasicAuthTest { @Test public void testApplyToParams() { - Set queryParams = new HashSet(); + List queryParams = new ArrayList(); Map headerParams = new HashMap(); auth.setUsername("my-username"); From b4d6fd3ba39d02b72d6d5cccc010108bb9bb1f22 Mon Sep 17 00:00:00 2001 From: Raghav sidhanti Date: Mon, 22 Jun 2015 20:16:35 -0700 Subject: [PATCH 7/8] Returning when query param value is null. --- .../src/main/resources/Java/ApiClient.mustache | 7 +------ .../src/main/resources/android-java/apiInvoker.mustache | 7 +------ .../src/main/java/io/swagger/client/ApiInvoker.java | 7 +------ .../src/main/java/io/swagger/client/model/Pet.java | 2 +- .../java/src/main/java/io/swagger/client/ApiClient.java | 7 +------ .../java/src/main/java/io/swagger/client/api/PetApi.java | 2 +- .../java/src/main/java/io/swagger/client/model/Pet.java | 2 +- 7 files changed, 7 insertions(+), 27 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache index d8c48e93b10..e87819e6944 100644 --- a/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/ApiClient.mustache @@ -246,12 +246,7 @@ public class ApiClient { List params = new ArrayList(); // preconditions - if (name == null || name.isEmpty()) return params; - - if (value == null) { - params.add(new Pair(name, "")); - return params; - } + if (name == null || name.isEmpty() || value == null) return params; Collection valueCollection = null; if (value instanceof Collection) { diff --git a/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache index 3aeb9b8505d..5aabd2458e8 100644 --- a/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache +++ b/modules/swagger-codegen/src/main/resources/android-java/apiInvoker.mustache @@ -140,12 +140,7 @@ public class ApiInvoker { List params = new ArrayList(); // preconditions - if (name == null || name.isEmpty()) return params; - - if (value == null) { - params.add(new Pair(name, "")); - return params; - } + if (name == null || name.isEmpty() || value == null) return params; Collection valueCollection = null; if (value instanceof Collection) { diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java index c55e127cddf..0ccc3713958 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/ApiInvoker.java @@ -140,12 +140,7 @@ public class ApiInvoker { List params = new ArrayList(); // preconditions - if (name == null || name.isEmpty()) return params; - - if (value == null) { - params.add(new Pair(name, "")); - return params; - } + if (name == null || name.isEmpty() || value == null) return params; Collection valueCollection = null; if (value instanceof Collection) { diff --git a/samples/client/petstore/android-java/src/main/java/io/swagger/client/model/Pet.java b/samples/client/petstore/android-java/src/main/java/io/swagger/client/model/Pet.java index 90a840e6e42..26219b16a45 100644 --- a/samples/client/petstore/android-java/src/main/java/io/swagger/client/model/Pet.java +++ b/samples/client/petstore/android-java/src/main/java/io/swagger/client/model/Pet.java @@ -1,8 +1,8 @@ package io.swagger.client.model; import io.swagger.client.model.Category; -import io.swagger.client.model.Tag; import java.util.*; +import io.swagger.client.model.Tag; import io.swagger.annotations.*; import com.google.gson.annotations.SerializedName; diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java index 4d50ab3ce84..9659ce3ba5f 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/ApiClient.java @@ -245,12 +245,7 @@ public class ApiClient { List params = new ArrayList(); // preconditions - if (name == null || name.isEmpty()) return params; - - if (value == null) { - params.add(new Pair(name, "")); - return params; - } + if (name == null || name.isEmpty() || value == null) return params; Collection valueCollection = null; if (value instanceof Collection) { 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 402fc9da953..609fb66af2b 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 @@ -323,7 +323,7 @@ public class PetApi { } try { - String[] authNames = new String[] { "api_key", "petstore_auth" }; + String[] authNames = new String[] { "petstore_auth", "api_key" }; String response = apiClient.invokeAPI(path, "GET", queryParams, postBody, headerParams, formParams, accept, contentType, authNames); if(response != null){ return (Pet) apiClient.deserialize(response, "", Pet.class); diff --git a/samples/client/petstore/java/src/main/java/io/swagger/client/model/Pet.java b/samples/client/petstore/java/src/main/java/io/swagger/client/model/Pet.java index cf7ace02309..ddd0e1038c0 100644 --- a/samples/client/petstore/java/src/main/java/io/swagger/client/model/Pet.java +++ b/samples/client/petstore/java/src/main/java/io/swagger/client/model/Pet.java @@ -1,8 +1,8 @@ package io.swagger.client.model; import io.swagger.client.model.Category; -import io.swagger.client.model.Tag; import java.util.*; +import io.swagger.client.model.Tag; import io.swagger.annotations.*; import com.fasterxml.jackson.annotation.JsonProperty; From 1af23fb75124705456c877f617200bd9e656a7d3 Mon Sep 17 00:00:00 2001 From: Raghav Sidhanti Date: Wed, 24 Jun 2015 11:55:03 -0700 Subject: [PATCH 8/8] Unit tests for Android and Java parameterToPairs method --- .../io/swagger/client/ApiInvokerTest.java | 91 +++++++++++++++++++ .../java/io/swagger/client/ApiClientTest.java | 83 ++++++++++++++++- 2 files changed, 173 insertions(+), 1 deletion(-) create mode 100644 samples/client/petstore/android-java/src/test/java/io/swagger/client/ApiInvokerTest.java diff --git a/samples/client/petstore/android-java/src/test/java/io/swagger/client/ApiInvokerTest.java b/samples/client/petstore/android-java/src/test/java/io/swagger/client/ApiInvokerTest.java new file mode 100644 index 00000000000..3e4b114012c --- /dev/null +++ b/samples/client/petstore/android-java/src/test/java/io/swagger/client/ApiInvokerTest.java @@ -0,0 +1,91 @@ +package io.swagger.client; + +import org.junit.*; +import static org.junit.Assert.*; + +import java.util.*; + + +public class ApiInvokerTest { + + @Test + public void testParameterToPairsWhenNameIsInvalid() throws Exception { + List pairs_a = ApiInvoker.parameterToPairs("csv", null, new Integer(1)); + List pairs_b = ApiInvoker.parameterToPairs("csv", "", new Integer(1)); + + assertTrue(pairs_a.isEmpty()); + assertTrue(pairs_b.isEmpty()); + } + + @Test + public void testParameterToPairsWhenValueIsNull() throws Exception { + List pairs = ApiInvoker.parameterToPairs("csv", "param-a", null); + + assertTrue(pairs.isEmpty()); + } + + @Test + public void testParameterToPairsWhenValueIsEmptyStrings() throws Exception { + + // single empty string + List pairs = ApiInvoker.parameterToPairs("csv", "param-a", " "); + assertEquals(1, pairs.size()); + + // list of empty strings + List strs = new ArrayList(); + strs.add(" "); + strs.add(" "); + strs.add(" "); + + List concatStrings = ApiInvoker.parameterToPairs("csv", "param-a", strs); + + assertEquals(1, concatStrings.size()); + assertFalse(concatStrings.get(0).getValue().isEmpty()); // should contain some delimiters + } + + @Test + public void testParameterToPairsWhenValueIsNotCollection() throws Exception { + String name = "param-a"; + Integer value = 1; + + List pairs = ApiInvoker.parameterToPairs("csv", name, value); + + assertEquals(1, pairs.size()); + assertEquals(value, Integer.valueOf(pairs.get(0).getValue())); + } + + @Test + public void testParameterToPairsWhenValueIsCollection() throws Exception { + Map collectionFormatMap = new HashMap(); + collectionFormatMap.put("csv", ","); + collectionFormatMap.put("tsv", "\t"); + collectionFormatMap.put("ssv", " "); + collectionFormatMap.put("pipes", "\\|"); + collectionFormatMap.put("", ","); // no format, must default to csv + collectionFormatMap.put("unknown", ","); // all other formats, must default to csv + + String name = "param-a"; + + List values = new ArrayList(); + values.add("value-a"); + values.add(123); + values.add(new Date()); + + // check for multi separately + List multiPairs = ApiInvoker.parameterToPairs("multi", name, values); + assertEquals(values.size(), multiPairs.size()); + + // all other formats + for (String collectionFormat : collectionFormatMap.keySet()) { + List pairs = ApiInvoker.parameterToPairs(collectionFormat, name, values); + + assertEquals(1, pairs.size()); + + String delimiter = collectionFormatMap.get(collectionFormat); + String[] pairValueSplit = pairs.get(0).getValue().split(delimiter); + + // must equal input values + assertEquals(values.size(), pairValueSplit.length); + } + } +} 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 index 8a560d2d7bc..802c0cae3b9 100644 --- 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 @@ -2,7 +2,7 @@ package io.swagger.client; import io.swagger.client.auth.*; -import java.util.Map; +import java.util.*; import org.junit.*; import static org.junit.Assert.*; @@ -109,4 +109,85 @@ public class ApiClientTest { auth.setApiKey(null); auth.setApiKeyPrefix(null); } + + @Test + public void testParameterToPairsWhenNameIsInvalid() throws Exception { + List pairs_a = apiClient.parameterToPairs("csv", null, new Integer(1)); + List pairs_b = apiClient.parameterToPairs("csv", "", new Integer(1)); + + assertTrue(pairs_a.isEmpty()); + assertTrue(pairs_b.isEmpty()); + } + + @Test + public void testParameterToPairsWhenValueIsNull() throws Exception { + List pairs = apiClient.parameterToPairs("csv", "param-a", null); + + assertTrue(pairs.isEmpty()); + } + + @Test + public void testParameterToPairsWhenValueIsEmptyStrings() throws Exception { + + // single empty string + List pairs = apiClient.parameterToPairs("csv", "param-a", " "); + assertEquals(1, pairs.size()); + + // list of empty strings + List strs = new ArrayList(); + strs.add(" "); + strs.add(" "); + strs.add(" "); + + List concatStrings = apiClient.parameterToPairs("csv", "param-a", strs); + + assertEquals(1, concatStrings.size()); + assertFalse(concatStrings.get(0).getValue().isEmpty()); // should contain some delimiters + } + + @Test + public void testParameterToPairsWhenValueIsNotCollection() throws Exception { + String name = "param-a"; + Integer value = 1; + + List pairs = apiClient.parameterToPairs("csv", name, value); + + assertEquals(1, pairs.size()); + assertEquals(value, Integer.valueOf(pairs.get(0).getValue())); + } + + @Test + public void testParameterToPairsWhenValueIsCollection() throws Exception { + Map collectionFormatMap = new HashMap(); + collectionFormatMap.put("csv", ","); + collectionFormatMap.put("tsv", "\t"); + collectionFormatMap.put("ssv", " "); + collectionFormatMap.put("pipes", "\\|"); + collectionFormatMap.put("", ","); // no format, must default to csv + collectionFormatMap.put("unknown", ","); // all other formats, must default to csv + + String name = "param-a"; + + List values = new ArrayList(); + values.add("value-a"); + values.add(123); + values.add(new Date()); + + // check for multi separately + List multiPairs = apiClient.parameterToPairs("multi", name, values); + assertEquals(values.size(), multiPairs.size()); + + // all other formats + for (String collectionFormat : collectionFormatMap.keySet()) { + List pairs = apiClient.parameterToPairs(collectionFormat, name, values); + + assertEquals(1, pairs.size()); + + String delimiter = collectionFormatMap.get(collectionFormat); + String[] pairValueSplit = pairs.get(0).getValue().split(delimiter); + + // must equal input values + assertEquals(values.size(), pairValueSplit.length); + } + } }