|
17 | 17 |
|
18 | 18 | package org.openapitools.codegen.java.spring; |
19 | 19 |
|
| 20 | +import com.google.common.collect.ImmutableMap; |
| 21 | +import io.swagger.parser.OpenAPIParser; |
| 22 | +import io.swagger.v3.oas.models.OpenAPI; |
| 23 | +import io.swagger.v3.oas.models.Operation; |
| 24 | +import io.swagger.v3.oas.models.info.Info; |
| 25 | +import io.swagger.v3.oas.models.media.Schema; |
| 26 | +import io.swagger.v3.oas.models.servers.Server; |
| 27 | +import io.swagger.v3.parser.core.models.ParseOptions; |
| 28 | +import org.apache.commons.lang3.StringUtils; |
| 29 | +import org.assertj.core.api.MapAssert; |
| 30 | +import org.openapitools.codegen.CliOption; |
| 31 | +import org.openapitools.codegen.ClientOptInput; |
| 32 | +import org.openapitools.codegen.CodegenConstants; |
| 33 | +import org.openapitools.codegen.CodegenModel; |
| 34 | +import org.openapitools.codegen.CodegenOperation; |
| 35 | +import org.openapitools.codegen.CodegenParameter; |
| 36 | +import org.openapitools.codegen.CodegenProperty; |
| 37 | +import org.openapitools.codegen.DefaultGenerator; |
| 38 | +import org.openapitools.codegen.SupportingFile; |
| 39 | +import org.openapitools.codegen.TestUtils; |
| 40 | +import org.openapitools.codegen.config.CodegenConfigurator; |
| 41 | +import org.openapitools.codegen.config.GlobalSettings; |
| 42 | +import org.openapitools.codegen.java.assertions.JavaFileAssert; |
| 43 | +import org.openapitools.codegen.languages.AbstractJavaCodegen; |
| 44 | +import org.openapitools.codegen.languages.JavaClientCodegen; |
| 45 | +import org.openapitools.codegen.languages.SpringCodegen; |
| 46 | +import org.openapitools.codegen.languages.features.BeanValidationFeatures; |
| 47 | +import org.openapitools.codegen.languages.features.CXFServerFeatures; |
| 48 | +import org.openapitools.codegen.languages.features.DocumentationProviderFeatures; |
| 49 | +import org.testng.Assert; |
| 50 | +import org.testng.annotations.DataProvider; |
| 51 | +import org.testng.annotations.Ignore; |
| 52 | +import org.testng.annotations.Test; |
| 53 | + |
| 54 | +import java.io.File; |
| 55 | +import java.io.IOException; |
| 56 | +import java.math.BigDecimal; |
| 57 | +import java.nio.file.Files; |
| 58 | +import java.nio.file.Path; |
| 59 | +import java.nio.file.Paths; |
| 60 | +import java.util.HashMap; |
| 61 | +import java.util.List; |
| 62 | +import java.util.Map; |
| 63 | +import java.util.function.Consumer; |
| 64 | +import java.util.function.Function; |
| 65 | +import java.util.stream.Collectors; |
| 66 | + |
20 | 67 | import static java.util.stream.Collectors.groupingBy; |
21 | 68 | import static org.assertj.core.api.Assertions.assertThat; |
22 | 69 | import static org.openapitools.codegen.TestUtils.assertFileContains; |
|
47 | 94 | import static org.testng.Assert.assertEquals; |
48 | 95 | import static org.testng.Assert.fail; |
49 | 96 |
|
50 | | -import java.io.File; |
51 | | -import java.io.IOException; |
52 | | -import java.math.BigDecimal; |
53 | | -import java.nio.file.Files; |
54 | | -import java.nio.file.Path; |
55 | | -import java.nio.file.Paths; |
56 | | -import java.util.HashMap; |
57 | | -import java.util.List; |
58 | | -import java.util.Map; |
59 | | -import java.util.function.Consumer; |
60 | | -import java.util.function.Function; |
61 | | -import java.util.stream.Collectors; |
62 | | -import org.apache.commons.lang3.StringUtils; |
63 | | -import org.assertj.core.api.MapAssert; |
64 | | -import org.openapitools.codegen.CliOption; |
65 | | -import org.openapitools.codegen.ClientOptInput; |
66 | | -import org.openapitools.codegen.CodegenConstants; |
67 | | -import org.openapitools.codegen.CodegenModel; |
68 | | -import org.openapitools.codegen.CodegenOperation; |
69 | | -import org.openapitools.codegen.CodegenParameter; |
70 | | -import org.openapitools.codegen.CodegenProperty; |
71 | | -import org.openapitools.codegen.DefaultGenerator; |
72 | | -import org.openapitools.codegen.SupportingFile; |
73 | | -import org.openapitools.codegen.TestUtils; |
74 | | -import org.openapitools.codegen.config.CodegenConfigurator; |
75 | | -import org.openapitools.codegen.config.GlobalSettings; |
76 | | -import org.openapitools.codegen.java.assertions.JavaFileAssert; |
77 | | -import org.openapitools.codegen.languages.AbstractJavaCodegen; |
78 | | -import org.openapitools.codegen.languages.JavaClientCodegen; |
79 | | -import org.openapitools.codegen.languages.SpringCodegen; |
80 | | -import org.openapitools.codegen.languages.features.BeanValidationFeatures; |
81 | | -import org.openapitools.codegen.languages.features.CXFServerFeatures; |
82 | | -import org.openapitools.codegen.languages.features.DocumentationProviderFeatures; |
83 | | -import org.testng.Assert; |
84 | | -import org.testng.annotations.DataProvider; |
85 | | -import org.testng.annotations.Ignore; |
86 | | -import org.testng.annotations.Test; |
87 | | - |
88 | | -import com.google.common.collect.ImmutableMap; |
89 | | - |
90 | | -import io.swagger.parser.OpenAPIParser; |
91 | | -import io.swagger.v3.oas.models.OpenAPI; |
92 | | -import io.swagger.v3.oas.models.Operation; |
93 | | -import io.swagger.v3.oas.models.info.Info; |
94 | | -import io.swagger.v3.oas.models.media.Schema; |
95 | | -import io.swagger.v3.oas.models.servers.Server; |
96 | | -import io.swagger.v3.parser.core.models.ParseOptions; |
97 | | - |
98 | 97 | public class SpringCodegenTest { |
99 | 98 |
|
100 | 99 | @Test |
@@ -4821,6 +4820,38 @@ public void testCollectionTypesWithDefaults_issue_18102() throws IOException { |
4821 | 4820 | .fileDoesNotContains("private Set<String> stringSet = new LinkedHashSet<>()"); |
4822 | 4821 | } |
4823 | 4822 |
|
| 4823 | + @Test |
| 4824 | + public void testCollectionTypesWithDefaults_issue_collection() throws IOException { |
| 4825 | + File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); |
| 4826 | + output.deleteOnExit(); |
| 4827 | + |
| 4828 | + OpenAPI openAPI = new OpenAPIParser() |
| 4829 | + .readLocation("src/test/resources/3_0/java/issue_collection.yaml", null, new ParseOptions()).getOpenAPI(); |
| 4830 | + SpringCodegen codegen = new SpringCodegen(); |
| 4831 | + codegen.setLibrary(SPRING_CLOUD_LIBRARY); |
| 4832 | + codegen.setOutputDir(output.getAbsolutePath()); |
| 4833 | + codegen.additionalProperties().put(CodegenConstants.MODEL_PACKAGE, "xyz.model"); |
| 4834 | + codegen.additionalProperties().put(CodegenConstants.API_NAME_SUFFIX, "Controller"); |
| 4835 | + codegen.additionalProperties().put(CodegenConstants.API_PACKAGE, "xyz.controller"); |
| 4836 | + codegen.additionalProperties().put(CodegenConstants.MODEL_NAME_SUFFIX, "Dto"); |
| 4837 | + codegen.setContainerDefaultToNull(false); |
| 4838 | + |
| 4839 | + |
| 4840 | + ClientOptInput input = new ClientOptInput() |
| 4841 | + .openAPI(openAPI) |
| 4842 | + .config(codegen); |
| 4843 | + |
| 4844 | + DefaultGenerator generator = new DefaultGenerator(); |
| 4845 | + Map<String, File> files = generator.opts(input).generate().stream() |
| 4846 | + .collect(Collectors.toMap(File::getName, Function.identity())); |
| 4847 | + |
| 4848 | + JavaFileAssert.assertThat(files.get("PetDto.java")) |
| 4849 | + .fileContains("private List<@Valid TagDto> tags;") |
| 4850 | + .fileContains("private List<@Valid TagDto> tagsRequiredList = new ArrayList<>();") |
| 4851 | + .fileContains("private List<String> stringList;") |
| 4852 | + .fileContains("private List<String> stringRequiredList = new ArrayList<>();"); |
| 4853 | + } |
| 4854 | + |
4824 | 4855 | @Test |
4825 | 4856 | public void shouldGenerateOptionalParameterTypesWhenUsingOptionalAndDelegate_issue17768() throws IOException { |
4826 | 4857 | Map<String, Object> additionalProperties = new HashMap<>(); |
|
0 commit comments