Skip to content

Commit 0086593

Browse files
committed
added option to ignore import mappings in model generation.
1 parent a82fa44 commit 0086593

File tree

6 files changed

+41
-3
lines changed

6 files changed

+41
-3
lines changed

modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Generate.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,9 @@ public class Generate implements Runnable {
175175
@Option(name = {"--skip-alias-generation"}, title = "skip alias generation.", description = "skip code generation for models identified as alias.")
176176
private Boolean skipAliasGeneration;
177177

178+
@Option(name = {"--ignore-import-mapping"}, title = "ignore import mapping", description = "allow generate model classes using names previously listed on import mappings.")
179+
private String ignoreImportMappings;
180+
178181
@Override
179182
public void run() {
180183

@@ -280,6 +283,10 @@ public void run() {
280283
configurator.setSkipAliasGeneration(removeOperationIdPrefix);
281284
}
282285

286+
if (ignoreImportMappings != null) {
287+
additionalProperties.add(String.format("%s=%s", CodegenConstants.IGNORE_IMPORT_MAPPING_OPTION, Boolean.parseBoolean(ignoreImportMappings)));
288+
}
289+
283290
applySystemPropertiesKvpList(systemProperties, configurator);
284291
applyInstantiationTypesKvpList(instantiationTypes, configurator);
285292
applyImportMappingsKvpList(importMappings, configurator);

modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,4 +226,10 @@ public interface CodegenConfig {
226226

227227
Boolean getSkipAliasGeneration();
228228

229+
boolean getIgnoreImportMapping();
230+
231+
void setIgnoreImportMapping(boolean ignoreImportMapping);
232+
233+
boolean defaultIgnoreImportMappingOption();
234+
229235
}

modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConstants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,4 +234,6 @@ public static enum ENUM_PROPERTY_NAMING_TYPE {camelCase, PascalCase, snake_case,
234234
public static final String ASP_NET_CORE_VERSION = "aspnetCoreVersion";
235235
public static final String INTERFACE_ONLY = "interface-only";
236236
public static final String INTERFACE_CONTROLLER = "interface-controller";
237+
238+
public static final String IGNORE_IMPORT_MAPPING_OPTION = "ignoreImportMappings";
237239
}

modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ public class DefaultCodegen {
104104
protected String httpUserAgent;
105105
protected Boolean hideGenerationTimestamp = true;
106106
protected Boolean skipAliasGeneration;
107+
protected boolean ignoreImportMapping;
107108
// How to encode special characters like $
108109
// They are translated to words like "Dollar" and prefixed with '
109110
// Then translated back during JSON encoding and decoding
@@ -163,6 +164,12 @@ public void processOpts() {
163164
this.setRemoveOperationIdPrefix(Boolean.valueOf(additionalProperties
164165
.get(CodegenConstants.REMOVE_OPERATION_ID_PREFIX).toString()));
165166
}
167+
168+
if (additionalProperties.get(CodegenConstants.IGNORE_IMPORT_MAPPING_OPTION) != null) {
169+
setIgnoreImportMapping(Boolean.parseBoolean( additionalProperties.get(CodegenConstants.IGNORE_IMPORT_MAPPING_OPTION).toString()));
170+
} else {
171+
setIgnoreImportMapping(defaultIgnoreImportMappingOption());
172+
}
166173
}
167174

168175
// override with any special post-processing for all models
@@ -3958,4 +3965,16 @@ protected void configureDataForTestTemplate(CodegenOperation codegenOperation) {
39583965
}
39593966
codegenOperation.testPath = path;
39603967
}
3968+
3969+
public boolean getIgnoreImportMapping() {
3970+
return ignoreImportMapping;
3971+
}
3972+
3973+
public void setIgnoreImportMapping(boolean ignoreImportMapping) {
3974+
this.ignoreImportMapping = ignoreImportMapping;
3975+
}
3976+
3977+
public boolean defaultIgnoreImportMappingOption() {
3978+
return false;
3979+
}
39613980
}

modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ private Model getParent(Model model) {
378378
for (String name : modelKeys) {
379379
try {
380380
//don't generate models that have an import mapping
381-
if (config.importMapping().containsKey(name)) {
381+
if (!config.getIgnoreImportMapping() && config.importMapping().containsKey(name)) {
382382
LOGGER.info("Model " + name + " not imported due to import mapping");
383383
continue;
384384
}
@@ -409,7 +409,7 @@ private Model getParent(Model model) {
409409
models.put("modelPackage", config.modelPackage());
410410
try {
411411
//don't generate models that have an import mapping
412-
if (config.importMapping().containsKey(modelName)) {
412+
if (!config.getIgnoreImportMapping() && config.importMapping().containsKey(modelName)) {
413413
continue;
414414
}
415415
Map<String, Object> modelTemplate = (Map<String, Object>) ((List<Object>) models.get("models")).get(0);

modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractJavaCodegen.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -603,7 +603,7 @@ public String toParamName(String name) {
603603
public String toModelName(final String name) {
604604
// We need to check if import-mapping has a different model for this class, so we use it
605605
// instead of the auto-generated one.
606-
if (importMapping.containsKey(name)) {
606+
if (!getIgnoreImportMapping() && importMapping.containsKey(name)) {
607607
return importMapping.get(name);
608608
}
609609

@@ -1349,4 +1349,8 @@ public String sanitizeTag(String tag) {
13491349
return tag;
13501350
}
13511351

1352+
public boolean defaultIgnoreImportMappingOption() {
1353+
return true;
1354+
}
1355+
13521356
}

0 commit comments

Comments
 (0)