Bug 977: Return RpcError result on neconf failure
[controller.git] / opendaylight / netconf / netconf-impl / src / main / java / org / opendaylight / controller / netconf / impl / mapping / operations / DefaultStopExi.java
index 6ea5deb64576f7d936e30f438315e51b823434ef..2a24ae32fa0cad9bef292cd53cc8718424692b7c 100644 (file)
@@ -7,23 +7,21 @@
  */\r
 package org.opendaylight.controller.netconf.impl.mapping.operations;\r
 \r
-import org.opendaylight.controller.netconf.api.NetconfSession;\r
 import org.opendaylight.controller.netconf.api.NetconfDocumentedException;\r
-import org.opendaylight.controller.netconf.api.NetconfOperationRouter;\r
-import org.opendaylight.controller.netconf.mapping.api.DefaultNetconfOperation;\r
-import org.opendaylight.controller.netconf.mapping.api.HandlingPriority;\r
-import org.opendaylight.controller.netconf.util.mapping.AbstractNetconfOperation;\r
+import org.opendaylight.controller.netconf.api.xml.XmlNetconfConstants;\r
+import org.opendaylight.controller.netconf.impl.NetconfServerSession;\r
+import org.opendaylight.controller.netconf.util.mapping.AbstractSingletonNetconfOperation;\r
 import org.opendaylight.controller.netconf.util.xml.XmlElement;\r
-import org.opendaylight.controller.netconf.util.xml.XmlNetconfConstants;\r
+import org.opendaylight.controller.netconf.util.xml.XmlUtil;\r
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
 import org.w3c.dom.Document;\r
 import org.w3c.dom.Element;\r
 \r
-public class DefaultStopExi extends AbstractNetconfOperation implements DefaultNetconfOperation {\r
+public class DefaultStopExi extends AbstractSingletonNetconfOperation implements DefaultNetconfOperation {\r
 \r
     public static final String STOP_EXI = "stop-exi";\r
-    private NetconfSession netconfSession;\r
+    private NetconfServerSession netconfSession;\r
 \r
     private static final Logger logger = LoggerFactory\r
             .getLogger(DefaultStartExi.class);\r
@@ -33,40 +31,28 @@ public class DefaultStopExi extends AbstractNetconfOperation implements DefaultN
     }\r
 \r
     @Override\r
-    protected HandlingPriority canHandle(String operationName,\r
-            String netconfOperationNamespace) {\r
-        if (operationName.equals(STOP_EXI) == false)\r
-            return HandlingPriority.CANNOT_HANDLE;\r
-        if (netconfOperationNamespace\r
-                .equals(XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0) == false)\r
-            return HandlingPriority.CANNOT_HANDLE;\r
+    protected Element handleWithNoSubsequentOperations(Document document, XmlElement operationElement) throws NetconfDocumentedException {\r
+        logger.debug("Received stop-exi message {} ", XmlUtil.toString(operationElement));\r
 \r
-        return HandlingPriority.HANDLE_WITH_DEFAULT_PRIORITY;\r
-    }\r
-\r
-    @Override\r
-    protected Element handle(Document document, XmlElement operationElement,\r
-            NetconfOperationRouter opRouter) throws NetconfDocumentedException {\r
-        throw new UnsupportedOperationException("Not implemented");\r
-        /*\r
-        netconfSession.remove(ExiDecoderHandler.class);\r
-        netconfSession.removeAfterMessageSent(ExiEncoderHandler.HANDLER_NAME);\r
+        netconfSession.stopExiCommunication();\r
 \r
-        Element getSchemaResult = document.createElement(XmlNetconfConstants.OK);\r
-        XmlUtil.addNamespaceAttr(getSchemaResult,\r
-                XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0);\r
+        Element getSchemaResult = document.createElementNS( XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0, XmlNetconfConstants.OK);\r
         logger.trace("{} operation successful", STOP_EXI);\r
-        logger.debug("received stop-exi message {} ", XmlUtil.toString(document));\r
         return getSchemaResult;\r
-        */\r
     }\r
 \r
     @Override\r
-    public void setNetconfSession(NetconfSession s) {\r
-        this.netconfSession = s;\r
+    protected String getOperationName() {\r
+        return STOP_EXI;\r
     }\r
 \r
-    public NetconfSession getNetconfSession() {\r
-        return netconfSession;\r
+    @Override\r
+    protected String getOperationNamespace() {\r
+        return XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_EXI_1_0;\r
+    }\r
+\r
+    @Override\r
+    public void setNetconfSession(NetconfServerSession s) {\r
+        this.netconfSession = s;\r
     }\r
 }\r