Skip to content

Commit dbbb446

Browse files
committed
detect property with same name but different types between base class and parents. renamed properties found with this conflict.
1 parent b3d8481 commit dbbb446

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -938,6 +938,33 @@ public void postProcessModelProperty(CodegenModel model, CodegenProperty propert
938938
}
939939
}
940940

941+
@Override
942+
protected void fixUpParentAndInterfaces(CodegenModel codegenModel, Map<String, CodegenModel> allModels) {
943+
super.fixUpParentAndInterfaces(codegenModel, allModels);
944+
if (codegenModel.vars == null || codegenModel.vars.isEmpty() || codegenModel.parentModel == null) {
945+
return;
946+
}
947+
CodegenModel parentModel = codegenModel.parentModel;
948+
949+
for (CodegenProperty codegenProperty : codegenModel.vars) {
950+
while (parentModel != null) {
951+
if (parentModel.vars == null || parentModel.vars.isEmpty()) {
952+
parentModel = parentModel.parentModel;
953+
continue;
954+
}
955+
boolean hasConflict = parentModel.vars.stream()
956+
.anyMatch(parentProperty -> parentProperty.name.equals(codegenProperty.name) && !parentProperty.datatype.equals(codegenProperty.datatype));
957+
if (hasConflict) {
958+
codegenProperty.name = toVarName(codegenModel.name + "_" + codegenProperty.name);
959+
codegenProperty.getter = toGetter(codegenProperty.name);
960+
codegenProperty.setter = toGetter(codegenProperty.name);
961+
break;
962+
}
963+
parentModel = parentModel.parentModel;
964+
}
965+
}
966+
}
967+
941968
@Override
942969
public void postProcessParameter(CodegenParameter parameter) { }
943970

0 commit comments

Comments
 (0)