Skip to content

Commit eb2ec44

Browse files
authored
Ensure abstract classes are set to retrievable = false in ModelInfo. (#533)
1 parent 6dd2f5c commit eb2ec44

1 file changed

Lines changed: 11 additions & 3 deletions

File tree

tooling/src/main/java/org/opencds/cqf/tooling/modelinfo/ClassInfoBuilder.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1402,9 +1402,9 @@ private ClassInfo buildClassInfo(String modelName, StructureDefinition sd) throw
14021402
logger.info("Building ClassInfo for {}", typeName);
14031403
ClassInfo info = new ClassInfo().withName(typeName).withNamespace(modelName).withLabel(this.getLabel(sd))
14041404
.withIdentifier(sd.getUrl())
1405-
.withRetrievable(sd.getKind() == StructureDefinitionKind.RESOURCE);
1405+
.withRetrievable(isStructureDefinitionRetrievable(sd));
14061406

1407-
if (sd.getKind() == StructureDefinitionKind.RESOURCE) {
1407+
if (isStructureDefinitionResource(sd)) {
14081408
String targetTypeName = getTargetTypeName(sd);
14091409
if (targetTypeName != null) {
14101410
info.setTarget(targetTypeName);
@@ -1442,7 +1442,7 @@ private ClassInfo buildClassInfo(String modelName, StructureDefinition sd) throw
14421442
}
14431443

14441444
String baseDefinition = sd.getBaseDefinition();
1445-
String baseTypeName = sd.getKind() == StructureDefinitionKind.RESOURCE
1445+
String baseTypeName = isStructureDefinitionResource(sd)
14461446
? resolveBaseTypeName(sd.getType()) : resolveTypeName(baseDefinition);
14471447

14481448
if (baseTypeName != null && !this.typeInfos.containsKey(baseTypeName)) {
@@ -1473,6 +1473,14 @@ private ClassInfo buildClassInfo(String modelName, StructureDefinition sd) throw
14731473
return info;
14741474
}
14751475

1476+
protected static boolean isStructureDefinitionRetrievable(StructureDefinition theStructureDefinition) {
1477+
return isStructureDefinitionResource(theStructureDefinition) && ! theStructureDefinition.getAbstract();
1478+
}
1479+
1480+
protected static boolean isStructureDefinitionResource(StructureDefinition theStructureDefinition) {
1481+
return theStructureDefinition.getKind() == StructureDefinitionKind.RESOURCE;
1482+
}
1483+
14761484
@SuppressWarnings("unused")
14771485
private StructureDefinition getBaseDefinitionStructureDef(String model, StructureDefinition sd) {
14781486
String baseSd = (sd.getBaseDefinition() == null) ? null : getTail(sd.getBaseDefinition());

0 commit comments

Comments
 (0)