Skip to content

Commit 9ede7b0

Browse files
authored
Merge pull request #8476 from john-french/refLastInAllOf
Fix for $ref as last element in allOf error
2 parents 9082126 + 4faf281 commit 9ede7b0

File tree

2 files changed

+29
-12
lines changed

2 files changed

+29
-12
lines changed

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

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1383,7 +1383,7 @@ public CodegenModel fromModel(String name, Model model, Map<String, Model> allDe
13831383
allRequired = null;
13841384
}
13851385
// parent model
1386-
RefModel parent = (RefModel) composed.getParent();
1386+
Model parent = (Model) composed.getParent();
13871387

13881388
// interfaces (intermediate models)
13891389
if (composed.getInterfaces() != null) {
@@ -1416,16 +1416,31 @@ public CodegenModel fromModel(String name, Model model, Map<String, Model> allDe
14161416
}
14171417

14181418
if (parent != null) {
1419-
final String parentRef = parent.getSimpleRef();
1420-
m.parentSchema = parentRef;
1421-
m.parent = toModelName(parent.getSimpleRef());
1422-
addImport(m, m.parent);
1423-
if (allDefinitions != null) {
1424-
final Model parentModel = allDefinitions.get(m.parentSchema);
1425-
if (supportsInheritance) {
1426-
addProperties(allProperties, allRequired, parentModel, allDefinitions);
1427-
} else {
1428-
addProperties(properties, required, parentModel, allDefinitions);
1419+
String parentName = null;
1420+
if(parent instanceof RefModel) {
1421+
parentName = ((RefModel)parent).getSimpleRef();
1422+
}
1423+
else {
1424+
if(parent instanceof ModelImpl) {
1425+
// check for a title
1426+
ModelImpl parentImpl = (ModelImpl) parent;
1427+
if(StringUtils.isNotBlank(parentImpl.getTitle())) {
1428+
parentName = parentImpl.getTitle();
1429+
}
1430+
}
1431+
}
1432+
1433+
if(parentName != null) {
1434+
m.parentSchema = parentName;
1435+
m.parent = toModelName(parentName);
1436+
addImport(m, m.parent);
1437+
if (allDefinitions != null) {
1438+
final Model parentModel = allDefinitions.get(m.parentSchema);
1439+
if (supportsInheritance) {
1440+
addProperties(allProperties, allRequired, parentModel, allDefinitions);
1441+
} else {
1442+
addProperties(properties, required, parentModel, allDefinitions);
1443+
}
14291444
}
14301445
}
14311446
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,9 @@ private Model getParent(Model model) {
371371
models.putAll(config.additionalProperties());
372372
allProcessedModels.put(name, models);
373373
} catch (Exception e) {
374-
throw new RuntimeException("Could not process model '" + name + "'" + ".Please make sure that your schema is correct!", e);
374+
String message = "Could not process model '" + name + "'" + ". Please make sure that your schema is correct!";
375+
LOGGER.error(message, e);
376+
throw new RuntimeException(message, e);
375377
}
376378
}
377379

0 commit comments

Comments
 (0)