X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fnetconf-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fimpl%2Fmapping%2Foperations%2FDefaultCloseSession.java;h=f31233987e97531a563fca3f186fee480e6b6616;hp=3623ef50325378b1c710d005248be520479c6763;hb=b23703bef6c3aaafe2dc83608a03b738ad42f945;hpb=a1b55fb491e235c028e1d451aff4b1d261d5a86c diff --git a/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultCloseSession.java b/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultCloseSession.java index 3623ef5032..f31233987e 100644 --- a/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultCloseSession.java +++ b/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/mapping/operations/DefaultCloseSession.java @@ -9,32 +9,29 @@ package org.opendaylight.controller.netconf.impl.mapping.operations; import org.opendaylight.controller.netconf.api.NetconfDocumentedException; -import org.opendaylight.controller.netconf.api.NetconfOperationRouter; -import org.opendaylight.controller.netconf.api.NetconfSession; -import org.opendaylight.controller.netconf.mapping.api.DefaultNetconfOperation; -import org.opendaylight.controller.netconf.mapping.api.HandlingPriority; -import org.opendaylight.controller.netconf.util.mapping.AbstractNetconfOperation; +import org.opendaylight.controller.netconf.util.mapping.AbstractSingletonNetconfOperation; import org.opendaylight.controller.netconf.util.xml.XmlElement; import org.opendaylight.controller.netconf.util.xml.XmlNetconfConstants; +import org.opendaylight.controller.netconf.util.xml.XmlUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; -public class DefaultCloseSession extends AbstractNetconfOperation implements DefaultNetconfOperation { +import com.google.common.base.Optional; + +import java.util.Collections; + +public class DefaultCloseSession extends AbstractSingletonNetconfOperation { public static final String CLOSE_SESSION = "close-session"; - private NetconfSession netconfSession; + private final AutoCloseable sessionResources; - public DefaultCloseSession(String netconfSessionIdForReporting) { + public DefaultCloseSession(String netconfSessionIdForReporting, AutoCloseable sessionResources) { super(netconfSessionIdForReporting); + this.sessionResources = sessionResources; } @Override - protected HandlingPriority canHandle(String operationName, String netconfOperationNamespace) { - if (operationName.equals(CLOSE_SESSION) == false) - return HandlingPriority.CANNOT_HANDLE; - if (netconfOperationNamespace.equals(XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0) == false) - return HandlingPriority.CANNOT_HANDLE; - - return HandlingPriority.HANDLE_WITH_MAX_PRIORITY; + protected String getOperationName() { + return CLOSE_SESSION; } /** @@ -43,18 +40,17 @@ public class DefaultCloseSession extends AbstractNetconfOperation implements Def * instances */ @Override - protected Element handle(Document document, XmlElement operationElement, NetconfOperationRouter opRouter) + protected Element handleWithNoSubsequentOperations(Document document, XmlElement operationElement) throws NetconfDocumentedException { - opRouter.close(); - return document.createElement(XmlNetconfConstants.OK); - } - - @Override - public void setNetconfSession(NetconfSession s) { - this.netconfSession = s; - } - - public NetconfSession getNetconfSession() { - return netconfSession; + try { + sessionResources.close(); + } catch (Exception e) { + throw new NetconfDocumentedException("Unable to properly close session " + + getNetconfSessionIdForReporting(), NetconfDocumentedException.ErrorType.application, + NetconfDocumentedException.ErrorTag.operation_failed, + NetconfDocumentedException.ErrorSeverity.error, Collections.singletonMap( + NetconfDocumentedException.ErrorSeverity.error.toString(), e.getMessage())); + } + return XmlUtil.createElement(document, XmlNetconfConstants.OK, Optional.absent()); } }