webclient explode query parameters support (#17441)

This commit is contained in:
Nikita Shmakov
2023-12-21 14:35:07 +03:00
committed by GitHub
parent 106047980b
commit 3099a2fcd3
11 changed files with 55 additions and 20 deletions

View File

@@ -92,11 +92,10 @@ public class {{classname}} {
final MultiValueMap<String, Object> formParams = new LinkedMultiValueMap<String, Object>();
{{#hasQueryParams}}
{{#queryParams}}
queryParams.putAll(apiClient.parameterToMultiValueMap({{#collectionFormat}}ApiClient.CollectionFormat.valueOf("{{{.}}}".toUpperCase(Locale.ROOT)){{/collectionFormat}}{{^collectionFormat}}null{{/collectionFormat}}, "{{baseName}}", {{paramName}}));
{{/queryParams}}
{{/hasQueryParams}}
{{#hasHeaderParams}}
{{#queryParams}}{{#isExplode}}{{#hasVars}}{{#vars}}queryParams.putAll(apiClient.parameterToMultiValueMap({{#collectionFormat}}ApiClient.CollectionFormat.valueOf("{{{.}}}".toUpperCase(Locale.ROOT)){{/collectionFormat}}{{^collectionFormat}}null{{/collectionFormat}}, "{{baseName}}", {{paramName}}.{{getter}}()));
{{/vars}}{{/hasVars}}{{^hasVars}}queryParams.putAll(apiClient.parameterToMultiValueMap({{#collectionFormat}}ApiClient.CollectionFormat.valueOf("{{{.}}}".toUpperCase(Locale.ROOT)){{/collectionFormat}}{{^collectionFormat}}null{{/collectionFormat}}, "{{baseName}}", {{paramName}}));
{{/hasVars}}{{/isExplode}}{{^isExplode}}queryParams.putAll(apiClient.parameterToMultiValueMap({{#collectionFormat}}ApiClient.CollectionFormat.valueOf("{{{.}}}".toUpperCase(Locale.ROOT)){{/collectionFormat}}{{^collectionFormat}}null{{/collectionFormat}}, "{{baseName}}", {{paramName}}));
{{/isExplode}}{{/queryParams}}{{/hasQueryParams}}{{#hasHeaderParams}}
{{#headerParams}}
if ({{paramName}} != null)

View File

@@ -2272,6 +2272,30 @@ public class JavaClientCodegenTest {
+ " objectParam.getSomeInteger()));");
}
@Test
public void shouldProperlyExplodeWebClientQueryParameters() {
final Map<String, File> files = generateFromContract(
"src/test/resources/3_0/java/explode-query-parameter.yaml",
JavaClientCodegen.WEBCLIENT
);
JavaFileAssert.assertThat(files.get("DefaultApi.java"))
.printFileContent()
.assertMethod("searchRequestCreation")
.bodyContainsLines(
"queryParams.putAll(apiClient.parameterToMultiValueMap(null, \"regular-param\","
+ " regularParam));")
.bodyContainsLines(
"queryParams.putAll(apiClient.parameterToMultiValueMap(null, \"someString\","
+ " objectParam.getSomeString()));")
.bodyContainsLines(
"queryParams.putAll(apiClient.parameterToMultiValueMap(null, \"someBoolean\","
+ " objectParam.getSomeBoolean()));")
.bodyContainsLines(
"queryParams.putAll(apiClient.parameterToMultiValueMap(null, \"someInteger\","
+ " objectParam.getSomeInteger()));");
}
private static Map<String, File> generateFromContract(final String pathToSpecification, final String library) {
return generateFromContract(pathToSpecification, library, new HashMap<>());
}