Skip to content

Commit

Permalink
Avoid using import mapping in model generation (#11217)
Browse files Browse the repository at this point in the history
* remove import mapping logic in model generation, better handle of file, list

* add new files for file, list

* fix some tests

* update tests, doc

* skip file as reserved word in feign client

* add new files

* remove file from reserved word list in spring generator
  • Loading branch information
wing328 committed Jan 16, 2022
1 parent 3f4e7d8 commit 33bce99
Show file tree
Hide file tree
Showing 382 changed files with 7,655 additions and 1,348 deletions.
2 changes: 2 additions & 0 deletions docs/generators/groovy.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>else</li>
<li>enum</li>
<li>extends</li>
<li>file</li>
<li>final</li>
<li>finally</li>
<li>float</li>
Expand All @@ -145,6 +146,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>list</li>
<li>localreturntype</li>
<li>localvaraccept</li>
<li>localvaraccepts</li>
Expand Down
2 changes: 2 additions & 0 deletions docs/generators/java-inflector.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>else</li>
<li>enum</li>
<li>extends</li>
<li>file</li>
<li>final</li>
<li>finally</li>
<li>float</li>
Expand All @@ -143,6 +144,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>list</li>
<li>localreturntype</li>
<li>localvaraccept</li>
<li>localvaraccepts</li>
Expand Down
2 changes: 2 additions & 0 deletions docs/generators/java-micronaut-client.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>else</li>
<li>enum</li>
<li>extends</li>
<li>file</li>
<li>final</li>
<li>finally</li>
<li>float</li>
Expand All @@ -155,6 +156,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>list</li>
<li>localreturntype</li>
<li>localvaraccept</li>
<li>localvaraccepts</li>
Expand Down
2 changes: 2 additions & 0 deletions docs/generators/java-msf4j.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>else</li>
<li>enum</li>
<li>extends</li>
<li>file</li>
<li>final</li>
<li>finally</li>
<li>float</li>
Expand All @@ -149,6 +150,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>list</li>
<li>localreturntype</li>
<li>localvaraccept</li>
<li>localvaraccepts</li>
Expand Down
2 changes: 2 additions & 0 deletions docs/generators/java-pkmst.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>else</li>
<li>enum</li>
<li>extends</li>
<li>file</li>
<li>final</li>
<li>finally</li>
<li>float</li>
Expand All @@ -150,6 +151,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>list</li>
<li>localreturntype</li>
<li>localvaraccept</li>
<li>localvaraccepts</li>
Expand Down
2 changes: 2 additions & 0 deletions docs/generators/java-play-framework.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>else</li>
<li>enum</li>
<li>extends</li>
<li>file</li>
<li>final</li>
<li>finally</li>
<li>float</li>
Expand All @@ -153,6 +154,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>list</li>
<li>localreturntype</li>
<li>localvaraccept</li>
<li>localvaraccepts</li>
Expand Down
2 changes: 2 additions & 0 deletions docs/generators/java-undertow-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>else</li>
<li>enum</li>
<li>extends</li>
<li>file</li>
<li>final</li>
<li>finally</li>
<li>float</li>
Expand All @@ -143,6 +144,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>list</li>
<li>localreturntype</li>
<li>localvaraccept</li>
<li>localvaraccepts</li>
Expand Down
2 changes: 2 additions & 0 deletions docs/generators/java-vertx-web.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>else</li>
<li>enum</li>
<li>extends</li>
<li>file</li>
<li>final</li>
<li>finally</li>
<li>float</li>
Expand All @@ -143,6 +144,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>list</li>
<li>localreturntype</li>
<li>localvaraccept</li>
<li>localvaraccepts</li>
Expand Down
2 changes: 2 additions & 0 deletions docs/generators/java-vertx.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>else</li>
<li>enum</li>
<li>extends</li>
<li>file</li>
<li>final</li>
<li>finally</li>
<li>float</li>
Expand All @@ -146,6 +147,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>list</li>
<li>localreturntype</li>
<li>localvaraccept</li>
<li>localvaraccepts</li>
Expand Down
2 changes: 2 additions & 0 deletions docs/generators/java.md
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>else</li>
<li>enum</li>
<li>extends</li>
<li>file</li>
<li>final</li>
<li>finally</li>
<li>float</li>
Expand All @@ -165,6 +166,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>list</li>
<li>localreturntype</li>
<li>localvaraccept</li>
<li>localvaraccepts</li>
Expand Down
2 changes: 2 additions & 0 deletions docs/generators/jaxrs-cxf-cdi.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>else</li>
<li>enum</li>
<li>extends</li>
<li>file</li>
<li>final</li>
<li>finally</li>
<li>float</li>
Expand All @@ -156,6 +157,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>list</li>
<li>localreturntype</li>
<li>localvaraccept</li>
<li>localvaraccepts</li>
Expand Down
2 changes: 2 additions & 0 deletions docs/generators/jaxrs-cxf-client.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>else</li>
<li>enum</li>
<li>extends</li>
<li>file</li>
<li>final</li>
<li>finally</li>
<li>float</li>
Expand All @@ -147,6 +148,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>list</li>
<li>localreturntype</li>
<li>localvaraccept</li>
<li>localvaraccepts</li>
Expand Down
2 changes: 2 additions & 0 deletions docs/generators/jaxrs-cxf-extended.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>else</li>
<li>enum</li>
<li>extends</li>
<li>file</li>
<li>final</li>
<li>finally</li>
<li>float</li>
Expand All @@ -170,6 +171,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>list</li>
<li>localreturntype</li>
<li>localvaraccept</li>
<li>localvaraccepts</li>
Expand Down
2 changes: 2 additions & 0 deletions docs/generators/jaxrs-cxf.md
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>else</li>
<li>enum</li>
<li>extends</li>
<li>file</li>
<li>final</li>
<li>finally</li>
<li>float</li>
Expand All @@ -165,6 +166,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>list</li>
<li>localreturntype</li>
<li>localvaraccept</li>
<li>localvaraccepts</li>
Expand Down
2 changes: 2 additions & 0 deletions docs/generators/jaxrs-jersey.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>else</li>
<li>enum</li>
<li>extends</li>
<li>file</li>
<li>final</li>
<li>finally</li>
<li>float</li>
Expand All @@ -150,6 +151,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>list</li>
<li>localreturntype</li>
<li>localvaraccept</li>
<li>localvaraccepts</li>
Expand Down
2 changes: 2 additions & 0 deletions docs/generators/jaxrs-resteasy-eap.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>else</li>
<li>enum</li>
<li>extends</li>
<li>file</li>
<li>final</li>
<li>finally</li>
<li>float</li>
Expand All @@ -150,6 +151,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>list</li>
<li>localreturntype</li>
<li>localvaraccept</li>
<li>localvaraccepts</li>
Expand Down
2 changes: 2 additions & 0 deletions docs/generators/jaxrs-resteasy.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>else</li>
<li>enum</li>
<li>extends</li>
<li>file</li>
<li>final</li>
<li>finally</li>
<li>float</li>
Expand All @@ -149,6 +150,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>list</li>
<li>localreturntype</li>
<li>localvaraccept</li>
<li>localvaraccepts</li>
Expand Down
2 changes: 2 additions & 0 deletions docs/generators/jaxrs-spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>else</li>
<li>enum</li>
<li>extends</li>
<li>file</li>
<li>final</li>
<li>finally</li>
<li>float</li>
Expand All @@ -156,6 +157,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>list</li>
<li>localreturntype</li>
<li>localvaraccept</li>
<li>localvaraccepts</li>
Expand Down
2 changes: 2 additions & 0 deletions docs/generators/spring.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>else</li>
<li>enum</li>
<li>extends</li>
<li>file</li>
<li>final</li>
<li>finally</li>
<li>float</li>
Expand All @@ -167,6 +168,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>instanceof</li>
<li>int</li>
<li>interface</li>
<li>list</li>
<li>localreturntype</li>
<li>localvaraccept</li>
<li>localvaraccepts</li>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -437,19 +437,6 @@ void generateModels(List<File> files, List<Object> allModels, List<String> unuse
// process models only
for (String name : modelKeys) {
try {
//don't generate models that have an import mapping
if (config.importMapping().containsKey(name)) {
LOGGER.debug("Model {} not imported due to import mapping", name);

for (String templateName : config.modelTemplateFiles().keySet()) {
// HACK: Because this returns early, could lead to some invalid model reporting.
String filename = config.modelFilename(templateName, name);
Path path = java.nio.file.Paths.get(filename);
this.templateProcessor.skip(path,"Skipped prior to model processing due to import mapping conflict (either by user or by generator)." );
}
continue;
}

// don't generate models that are not used as object (e.g. form parameters)
if (unusedModels.contains(name)) {
if (Boolean.FALSE.equals(skipFormModel)) {
Expand Down Expand Up @@ -517,11 +504,6 @@ void generateModels(List<File> files, List<Object> allModels, List<String> unuse
Map<String, Object> models = (Map<String, Object>) allProcessedModels.get(modelName);
models.put("modelPackage", config.modelPackage());
try {
//don't generate models that have an import mapping
if (config.importMapping().containsKey(modelName)) {
continue;
}

// TODO revise below as we've already performed unaliasing so that the isAlias check may be removed
List<Object> modelList = (List<Object>) models.get("models");
if (modelList != null && !modelList.isEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ public AbstractJavaCodegen() {
setReservedWordsLowerCase(
Arrays.asList(
// special words
"object",
"object", "list", "file",
// used as internal variables, can collide with parameter names
"localVarPath", "localVarQueryParams", "localVarCollectionQueryParams",
"localVarHeaderParams", "localVarCookieParams", "localVarFormParams", "localVarPostBody",
Expand Down Expand Up @@ -753,12 +753,6 @@ public String toParamName(String name) {

@Override
public String toModelName(final String name) {
// We need to check if import-mapping has a different model for this class, so we use it
// instead of the auto-generated one.
if (importMapping.containsKey(name)) {
return importMapping.get(name);
}

This comment has been minimized.

Copy link
@mickroll

mickroll Jan 31, 2022

Contributor

Removing this codepath destroyed using import mapping to map type names of the OpenAPI Spec to existing custom types. Now references to nonexisting types with modelNamePrefix and/or modelNameSuffix are generated, instead of using the mapped name.

See also #11478

final String sanitizedName = sanitizeName(name);

String nameWithPrefixSuffix = sanitizedName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,10 @@ public void processOpts() {
//Templates to decode response headers
supportingFiles.add(new SupportingFile("model/ApiResponse.mustache", modelsFolder, "ApiResponse.java"));
supportingFiles.add(new SupportingFile("ApiResponseDecoder.mustache", invokerFolder, "ApiResponseDecoder.java"));

// TODO remove "file" from reserved word list as feign client doesn't support using `baseName`
// as the parameter name yet
reservedWords.remove("file");
}

if (!(FEIGN.equals(getLibrary()) || RESTTEMPLATE.equals(getLibrary()) || RETROFIT_2.equals(getLibrary()) || GOOGLE_API_CLIENT.equals(getLibrary()) || REST_ASSURED.equals(getLibrary()) || WEBCLIENT.equals(getLibrary()) || MICROPROFILE.equals(getLibrary()))) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -242,13 +242,16 @@ public String getHelp() {

@Override
public void processOpts() {

final List<Pair<String, String>> configOptions = additionalProperties.entrySet().stream()
.filter(e -> !Arrays.asList(API_FIRST, "hideGenerationTimestamp").contains(e.getKey()))
.filter(e -> cliOptions.stream().map(CliOption::getOpt).anyMatch(opt -> opt.equals(e.getKey())))
.map(e -> Pair.of(e.getKey(), e.getValue().toString())).collect(Collectors.toList());
additionalProperties.put("configOptions", configOptions);

// TODO remove "file" from reserved word list as feign client doesn't support using `baseName`
// as the parameter name yet
reservedWords.remove("file");

// Process java8 option before common java ones to change the default
// dateLibrary to java8.
LOGGER.info("----------------------------------");
Expand Down
Loading

0 comments on commit 33bce99

Please sign in to comment.