From 24723fb6aa97d615d2939a9791b33b33205ceee7 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 2 Dec 2014 15:59:06 +0100 Subject: [PATCH] BUG-2459: centralize codec allocation This moves EXI codec allocation into AbstractNetconfSession, so it is can be standardized for both client and server. Change-Id: I304bec5e19efaa6c3ff63ac66f2bd0d9c55c6b7a Signed-off-by: Robert Varga --- .../netconf/client/NetconfClientSession.java | 12 +++++------ .../client/NetconfClientSessionTest.java | 7 +++++-- .../netconf/impl/NetconfServerSession.java | 20 +++++++++---------- .../nettyutil/AbstractNetconfSession.java | 18 +++++++++++++++-- .../nettyutil/AbstractNetconfSessionTest.java | 8 ++++---- 5 files changed, 41 insertions(+), 24 deletions(-) diff --git a/opendaylight/netconf/netconf-client/src/main/java/org/opendaylight/controller/netconf/client/NetconfClientSession.java b/opendaylight/netconf/netconf-client/src/main/java/org/opendaylight/controller/netconf/client/NetconfClientSession.java index 9bafe9760a..31a7661b2c 100644 --- a/opendaylight/netconf/netconf-client/src/main/java/org/opendaylight/controller/netconf/client/NetconfClientSession.java +++ b/opendaylight/netconf/netconf-client/src/main/java/org/opendaylight/controller/netconf/client/NetconfClientSession.java @@ -9,11 +9,11 @@ package org.opendaylight.controller.netconf.client; import io.netty.channel.Channel; +import io.netty.handler.codec.ByteToMessageDecoder; +import io.netty.handler.codec.MessageToByteEncoder; import java.util.Collection; +import org.opendaylight.controller.netconf.api.NetconfMessage; import org.opendaylight.controller.netconf.nettyutil.AbstractNetconfSession; -import org.opendaylight.controller.netconf.nettyutil.handler.NetconfEXICodec; -import org.opendaylight.controller.netconf.nettyutil.handler.NetconfEXIToMessageDecoder; -import org.opendaylight.controller.netconf.nettyutil.handler.NetconfMessageToEXIEncoder; import org.opendaylight.controller.netconf.nettyutil.handler.NetconfMessageToXMLEncoder; import org.opendaylight.controller.netconf.nettyutil.handler.NetconfXMLToMessageDecoder; import org.slf4j.Logger; @@ -49,10 +49,10 @@ public class NetconfClientSession extends AbstractNetconfSession encoder) { // TODO used only in negotiator, client supports only auto start-exi - replaceMessageDecoder(new NetconfEXIToMessageDecoder(exiCodec)); - replaceMessageEncoder(new NetconfMessageToEXIEncoder(exiCodec)); + replaceMessageDecoder(decoder); + replaceMessageEncoder(encoder); } @Override diff --git a/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientSessionTest.java b/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientSessionTest.java index 850ad55fc6..e11be554d0 100644 --- a/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientSessionTest.java +++ b/opendaylight/netconf/netconf-client/src/test/java/org/opendaylight/controller/netconf/client/NetconfClientSessionTest.java @@ -12,7 +12,6 @@ import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; - import com.google.common.collect.Lists; import io.netty.channel.Channel; import io.netty.channel.ChannelHandler; @@ -24,6 +23,8 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.opendaylight.controller.netconf.nettyutil.handler.NetconfEXICodec; +import org.opendaylight.controller.netconf.nettyutil.handler.NetconfEXIToMessageDecoder; +import org.opendaylight.controller.netconf.nettyutil.handler.NetconfMessageToEXIEncoder; import org.openexi.proc.common.EXIOptions; public class NetconfClientSessionTest { @@ -53,7 +54,9 @@ public class NetconfClientSessionTest { Mockito.doReturn("").when(channelHandler).toString(); NetconfClientSession session = new NetconfClientSession(sessionListener, channel, sessId, caps); - session.addExiHandlers(codec); + final NetconfMessageToEXIEncoder exiEncoder = new NetconfMessageToEXIEncoder(codec); + final NetconfEXIToMessageDecoder exiDecoder = new NetconfEXIToMessageDecoder(codec); + session.addExiHandlers(exiDecoder, exiEncoder); session.stopExiCommunication(); assertEquals(caps, session.getServerCapabilities()); 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 ca604a4f65..8f2c39df06 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 @@ -10,15 +10,15 @@ 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.NetconfMessage; import org.opendaylight.controller.netconf.api.monitoring.NetconfManagementSession; import org.opendaylight.controller.netconf.nettyutil.AbstractNetconfSession; -import org.opendaylight.controller.netconf.nettyutil.handler.NetconfEXICodec; -import org.opendaylight.controller.netconf.nettyutil.handler.NetconfEXIToMessageDecoder; -import org.opendaylight.controller.netconf.nettyutil.handler.NetconfMessageToEXIEncoder; import org.opendaylight.controller.netconf.nettyutil.handler.NetconfMessageToXMLEncoder; import org.opendaylight.controller.netconf.nettyutil.handler.NetconfXMLToMessageDecoder; import org.opendaylight.controller.netconf.util.messages.NetconfHelloMessageAdditionalHeader; @@ -46,8 +46,8 @@ public final class NetconfServerSession extends AbstractNetconfSession getTransportForString(String transport) { + private Class getTransportForString(final String transport) { switch(transport) { case "ssh" : return NetconfSsh.class; @@ -120,7 +120,7 @@ public final class NetconfServerSession extends AbstractNetconfSession encoder) { + replaceMessageDecoder(decoder); + replaceMessageEncoderAfterNextMessage(encoder); } @Override diff --git a/opendaylight/netconf/netconf-netty-util/src/main/java/org/opendaylight/controller/netconf/nettyutil/AbstractNetconfSession.java b/opendaylight/netconf/netconf-netty-util/src/main/java/org/opendaylight/controller/netconf/nettyutil/AbstractNetconfSession.java index fd11ce8c51..8eb792b6cd 100644 --- a/opendaylight/netconf/netconf-netty-util/src/main/java/org/opendaylight/controller/netconf/nettyutil/AbstractNetconfSession.java +++ b/opendaylight/netconf/netconf-netty-util/src/main/java/org/opendaylight/controller/netconf/nettyutil/AbstractNetconfSession.java @@ -10,6 +10,8 @@ package org.opendaylight.controller.netconf.nettyutil; import io.netty.channel.Channel; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelHandler; +import io.netty.handler.codec.ByteToMessageDecoder; +import io.netty.handler.codec.MessageToByteEncoder; import java.io.IOException; import org.opendaylight.controller.netconf.api.NetconfExiSession; import org.opendaylight.controller.netconf.api.NetconfMessage; @@ -17,6 +19,8 @@ import org.opendaylight.controller.netconf.api.NetconfSession; import org.opendaylight.controller.netconf.api.NetconfSessionListener; import org.opendaylight.controller.netconf.api.NetconfTerminationReason; import org.opendaylight.controller.netconf.nettyutil.handler.NetconfEXICodec; +import org.opendaylight.controller.netconf.nettyutil.handler.NetconfEXIToMessageDecoder; +import org.opendaylight.controller.netconf.nettyutil.handler.NetconfMessageToEXIEncoder; import org.opendaylight.controller.netconf.nettyutil.handler.exi.EXIParameters; import org.opendaylight.controller.netconf.util.xml.XmlElement; import org.opendaylight.protocol.framework.AbstractProtocolSession; @@ -117,12 +121,22 @@ public abstract class AbstractNetconfSession encoder); public final boolean isUp() { return up; diff --git a/opendaylight/netconf/netconf-netty-util/src/test/java/org/opendaylight/controller/netconf/nettyutil/AbstractNetconfSessionTest.java b/opendaylight/netconf/netconf-netty-util/src/test/java/org/opendaylight/controller/netconf/nettyutil/AbstractNetconfSessionTest.java index 7946afdbf5..3a1b26dd9e 100644 --- a/opendaylight/netconf/netconf-netty-util/src/test/java/org/opendaylight/controller/netconf/nettyutil/AbstractNetconfSessionTest.java +++ b/opendaylight/netconf/netconf-netty-util/src/test/java/org/opendaylight/controller/netconf/nettyutil/AbstractNetconfSessionTest.java @@ -19,12 +19,13 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.verifyZeroInteractions; - import com.google.common.base.Optional; import io.netty.channel.Channel; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelPipeline; +import io.netty.handler.codec.ByteToMessageDecoder; +import io.netty.handler.codec.MessageToByteEncoder; import java.util.Collections; import org.junit.Before; import org.junit.Test; @@ -34,7 +35,6 @@ import org.opendaylight.controller.netconf.api.NetconfMessage; import org.opendaylight.controller.netconf.api.NetconfSession; import org.opendaylight.controller.netconf.api.NetconfSessionListener; import org.opendaylight.controller.netconf.api.NetconfTerminationReason; -import org.opendaylight.controller.netconf.nettyutil.handler.NetconfEXICodec; import org.opendaylight.controller.netconf.nettyutil.handler.exi.NetconfStartExiMessage; import org.opendaylight.controller.netconf.util.messages.NetconfHelloMessage; import org.opendaylight.controller.netconf.util.messages.NetconfHelloMessageAdditionalHeader; @@ -115,7 +115,7 @@ public class AbstractNetconfSessionTest { testingNetconfSession = spy(testingNetconfSession); testingNetconfSession.startExiCommunication(NetconfStartExiMessage.create(new EXIOptions(), "4")); - verify(testingNetconfSession).addExiHandlers(any(NetconfEXICodec.class)); + verify(testingNetconfSession).addExiHandlers(any(ByteToMessageDecoder.class), any(MessageToByteEncoder.class)); } @Test @@ -148,7 +148,7 @@ public class AbstractNetconfSessionTest { } @Override - protected void addExiHandlers(final NetconfEXICodec exiCodec) {} + protected void addExiHandlers(final ByteToMessageDecoder decoder, final MessageToByteEncoder encoder) {} @Override public void stopExiCommunication() {} -- 2.36.6