X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fnetconf%2Fnetconf-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fimpl%2Fmapping%2Foperations%2FDefaultCloseSession.java;h=303352c9c557f111cabde8866e4376698cb96190;hb=f9a9cd1ea40d2477ccb16b03c71a87595226595a;hp=b7a98bae83acae9a1ee0f525a015db251c998f3e;hpb=87142a0c2c300231ac49f017519d86d994569a32;p=controller.git 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 b7a98bae83..303352c9c5 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 @@ -8,21 +8,27 @@ package org.opendaylight.controller.netconf.impl.mapping.operations; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import java.util.Collections; import org.opendaylight.controller.netconf.api.NetconfDocumentedException; import org.opendaylight.controller.netconf.api.xml.XmlNetconfConstants; +import org.opendaylight.controller.netconf.impl.NetconfServerSession; import org.opendaylight.controller.netconf.util.mapping.AbstractSingletonNetconfOperation; import org.opendaylight.controller.netconf.util.xml.XmlElement; import org.opendaylight.controller.netconf.util.xml.XmlUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; -import com.google.common.base.Optional; - -import java.util.Collections; +public class DefaultCloseSession extends AbstractSingletonNetconfOperation implements DefaultNetconfOperation { + private static final Logger LOG = LoggerFactory.getLogger(DefaultCloseSession.class); -public class DefaultCloseSession extends AbstractSingletonNetconfOperation { public static final String CLOSE_SESSION = "close-session"; + private final AutoCloseable sessionResources; + private NetconfServerSession session; public DefaultCloseSession(String netconfSessionIdForReporting, AutoCloseable sessionResources) { super(netconfSessionIdForReporting); @@ -44,13 +50,20 @@ public class DefaultCloseSession extends AbstractSingletonNetconfOperation { throws NetconfDocumentedException { try { sessionResources.close(); + Preconditions.checkNotNull(session, "Session was not set").delayedClose(); + LOG.info("Session {} closing", session.getSessionId()); } 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())); + NetconfDocumentedException.ErrorSeverity.error.toString(), e.getMessage())); } return XmlUtil.createElement(document, XmlNetconfConstants.OK, Optional.absent()); } + + @Override + public void setNetconfSession(final NetconfServerSession s) { + this.session = s; + } }