-
Bug
-
Resolution: Done
-
Medium
-
5.0.0, 4.0.3
During the processing of container nodes in the DefinitionGenerator, required fields are not being populated. While an array for required fields is created in this method, it is not being passed to the processChildNode method.
final ArrayNode required = JsonNodeFactory.instance.arrayNode(); for (final DataSchemaNode node : nodes) { if (!isConfig || node.isConfiguration()) { processChildNode(node, parentName, definitions, definitionNames, isConfig, stack, properties, oaversion); } } parentNode.set(PROPERTIES_KEY, properties); setRequiredIfNotEmpty(parentNode, required);
Instead of using the `ArrayNode required` inside the `processChildNode` method, a new ArrayNode is being used to populate the required fields, which is then never stored.
if (node instanceof LeafSchemaNode leaf) { processLeafNode(leaf, name, properties, JsonNodeFactory.instance.arrayNode(), stack, definitions, definitionNames, oaversion); } else if (node instanceof AnyxmlSchemaNode anyxml) { processAnyXMLNode(anyxml, name, properties, JsonNodeFactory.instance.arrayNode()); } else if (node instanceof AnydataSchemaNode anydata) { processAnydataNode(anydata, name, properties, JsonNodeFactory.instance.arrayNode()); }