forked from loafle/openapi-generator-original
mitigated a bug (#13786)
This commit is contained in:
parent
9039c83bc4
commit
8e98bff934
@ -468,12 +468,15 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
|
|||||||
@Override
|
@Override
|
||||||
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
|
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
|
||||||
final Map<String, ModelsMap> processed = super.postProcessAllModels(objs);
|
final Map<String, ModelsMap> processed = super.postProcessAllModels(objs);
|
||||||
|
|
||||||
|
// TODO: move the logic of these three methods into patchProperty so all CodegenProperty instances get the same treatment
|
||||||
postProcessEnumRefs(processed);
|
postProcessEnumRefs(processed);
|
||||||
updateValueTypeProperty(processed);
|
updateValueTypeProperty(processed);
|
||||||
updateNullableTypeProperty(processed);
|
updateNullableTypeProperty(processed);
|
||||||
|
|
||||||
for (Map.Entry<String, ModelsMap> entry : objs.entrySet()) {
|
for (Map.Entry<String, ModelsMap> entry : objs.entrySet()) {
|
||||||
CodegenModel model = ModelUtils.getModelByName(entry.getKey(), objs);
|
CodegenModel model = ModelUtils.getModelByName(entry.getKey(), objs);
|
||||||
|
removeCircularReferencesInComposedSchemas(model);
|
||||||
|
|
||||||
// https://github.com/OpenAPITools/openapi-generator/issues/12324
|
// https://github.com/OpenAPITools/openapi-generator/issues/12324
|
||||||
// TODO: why do these collections contain different instances?
|
// TODO: why do these collections contain different instances?
|
||||||
@ -534,6 +537,31 @@ public abstract class AbstractCSharpCodegen extends DefaultCodegen implements Co
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Mitigates https://github.com/OpenAPITools/openapi-generator/issues/13709 */
|
||||||
|
private void removeCircularReferencesInComposedSchemas(CodegenModel cm) {
|
||||||
|
cm.anyOf.removeIf(anyOf -> anyOf.equals(cm.classname));
|
||||||
|
cm.oneOf.removeIf(oneOf -> oneOf.equals(cm.classname));
|
||||||
|
cm.allOf.removeIf(allOf -> allOf.equals(cm.classname));
|
||||||
|
|
||||||
|
CodegenComposedSchemas composedSchemas = cm.getComposedSchemas();
|
||||||
|
if (composedSchemas != null){
|
||||||
|
List<CodegenProperty> anyOf = composedSchemas.getAnyOf();
|
||||||
|
if (anyOf != null) {
|
||||||
|
anyOf.removeIf(p -> p.dataType.equals(cm.classname));
|
||||||
|
}
|
||||||
|
|
||||||
|
List<CodegenProperty> oneOf = composedSchemas.getOneOf();
|
||||||
|
if (oneOf != null){
|
||||||
|
oneOf.removeIf(p -> p.dataType.equals(cm.classname));
|
||||||
|
}
|
||||||
|
|
||||||
|
List<CodegenProperty> allOf = composedSchemas.getAllOf();
|
||||||
|
if (allOf != null){
|
||||||
|
allOf.removeIf(p -> p.dataType.equals(cm.classname));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected List<Map<String, Object>> buildEnumVars(List<Object> values, String dataType) {
|
protected List<Map<String, Object>> buildEnumVars(List<Object> values, String dataType) {
|
||||||
List<Map<String, Object>> enumVars = super.buildEnumVars(values, dataType);
|
List<Map<String, Object>> enumVars = super.buildEnumVars(values, dataType);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user