Fix namespaces for netconf monitoring extensions. 53/5253/6
authorMaros Marsalek <mmarsale@cisco.com>
Tue, 11 Feb 2014 10:13:02 +0000 (11:13 +0100)
committerMaros Marsalek <mmarsale@cisco.com>
Mon, 17 Feb 2014 10:07:17 +0000 (11:07 +0100)
Change-Id: Ib191dbcb121ead95db65263b4b478b8eac64c004
Signed-off-by: Maros Marsalek <mmarsale@cisco.com>
opendaylight/netconf/netconf-monitoring/src/main/java/org/opendaylight/controller/netconf/monitoring/MonitoringConstants.java
opendaylight/netconf/netconf-monitoring/src/main/java/org/opendaylight/controller/netconf/monitoring/xml/model/MonitoringSession.java
opendaylight/netconf/netconf-monitoring/src/main/java/org/opendaylight/controller/netconf/monitoring/xml/model/package-info.java
opendaylight/netconf/netconf-monitoring/src/test/java/org/opendaylight/controller/netconf/monitoring/xml/JaxBSerializerTest.java

index 3a9d3bacc23b49bf7475f03a070c21e387eb4cc1..200cd344a6617b995065b652efca10a6a2a35791 100644 (file)
@@ -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";
index 55aee72fda98af82b894a8f6be83a1d339d904ac..8685ef72208b15fd77845b7486724846d67780a4 100644 (file)
@@ -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();
     }
index 85da5975d1f22caaf4485ebea88484e9ad1f242c..a96c3a3836e55309751011af56bcea32f39d069a 100644 (file)
@@ -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
index d4462f85d99e2f3cf267b3e7cffca82670b9d0a3..02129574da40ec274a22b077614c38653a14770d 100644 (file)
@@ -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<? extends Transport> 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;