Skip to content

Commit 314f18a

Browse files
Zomzogwing328
authored andcommitted
Import inner items for map (#3123)
fix #3094
1 parent d86f3ed commit 314f18a

File tree

3 files changed

+383
-1
lines changed

3 files changed

+383
-1
lines changed

modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java

+9-1
Original file line numberDiff line numberDiff line change
@@ -4660,9 +4660,17 @@ public CodegenParameter fromRequestBody(RequestBody body, Set<String> imports, S
46604660
schema.setAdditionalProperties(inner);
46614661
}
46624662
CodegenProperty codegenProperty = fromProperty("property", schema);
4663-
// only support 1-dimension map only
4663+
46644664
imports.add(codegenProperty.baseType);
46654665

4666+
CodegenProperty innerCp = codegenProperty;
4667+
while (innerCp != null) {
4668+
if (innerCp.complexType != null) {
4669+
imports.add(innerCp.complexType);
4670+
}
4671+
innerCp = innerCp.items;
4672+
}
4673+
46664674
if (StringUtils.isEmpty(bodyParameterName)) {
46674675
codegenParameter.baseName = "request_body";
46684676
} else {

modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java

+16
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package org.openapitools.codegen;
1919

20+
import com.google.common.collect.Sets;
2021
import io.swagger.v3.oas.models.Components;
2122
import io.swagger.v3.oas.models.OpenAPI;
2223
import io.swagger.v3.oas.models.Operation;
@@ -638,4 +639,19 @@ public void objectQueryParamIdentifyAsObject() {
638639
Assert.assertEquals(imports.iterator().next(), "PageQuery");
639640
}
640641

642+
@Test
643+
public void mapParamImportInnerObject() {
644+
final OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/2_0/mapArgs.yaml");
645+
final DefaultCodegen codegen = new DefaultCodegen();
646+
codegen.setOpenAPI(openAPI);
647+
648+
RequestBody requestBody = openAPI.getPaths().get("/api/instruments").getPost().getRequestBody();
649+
650+
HashSet<String> imports = new HashSet<>();
651+
codegen.fromRequestBody(requestBody, imports, "");
652+
653+
HashSet<String> expected = Sets.newHashSet("InstrumentDefinition", "map");
654+
655+
Assert.assertEquals(imports, expected);
656+
}
641657
}

0 commit comments

Comments
 (0)