diff --git a/redfish-generator/src/main/java/com/twardyece/dmtf/model/context/factory/UnionContextFactory.java b/redfish-generator/src/main/java/com/twardyece/dmtf/model/context/factory/UnionContextFactory.java index 81de4e9..e4a20ac 100644 --- a/redfish-generator/src/main/java/com/twardyece/dmtf/model/context/factory/UnionContextFactory.java +++ b/redfish-generator/src/main/java/com/twardyece/dmtf/model/context/factory/UnionContextFactory.java @@ -21,7 +21,9 @@ public UnionContextFactory(ModelResolver modelResolver, UnionVariantParser varia @Override public ModelContext makeModelContext(RustType type, Schema schema) { - if (null == schema.getAnyOf()) { + // Since Redfish 2024.1, anyOf is not used anymore + // Only one (the latest) of all schemes is declared in the $ref field, + if (null == schema.getAnyOf() && null == schema.get$ref()) { return null; } @@ -32,7 +34,17 @@ public ModelContext makeModelContext(RustType type, Schema schema) { private List makeVariants(Schema schema) { List variants = new ArrayList<>(); - for (Object object : schema.getAnyOf()) { + List schemataToResolve = new ArrayList<>(); + + if (null != schema.getAnyOf()) { + schemataToResolve.addAll(schema.getAnyOf()); + } + + if (null != schema.get$ref()) { + schemataToResolve.add(schema); + } + + for (Object object : schemataToResolve) { Schema variant = (Schema)object; String identifier = ModelResolver.getSchemaIdentifier(variant.get$ref()); RustIdentifier value = this.variantParser.getVariantName(identifier);