From: Maros Marsalek Date: Wed, 4 Mar 2015 14:43:23 +0000 (+0100) Subject: Add SchemaContext to NormalizedNode parser in NETCONF X-Git-Tag: release/lithium~434 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=8890f24fc51d907f37149302c903a20b3c875744 Add SchemaContext to NormalizedNode parser in NETCONF Change-Id: Id674dc60eba84cb5cb37b6f170654ae7333f91b6 Signed-off-by: Maros Marsalek --- diff --git a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/NetconfStateSchemas.java b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/NetconfStateSchemas.java index aa0897e021..942e4bbaeb 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/NetconfStateSchemas.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/NetconfStateSchemas.java @@ -188,13 +188,8 @@ public final class NetconfStateSchemas { QName childNode = NetconfMessageTransformUtil.IETF_NETCONF_MONITORING_SCHEMA_FORMAT; String formatAsString = getSingleChildNodeValue(schemaNode, childNode).get(); - //This is HotFix for situations where format statement in netconf-monitoring might be passed with prefix. - if (formatAsString.contains(":")) { - final String[] prefixedString = formatAsString.split(":"); - //FIXME: might be good idea to check prefix against model namespace - formatAsString = prefixedString[1]; - } - if(formatAsString.equals(Yang.QNAME.getLocalName()) == false) { + + if(formatAsString.equals(Yang.QNAME.toString()) == false) { LOG.debug("{}: Ignoring schema due to unsupported format: {}", id, formatAsString); return Optional.absent(); } diff --git a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProvider.java b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProvider.java index 1ce56e0cd3..a103bbb9f0 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProvider.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProvider.java @@ -26,6 +26,7 @@ import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; import org.opendaylight.controller.sal.connect.netconf.util.NetconfMessageTransformUtil; import org.opendaylight.controller.sal.connect.util.RemoteDeviceId; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.Yang; import org.opendaylight.yangtools.util.concurrent.ExceptionMapper; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -72,7 +73,7 @@ public final class NetconfRemoteSchemaYangSourceProvider implements SchemaSource final QName formatQName = QName.cachedReference(QName.create(NetconfMessageTransformUtil.GET_SCHEMA_QNAME, "format")); final YangInstanceIdentifier.NodeIdentifier formatId = new YangInstanceIdentifier.NodeIdentifier(formatQName); - final LeafNode format = Builders.leafBuilder().withNodeIdentifier(formatId).withValue("yang").build(); + final LeafNode format = Builders.leafBuilder().withNodeIdentifier(formatId).withValue(Yang.QNAME).build(); final DataContainerNodeAttrBuilder builder = Builders.containerBuilder(); diff --git a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java index ccda6d1b19..4fdf5e584c 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java @@ -65,7 +65,6 @@ public class NetconfMessageTransformer implements MessageTransformer QNAME_FUNCTION = new Function() { @Override @@ -99,10 +98,12 @@ public class NetconfMessageTransformer implements MessageTransformer mappedRpcs; private final Multimap mappedNotifications; + private final DomToNormalizedNodeParserFactory parserFactory; public NetconfMessageTransformer(final SchemaContext schemaContext) { this.counter = new MessageCounter(); this.schemaContext = schemaContext; + parserFactory = DomToNormalizedNodeParserFactory.getInstance(XmlUtils.DEFAULT_XML_CODEC_PROVIDER, schemaContext); mappedRpcs = Maps.uniqueIndex(schemaContext.getOperations(), QNAME_FUNCTION); mappedNotifications = Multimaps.index(schemaContext.getNotifications(), QNAME_NOREV_FUNCTION); @@ -129,7 +130,7 @@ public class NetconfMessageTransformer implements MessageTransformer containerNodeParser = DomToNormalizedNodeParserFactory.getInstance(XmlUtils.DEFAULT_XML_CODEC_PROVIDER).getContainerNodeParser(); + final ToNormalizedNodeParser containerNodeParser = DomToNormalizedNodeParserFactory.getInstance(XmlUtils.DEFAULT_XML_CODEC_PROVIDER, NetconfDevice.INIT_SCHEMA_CTX).getContainerNodeParser(); final ContainerNode compositeNodeSchemas = containerNodeParser.parse(Collections.singleton(schemasXml.getDocumentElement()), (ContainerSchemaNode) schemasNode); final NetconfStateSchemas schemas = NetconfStateSchemas.create(new RemoteDeviceId("device", new InetSocketAddress(99)), compositeNodeSchemas); diff --git a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/schema/mapping/NetconfMessageTransformerTest.java b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/schema/mapping/NetconfMessageTransformerTest.java index ee32a59618..35a6df8304 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/schema/mapping/NetconfMessageTransformerTest.java +++ b/opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/schema/mapping/NetconfMessageTransformerTest.java @@ -37,6 +37,7 @@ import java.util.List; import java.util.Map; import javax.xml.transform.dom.DOMSource; import org.custommonkey.xmlunit.Diff; +import org.custommonkey.xmlunit.ElementNameAndAttributeQualifier; import org.custommonkey.xmlunit.XMLUnit; import org.hamcrest.CoreMatchers; import org.junit.Before; @@ -97,7 +98,7 @@ public class NetconfMessageTransformerTest { NetconfRemoteSchemaYangSourceProvider.createGetSchemaRequest("module", Optional.of("2012-12-12"))); assertSimilarXml(netconfMessage, "\n" + "\n" + - "yang\n" + + "x:yang\n" + "module\n" + "2012-12-12\n" + "\n" + @@ -135,7 +136,7 @@ public class NetconfMessageTransformerTest { "\n" + "module\n" + "2012-12-12\n" + - "yang\n" + + "x:yang\n" + "\n" + "\n" + "\n" + @@ -223,7 +224,7 @@ public class NetconfMessageTransformerTest { "\n" + "module\n" + "2012-12-12\n" + - "yang\n" + + "x:yang\n" + "\n" + "\n" + "\n" + @@ -234,6 +235,7 @@ public class NetconfMessageTransformerTest { private void assertSimilarXml(final NetconfMessage netconfMessage, final String xmlContent) throws SAXException, IOException { final Diff diff = XMLUnit.compareXML(netconfMessage.getDocument(), XmlUtil.readXmlToDocument(xmlContent)); + diff.overrideElementQualifier(new ElementNameAndAttributeQualifier()); assertTrue(diff.toString(), diff.similar()); } diff --git a/opendaylight/md-sal/sal-netconf-connector/src/test/resources/netconf-state.schemas.payload.xml b/opendaylight/md-sal/sal-netconf-connector/src/test/resources/netconf-state.schemas.payload.xml index 649ecb76a4..0213415f8d 100644 --- a/opendaylight/md-sal/sal-netconf-connector/src/test/resources/netconf-state.schemas.payload.xml +++ b/opendaylight/md-sal/sal-netconf-connector/src/test/resources/netconf-state.schemas.payload.xml @@ -3,161 +3,161 @@ urn:opendaylight:params:xml:ns:yang:controller:threadpool NETCONF threadpool - yang + prefix:yang 2013-04-09 urn:opendaylight:params:xml:ns:yang:controller:logback:config NETCONF config-logging - yang + prefix:yang 2013-07-16 urn:opendaylight:model:statistics:types NETCONF opendaylight-statistics-types - yang + prefix:yang 2013-09-25 urn:opendaylight:params:xml:ns:yang:controller:md:sal:core:spi:config-dom-store NETCONF opendaylight-config-dom-datastore - yang + prefix:yang 2014-06-17 urn:opendaylight:flow:table:statistics NETCONF opendaylight-flow-table-statistics - yang + prefix:yang 2013-12-15 urn:opendaylight:meter:service NETCONF sal-meter - yang + prefix:yang 2013-09-18 urn:opendaylight:params:xml:ns:yang:controller:config:toaster-provider:impl NETCONF toaster-provider-impl - yang + prefix:yang 2014-01-31 urn:opendaylight:table:types NETCONF opendaylight-table-types - yang + prefix:yang 2013-10-26 urn:opendaylight:table:service NETCONF sal-table - yang + prefix:yang 2013-10-26 urn:opendaylight:params:xml:ns:yang:controller:shutdown NETCONF shutdown - yang + prefix:yang 2013-12-18 urn:opendaylight:port:service NETCONF sal-port - yang + prefix:yang 2013-11-07 urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor NETCONF netty-event-executor - yang + prefix:yang 2013-11-12 urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote NETCONF sal-remote - yang + prefix:yang 2014-01-14 urn:opendaylight:model:topology:view NETCONF opendaylight-topology-view - yang + prefix:yang 2013-10-30 urn:opendaylight:params:xml:ns:yang:controller:netty:threadgroup NETCONF threadgroup - yang + prefix:yang 2013-11-07 urn:TBD:params:xml:ns:yang:network-topology NETCONF network-topology - yang + prefix:yang 2013-07-12 urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:fixed NETCONF threadpool-impl-fixed - yang + prefix:yang 2013-12-01 urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding:impl NETCONF opendaylight-sal-binding-broker-impl - yang + prefix:yang 2013-10-28 urn:ietf:params:xml:ns:yang:ietf-restconf NETCONF ietf-restconf - yang + prefix:yang 2013-10-19 urn:opendaylight:node:error:service NETCONF node-error - yang + prefix:yang 2014-04-10 urn:opendaylight:flow:errors NETCONF flow-errors - yang + prefix:yang 2013-11-16 urn:opendaylight:flow:service NETCONF sal-flow - yang + prefix:yang 2013-08-19 urn:ietf:params:xml:ns:yang:rpc-context NETCONF rpc-context - yang + prefix:yang 2013-06-17 @@ -165,350 +165,350 @@ NETCONF opendaylight-operational-dom-datastore - yang + prefix:yang 2014-06-17 urn:opendaylight:flow:types:queue NETCONF opendaylight-queue-types - yang + prefix:yang 2013-09-25 urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring NETCONF ietf-netconf-monitoring - yang + prefix:yang 2010-10-04 urn:opendaylight:netconf-node-inventory NETCONF netconf-node-inventory - yang + prefix:yang 2014-01-08 urn:ietf:params:xml:ns:yang:ietf-yang-types NETCONF ietf-yang-types - yang + prefix:yang 2013-07-15 urn:opendaylight:meter:statistics NETCONF opendaylight-meter-statistics - yang + prefix:yang 2013-11-11 urn:opendaylight:flow:inventory NETCONF flow-node-inventory - yang + prefix:yang 2013-08-19 urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf NETCONF odl-sal-netconf-connector-cfg - yang + prefix:yang 2013-10-28 urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:scheduled NETCONF threadpool-impl-scheduled - yang + prefix:yang 2013-12-01 urn:TBD:params:xml:ns:yang:network-topology NETCONF network-topology - yang + prefix:yang 2013-10-21 http://netconfcentral.org/ns/toaster NETCONF toaster - yang + prefix:yang 2009-11-20 urn:opendaylight:params:xml:ns:yang:controller:config:netconf NETCONF odl-netconf-cfg - yang + prefix:yang 2014-04-08 urn:opendaylight:meter:types NETCONF opendaylight-meter-types - yang + prefix:yang 2013-09-18 urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:impl NETCONF opendaylight-sal-dom-broker-impl - yang + prefix:yang 2013-10-28 urn:opendaylight:flow:topology:discovery NETCONF flow-topology-discovery - yang + prefix:yang 2013-08-19 urn:opendaylight:yang:extension:yang-ext NETCONF yang-ext - yang + prefix:yang 2013-07-09 urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl NETCONF threadpool-impl - yang + prefix:yang 2013-04-05 urn:opendaylight:flow:types:port NETCONF opendaylight-port-types - yang + prefix:yang 2013-09-25 urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding NETCONF opendaylight-md-sal-binding - yang + prefix:yang 2013-10-28 urn:opendaylight:packet:service NETCONF packet-processing - yang + prefix:yang 2013-07-09 urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:flexible NETCONF threadpool-impl-flexible - yang + prefix:yang 2013-12-01 urn:opendaylight:queue:service NETCONF sal-queue - yang + prefix:yang 2013-11-07 urn:ietf:params:xml:ns:yang:ietf-inet-types NETCONF ietf-inet-types - yang + prefix:yang 2010-09-24 urn:opendaylight:params:xml:ns:yang:controller:md:sal:rest:connector NETCONF opendaylight-rest-connector - yang + prefix:yang 2014-07-24 urn:opendaylight:flow:transaction NETCONF flow-capable-transaction - yang + prefix:yang 2013-11-03 urn:opendaylight:flow:statistics NETCONF opendaylight-flow-statistics - yang + prefix:yang 2013-08-19 urn:opendaylight:params:xml:ns:yang:controller:protocol:framework NETCONF protocol-framework - yang + prefix:yang 2014-03-13 urn:opendaylight:model:match:types NETCONF opendaylight-match-types - yang + prefix:yang 2013-10-26 urn:ietf:params:xml:ns:yang:ietf-yang-types NETCONF ietf-yang-types - yang + prefix:yang 2010-09-24 urn:opendaylight:group:service NETCONF sal-group - yang + prefix:yang 2013-09-18 urn:opendaylight:params:xml:ns:yang:controller:inmemory-datastore-provider NETCONF opendaylight-inmemory-datastore-provider - yang + prefix:yang 2014-06-17 urn:opendaylight:params:xml:ns:yang:controller:netty:timer NETCONF netty-timer - yang + prefix:yang 2013-11-19 urn:opendaylight:group:statistics NETCONF opendaylight-group-statistics - yang + prefix:yang 2013-11-11 urn:opendaylight:params:xml:ns:yang:controller:config NETCONF config - yang + prefix:yang 2013-04-05 urn:opendaylight:params:xml:ns:yang:controller:config:netconf:client:dispatcher NETCONF odl-netconfig-client-cfg - yang + prefix:yang 2014-04-08 urn:opendaylight:l2:types NETCONF opendaylight-l2-types - yang + prefix:yang 2013-08-27 urn:opendaylight:action:types NETCONF opendaylight-action-types - yang + prefix:yang 2013-11-12 urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom NETCONF opendaylight-md-sal-dom - yang + prefix:yang 2013-10-28 urn:opendaylight:params:xml:ns:yang:controller:md:sal:common NETCONF opendaylight-md-sal-common - yang + prefix:yang 2013-10-28 urn:opendaylight:group:types NETCONF opendaylight-group-types - yang + prefix:yang 2013-10-18 urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring-extension NETCONF ietf-netconf-monitoring-extension - yang + prefix:yang 2013-12-10 urn:opendaylight:inventory NETCONF opendaylight-inventory - yang + prefix:yang 2013-08-19 urn:opendaylight:params:xml:ns:yang:controller:netty NETCONF netty - yang + prefix:yang 2013-11-19 urn:opendaylight:model:topology:general NETCONF opendaylight-topology - yang + prefix:yang 2013-10-30 urn:opendaylight:port:statistics NETCONF opendaylight-port-statistics - yang + prefix:yang urn:opendaylight:queue:statistics NETCONF opendaylight-queue-statistics - yang + prefix:yang 2013-12-16 urn:opendaylight:params:xml:ns:yang:controller:config:kitchen-service:impl NETCONF kitchen-service-impl - yang + prefix:yang 2014-01-31 urn:opendaylight:flow:types NETCONF opendaylight-flow-types - yang + prefix:yang 2013-10-26 urn:opendaylight:params:xml:ns:yang:controller:shutdown:impl NETCONF shutdown-impl - yang + prefix:yang 2013-12-18 urn:opendaylight:model:topology:inventory NETCONF opendaylight-topology-inventory - yang + prefix:yang 2013-10-30 \ No newline at end of file