forked from loafle/openapi-generator-original
[java][resttemplate] using uriBuilderFactory to encode all template values (#11922)
* issue 11921 - encode all template values * add test for url and query param encoding
This commit is contained in:
Vendored
+2
-3
@@ -637,8 +637,7 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} {
|
||||
queryBuilder.append(encodedName);
|
||||
if (value != null) {
|
||||
String templatizedKey = encodedName + valueItemCounter++;
|
||||
final String encodedValue = URLEncoder.encode(value.toString(), "UTF-8");
|
||||
uriParams.put(templatizedKey, encodedValue);
|
||||
uriParams.put(templatizedKey, value.toString());
|
||||
queryBuilder.append('=').append("{").append(templatizedKey).append("}");
|
||||
}
|
||||
}
|
||||
@@ -785,7 +784,7 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} {
|
||||
|
||||
// disable default URL encoding
|
||||
DefaultUriBuilderFactory uriBuilderFactory = new DefaultUriBuilderFactory();
|
||||
uriBuilderFactory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.NONE);
|
||||
uriBuilderFactory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.VALUES_ONLY);
|
||||
restTemplate.setUriTemplateHandler(uriBuilderFactory);
|
||||
return restTemplate;
|
||||
}
|
||||
|
||||
+2
-3
@@ -597,8 +597,7 @@ public class ApiClient extends JavaTimeFormatter {
|
||||
queryBuilder.append(encodedName);
|
||||
if (value != null) {
|
||||
String templatizedKey = encodedName + valueItemCounter++;
|
||||
final String encodedValue = URLEncoder.encode(value.toString(), "UTF-8");
|
||||
uriParams.put(templatizedKey, encodedValue);
|
||||
uriParams.put(templatizedKey, value.toString());
|
||||
queryBuilder.append('=').append("{").append(templatizedKey).append("}");
|
||||
}
|
||||
}
|
||||
@@ -743,7 +742,7 @@ public class ApiClient extends JavaTimeFormatter {
|
||||
|
||||
// disable default URL encoding
|
||||
DefaultUriBuilderFactory uriBuilderFactory = new DefaultUriBuilderFactory();
|
||||
uriBuilderFactory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.NONE);
|
||||
uriBuilderFactory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.VALUES_ONLY);
|
||||
restTemplate.setUriTemplateHandler(uriBuilderFactory);
|
||||
return restTemplate;
|
||||
}
|
||||
|
||||
+20
-1
@@ -28,4 +28,23 @@ public class ApiClientTest {
|
||||
|
||||
assertEquals("/key=val%2Ccomma", apiClient.expandPath("/key={key0}", uriParams));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPathParamEncoding() {
|
||||
Map<String,Object> uriParams = new HashMap<>();
|
||||
MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<String, String>();
|
||||
uriParams.put("username", "user_name,comma& space");
|
||||
assertEquals("user/user_name%2Ccomma%26amp%20space", apiClient.expandPath("user/{username}", uriParams));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPathAndQueryParamEncoding() {
|
||||
Map<String, Object> uriParams = new HashMap<>();
|
||||
MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<String, String>();
|
||||
queryParams.add("key", "val,comma?q-mark&");
|
||||
uriParams.put("username", "user_name,comma& space");
|
||||
String template = "user/{username}?" + apiClient.generateQueryUri(queryParams, uriParams);
|
||||
assertEquals("user/user_name%2Ccomma%26amp%20space?key=val%2Ccomma%3Fq-mark%26amp",
|
||||
apiClient.expandPath(template, uriParams));
|
||||
}
|
||||
}
|
||||
|
||||
+2
-3
@@ -592,8 +592,7 @@ public class ApiClient extends JavaTimeFormatter {
|
||||
queryBuilder.append(encodedName);
|
||||
if (value != null) {
|
||||
String templatizedKey = encodedName + valueItemCounter++;
|
||||
final String encodedValue = URLEncoder.encode(value.toString(), "UTF-8");
|
||||
uriParams.put(templatizedKey, encodedValue);
|
||||
uriParams.put(templatizedKey, value.toString());
|
||||
queryBuilder.append('=').append("{").append(templatizedKey).append("}");
|
||||
}
|
||||
}
|
||||
@@ -730,7 +729,7 @@ public class ApiClient extends JavaTimeFormatter {
|
||||
|
||||
// disable default URL encoding
|
||||
DefaultUriBuilderFactory uriBuilderFactory = new DefaultUriBuilderFactory();
|
||||
uriBuilderFactory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.NONE);
|
||||
uriBuilderFactory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.VALUES_ONLY);
|
||||
restTemplate.setUriTemplateHandler(uriBuilderFactory);
|
||||
return restTemplate;
|
||||
}
|
||||
|
||||
+31
-11
@@ -1,14 +1,16 @@
|
||||
package org.openapitools.client;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.util.*;
|
||||
import org.junit.*;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.util.LinkedMultiValueMap;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
|
||||
public class ApiClientTest {
|
||||
|
||||
ApiClient apiClient;
|
||||
|
||||
@Before
|
||||
@@ -21,11 +23,29 @@ public class ApiClientTest {
|
||||
*/
|
||||
@Test
|
||||
public void testUriEncoderWithComma() {
|
||||
Map<String,Object> uriParams = new HashMap<>();
|
||||
Map<String, Object> uriParams = new HashMap<>();
|
||||
MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<String, String>();
|
||||
queryParams.add("key", "val,comma");
|
||||
apiClient.generateQueryUri(queryParams, uriParams);
|
||||
|
||||
assertEquals("/key=val%2Ccomma", apiClient.expandPath("/key={key0}", uriParams));
|
||||
queryParams.add("ke,&y", "val,?&comma");
|
||||
String queryTemplate = apiClient.generateQueryUri(queryParams, uriParams);
|
||||
assertEquals("ke%2C%26y=val%2C%3F%26comma", apiClient.expandPath(queryTemplate, uriParams));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPathParamEncoding() {
|
||||
Map<String, Object> uriParams = new HashMap<>();
|
||||
uriParams.put("username", "user_name,comma& space");
|
||||
assertEquals("user/user_name%2Ccomma%26amp%20space", apiClient.expandPath("user/{username}", uriParams));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPathAndQueryParamEncoding() {
|
||||
Map<String, Object> uriParams = new HashMap<>();
|
||||
MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<String, String>();
|
||||
queryParams.add("key", "val,comma?q-mark&");
|
||||
uriParams.put("username", "user_name,comma& space");
|
||||
String template = "user/{username}?" + apiClient.generateQueryUri(queryParams, uriParams);
|
||||
assertEquals("user/user_name%2Ccomma%26amp%20space?key=val%2Ccomma%3Fq-mark%26amp",
|
||||
apiClient.expandPath(template, uriParams));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user