From dedeb6f7f64fb4cd49487623a219204355859285 Mon Sep 17 00:00:00 2001 From: Maros Marsalek Date: Tue, 11 Feb 2014 11:13:02 +0100 Subject: [PATCH] Fix namespaces for netconf monitoring extensions. Change-Id: Ib191dbcb121ead95db65263b4b478b8eac64c004 Signed-off-by: Maros Marsalek --- .../netconf/monitoring/MonitoringConstants.java | 6 +++++- .../monitoring/xml/model/MonitoringSession.java | 11 +++++++++-- .../netconf/monitoring/xml/model/package-info.java | 8 +++++--- .../netconf/monitoring/xml/JaxBSerializerTest.java | 8 +++++--- 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/opendaylight/netconf/netconf-monitoring/src/main/java/org/opendaylight/controller/netconf/monitoring/MonitoringConstants.java b/opendaylight/netconf/netconf-monitoring/src/main/java/org/opendaylight/controller/netconf/monitoring/MonitoringConstants.java index 3a9d3bacc2..200cd344a6 100644 --- a/opendaylight/netconf/netconf-monitoring/src/main/java/org/opendaylight/controller/netconf/monitoring/MonitoringConstants.java +++ b/opendaylight/netconf/netconf-monitoring/src/main/java/org/opendaylight/controller/netconf/monitoring/MonitoringConstants.java @@ -9,10 +9,14 @@ package org.opendaylight.controller.netconf.monitoring; public class MonitoringConstants { - public static final String NAMESPACE = "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"; public static final String MODULE_NAME = "ietf-netconf-monitoring"; public static final String MODULE_REVISION = "2010-10-04"; + public static final String NAMESPACE = "urn:ietf:params:xml:ns:yang:" + MODULE_NAME; + public static final String EXTENSION_NAMESPACE = NAMESPACE + "-extension"; + + public static final String EXTENSION_NAMESPACE_PREFIX = "ncme"; + public static final String URI = String.format("%s?module=%s&revision=%s", NAMESPACE, MODULE_NAME, MODULE_REVISION); public static final String NETCONF_MONITORING_XML_ROOT_ELEMENT = "netconf-state"; diff --git a/opendaylight/netconf/netconf-monitoring/src/main/java/org/opendaylight/controller/netconf/monitoring/xml/model/MonitoringSession.java b/opendaylight/netconf/netconf-monitoring/src/main/java/org/opendaylight/controller/netconf/monitoring/xml/model/MonitoringSession.java index 55aee72fda..8685ef7220 100644 --- a/opendaylight/netconf/netconf-monitoring/src/main/java/org/opendaylight/controller/netconf/monitoring/xml/model/MonitoringSession.java +++ b/opendaylight/netconf/netconf-monitoring/src/main/java/org/opendaylight/controller/netconf/monitoring/xml/model/MonitoringSession.java @@ -10,6 +10,8 @@ package org.opendaylight.controller.netconf.monitoring.xml.model; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlTransient; +import com.google.common.base.Joiner; +import org.opendaylight.controller.netconf.monitoring.MonitoringConstants; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.extension.rev131210.Session1; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.sessions.Session; import org.opendaylight.yangtools.yang.common.QName; @@ -69,13 +71,18 @@ final class MonitoringSession { public String getTransport() { try { QName qName = (QName) managementSession.getTransport().getField("QNAME").get(null); - return qName.getLocalName(); + // Add extension prefix if transport type is from extension yang module + if (qName.getNamespace().toString().equals(MonitoringConstants.EXTENSION_NAMESPACE)) { + return Joiner.on(':').join(MonitoringConstants.EXTENSION_NAMESPACE_PREFIX, qName.getLocalName()); + } else { + return qName.getLocalName(); + } } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) { throw new IllegalArgumentException("Unknown transport type " + managementSession.getTransport(), e); } } - @XmlElement(name= "session-identifier") + @XmlElement(name= "session-identifier", namespace = MonitoringConstants.EXTENSION_NAMESPACE) public String getSessionType() { return managementSession.getAugmentation(Session1.class).getSessionIdentifier(); } diff --git a/opendaylight/netconf/netconf-monitoring/src/main/java/org/opendaylight/controller/netconf/monitoring/xml/model/package-info.java b/opendaylight/netconf/netconf-monitoring/src/main/java/org/opendaylight/controller/netconf/monitoring/xml/model/package-info.java index 85da5975d1..a96c3a3836 100644 --- a/opendaylight/netconf/netconf-monitoring/src/main/java/org/opendaylight/controller/netconf/monitoring/xml/model/package-info.java +++ b/opendaylight/netconf/netconf-monitoring/src/main/java/org/opendaylight/controller/netconf/monitoring/xml/model/package-info.java @@ -7,14 +7,16 @@ */ @XmlSchema( elementFormDefault = XmlNsForm.QUALIFIED, -// xmlns = { -// @XmlNs(namespaceURI = MonitoringConstants.NAMESPACE, prefix = "") -// } + xmlns = { + @XmlNs(namespaceURI = MonitoringConstants.EXTENSION_NAMESPACE, prefix = MonitoringConstants.EXTENSION_NAMESPACE_PREFIX), + @XmlNs(namespaceURI = MonitoringConstants.NAMESPACE, prefix = "") + }, namespace = MonitoringConstants.NAMESPACE ) package org.opendaylight.controller.netconf.monitoring.xml.model; import org.opendaylight.controller.netconf.monitoring.MonitoringConstants; +import javax.xml.bind.annotation.XmlNs; import javax.xml.bind.annotation.XmlNsForm; import javax.xml.bind.annotation.XmlSchema; \ No newline at end of file diff --git a/opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/xml/JaxBSerializerTest.java b/opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/xml/JaxBSerializerTest.java index d4462f85d9..02129574da 100644 --- a/opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/xml/JaxBSerializerTest.java +++ b/opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/xml/JaxBSerializerTest.java @@ -13,8 +13,10 @@ import org.opendaylight.controller.netconf.api.monitoring.NetconfMonitoringServi import org.opendaylight.controller.netconf.monitoring.xml.model.NetconfState; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.DomainName; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Host; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.extension.rev131210.NetconfTcp; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.extension.rev131210.Session1; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.NetconfSsh; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.Transport; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.Schemas; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.SchemasBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.Sessions; @@ -39,7 +41,7 @@ public class JaxBSerializerTest { @Override public Sessions getSessions() { - return new SessionsBuilder().setSession(Lists.newArrayList(getMockSession())).build(); + return new SessionsBuilder().setSession(Lists.newArrayList(getMockSession(NetconfTcp.class), getMockSession(NetconfSsh.class))).build(); } @Override @@ -51,7 +53,7 @@ public class JaxBSerializerTest { Element xml = new JaxBSerializer().toXml(model); } - private Session getMockSession() { + private Session getMockSession(Class transportType) { Session mocked = mock(Session.class); Session1 mockedSession1 = mock(Session1.class); doReturn("client").when(mockedSession1).getSessionIdentifier(); @@ -62,7 +64,7 @@ public class JaxBSerializerTest { doReturn(new ZeroBasedCounter32(0L)).when(mocked).getInRpcs(); doReturn(new ZeroBasedCounter32(0L)).when(mocked).getOutNotifications(); doReturn(new ZeroBasedCounter32(0L)).when(mocked).getOutRpcErrors(); - doReturn(NetconfSsh.class).when(mocked).getTransport(); + doReturn(transportType).when(mocked).getTransport(); doReturn("username").when(mocked).getUsername(); doReturn(mockedSession1).when(mocked).getAugmentation(Session1.class); return mocked; -- 2.36.6