X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=netconf%2Fnetconf-client%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Fclient%2FNetconfClientSessionNegotiatorFactory.java;h=1ffe7a132f5d5303736ad29fb42ee44f3431db7e;hb=6c911783fcdac163bb6efc8ff7dbf56cbfb2ad22;hp=a49ac1a26d794651d754f1551350e74fcad43750;hpb=9022d0fa776cf481564ab792c183f2495a7cdbbe;p=netconf.git diff --git a/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/NetconfClientSessionNegotiatorFactory.java b/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/NetconfClientSessionNegotiatorFactory.java index a49ac1a26d..1ffe7a132f 100644 --- a/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/NetconfClientSessionNegotiatorFactory.java +++ b/netconf/netconf-client/src/main/java/org/opendaylight/netconf/client/NetconfClientSessionNegotiatorFactory.java @@ -5,33 +5,33 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.client; -import com.google.common.base.Optional; -import com.google.common.base.Preconditions; +import static java.util.Objects.requireNonNull; + import com.google.common.collect.ImmutableSet; import io.netty.channel.Channel; import io.netty.util.Timer; import io.netty.util.concurrent.Promise; +import java.util.Optional; import java.util.Set; import org.opendaylight.netconf.api.NetconfClientSessionPreferences; -import org.opendaylight.netconf.api.NetconfDocumentedException; import org.opendaylight.netconf.api.NetconfMessage; +import org.opendaylight.netconf.api.NetconfSessionListenerFactory; import org.opendaylight.netconf.api.messages.NetconfHelloMessage; import org.opendaylight.netconf.api.messages.NetconfHelloMessageAdditionalHeader; import org.opendaylight.netconf.api.xml.XmlNetconfConstants; +import org.opendaylight.netconf.nettyutil.NetconfSessionNegotiatorFactory; +import org.opendaylight.netconf.nettyutil.handler.exi.EXIParameters; import org.opendaylight.netconf.nettyutil.handler.exi.NetconfStartExiMessage; -import org.opendaylight.protocol.framework.SessionListenerFactory; -import org.opendaylight.protocol.framework.SessionNegotiator; -import org.opendaylight.protocol.framework.SessionNegotiatorFactory; -import org.openexi.proc.common.AlignmentType; -import org.openexi.proc.common.EXIOptions; -import org.openexi.proc.common.EXIOptionsException; +import org.opendaylight.netconf.shaded.exificient.core.CodingMode; +import org.opendaylight.netconf.shaded.exificient.core.FidelityOptions; +import org.opendaylight.netconf.shaded.exificient.core.exceptions.UnsupportedOption; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class NetconfClientSessionNegotiatorFactory implements SessionNegotiatorFactory { +public class NetconfClientSessionNegotiatorFactory + implements NetconfSessionNegotiatorFactory { public static final Set EXI_CLIENT_CAPABILITIES = ImmutableSet.of( XmlNetconfConstants.URN_IETF_PARAMS_NETCONF_BASE_1_0, @@ -51,28 +51,26 @@ public class NetconfClientSessionNegotiatorFactory implements SessionNegotiatorF private static final Logger LOG = LoggerFactory.getLogger(NetconfClientSessionNegotiatorFactory.class); private static final String START_EXI_MESSAGE_ID = "default-start-exi"; - private static final EXIOptions DEFAULT_OPTIONS; - - private final Optional additionalHeader; - private final long connectionTimeoutMillis; - private final Timer timer; - private final EXIOptions options; + private static final EXIParameters DEFAULT_OPTIONS; static { - final EXIOptions opts = new EXIOptions(); + final FidelityOptions fidelity = FidelityOptions.createDefault(); try { - opts.setPreserveDTD(true); - opts.setPreserveNS(true); - opts.setPreserveLexicalValues(true); - opts.setAlignmentType(AlignmentType.byteAligned); - } catch (EXIOptionsException e) { - throw new ExceptionInInitializerError(e); + fidelity.setFidelity(FidelityOptions.FEATURE_DTD, true); + fidelity.setFidelity(FidelityOptions.FEATURE_LEXICAL_VALUE, true); + fidelity.setFidelity(FidelityOptions.FEATURE_PREFIX, true); + } catch (UnsupportedOption e) { + LOG.warn("Failed to set fidelity options, continuing", e); } - DEFAULT_OPTIONS = opts; + DEFAULT_OPTIONS = new EXIParameters(CodingMode.BYTE_PACKED, fidelity); } + private final Optional additionalHeader; private final Set clientCapabilities; + private final long connectionTimeoutMillis; + private final Timer timer; + private final EXIParameters options; public NetconfClientSessionNegotiatorFactory(final Timer timer, final Optional additionalHeader, @@ -89,14 +87,15 @@ public class NetconfClientSessionNegotiatorFactory implements SessionNegotiatorF public NetconfClientSessionNegotiatorFactory(final Timer timer, final Optional additionalHeader, - final long connectionTimeoutMillis, final EXIOptions exiOptions) { + final long connectionTimeoutMillis, final EXIParameters exiOptions) { this(timer, additionalHeader, connectionTimeoutMillis, exiOptions, EXI_CLIENT_CAPABILITIES); } public NetconfClientSessionNegotiatorFactory(final Timer timer, final Optional additionalHeader, - final long connectionTimeoutMillis, final EXIOptions exiOptions, final Set capabilities) { - this.timer = Preconditions.checkNotNull(timer); + final long connectionTimeoutMillis, final EXIParameters exiOptions, + final Set capabilities) { + this.timer = requireNonNull(timer); this.additionalHeader = additionalHeader; this.connectionTimeoutMillis = connectionTimeoutMillis; this.options = exiOptions; @@ -104,21 +103,15 @@ public class NetconfClientSessionNegotiatorFactory implements SessionNegotiatorF } @Override - public SessionNegotiator getSessionNegotiator(final SessionListenerFactory sessionListenerFactory, - final Channel channel, - final Promise promise) { + public NetconfClientSessionNegotiator getSessionNegotiator( + final NetconfSessionListenerFactory sessionListenerFactory, + final Channel channel, final Promise promise) { NetconfMessage startExiMessage = NetconfStartExiMessage.create(options, START_EXI_MESSAGE_ID); - NetconfHelloMessage helloMessage = null; - try { - helloMessage = NetconfHelloMessage.createClientHello(clientCapabilities, additionalHeader); - } catch (NetconfDocumentedException e) { - LOG.error("Unable to create client hello message with capabilities {} and additional handler {}", clientCapabilities,additionalHeader); - throw new IllegalStateException(e); - } + NetconfHelloMessage helloMessage = NetconfHelloMessage.createClientHello(clientCapabilities, additionalHeader); NetconfClientSessionPreferences proposal = new NetconfClientSessionPreferences(helloMessage, startExiMessage); return new NetconfClientSessionNegotiator(proposal, promise, channel, timer, - sessionListenerFactory.getSessionListener(),connectionTimeoutMillis); + sessionListenerFactory.getSessionListener(), connectionTimeoutMillis); } }