Skip to content

Commit 7e89e1e

Browse files
authored
fix import mapping for return types (#14525) (#15719)
* importContainerType = true * add unit test * disable MyImportTest * build all samples, add import exceptions * simplify code * delete myImportTest * generate docs * extend comment * remove inline comment
1 parent 8b26d81 commit 7e89e1e

175 files changed

Lines changed: 162 additions & 157 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/generators/groovy.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
123123
<li>File</li>
124124
<li>Float</li>
125125
<li>Integer</li>
126+
<li>List</li>
126127
<li>Long</li>
127128
<li>Map</li>
128129
<li>Object</li>

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

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,23 @@ public Map<String, ModelsMap> updateAllModels(Map<String, ModelsMap> objs) {
659659
return objs;
660660
}
661661

662+
/**
663+
* Removes importToRemove from the imports of objs, if present.
664+
* This is useful to remove imports that are already present in operations-related template files, to avoid importing the same thing twice.
665+
*
666+
* @param objs imports will be removed from this objs' imports collection
667+
* @param importToRemove the import statement to be removed
668+
*/
669+
protected void removeImport(OperationsMap objs, String importToRemove) {
670+
List<Map<String, String>> imports = objs.getImports();
671+
for (Iterator<Map<String, String>> itr = imports.iterator(); itr.hasNext(); ) {
672+
String itrImport = itr.next().get("import");
673+
if (itrImport.equals(importToRemove)) {
674+
itr.remove();
675+
}
676+
}
677+
}
678+
662679
/**
663680
* Removes imports from the model that points to itself
664681
* Marks a self referencing property, if detected
@@ -5196,7 +5213,7 @@ public CodegenParameter fromParameter(Parameter parameter, Set<String> imports)
51965213
codegenParameter.dataType = codegenProperty.dataType;
51975214
}
51985215
if (!addSchemaImportsFromV3SpecLocations) {
5199-
if (ModelUtils.isSet(parameterSchema)) {
5216+
if (ModelUtils.isArraySchema(parameterSchema)) {
52005217
imports.add(codegenProperty.baseType);
52015218
}
52025219
}
@@ -7403,7 +7420,7 @@ protected LinkedHashMap<String, CodegenMediaType> getContent(Content content, Se
74037420
if (addSchemaImportsFromV3SpecLocations) {
74047421
addImports(imports, schemaProp.getImports(importContainerType, importBaseType, generatorMetadata.getFeatureSet()));
74057422
} else {
7406-
addImports(imports, schemaProp.getImports(false, importBaseType, generatorMetadata.getFeatureSet()));
7423+
addImports(imports, schemaProp.getImports(true, importBaseType, generatorMetadata.getFeatureSet()));
74077424
}
74087425
}
74097426
}

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,11 @@
2424
import org.openapitools.codegen.meta.features.DocumentationFeature;
2525
import org.openapitools.codegen.meta.features.GlobalFeature;
2626
import org.openapitools.codegen.meta.features.SecurityFeature;
27+
import org.openapitools.codegen.model.ModelMap;
28+
import org.openapitools.codegen.model.OperationsMap;
2729

2830
import java.io.File;
31+
import java.util.List;
2932

3033
import static org.openapitools.codegen.utils.StringUtils.*;
3134

@@ -221,4 +224,11 @@ public String toApiFilename(String name) {
221224
public void setOptionalProjectFileFlag(boolean flag) {
222225
this.optionalProjectFileFlag = flag;
223226
}
227+
228+
@Override
229+
public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
230+
objs = super.postProcessOperationsWithModels(objs, allModels);
231+
removeImport(objs, "#include <QList>");
232+
return objs;
233+
}
224234
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import org.openapitools.codegen.meta.features.*;
2424
import org.openapitools.codegen.meta.GeneratorMetadata;
2525
import org.openapitools.codegen.meta.Stability;
26+
import org.openapitools.codegen.model.ModelMap;
27+
import org.openapitools.codegen.model.OperationsMap;
2628
import org.openapitools.codegen.utils.ModelUtils;
2729

2830
import java.io.File;
@@ -340,5 +342,11 @@ public String toDefaultValue(Schema p) {
340342
return "null";
341343
}
342344

345+
@Override
346+
public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
347+
objs = super.postProcessOperationsWithModels(objs, allModels);
348+
removeImport(objs, "#include <list>");
349+
return objs;
350+
}
343351

344352
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ public GroovyClientCodegen() {
6868
languageSpecificPrimitives.add("ArrayList");
6969
languageSpecificPrimitives.add("File");
7070
languageSpecificPrimitives.add("Map");
71+
languageSpecificPrimitives.add("List");
7172

7273
// this must not be OS-specific
7374
sourceFolder = projectFolder + "/groovy";

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

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,19 @@
1919

2020
import io.swagger.v3.oas.models.media.ComposedSchema;
2121
import io.swagger.v3.oas.models.media.Schema;
22-
import org.apache.commons.lang3.StringUtils;
2322
import org.openapitools.codegen.*;
2423
import org.openapitools.codegen.languages.features.CXFServerFeatures;
2524
import org.openapitools.codegen.languages.features.GzipTestFeatures;
2625
import org.openapitools.codegen.languages.features.LoggingTestFeatures;
2726
import org.openapitools.codegen.languages.features.UseGenericResponseFeatures;
27+
import org.openapitools.codegen.model.ModelMap;
28+
import org.openapitools.codegen.model.OperationsMap;
2829
import org.openapitools.codegen.utils.ModelUtils;
2930
import org.slf4j.Logger;
3031
import org.slf4j.LoggerFactory;
3132

3233
import java.io.File;
33-
import java.util.Set;
34+
import java.util.List;
3435

3536
public class JavaCXFServerCodegen extends AbstractJavaJAXRSServerCodegen
3637
implements CXFServerFeatures, GzipTestFeatures, LoggingTestFeatures, UseGenericResponseFeatures {
@@ -263,6 +264,13 @@ public void postProcessModelProperty(CodegenModel model, CodegenProperty propert
263264
}
264265
}
265266

267+
@Override
268+
public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
269+
objs = super.postProcessOperationsWithModels(objs, allModels);
270+
removeImport(objs, "java.util.List");
271+
return objs;
272+
}
273+
266274
@Override
267275
public String getHelp() {
268276
return "Generates a Java JAXRS Server application based on Apache CXF framework.";

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,11 @@
1919

2020
import org.openapitools.codegen.*;
2121
import org.openapitools.codegen.languages.features.BeanValidationFeatures;
22+
import org.openapitools.codegen.model.ModelMap;
23+
import org.openapitools.codegen.model.OperationsMap;
2224

2325
import java.io.File;
26+
import java.util.List;
2427

2528
/**
2629
* Generates a Java JAXRS Server according to JAXRS 2.0 specification, assuming an
@@ -98,6 +101,13 @@ public void postProcessModelProperty(CodegenModel model, CodegenProperty propert
98101
model.imports.add("JsonProperty");
99102
}
100103

104+
@Override
105+
public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
106+
objs = super.postProcessOperationsWithModels(objs, allModels);
107+
removeImport(objs, "java.util.List");
108+
return objs;
109+
}
110+
101111
@Override
102112
public String getHelp() {
103113
return "Generates a Java JAXRS Server according to JAXRS 2.0 specification, assuming an "

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,12 @@
2121
import org.apache.commons.lang3.StringUtils;
2222
import org.openapitools.codegen.*;
2323
import org.openapitools.codegen.meta.features.DocumentationFeature;
24+
import org.openapitools.codegen.model.ModelMap;
25+
import org.openapitools.codegen.model.OperationsMap;
2426
import org.openapitools.codegen.meta.features.SecurityFeature;
2527

2628
import java.io.File;
29+
import java.util.List;
2730
import java.util.Map;
2831

2932
import static org.openapitools.codegen.languages.features.GzipFeatures.USE_GZIP_FEATURE;
@@ -314,4 +317,11 @@ public void postProcessModelProperty(CodegenModel model, CodegenProperty propert
314317
}
315318
}
316319

320+
@Override
321+
public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
322+
objs = super.postProcessOperationsWithModels(objs, allModels);
323+
removeImport(objs, "java.util.List");
324+
return objs;
325+
}
326+
317327
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.openapitools.codegen.meta.features.DocumentationFeature;
2424
import org.openapitools.codegen.model.ModelMap;
2525
import org.openapitools.codegen.model.ModelsMap;
26+
import org.openapitools.codegen.model.OperationsMap;
2627

2728
import java.util.*;
2829

@@ -154,4 +155,11 @@ public ModelsMap postProcessModelsEnum(ModelsMap objs) {
154155
return objs;
155156
}
156157

158+
@Override
159+
public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<ModelMap> allModels) {
160+
objs = super.postProcessOperationsWithModels(objs, allModels);
161+
removeImport(objs, "java.util.List");
162+
return objs;
163+
}
164+
157165
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import java.util.*;
3333
import java.util.regex.Matcher;
3434
import java.util.regex.Pattern;
35-
import java.util.stream.Collectors;
3635

3736
import static org.openapitools.codegen.utils.CamelizeOption.LOWERCASE_FIRST_LETTER;
3837
import static org.openapitools.codegen.utils.StringUtils.camelize;
@@ -371,6 +370,8 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<Mo
371370
}
372371
}
373372

373+
removeImport(objs, "java.util.List");
374+
374375
return objs;
375376
}
376377

0 commit comments

Comments
 (0)