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%2FNetconfServerSession.java;h=0cf2dbc281e1503e0ff1dd8d362285919c527c9a;hp=9ddc64f1a16934b95c6a3bd69410eef554e4313b;hb=5c008222efa5c0af49cf8a52881a6299b1e249dc;hpb=aeabf761ca043e41eeca6333bc9deb94b1de9ed0 diff --git a/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/NetconfServerSession.java b/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/NetconfServerSession.java index 9ddc64f1a1..0cf2dbc281 100644 --- a/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/NetconfServerSession.java +++ b/opendaylight/netconf/netconf-impl/src/main/java/org/opendaylight/controller/netconf/impl/NetconfServerSession.java @@ -8,15 +8,19 @@ package org.opendaylight.controller.netconf.impl; +import com.google.common.base.Preconditions; import io.netty.channel.Channel; - +import io.netty.handler.codec.ByteToMessageDecoder; +import io.netty.handler.codec.MessageToByteEncoder; import java.text.SimpleDateFormat; import java.util.Date; import java.util.regex.Matcher; import java.util.regex.Pattern; - -import org.opendaylight.controller.netconf.api.AbstractNetconfSession; +import org.opendaylight.controller.netconf.api.NetconfMessage; import org.opendaylight.controller.netconf.api.monitoring.NetconfManagementSession; +import org.opendaylight.controller.netconf.nettyutil.AbstractNetconfSession; +import org.opendaylight.controller.netconf.nettyutil.handler.NetconfMessageToXMLEncoder; +import org.opendaylight.controller.netconf.nettyutil.handler.NetconfXMLToMessageDecoder; import org.opendaylight.controller.netconf.util.messages.NetconfHelloMessageAdditionalHeader; 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; @@ -33,29 +37,27 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types. import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Preconditions; - public final class NetconfServerSession extends AbstractNetconfSession implements NetconfManagementSession { - private static final Logger logger = LoggerFactory.getLogger(NetconfServerSession.class); + private static final Logger LOG = LoggerFactory.getLogger(NetconfServerSession.class); private final NetconfHelloMessageAdditionalHeader header; private Date loginTime; private long inRpcSuccess, inRpcFail, outRpcError; - public NetconfServerSession(NetconfServerSessionListener sessionListener, Channel channel, long sessionId, - NetconfHelloMessageAdditionalHeader header) { + public NetconfServerSession(final NetconfServerSessionListener sessionListener, final Channel channel, final long sessionId, + final NetconfHelloMessageAdditionalHeader header) { super(sessionListener, channel, sessionId); this.header = header; - logger.debug("Session {} created", toString()); + LOG.debug("Session {} created", toString()); } @Override protected void sessionUp() { - super.sessionUp(); Preconditions.checkState(loginTime == null, "Session is already up"); this.loginTime = new Date(); + super.sessionUp(); } public void onIncommingRpcSuccess() { @@ -107,15 +109,18 @@ public final class NetconfServerSession extends AbstractNetconfSession getTransportForString(String transport) { + private Class getTransportForString(final String transport) { switch(transport) { - case "ssh" : return NetconfSsh.class; - case "tcp" : return NetconfTcp.class; - default: throw new IllegalArgumentException("Unknown transport type " + transport); + case "ssh" : + return NetconfSsh.class; + case "tcp" : + return NetconfTcp.class; + default: + throw new IllegalArgumentException("Unknown transport type " + transport); } } - private String formatDateTime(Date loginTime) { + private String formatDateTime(final Date loginTime) { SimpleDateFormat dateFormat = new SimpleDateFormat(ISO_DATE_FORMAT); return dateFormat.format(loginTime); } @@ -124,4 +129,16 @@ public final class NetconfServerSession extends AbstractNetconfSession encoder) { + replaceMessageDecoder(decoder); + replaceMessageEncoderAfterNextMessage(encoder); + } + + @Override + public void stopExiCommunication() { + replaceMessageDecoder(new NetconfXMLToMessageDecoder()); + replaceMessageEncoderAfterNextMessage(new NetconfMessageToXMLEncoder()); + } }