forked from loafle/openapi-generator-original
Fix exploded query parameters with array property (#13656)
This commit is contained in:
parent
b54299fffa
commit
9eb799d8dd
@ -336,7 +336,12 @@ public class {{classname}} {
|
|||||||
{{#isExplode}}
|
{{#isExplode}}
|
||||||
{{#hasVars}}
|
{{#hasVars}}
|
||||||
{{#vars}}
|
{{#vars}}
|
||||||
|
{{#isArray}}
|
||||||
|
localVarQueryParams.addAll(ApiClient.parameterToPairs("multi", "{{baseName}}", {{paramName}}.{{getter}}()));
|
||||||
|
{{/isArray}}
|
||||||
|
{{^isArray}}
|
||||||
localVarQueryParams.addAll(ApiClient.parameterToPairs("{{baseName}}", {{paramName}}.{{getter}}()));
|
localVarQueryParams.addAll(ApiClient.parameterToPairs("{{baseName}}", {{paramName}}.{{getter}}()));
|
||||||
|
{{/isArray}}
|
||||||
{{/vars}}
|
{{/vars}}
|
||||||
{{/hasVars}}
|
{{/hasVars}}
|
||||||
{{^hasVars}}
|
{{^hasVars}}
|
||||||
|
@ -17,10 +17,41 @@
|
|||||||
|
|
||||||
package org.openapitools.codegen.java;
|
package org.openapitools.codegen.java;
|
||||||
|
|
||||||
import static org.openapitools.codegen.TestUtils.validateJavaSourceFiles;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import static org.testng.Assert.assertEquals;
|
import io.swagger.v3.oas.models.OpenAPI;
|
||||||
import static org.testng.Assert.assertTrue;
|
import io.swagger.v3.oas.models.Operation;
|
||||||
import static org.testng.Assert.fail;
|
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||||
|
import io.swagger.v3.oas.models.media.ComposedSchema;
|
||||||
|
import io.swagger.v3.oas.models.media.Content;
|
||||||
|
import io.swagger.v3.oas.models.media.IntegerSchema;
|
||||||
|
import io.swagger.v3.oas.models.media.MediaType;
|
||||||
|
import io.swagger.v3.oas.models.media.ObjectSchema;
|
||||||
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
import io.swagger.v3.oas.models.media.StringSchema;
|
||||||
|
import io.swagger.v3.oas.models.parameters.RequestBody;
|
||||||
|
import io.swagger.v3.oas.models.responses.ApiResponse;
|
||||||
|
import io.swagger.v3.parser.util.SchemaTypeUtil;
|
||||||
|
import org.openapitools.codegen.ClientOptInput;
|
||||||
|
import org.openapitools.codegen.CodegenConstants;
|
||||||
|
import org.openapitools.codegen.CodegenModel;
|
||||||
|
import org.openapitools.codegen.CodegenOperation;
|
||||||
|
import org.openapitools.codegen.CodegenParameter;
|
||||||
|
import org.openapitools.codegen.CodegenProperty;
|
||||||
|
import org.openapitools.codegen.CodegenResponse;
|
||||||
|
import org.openapitools.codegen.CodegenSecurity;
|
||||||
|
import org.openapitools.codegen.DefaultGenerator;
|
||||||
|
import org.openapitools.codegen.TestUtils;
|
||||||
|
import org.openapitools.codegen.config.CodegenConfigurator;
|
||||||
|
import org.openapitools.codegen.java.assertions.JavaFileAssert;
|
||||||
|
import org.openapitools.codegen.languages.AbstractJavaCodegen;
|
||||||
|
import org.openapitools.codegen.languages.JavaClientCodegen;
|
||||||
|
import org.openapitools.codegen.languages.features.BeanValidationFeatures;
|
||||||
|
import org.openapitools.codegen.languages.features.CXFServerFeatures;
|
||||||
|
import org.openapitools.codegen.model.OperationMap;
|
||||||
|
import org.openapitools.codegen.model.OperationsMap;
|
||||||
|
import org.testng.Assert;
|
||||||
|
import org.testng.annotations.Ignore;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -44,42 +75,10 @@ import java.util.regex.Matcher;
|
|||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.openapitools.codegen.ClientOptInput;
|
import static org.openapitools.codegen.TestUtils.validateJavaSourceFiles;
|
||||||
import org.openapitools.codegen.CodegenConstants;
|
import static org.testng.Assert.assertEquals;
|
||||||
import org.openapitools.codegen.CodegenModel;
|
import static org.testng.Assert.assertTrue;
|
||||||
import org.openapitools.codegen.CodegenOperation;
|
import static org.testng.Assert.fail;
|
||||||
import org.openapitools.codegen.CodegenParameter;
|
|
||||||
import org.openapitools.codegen.CodegenProperty;
|
|
||||||
import org.openapitools.codegen.CodegenResponse;
|
|
||||||
import org.openapitools.codegen.CodegenSecurity;
|
|
||||||
import org.openapitools.codegen.DefaultGenerator;
|
|
||||||
import org.openapitools.codegen.TestUtils;
|
|
||||||
import org.openapitools.codegen.config.CodegenConfigurator;
|
|
||||||
import org.openapitools.codegen.java.assertions.JavaFileAssert;
|
|
||||||
import org.openapitools.codegen.languages.AbstractJavaCodegen;
|
|
||||||
import org.openapitools.codegen.languages.JavaClientCodegen;
|
|
||||||
import org.openapitools.codegen.languages.features.BeanValidationFeatures;
|
|
||||||
import org.openapitools.codegen.languages.features.CXFServerFeatures;
|
|
||||||
import org.openapitools.codegen.model.OperationMap;
|
|
||||||
import org.openapitools.codegen.model.OperationsMap;
|
|
||||||
import org.testng.Assert;
|
|
||||||
import org.testng.annotations.Ignore;
|
|
||||||
import org.testng.annotations.Test;
|
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import io.swagger.v3.oas.models.OpenAPI;
|
|
||||||
import io.swagger.v3.oas.models.Operation;
|
|
||||||
import io.swagger.v3.oas.models.media.ArraySchema;
|
|
||||||
import io.swagger.v3.oas.models.media.ComposedSchema;
|
|
||||||
import io.swagger.v3.oas.models.media.Content;
|
|
||||||
import io.swagger.v3.oas.models.media.IntegerSchema;
|
|
||||||
import io.swagger.v3.oas.models.media.MediaType;
|
|
||||||
import io.swagger.v3.oas.models.media.ObjectSchema;
|
|
||||||
import io.swagger.v3.oas.models.media.Schema;
|
|
||||||
import io.swagger.v3.oas.models.media.StringSchema;
|
|
||||||
import io.swagger.v3.oas.models.parameters.RequestBody;
|
|
||||||
import io.swagger.v3.oas.models.responses.ApiResponse;
|
|
||||||
import io.swagger.v3.parser.util.SchemaTypeUtil;
|
|
||||||
|
|
||||||
public class JavaClientCodegenTest {
|
public class JavaClientCodegenTest {
|
||||||
|
|
||||||
@ -1665,4 +1664,28 @@ public class JavaClientCodegenTest {
|
|||||||
.assertParameterAnnotations()
|
.assertParameterAnnotations()
|
||||||
.containsWithName("NotNull");
|
.containsWithName("NotNull");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNativeClientExplodedQueryParamWithArrayProperty() throws IOException {
|
||||||
|
Map<String, Object> properties = new HashMap<>();
|
||||||
|
properties.put(CodegenConstants.API_PACKAGE, "xyz.abcdef.api");
|
||||||
|
|
||||||
|
File output = Files.createTempDirectory("test").toFile();
|
||||||
|
output.deleteOnExit();
|
||||||
|
|
||||||
|
final CodegenConfigurator configurator = new CodegenConfigurator()
|
||||||
|
.setGeneratorName("java")
|
||||||
|
.setLibrary(JavaClientCodegen.NATIVE)
|
||||||
|
.setAdditionalProperties(properties)
|
||||||
|
.setInputSpec("src/test/resources/3_0/exploded-query-param-array.yaml")
|
||||||
|
.setOutputDir(output.getAbsolutePath().replace("\\", "/"));
|
||||||
|
|
||||||
|
final ClientOptInput clientOptInput = configurator.toClientOptInput();
|
||||||
|
DefaultGenerator generator = new DefaultGenerator();
|
||||||
|
generator.opts(clientOptInput).generate();
|
||||||
|
|
||||||
|
TestUtils.assertFileContains(Paths.get(output + "/src/main/java/xyz/abcdef/api/DefaultApi.java"),
|
||||||
|
"localVarQueryParams.addAll(ApiClient.parameterToPairs(\"multi\", \"values\", queryObject.getValues()));"
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,41 @@
|
|||||||
|
openapi: 3.0.3
|
||||||
|
info:
|
||||||
|
title: Exploded query param array
|
||||||
|
description: "Exploded query params"
|
||||||
|
version: "1.0.0"
|
||||||
|
servers:
|
||||||
|
- url: localhost:8080
|
||||||
|
paths:
|
||||||
|
/api:
|
||||||
|
get:
|
||||||
|
operationId: GetSomeValue
|
||||||
|
parameters:
|
||||||
|
- in: query
|
||||||
|
name: QueryObject
|
||||||
|
explode: true
|
||||||
|
style: form
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
values:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: Some return value
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/SomeReturnValue'
|
||||||
|
example:
|
||||||
|
someValue: value
|
||||||
|
components:
|
||||||
|
schemas:
|
||||||
|
SomeReturnValue:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- someValue
|
||||||
|
properties:
|
||||||
|
someValue:
|
||||||
|
type: string
|
Loading…
x
Reference in New Issue
Block a user