From 7a9a41fe01d4c7d1f7bfc53c2c36440913c43e84 Mon Sep 17 00:00:00 2001 From: Raghav Sidhanti Date: Fri, 19 Jun 2015 14:06:25 -0700 Subject: [PATCH] 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 9a3237d92cad..2d0af4c6c0bb 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 fcec455e9b39..0f4e8c212ac5 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 352401ba0d8e..59a0ee732818 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 000000000000..23b1b26f55cb --- /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 63357afd896c..66dc25d66bf3 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 65720b958cb1..46fa51087b6b 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 1b2e2bc2fbec..1f39a402b2c5 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 22a64b1a24e6..b5bc993f7c4e 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 ef84b8cc05e7..ab634489edae 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 000000000000..23b1b26f55cb --- /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 ed9538c15941..6e34a898ad01 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 e759f8264a47..d7a9d8b357ca 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 ec6218e602c4..58ecbde38c6a 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 000000000000..240352e890f6 --- /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 ebf600d787e1..db10c57f1121 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 ecd8e8330490..e8d50c30df74 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 e1df3fd4f128..d75058749403 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 26219b16a458..90a840e6e422 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 0adcbe7031d9..dd14a1c24543 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 000000000000..240352e890f6 --- /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 c102cf00b514..3fc9bd267e4b 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 727e791c6037..f15b7140a5c0 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 9e55bbed5909..a0c977c72568 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 ce55babb51df..d72432ce2e96 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 3f372404c8d6..4f661852f343 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 24bff8c2266a..4beaee8b6751 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 d834f4580c25..b754567564fc 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 ddd0e1038c08..cf7ace02309c 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 0a0bf57da616..e99f310f94ff 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 a621cb60e484..5125abce49bc 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");