}
}
- public boolean isListedNode(final SchemaNode node) {
- return discriminators.containsKey(node);
+ public boolean isListedNode(final SchemaNode node, final String name) {
+ return discriminators.containsKey(node) && names.contains(name);
}
public String getDiscriminator(final SchemaNode node) {
final SchemaInferenceStack stack, final DefinitionNames definitionNames,
final ArrayDeque<SchemaEntity> result, final String parentName, final boolean isParentConfig) {
if (node instanceof ContainerSchemaNode || node instanceof ListSchemaNode) {
- if (definitionNames.isListedNode(node)) {
+ final var newTitle = title + "_" + node.getQName().getLocalName();
+ if (definitionNames.isListedNode(node, newTitle)) {
// This means schema for this node is already processed
return;
}
- final var newTitle = title + "_" + node.getQName().getLocalName();
- final var parentNameConfigLocalName = parentName + "_" + node.getQName().getLocalName();
- final var names = List.of(parentNameConfigLocalName);
- final var discriminator = definitionNames.pickDiscriminator(node, names);
+ final var discriminator = definitionNames.pickDiscriminator(node, List.of(newTitle));
final var child = new NodeSchemaEntity(node, newTitle, discriminator, OBJECT_TYPE, stack, parentName,
isParentConfig, definitionNames);
final var isConfig = node.isConfiguration() && isParentConfig;
final var nodeName = parentName + "_" + localName;
final String discriminator;
- if (!definitionNames.isListedNode(schemaNode)) {
- final var parentNameConfigLocalName = parentName + "_" + localName;
- final var names = List.of(parentNameConfigLocalName);
- discriminator = definitionNames.pickDiscriminator(schemaNode, names);
+ if (!definitionNames.isListedNode(schemaNode, nodeName)) {
+ discriminator = definitionNames.pickDiscriminator(schemaNode, List.of(nodeName));
} else {
discriminator = definitionNames.getDiscriminator(schemaNode);
}