X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=netconf%2Fsal-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Fsal%2Fconnect%2Fnetconf%2Fschema%2Fmapping%2FNetconfMessageTransformer.java;h=1d9ad98eff084ffa9b850b850b473e46a1178dca;hb=1177757ba68c79ada6f436a000bf7ac7804e3e36;hp=db675ded0ab3294f6058016be6aac7aaeef2b5ed;hpb=7c747fcd80ac38e3bd40cfe0a5c5e9a8d543f10e;p=netconf.git diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java index db675ded0a..1d9ad98eff 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java @@ -26,6 +26,7 @@ import java.io.IOException; import java.net.URISyntaxException; import java.time.Instant; import java.util.AbstractMap; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -59,9 +60,6 @@ import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.common.XMLNamespace; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; @@ -88,7 +86,6 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute; import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack; -import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.Inference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; @@ -123,7 +120,7 @@ public class NetconfMessageTransformer implements MessageTransformer action.getPath().asAbsolute()); // RFC6020 normal notifications this.mappedNotifications = Multimaps.index(schemaContext.getNotifications(), @@ -133,33 +130,26 @@ public class NetconfMessageTransformer implements MessageTransformer getActions(final SchemaContext schemaContext) { - final Map values = new HashMap<>(); - final SchemaInferenceStack stack = SchemaInferenceStack.of((EffectiveModelContext) schemaContext); - findAction(schemaContext, values, stack); - return ImmutableMap.copyOf(values); + // FIXME: return Map by using only + static List getActions(final SchemaContext schemaContext) { + final List builder = new ArrayList<>(); + findAction(schemaContext, builder); + return builder; } - private static void findAction(final DataSchemaNode dataSchemaNode, final Map builder, - final SchemaInferenceStack stack) { + private static void findAction(final DataSchemaNode dataSchemaNode, final List builder) { if (dataSchemaNode instanceof ActionNodeContainer) { for (ActionDefinition actionDefinition : ((ActionNodeContainer) dataSchemaNode).getActions()) { - stack.enterSchemaTree(actionDefinition.getQName()); - builder.put(stack.toSchemaNodeIdentifier(), actionDefinition); - stack.exit(); + builder.add(actionDefinition); } } if (dataSchemaNode instanceof DataNodeContainer) { for (DataSchemaNode innerDataSchemaNode : ((DataNodeContainer) dataSchemaNode).getChildNodes()) { - stack.enterSchemaTree(innerDataSchemaNode.getQName()); - findAction(innerDataSchemaNode, builder, stack); - stack.exit(); + findAction(innerDataSchemaNode, builder); } } else if (dataSchemaNode instanceof ChoiceSchemaNode) { for (CaseSchemaNode caze : ((ChoiceSchemaNode) dataSchemaNode).getCases()) { - stack.enterSchemaTree(caze.getQName()); - findAction(caze, builder, stack); - stack.exit(); + findAction(caze, builder); } } } @@ -197,26 +187,12 @@ public class NetconfMessageTransformer implements MessageTransformer qnames; - if (nestedNotificationInfo != null) { - qnames = nestedNotificationInfo.domDataTreeIdentifier.getRootIdentifier().getPathArguments().stream() - .filter(arg -> !(arg instanceof NodeIdentifierWithPredicates)) - .filter(arg -> !(arg instanceof AugmentationIdentifier)) - .map(PathArgument::getNodeType) - .map(qName -> QName.create(mostRecentNotification.getQName(), qName.getLocalName())) - .collect(Collectors.toList()); - stack = SchemaInferenceStack.of(mountContext.getEffectiveModelContext(), Absolute.of(qnames)); - } else { - stack = SchemaInferenceStack.of(mountContext.getEffectiveModelContext(), - Absolute.of(mostRecentNotification.getQName())); - } - try { final NormalizedNodeResult resultHolder = new NormalizedNodeResult(); final NormalizedNodeStreamWriter writer = ImmutableNormalizedNodeStreamWriter.from(resultHolder); final XmlParserStream xmlParser = XmlParserStream.create(writer, mountContext, - stack.toInference(), strictParsing); + SchemaInferenceStack.ofInstantiatedPath(mountContext.getEffectiveModelContext(), + mostRecentNotification.getPath()).toInference(), strictParsing); xmlParser.traverse(new DOMSource(element)); content = (ContainerNode) resultHolder.getResult(); } catch (XMLStreamException | URISyntaxException | IOException | SAXException @@ -226,7 +202,8 @@ public class NetconfMessageTransformer implements MessageTransformer okResponseElement = XmlElement.fromDomDocument(message.getDocument()) .getOnlyChildElementWithSameNamespaceOptionally("ok"); if (operationDefinition.getOutput().getChildNodes().isEmpty()) { @@ -484,14 +455,14 @@ public class NetconfMessageTransformer implements MessageTransformer