Skip to content

Commit 7e4f3b2

Browse files
committed
fix(java): use Map for query parameters
1 parent f8cee69 commit 7e4f3b2

File tree

13 files changed

+252
-262
lines changed

13 files changed

+252
-262
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.algolia.utils.echo;
22

3-
import com.algolia.Pair;
4-
import java.util.List;
3+
import java.util.Map;
54

65
public interface EchoResponseInterface {
76
public String getPath();
@@ -10,5 +9,5 @@ public interface EchoResponseInterface {
109

1110
public String getBody();
1211

13-
public List<Pair> getQueryParams();
12+
public Map<String, String> getQueryParams();
1413
}

templates/java/EchoResponse.mustache

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import java.io.IOException;
66
import java.util.ArrayList;
77
import java.util.HashMap;
88
import java.util.List;
9+
import java.util.Map;
910

1011
import okhttp3.HttpUrl;
1112
import okhttp3.Request;
@@ -24,12 +25,12 @@ public class EchoResponse{{#apiInfo}}{{#apis}}{{{baseName}}}{{/apis}}{{/apiInfo}
2425
}
2526
}
2627

27-
private static List<Pair> buildQueryParams(Request req) {
28-
List<Pair> params = new ArrayList<Pair>();
28+
private static Map<String, String> buildQueryParams(Request req) {
29+
Map<String, String> params = new HashMap<String, String>();
2930
HttpUrl url = req.url();
3031
for (String name : url.queryParameterNames()) {
3132
for (String value : url.queryParameterValues(name)) {
32-
params.add(new Pair(name, value));
33+
params.put(name, value);
3334
}
3435
}
3536
return params;
@@ -56,7 +57,7 @@ public class EchoResponse{{#apiInfo}}{{#apis}}{{{baseName}}}{{/apis}}{{/apiInfo}
5657
return parseRequestBody(request);
5758
}
5859

59-
public List<Pair> getQueryParams() {
60+
public Map<String, String> getQueryParams() {
6061
return buildQueryParams(request);
6162
}
6263

templates/java/libraries/okhttp-gson/ApiClient.mustache

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@ public class ApiClient {
534534
* @return The HTTP call
535535
* @throws AlgoliaRuntimeException If fail to serialize the request body object
536536
*/
537-
public Call buildCall(String path, String method, List<Pair> queryParams, Object body, Map<String, String> headerParams, ApiCallback callback) throws AlgoliaRuntimeException {
537+
public Call buildCall(String path, String method, Map<String, String> queryParams, Object body, Map<String, String> headerParams, ApiCallback callback) throws AlgoliaRuntimeException {
538538
Request request = buildRequest(path, method, queryParams, body, headerParams, callback);
539539
540540
return requester.newCall(request);
@@ -552,19 +552,17 @@ public class ApiClient {
552552
* @return The HTTP request
553553
* @throws AlgoliaRuntimeException If fail to serialize the request body object
554554
*/
555-
public Request buildRequest(String path, String method, List<Pair> queryParams, Object body, Map<String, String> headerParams, ApiCallback callback) throws AlgoliaRuntimeException {
555+
public Request buildRequest(String path, String method, Map<String, String> queryParams, Object body, Map<String, String> headerParams, ApiCallback callback) throws AlgoliaRuntimeException {
556556
headerParams.put("X-Algolia-Application-Id", this.appId);
557557
headerParams.put("X-Algolia-API-Key", this.apiKey);
558+
headerParams.put("Accept", "application/json");
559+
headerParams.put("Content-Type", "application/json");
558560
559561
final String url = buildUrl(path, queryParams);
560562
final Request.Builder reqBuilder = new Request.Builder().url(url);
561563
processHeaderParams(headerParams, reqBuilder);
562564
563565
String contentType = (String) headerParams.get("Content-Type");
564-
// ensuring a default content type
565-
if (contentType == null) {
566-
contentType = "application/json";
567-
}
568566
569567
RequestBody reqBody;
570568
if (!HttpMethod.permitsRequestBody(method)) {
@@ -604,7 +602,7 @@ public class ApiClient {
604602
* @param queryParams The query parameters
605603
* @return The full URL
606604
*/
607-
public String buildUrl(String path, List<Pair> queryParams) {
605+
public String buildUrl(String path, Map<String, String> queryParams) {
608606
final StringBuilder url = new StringBuilder();
609607
610608
//The real host will be assigned by the retry strategy
@@ -613,7 +611,7 @@ public class ApiClient {
613611
if (queryParams != null && !queryParams.isEmpty()) {
614612
// support (constant) query string in `path`, e.g. "/posts?draft=1"
615613
String prefix = path.contains("?") ? "&" : "?";
616-
for (Pair param : queryParams) {
614+
for (Entry<String, String> param : queryParams.entrySet()) {
617615
if (param.getValue() != null) {
618616
if (prefix != null) {
619617
url.append(prefix);
@@ -622,7 +620,7 @@ public class ApiClient {
622620
url.append("&");
623621
}
624622
String value = parameterToString(param.getValue());
625-
url.append(escapeString(param.getName())).append("=").append(escapeString(value));
623+
url.append(escapeString(param.getKey())).append("=").append(escapeString(value));
626624
}
627625
}
628626
}

templates/java/libraries/okhttp-gson/api.mustache

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -120,17 +120,17 @@ public class {{classname}} extends ApiClient {
120120
{{#x-is-custom-request}}{{{paramName}}}.toString(){{/x-is-custom-request}}{{^x-is-custom-request}}this.escapeString({{{paramName}}}.toString()){{/x-is-custom-request}}
121121
){{/pathParams}}{{/vendorExtensions}};
122122

123-
{{javaUtilPrefix}}List<Pair> queryParams = new {{javaUtilPrefix}}ArrayList<Pair>();
123+
{{javaUtilPrefix}}Map<String, String> queryParams = new {{javaUtilPrefix}}HashMap<String, String>();
124124
{{javaUtilPrefix}}Map<String, String> headers = new {{javaUtilPrefix}}HashMap<String, String>();
125125

126126
{{#vendorExtensions}}{{#queryParams}}
127127
if ({{paramName}} != null) {
128128
{{^x-is-custom-request}}
129-
queryParams.addAll(this.parameterToPair("{{baseName}}", {{paramName}}));
129+
queryParams.put("{{baseName}}", parameterToString({{paramName}}));
130130
{{/x-is-custom-request}}
131131
{{#x-is-custom-request}}
132132
for (Map.Entry<String, Object> parameter : parameters.entrySet()) {
133-
queryParams.addAll(this.parameterToPair(parameter.getKey(), parameter.getValue()));
133+
queryParams.put(parameter.getKey().toString(), parameterToString(parameter.getValue()));
134134
}
135135
{{/x-is-custom-request}}
136136
}
@@ -142,8 +142,6 @@ public class {{classname}} extends ApiClient {
142142
}
143143

144144
{{/headerParams}}
145-
headers.put("Accept", "application/json");
146-
headers.put("Content-Type", "application/json");
147145

148146
return this.buildCall(requestPath, "{{httpMethod}}", queryParams, bodyObj, headers, callback);
149147
}

templates/javascript/api-single.mustache

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ export function create{{capitalizedApiName}}(options: CreateClientOptions{{#hasR
149149
{{/queryParams.0}}
150150
{{/bodyParams.0}}
151151
{{/allParams.0}}
152+
* @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.
152153
*/
153154
{{nickname}}(
154155
{{#allParams.0}}

tests/CTS/methods/requests/templates/java/requests.mustache

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,10 @@ class {{client}}Tests {
5151

5252
{{#request.queryParameters}}
5353
Map<String, String> expectedQuery = JSON.deserialize("{{#lambda.escapequotes}}{{{request.queryParameters}}}{{/lambda.escapequotes}}", new TypeToken<HashMap<String, String>>() {}.getType());
54-
List<Pair> actualQuery = req.getQueryParams();
54+
Map<String, String> actualQuery = req.getQueryParams();
5555
assertEquals(expectedQuery.size(), actualQuery.size());
56-
for (Pair p : actualQuery) {
57-
assertEquals(expectedQuery.get(p.getName()), p.getValue());
56+
for (Map.Entry<String, String> p : actualQuery.entrySet()) {
57+
assertEquals(expectedQuery.get(p.getKey()), p.getValue());
5858
}
5959
{{/request.queryParameters}}
6060
}

tests/output/java/src/test/java/com/algolia/methods/requests/abtesting.test.java

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import static org.junit.jupiter.api.Assertions.assertEquals;
55

66
import com.algolia.JSON;
7-
import com.algolia.Pair;
87
import com.algolia.api.AbtestingClient;
98
import com.algolia.model.abtesting.*;
109
import com.algolia.utils.echo.*;
@@ -111,10 +110,10 @@ void delTest1() {
111110
"{\"query\":\"parameters\"}",
112111
new TypeToken<HashMap<String, String>>() {}.getType()
113112
);
114-
List<Pair> actualQuery = req.getQueryParams();
113+
Map<String, String> actualQuery = req.getQueryParams();
115114
assertEquals(expectedQuery.size(), actualQuery.size());
116-
for (Pair p : actualQuery) {
117-
assertEquals(expectedQuery.get(p.getName()), p.getValue());
115+
for (Map.Entry<String, String> p : actualQuery.entrySet()) {
116+
assertEquals(expectedQuery.get(p.getKey()), p.getValue());
118117
}
119118
}
120119

@@ -168,10 +167,10 @@ void getTest1() {
168167
"{\"query\":\"parameters\"}",
169168
new TypeToken<HashMap<String, String>>() {}.getType()
170169
);
171-
List<Pair> actualQuery = req.getQueryParams();
170+
Map<String, String> actualQuery = req.getQueryParams();
172171
assertEquals(expectedQuery.size(), actualQuery.size());
173-
for (Pair p : actualQuery) {
174-
assertEquals(expectedQuery.get(p.getName()), p.getValue());
172+
for (Map.Entry<String, String> p : actualQuery.entrySet()) {
173+
assertEquals(expectedQuery.get(p.getKey()), p.getValue());
175174
}
176175
}
177176

@@ -207,10 +206,10 @@ void listABTestsTest0() {
207206
"{\"offset\":\"42\",\"limit\":\"21\"}",
208207
new TypeToken<HashMap<String, String>>() {}.getType()
209208
);
210-
List<Pair> actualQuery = req.getQueryParams();
209+
Map<String, String> actualQuery = req.getQueryParams();
211210
assertEquals(expectedQuery.size(), actualQuery.size());
212-
for (Pair p : actualQuery) {
213-
assertEquals(expectedQuery.get(p.getName()), p.getValue());
211+
for (Map.Entry<String, String> p : actualQuery.entrySet()) {
212+
assertEquals(expectedQuery.get(p.getKey()), p.getValue());
214213
}
215214
}
216215

@@ -263,10 +262,10 @@ void postTest1() {
263262
"{\"query\":\"parameters\"}",
264263
new TypeToken<HashMap<String, String>>() {}.getType()
265264
);
266-
List<Pair> actualQuery = req.getQueryParams();
265+
Map<String, String> actualQuery = req.getQueryParams();
267266
assertEquals(expectedQuery.size(), actualQuery.size());
268-
for (Pair p : actualQuery) {
269-
assertEquals(expectedQuery.get(p.getName()), p.getValue());
267+
for (Map.Entry<String, String> p : actualQuery.entrySet()) {
268+
assertEquals(expectedQuery.get(p.getKey()), p.getValue());
270269
}
271270
}
272271

@@ -319,10 +318,10 @@ void putTest1() {
319318
"{\"query\":\"parameters\"}",
320319
new TypeToken<HashMap<String, String>>() {}.getType()
321320
);
322-
List<Pair> actualQuery = req.getQueryParams();
321+
Map<String, String> actualQuery = req.getQueryParams();
323322
assertEquals(expectedQuery.size(), actualQuery.size());
324-
for (Pair p : actualQuery) {
325-
assertEquals(expectedQuery.get(p.getName()), p.getValue());
323+
for (Map.Entry<String, String> p : actualQuery.entrySet()) {
324+
assertEquals(expectedQuery.get(p.getKey()), p.getValue());
326325
}
327326
}
328327

0 commit comments

Comments
 (0)