forked from loafle/openapi-generator-original
This commit is contained in:
parent
b4eb9a40c6
commit
5d6b769b5b
@ -126,8 +126,10 @@ public class {{classname}} {
|
||||
final MultiValueMap<String, String> localVarCookieParams = new LinkedMultiValueMap<String, String>();
|
||||
final MultiValueMap<String, Object> localVarFormParams = new LinkedMultiValueMap<String, Object>();{{#hasQueryParams}}
|
||||
|
||||
{{#queryParams}}localVarQueryParams.putAll(apiClient.parameterToMultiValueMap({{#collectionFormat}}ApiClient.CollectionFormat.valueOf("{{{.}}}".toUpperCase(Locale.ROOT)){{/collectionFormat}}{{^collectionFormat}}null{{/collectionFormat}}, "{{baseName}}", {{paramName}}));{{^-last}}
|
||||
{{/-last}}{{/queryParams}}{{/hasQueryParams}}{{#hasHeaderParams}}
|
||||
{{#queryParams}}{{#isExplode}}{{#hasVars}}{{#vars}} localVarQueryParams.putAll(apiClient.parameterToMultiValueMap({{#collectionFormat}}ApiClient.CollectionFormat.valueOf("{{{.}}}".toUpperCase(Locale.ROOT)){{/collectionFormat}}{{^collectionFormat}}null{{/collectionFormat}}, "{{baseName}}", {{paramName}}.{{getter}}()));
|
||||
{{/vars}}{{/hasVars}}{{^hasVars}} localVarQueryParams.putAll(apiClient.parameterToMultiValueMap({{#collectionFormat}}ApiClient.CollectionFormat.valueOf("{{{.}}}".toUpperCase(Locale.ROOT)){{/collectionFormat}}{{^collectionFormat}}null{{/collectionFormat}}, "{{baseName}}", {{paramName}}));
|
||||
{{/hasVars}}{{/isExplode}}{{^isExplode}} localVarQueryParams.putAll(apiClient.parameterToMultiValueMap({{#collectionFormat}}ApiClient.CollectionFormat.valueOf("{{{.}}}".toUpperCase(Locale.ROOT)){{/collectionFormat}}{{^collectionFormat}}null{{/collectionFormat}}, "{{baseName}}", {{paramName}}));
|
||||
{{/isExplode}}{{/queryParams}}{{/hasQueryParams}}{{#hasHeaderParams}}
|
||||
|
||||
{{#headerParams}}if ({{paramName}} != null)
|
||||
localVarHeaderParams.add("{{baseName}}", apiClient.parameterToString({{paramName}}));{{^-last}}
|
||||
|
@ -33,6 +33,7 @@ import io.swagger.v3.oas.models.parameters.RequestBody;
|
||||
import io.swagger.v3.oas.models.responses.ApiResponse;
|
||||
import io.swagger.v3.parser.core.models.ParseOptions;
|
||||
import io.swagger.v3.parser.util.SchemaTypeUtil;
|
||||
import lombok.SneakyThrows;
|
||||
import org.openapitools.codegen.ClientOptInput;
|
||||
import org.openapitools.codegen.CodegenConstants;
|
||||
import org.openapitools.codegen.CodegenModel;
|
||||
@ -1968,6 +1969,50 @@ public class JavaClientCodegenTest {
|
||||
assertFileNotContains(Paths.get(outputPath + "/src/main/java/org/openapitools/client/model/Pet.java"), "@JsonSubTypes.Type(value = Lizard.class, name = \"Lizard\")");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldProperlyExplodeRestTemplateQueryParameters_issue907() {
|
||||
|
||||
final Map<String, File> files = generateFromContract(
|
||||
"src/test/resources/3_0/java/explode-query-parameter.yaml",
|
||||
JavaClientCodegen.RESTTEMPLATE
|
||||
);
|
||||
|
||||
JavaFileAssert.assertThat(files.get("DefaultApi.java"))
|
||||
.printFileContent()
|
||||
.assertMethod("searchWithHttpInfo")
|
||||
.bodyContainsLines("localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, \"regular-param\", regularParam));")
|
||||
.bodyContainsLines("localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, \"someString\", objectParam.getSomeString()));")
|
||||
.bodyContainsLines("localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, \"someBoolean\", objectParam.getSomeBoolean()));")
|
||||
.bodyContainsLines("localVarQueryParams.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<>());
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
private static Map<String, File> generateFromContract(
|
||||
final String pathToSpecification,
|
||||
final String library,
|
||||
final Map<String, Object> properties
|
||||
) {
|
||||
final File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
|
||||
output.deleteOnExit();
|
||||
|
||||
final CodegenConfigurator configurator = new CodegenConfigurator()
|
||||
.setGeneratorName("java")
|
||||
.setLibrary(library)
|
||||
.setAdditionalProperties(properties)
|
||||
.setInputSpec(pathToSpecification)
|
||||
.setOutputDir(output.getAbsolutePath());
|
||||
|
||||
final ClientOptInput clientOptInput = configurator.toClientOptInput();
|
||||
final DefaultGenerator generator = new DefaultGenerator();
|
||||
return generator.opts(clientOptInput).generate().stream()
|
||||
.collect(Collectors.toMap(File::getName, Function.identity()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testForJavaApacheHttpClientJsonSubtype() throws IOException {
|
||||
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
|
||||
|
@ -0,0 +1,45 @@
|
||||
openapi: 3.0.3
|
||||
info:
|
||||
title: Explode query params
|
||||
description: "Explode query params"
|
||||
version: "1.0.0"
|
||||
servers:
|
||||
- url: http://localhost:8080
|
||||
paths:
|
||||
/api/search:
|
||||
get:
|
||||
operationId: Search
|
||||
parameters:
|
||||
- name: regular-param
|
||||
in: query
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
- name: object-param
|
||||
in: query
|
||||
required: true
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
someString:
|
||||
type: string
|
||||
someBoolean:
|
||||
type: boolean
|
||||
someInteger:
|
||||
type: integer
|
||||
responses:
|
||||
'200':
|
||||
description: Some description.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/SomeReturnValue'
|
||||
components:
|
||||
schemas:
|
||||
SomeReturnValue:
|
||||
type: object
|
||||
required:
|
||||
- someValue
|
||||
properties:
|
||||
someValue:
|
||||
type: string
|
@ -186,6 +186,7 @@ public class PetApi {
|
||||
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.valueOf("csv".toUpperCase(Locale.ROOT)), "status", status));
|
||||
|
||||
|
||||
final String[] localVarAccepts = {
|
||||
"application/xml", "application/json"
|
||||
};
|
||||
@ -240,6 +241,7 @@ public class PetApi {
|
||||
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.valueOf("csv".toUpperCase(Locale.ROOT)), "tags", tags));
|
||||
|
||||
|
||||
final String[] localVarAccepts = {
|
||||
"application/xml", "application/json"
|
||||
};
|
||||
|
@ -328,6 +328,7 @@ public class UserApi {
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, "username", username));
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, "password", password));
|
||||
|
||||
|
||||
final String[] localVarAccepts = {
|
||||
"application/xml", "application/json"
|
||||
};
|
||||
|
@ -186,6 +186,7 @@ public class PetApi {
|
||||
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.valueOf("csv".toUpperCase(Locale.ROOT)), "status", status));
|
||||
|
||||
|
||||
final String[] localVarAccepts = {
|
||||
"application/xml", "application/json"
|
||||
};
|
||||
@ -240,6 +241,7 @@ public class PetApi {
|
||||
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.valueOf("csv".toUpperCase(Locale.ROOT)), "tags", tags));
|
||||
|
||||
|
||||
final String[] localVarAccepts = {
|
||||
"application/xml", "application/json"
|
||||
};
|
||||
|
@ -328,6 +328,7 @@ public class UserApi {
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, "username", username));
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, "password", password));
|
||||
|
||||
|
||||
final String[] localVarAccepts = {
|
||||
"application/xml", "application/json"
|
||||
};
|
||||
|
@ -349,6 +349,7 @@ public class FakeApi {
|
||||
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, "query", query));
|
||||
|
||||
|
||||
final String[] localVarAccepts = { };
|
||||
final List<MediaType> localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);
|
||||
final String[] localVarContentTypes = {
|
||||
@ -575,6 +576,7 @@ public class FakeApi {
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, "enum_query_integer", enumQueryInteger));
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, "enum_query_double", enumQueryDouble));
|
||||
|
||||
|
||||
if (enumHeaderStringArray != null)
|
||||
localVarHeaderParams.add("enum_header_string_array", apiClient.parameterToString(enumHeaderStringArray));
|
||||
if (enumHeaderString != null)
|
||||
@ -655,6 +657,7 @@ public class FakeApi {
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, "string_group", stringGroup));
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, "int64_group", int64Group));
|
||||
|
||||
|
||||
if (requiredBooleanGroup != null)
|
||||
localVarHeaderParams.add("required_boolean_group", apiClient.parameterToString(requiredBooleanGroup));
|
||||
if (booleanGroup != null)
|
||||
@ -839,6 +842,7 @@ public class FakeApi {
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.valueOf("csv".toUpperCase(Locale.ROOT)), "url", url));
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.valueOf("multi".toUpperCase(Locale.ROOT)), "context", context));
|
||||
|
||||
|
||||
final String[] localVarAccepts = { };
|
||||
final List<MediaType> localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);
|
||||
final String[] localVarContentTypes = { };
|
||||
|
@ -186,6 +186,7 @@ public class PetApi {
|
||||
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.valueOf("csv".toUpperCase(Locale.ROOT)), "status", status));
|
||||
|
||||
|
||||
final String[] localVarAccepts = {
|
||||
"application/xml", "application/json"
|
||||
};
|
||||
@ -240,6 +241,7 @@ public class PetApi {
|
||||
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.valueOf("csv".toUpperCase(Locale.ROOT)), "tags", tags));
|
||||
|
||||
|
||||
final String[] localVarAccepts = {
|
||||
"application/xml", "application/json"
|
||||
};
|
||||
|
@ -322,6 +322,7 @@ public class UserApi {
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, "username", username));
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, "password", password));
|
||||
|
||||
|
||||
final String[] localVarAccepts = {
|
||||
"application/xml", "application/json"
|
||||
};
|
||||
|
@ -349,6 +349,7 @@ public class FakeApi {
|
||||
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, "query", query));
|
||||
|
||||
|
||||
final String[] localVarAccepts = { };
|
||||
final List<MediaType> localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);
|
||||
final String[] localVarContentTypes = {
|
||||
@ -575,6 +576,7 @@ public class FakeApi {
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, "enum_query_integer", enumQueryInteger));
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, "enum_query_double", enumQueryDouble));
|
||||
|
||||
|
||||
if (enumHeaderStringArray != null)
|
||||
localVarHeaderParams.add("enum_header_string_array", apiClient.parameterToString(enumHeaderStringArray));
|
||||
if (enumHeaderString != null)
|
||||
@ -655,6 +657,7 @@ public class FakeApi {
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, "string_group", stringGroup));
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, "int64_group", int64Group));
|
||||
|
||||
|
||||
if (requiredBooleanGroup != null)
|
||||
localVarHeaderParams.add("required_boolean_group", apiClient.parameterToString(requiredBooleanGroup));
|
||||
if (booleanGroup != null)
|
||||
@ -839,6 +842,7 @@ public class FakeApi {
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.valueOf("csv".toUpperCase(Locale.ROOT)), "url", url));
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.valueOf("multi".toUpperCase(Locale.ROOT)), "context", context));
|
||||
|
||||
|
||||
final String[] localVarAccepts = { };
|
||||
final List<MediaType> localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);
|
||||
final String[] localVarContentTypes = { };
|
||||
|
@ -186,6 +186,7 @@ public class PetApi {
|
||||
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.valueOf("csv".toUpperCase(Locale.ROOT)), "status", status));
|
||||
|
||||
|
||||
final String[] localVarAccepts = {
|
||||
"application/xml", "application/json"
|
||||
};
|
||||
@ -240,6 +241,7 @@ public class PetApi {
|
||||
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(ApiClient.CollectionFormat.valueOf("csv".toUpperCase(Locale.ROOT)), "tags", tags));
|
||||
|
||||
|
||||
final String[] localVarAccepts = {
|
||||
"application/xml", "application/json"
|
||||
};
|
||||
|
@ -322,6 +322,7 @@ public class UserApi {
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, "username", username));
|
||||
localVarQueryParams.putAll(apiClient.parameterToMultiValueMap(null, "password", password));
|
||||
|
||||
|
||||
final String[] localVarAccepts = {
|
||||
"application/xml", "application/json"
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user