From 0086593ae81d0032d51c4a288538b0fcbe1603c3 Mon Sep 17 00:00:00 2001 From: HugoMario Date: Tue, 14 Jan 2020 01:33:20 -0500 Subject: [PATCH] added option to ignore import mappings in model generation. --- .../java/io/swagger/codegen/cmd/Generate.java | 7 +++++++ .../io/swagger/codegen/CodegenConfig.java | 6 ++++++ .../io/swagger/codegen/CodegenConstants.java | 2 ++ .../io/swagger/codegen/DefaultCodegen.java | 19 +++++++++++++++++++ .../io/swagger/codegen/DefaultGenerator.java | 4 ++-- .../languages/AbstractJavaCodegen.java | 6 +++++- 6 files changed, 41 insertions(+), 3 deletions(-) diff --git a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Generate.java b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Generate.java index 6ecd2ede699..9325ec5e2a8 100644 --- a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Generate.java +++ b/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Generate.java @@ -175,6 +175,9 @@ public class Generate implements Runnable { @Option(name = {"--skip-alias-generation"}, title = "skip alias generation.", description = "skip code generation for models identified as alias.") private Boolean skipAliasGeneration; + @Option(name = {"--ignore-import-mapping"}, title = "ignore import mapping", description = "allow generate model classes using names previously listed on import mappings.") + private String ignoreImportMappings; + @Override public void run() { @@ -280,6 +283,10 @@ public void run() { configurator.setSkipAliasGeneration(removeOperationIdPrefix); } + if (ignoreImportMappings != null) { + additionalProperties.add(String.format("%s=%s", CodegenConstants.IGNORE_IMPORT_MAPPING_OPTION, Boolean.parseBoolean(ignoreImportMappings))); + } + applySystemPropertiesKvpList(systemProperties, configurator); applyInstantiationTypesKvpList(instantiationTypes, configurator); applyImportMappingsKvpList(importMappings, configurator); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java index 53eaeb18c8a..c9344e411ee 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java @@ -226,4 +226,10 @@ public interface CodegenConfig { Boolean getSkipAliasGeneration(); + boolean getIgnoreImportMapping(); + + void setIgnoreImportMapping(boolean ignoreImportMapping); + + boolean defaultIgnoreImportMappingOption(); + } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java index 63d88620adb..94dbbcd3387 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java @@ -234,4 +234,6 @@ public static enum ENUM_PROPERTY_NAMING_TYPE {camelCase, PascalCase, snake_case, public static final String ASP_NET_CORE_VERSION = "aspnetCoreVersion"; public static final String INTERFACE_ONLY = "interface-only"; public static final String INTERFACE_CONTROLLER = "interface-controller"; + + public static final String IGNORE_IMPORT_MAPPING_OPTION = "ignoreImportMappings"; } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java index 122ac5711e7..1f09349ae8e 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java @@ -104,6 +104,7 @@ public class DefaultCodegen { protected String httpUserAgent; protected Boolean hideGenerationTimestamp = true; protected Boolean skipAliasGeneration; + protected boolean ignoreImportMapping; // How to encode special characters like $ // They are translated to words like "Dollar" and prefixed with ' // Then translated back during JSON encoding and decoding @@ -163,6 +164,12 @@ public void processOpts() { this.setRemoveOperationIdPrefix(Boolean.valueOf(additionalProperties .get(CodegenConstants.REMOVE_OPERATION_ID_PREFIX).toString())); } + + if (additionalProperties.get(CodegenConstants.IGNORE_IMPORT_MAPPING_OPTION) != null) { + setIgnoreImportMapping(Boolean.parseBoolean( additionalProperties.get(CodegenConstants.IGNORE_IMPORT_MAPPING_OPTION).toString())); + } else { + setIgnoreImportMapping(defaultIgnoreImportMappingOption()); + } } // override with any special post-processing for all models @@ -3958,4 +3965,16 @@ protected void configureDataForTestTemplate(CodegenOperation codegenOperation) { } codegenOperation.testPath = path; } + + public boolean getIgnoreImportMapping() { + return ignoreImportMapping; + } + + public void setIgnoreImportMapping(boolean ignoreImportMapping) { + this.ignoreImportMapping = ignoreImportMapping; + } + + public boolean defaultIgnoreImportMappingOption() { + return false; + } } diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java index 23195c89136..0b8c506cf89 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java @@ -378,7 +378,7 @@ private Model getParent(Model model) { for (String name : modelKeys) { try { //don't generate models that have an import mapping - if (config.importMapping().containsKey(name)) { + if (!config.getIgnoreImportMapping() && config.importMapping().containsKey(name)) { LOGGER.info("Model " + name + " not imported due to import mapping"); continue; } @@ -409,7 +409,7 @@ private Model getParent(Model model) { models.put("modelPackage", config.modelPackage()); try { //don't generate models that have an import mapping - if (config.importMapping().containsKey(modelName)) { + if (!config.getIgnoreImportMapping() && config.importMapping().containsKey(modelName)) { continue; } Map modelTemplate = (Map) ((List) models.get("models")).get(0); diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractJavaCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractJavaCodegen.java index c9ca0fa34ea..e073fc3d350 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractJavaCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractJavaCodegen.java @@ -603,7 +603,7 @@ public String toParamName(String name) { 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)) { + if (!getIgnoreImportMapping() && importMapping.containsKey(name)) { return importMapping.get(name); } @@ -1349,4 +1349,8 @@ public String sanitizeTag(String tag) { return tag; } + public boolean defaultIgnoreImportMappingOption() { + return true; + } + }