Repository: qpid-jms
Updated Branches:
  refs/heads/master 0933c9eee -> 8bf97c4b7


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8bf97c4b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/TransportOptionsTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/TransportOptionsTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/TransportOptionsTest.java
index f716f79..f3d7ec3 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/TransportOptionsTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/TransportOptionsTest.java
@@ -16,11 +16,17 @@
  */
 package org.apache.qpid.jms.transports;
 
+import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.fail;
 
+import javax.net.ssl.SSLContext;
+
 import org.apache.qpid.jms.test.QpidJmsTestCase;
 import org.junit.Test;
+import org.mockito.Mockito;
 
 /**
  * Test for class TransportOptions
@@ -39,11 +45,51 @@ public class TransportOptionsTest extends QpidJmsTestCase {
     public static final boolean TEST_USE_EPOLL_VALUE = 
!TransportOptions.DEFAULT_USE_EPOLL;
     public static final boolean TEST_TRACE_BYTES_VALUE = 
!TransportOptions.DEFAULT_TRACE_BYTES;
 
+    private static final String PASSWORD = "password";
+    private static final String CLIENT_KEYSTORE = 
"src/test/resources/client-jks.keystore";
+    private static final String CLIENT_TRUSTSTORE = 
"src/test/resources/client-jks.truststore";
+    private static final String KEYSTORE_TYPE = "jks";
+    private static final String KEY_ALIAS = "myTestAlias";
+    private static final String CONTEXT_PROTOCOL = "TLSv1.1";
+    private static final boolean TRUST_ALL = true;
+    private static final boolean VERIFY_HOST = true;
+
+    private static final int TEST_DEFAULT_SSL_PORT = 5681;
+
+    private static final String[] ENABLED_PROTOCOLS = new String[] {"TLSv1.2"};
+    private static final String[] DISABLED_PROTOCOLS = new String[] {"SSLv3", 
"TLSv1.2"};
+    private static final String[] ENABLED_CIPHERS = new String[] {"CIPHER_A", 
"CIPHER_B"};
+    private static final String[] DISABLED_CIPHERS = new String[] {"CIPHER_C"};
+
+    private static final SSLContext SSL_CONTEXT = 
Mockito.mock(SSLContext.class);
+
+    private static final String JAVAX_NET_SSL_KEY_STORE = 
"javax.net.ssl.keyStore";
+    private static final String JAVAX_NET_SSL_KEY_STORE_PASSWORD = 
"javax.net.ssl.keyStorePassword";
+    private static final String JAVAX_NET_SSL_TRUST_STORE = 
"javax.net.ssl.trustStore";
+    private static final String JAVAX_NET_SSL_TRUST_STORE_PASSWORD = 
"javax.net.ssl.trustStorePassword";
+
     @Test
     public void testCreate() {
         TransportOptions options = new TransportOptions();
 
         assertEquals(TransportOptions.DEFAULT_TCP_NO_DELAY, 
options.isTcpNoDelay());
+        assertEquals(TransportOptions.DEFAULT_TRUST_ALL, options.isTrustAll());
+        assertEquals(TransportOptions.DEFAULT_STORE_TYPE, 
options.getKeyStoreType());
+        assertEquals(TransportOptions.DEFAULT_STORE_TYPE, 
options.getTrustStoreType());
+
+        assertEquals(TransportOptions.DEFAULT_CONTEXT_PROTOCOL, 
options.getContextProtocol());
+        assertNull(options.getEnabledProtocols());
+        
assertArrayEquals(TransportOptions.DEFAULT_DISABLED_PROTOCOLS.toArray(new 
String[0]),
+                          options.getDisabledProtocols());
+        assertNull(options.getEnabledCipherSuites());
+        assertNull(options.getDisabledCipherSuites());
+
+        assertNull(options.getKeyStoreLocation());
+        assertNull(options.getKeyStorePassword());
+        assertNull(options.getTrustStoreLocation());
+        assertNull(options.getTrustStorePassword());
+        assertNull(options.getKeyAlias());
+        assertNull(options.getSslContextOverride());
     }
 
     @Test
@@ -76,8 +122,22 @@ public class TransportOptionsTest extends QpidJmsTestCase {
         assertEquals(TEST_SO_TIMEOUT, options.getSoTimeout());
         assertEquals(TEST_CONNECT_TIMEOUT, options.getConnectTimeout());
         assertEquals(TEST_DEFAULT_TCP_PORT, options.getDefaultTcpPort());
+        assertEquals(TEST_DEFAULT_SSL_PORT, options.getDefaultSslPort());
         assertEquals(TEST_USE_EPOLL_VALUE, options.isUseEpoll());
         assertEquals(TEST_TRACE_BYTES_VALUE, options.isTraceBytes());
+        assertEquals(CLIENT_KEYSTORE, options.getKeyStoreLocation());
+        assertEquals(PASSWORD, options.getKeyStorePassword());
+        assertEquals(CLIENT_TRUSTSTORE, options.getTrustStoreLocation());
+        assertEquals(PASSWORD, options.getTrustStorePassword());
+        assertEquals(KEYSTORE_TYPE, options.getKeyStoreType());
+        assertEquals(KEYSTORE_TYPE, options.getTrustStoreType());
+        assertEquals(KEY_ALIAS, options.getKeyAlias());
+        assertEquals(CONTEXT_PROTOCOL, options.getContextProtocol());
+        assertEquals(SSL_CONTEXT, options.getSslContextOverride());
+        assertArrayEquals(ENABLED_PROTOCOLS,options.getEnabledProtocols());
+        assertArrayEquals(DISABLED_PROTOCOLS,options.getDisabledProtocols());
+        assertArrayEquals(ENABLED_CIPHERS,options.getEnabledCipherSuites());
+        assertArrayEquals(DISABLED_CIPHERS,options.getDisabledCipherSuites());
     }
 
     @Test
@@ -133,6 +193,108 @@ public class TransportOptionsTest extends QpidJmsTestCase 
{
         options.setTrafficClass(255);
     }
 
+    @Test
+    public void testCreateAndConfigure() {
+        TransportOptions options = createSslOptions();
+
+        assertEquals(TEST_SEND_BUFFER_SIZE, options.getSendBufferSize());
+        assertEquals(TEST_RECEIVE_BUFFER_SIZE, options.getReceiveBufferSize());
+        assertEquals(TEST_TRAFFIC_CLASS, options.getTrafficClass());
+        assertEquals(TEST_TCP_NO_DELAY, options.isTcpNoDelay());
+        assertEquals(TEST_TCP_KEEP_ALIVE, options.isTcpKeepAlive());
+        assertEquals(TEST_SO_LINGER, options.getSoLinger());
+        assertEquals(TEST_SO_TIMEOUT, options.getSoTimeout());
+        assertEquals(TEST_CONNECT_TIMEOUT, options.getConnectTimeout());
+
+        assertEquals(CLIENT_KEYSTORE, options.getKeyStoreLocation());
+        assertEquals(PASSWORD, options.getKeyStorePassword());
+        assertEquals(CLIENT_TRUSTSTORE, options.getTrustStoreLocation());
+        assertEquals(PASSWORD, options.getTrustStorePassword());
+        assertEquals(KEYSTORE_TYPE, options.getKeyStoreType());
+        assertEquals(KEYSTORE_TYPE, options.getTrustStoreType());
+        assertEquals(KEY_ALIAS, options.getKeyAlias());
+        assertEquals(CONTEXT_PROTOCOL, options.getContextProtocol());
+        assertEquals(SSL_CONTEXT, options.getSslContextOverride());
+        assertArrayEquals(ENABLED_PROTOCOLS,options.getEnabledProtocols());
+        assertArrayEquals(DISABLED_PROTOCOLS,options.getDisabledProtocols());
+        assertArrayEquals(ENABLED_CIPHERS,options.getEnabledCipherSuites());
+        assertArrayEquals(DISABLED_CIPHERS,options.getDisabledCipherSuites());
+    }
+
+    private TransportOptions createSslOptions() {
+        TransportOptions options = new TransportOptions();
+
+        options.setKeyStoreLocation(CLIENT_KEYSTORE);
+        options.setTrustStoreLocation(CLIENT_TRUSTSTORE);
+        options.setKeyStorePassword(PASSWORD);
+        options.setTrustStorePassword(PASSWORD);
+        options.setStoreType(KEYSTORE_TYPE);
+        options.setTrustAll(TRUST_ALL);
+        options.setVerifyHost(VERIFY_HOST);
+        options.setKeyAlias(KEY_ALIAS);
+        options.setContextProtocol(CONTEXT_PROTOCOL);
+        options.setEnabledProtocols(ENABLED_PROTOCOLS);
+        options.setDisabledProtocols(DISABLED_PROTOCOLS);
+        options.setEnabledCipherSuites(ENABLED_CIPHERS);
+        options.setDisabledCipherSuites(DISABLED_CIPHERS);
+
+        options.setSendBufferSize(TEST_SEND_BUFFER_SIZE);
+        options.setReceiveBufferSize(TEST_RECEIVE_BUFFER_SIZE);
+        options.setTrafficClass(TEST_TRAFFIC_CLASS);
+        options.setTcpNoDelay(TEST_TCP_NO_DELAY);
+        options.setTcpKeepAlive(TEST_TCP_KEEP_ALIVE);
+        options.setSoLinger(TEST_SO_LINGER);
+        options.setSoTimeout(TEST_SO_TIMEOUT);
+        options.setConnectTimeout(TEST_CONNECT_TIMEOUT);
+        options.setDefaultSslPort(TEST_DEFAULT_SSL_PORT);
+        options.setSslContextOverride(SSL_CONTEXT);
+
+        return options;
+    }
+
+    @Test
+    public void testSslSystemPropertiesInfluenceDefaults() {
+        String keystore = "keystore";
+        String keystorePass = "keystorePass";
+        String truststore = "truststore";
+        String truststorePass = "truststorePass";
+
+        setSslSystemPropertiesForCurrentTest(keystore, keystorePass, 
truststore, truststorePass);
+
+        TransportOptions options1 = new TransportOptions();
+
+        assertEquals(keystore, options1.getKeyStoreLocation());
+        assertEquals(keystorePass, options1.getKeyStorePassword());
+        assertEquals(truststore, options1.getTrustStoreLocation());
+        assertEquals(truststorePass, options1.getTrustStorePassword());
+
+        keystore +="2";
+        keystorePass +="2";
+        truststore +="2";
+        truststorePass +="2";
+
+        setSslSystemPropertiesForCurrentTest(keystore, keystorePass, 
truststore, truststorePass);
+
+        TransportOptions options2 = new TransportOptions();
+
+        assertEquals(keystore, options2.getKeyStoreLocation());
+        assertEquals(keystorePass, options2.getKeyStorePassword());
+        assertEquals(truststore, options2.getTrustStoreLocation());
+        assertEquals(truststorePass, options2.getTrustStorePassword());
+
+        assertNotEquals(options1.getKeyStoreLocation(), 
options2.getKeyStoreLocation());
+        assertNotEquals(options1.getKeyStorePassword(), 
options2.getKeyStorePassword());
+        assertNotEquals(options1.getTrustStoreLocation(), 
options2.getTrustStoreLocation());
+        assertNotEquals(options1.getTrustStorePassword(), 
options2.getTrustStorePassword());
+    }
+
+    private void setSslSystemPropertiesForCurrentTest(String keystore, String 
keystorePassword, String truststore, String truststorePassword) {
+        setTestSystemProperty(JAVAX_NET_SSL_KEY_STORE, keystore);
+        setTestSystemProperty(JAVAX_NET_SSL_KEY_STORE_PASSWORD, 
keystorePassword);
+        setTestSystemProperty(JAVAX_NET_SSL_TRUST_STORE, truststore);
+        setTestSystemProperty(JAVAX_NET_SSL_TRUST_STORE_PASSWORD, 
truststorePassword);
+    }
+
     private TransportOptions createNonDefaultOptions() {
         TransportOptions options = new TransportOptions();
 
@@ -145,8 +307,20 @@ public class TransportOptionsTest extends QpidJmsTestCase {
         options.setSoTimeout(TEST_SO_TIMEOUT);
         options.setConnectTimeout(TEST_CONNECT_TIMEOUT);
         options.setDefaultTcpPort(TEST_DEFAULT_TCP_PORT);
+        options.setDefaultSslPort(TEST_DEFAULT_SSL_PORT);
         options.setUseEpoll(TEST_USE_EPOLL_VALUE);
         options.setTraceBytes(TEST_TRACE_BYTES_VALUE);
+        options.setKeyStoreLocation(CLIENT_KEYSTORE);
+        options.setKeyStorePassword(PASSWORD);
+        options.setTrustStoreLocation(CLIENT_TRUSTSTORE);
+        options.setTrustStorePassword(PASSWORD);
+        options.setKeyAlias(KEY_ALIAS);
+        options.setContextProtocol(CONTEXT_PROTOCOL);
+        options.setSslContextOverride(SSL_CONTEXT);
+        options.setEnabledProtocols(ENABLED_PROTOCOLS);
+        options.setEnabledCipherSuites(ENABLED_CIPHERS);
+        options.setDisabledProtocols(DISABLED_PROTOCOLS);
+        options.setDisabledCipherSuites(DISABLED_CIPHERS);
 
         return options;
     }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8bf97c4b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/TransportSslOptionsTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/TransportSslOptionsTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/TransportSslOptionsTest.java
deleted file mode 100644
index 7d1a30d..0000000
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/TransportSslOptionsTest.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.qpid.jms.transports;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNull;
-
-import javax.net.ssl.SSLContext;
-
-import org.apache.qpid.jms.test.QpidJmsTestCase;
-import org.junit.Test;
-import org.mockito.Mockito;
-
-/**
- * Test for class TransportSslOptions
- */
-public class TransportSslOptionsTest extends QpidJmsTestCase {
-
-    private static final String PASSWORD = "password";
-    private static final String CLIENT_KEYSTORE = 
"src/test/resources/client-jks.keystore";
-    private static final String CLIENT_TRUSTSTORE = 
"src/test/resources/client-jks.truststore";
-    private static final String KEYSTORE_TYPE = "jks";
-    private static final String KEY_ALIAS = "myTestAlias";
-    private static final String CONTEXT_PROTOCOL = "TLSv1.1";
-    private static final boolean TRUST_ALL = true;
-    private static final boolean VERIFY_HOST = true;
-
-    private static final int TEST_SEND_BUFFER_SIZE = 128 * 1024;
-    private static final int TEST_RECEIVE_BUFFER_SIZE = TEST_SEND_BUFFER_SIZE;
-    private static final int TEST_TRAFFIC_CLASS = 1;
-    private static final boolean TEST_TCP_NO_DELAY = false;
-    private static final boolean TEST_TCP_KEEP_ALIVE = true;
-    private static final int TEST_SO_LINGER = Short.MAX_VALUE;
-    private static final int TEST_SO_TIMEOUT = 10;
-    private static final int TEST_CONNECT_TIMEOUT = 90000;
-    private static final int TEST_DEFAULT_SSL_PORT = 5681;
-
-    private static final String[] ENABLED_PROTOCOLS = new String[] {"TLSv1.2"};
-    private static final String[] DISABLED_PROTOCOLS = new String[] {"SSLv3", 
"TLSv1.2"};
-    private static final String[] ENABLED_CIPHERS = new String[] {"CIPHER_A", 
"CIPHER_B"};
-    private static final String[] DISABLED_CIPHERS = new String[] {"CIPHER_C"};
-
-    private static final SSLContext SSL_CONTEXT = 
Mockito.mock(SSLContext.class);
-
-    private static final String JAVAX_NET_SSL_KEY_STORE = 
"javax.net.ssl.keyStore";
-    private static final String JAVAX_NET_SSL_KEY_STORE_PASSWORD = 
"javax.net.ssl.keyStorePassword";
-    private static final String JAVAX_NET_SSL_TRUST_STORE = 
"javax.net.ssl.trustStore";
-    private static final String JAVAX_NET_SSL_TRUST_STORE_PASSWORD = 
"javax.net.ssl.trustStorePassword";
-
-    @Test
-    public void testCreate() {
-        TransportSslOptions options = new TransportSslOptions();
-
-        assertEquals(TransportSslOptions.DEFAULT_TRUST_ALL, 
options.isTrustAll());
-        assertEquals(TransportSslOptions.DEFAULT_STORE_TYPE, 
options.getKeyStoreType());
-        assertEquals(TransportSslOptions.DEFAULT_STORE_TYPE, 
options.getTrustStoreType());
-
-        assertEquals(TransportSslOptions.DEFAULT_CONTEXT_PROTOCOL, 
options.getContextProtocol());
-        assertNull(options.getEnabledProtocols());
-        
assertArrayEquals(TransportSslOptions.DEFAULT_DISABLED_PROTOCOLS.toArray(new 
String[0]),
-                          options.getDisabledProtocols());
-        assertNull(options.getEnabledCipherSuites());
-        assertNull(options.getDisabledCipherSuites());
-
-        assertNull(options.getKeyStoreLocation());
-        assertNull(options.getKeyStorePassword());
-        assertNull(options.getTrustStoreLocation());
-        assertNull(options.getTrustStorePassword());
-        assertNull(options.getKeyAlias());
-        assertNull(options.getSslContextOverride());
-    }
-
-    @Test
-    public void testCreateAndConfigure() {
-        TransportSslOptions options = createSslOptions();
-
-        assertEquals(TEST_SEND_BUFFER_SIZE, options.getSendBufferSize());
-        assertEquals(TEST_RECEIVE_BUFFER_SIZE, options.getReceiveBufferSize());
-        assertEquals(TEST_TRAFFIC_CLASS, options.getTrafficClass());
-        assertEquals(TEST_TCP_NO_DELAY, options.isTcpNoDelay());
-        assertEquals(TEST_TCP_KEEP_ALIVE, options.isTcpKeepAlive());
-        assertEquals(TEST_SO_LINGER, options.getSoLinger());
-        assertEquals(TEST_SO_TIMEOUT, options.getSoTimeout());
-        assertEquals(TEST_CONNECT_TIMEOUT, options.getConnectTimeout());
-
-        assertEquals(CLIENT_KEYSTORE, options.getKeyStoreLocation());
-        assertEquals(PASSWORD, options.getKeyStorePassword());
-        assertEquals(CLIENT_TRUSTSTORE, options.getTrustStoreLocation());
-        assertEquals(PASSWORD, options.getTrustStorePassword());
-        assertEquals(KEYSTORE_TYPE, options.getKeyStoreType());
-        assertEquals(KEYSTORE_TYPE, options.getTrustStoreType());
-        assertEquals(KEY_ALIAS, options.getKeyAlias());
-        assertEquals(CONTEXT_PROTOCOL, options.getContextProtocol());
-        assertEquals(SSL_CONTEXT, options.getSslContextOverride());
-        assertArrayEquals(ENABLED_PROTOCOLS,options.getEnabledProtocols());
-        assertArrayEquals(DISABLED_PROTOCOLS,options.getDisabledProtocols());
-        assertArrayEquals(ENABLED_CIPHERS,options.getEnabledCipherSuites());
-        assertArrayEquals(DISABLED_CIPHERS,options.getDisabledCipherSuites());
-    }
-
-    @Test
-    public void testClone() {
-        TransportSslOptions options = createSslOptions().clone();
-
-        assertEquals(TEST_SEND_BUFFER_SIZE, options.getSendBufferSize());
-        assertEquals(TEST_RECEIVE_BUFFER_SIZE, options.getReceiveBufferSize());
-        assertEquals(TEST_TRAFFIC_CLASS, options.getTrafficClass());
-        assertEquals(TEST_TCP_NO_DELAY, options.isTcpNoDelay());
-        assertEquals(TEST_TCP_KEEP_ALIVE, options.isTcpKeepAlive());
-        assertEquals(TEST_SO_LINGER, options.getSoLinger());
-        assertEquals(TEST_SO_TIMEOUT, options.getSoTimeout());
-        assertEquals(TEST_CONNECT_TIMEOUT, options.getConnectTimeout());
-        assertEquals(TEST_DEFAULT_SSL_PORT, options.getDefaultSslPort());
-
-        assertEquals(CLIENT_KEYSTORE, options.getKeyStoreLocation());
-        assertEquals(PASSWORD, options.getKeyStorePassword());
-        assertEquals(CLIENT_TRUSTSTORE, options.getTrustStoreLocation());
-        assertEquals(PASSWORD, options.getTrustStorePassword());
-        assertEquals(KEYSTORE_TYPE, options.getKeyStoreType());
-        assertEquals(KEYSTORE_TYPE, options.getTrustStoreType());
-        assertEquals(KEY_ALIAS, options.getKeyAlias());
-        assertEquals(CONTEXT_PROTOCOL, options.getContextProtocol());
-        assertEquals(SSL_CONTEXT, options.getSslContextOverride());
-        assertArrayEquals(ENABLED_PROTOCOLS,options.getEnabledProtocols());
-        assertArrayEquals(DISABLED_PROTOCOLS,options.getDisabledProtocols());
-        assertArrayEquals(ENABLED_CIPHERS,options.getEnabledCipherSuites());
-        assertArrayEquals(DISABLED_CIPHERS,options.getDisabledCipherSuites());
-    }
-
-    private TransportSslOptions createSslOptions() {
-        TransportSslOptions options = new TransportSslOptions();
-
-        options.setKeyStoreLocation(CLIENT_KEYSTORE);
-        options.setTrustStoreLocation(CLIENT_TRUSTSTORE);
-        options.setKeyStorePassword(PASSWORD);
-        options.setTrustStorePassword(PASSWORD);
-        options.setStoreType(KEYSTORE_TYPE);
-        options.setTrustAll(TRUST_ALL);
-        options.setVerifyHost(VERIFY_HOST);
-        options.setKeyAlias(KEY_ALIAS);
-        options.setContextProtocol(CONTEXT_PROTOCOL);
-        options.setEnabledProtocols(ENABLED_PROTOCOLS);
-        options.setDisabledProtocols(DISABLED_PROTOCOLS);
-        options.setEnabledCipherSuites(ENABLED_CIPHERS);
-        options.setDisabledCipherSuites(DISABLED_CIPHERS);
-
-        options.setSendBufferSize(TEST_SEND_BUFFER_SIZE);
-        options.setReceiveBufferSize(TEST_RECEIVE_BUFFER_SIZE);
-        options.setTrafficClass(TEST_TRAFFIC_CLASS);
-        options.setTcpNoDelay(TEST_TCP_NO_DELAY);
-        options.setTcpKeepAlive(TEST_TCP_KEEP_ALIVE);
-        options.setSoLinger(TEST_SO_LINGER);
-        options.setSoTimeout(TEST_SO_TIMEOUT);
-        options.setConnectTimeout(TEST_CONNECT_TIMEOUT);
-        options.setDefaultSslPort(TEST_DEFAULT_SSL_PORT);
-        options.setSslContextOverride(SSL_CONTEXT);
-
-        return options;
-    }
-
-    @Test
-    public void testSslSystemPropertiesInfluenceDefaults() {
-        String keystore = "keystore";
-        String keystorePass = "keystorePass";
-        String truststore = "truststore";
-        String truststorePass = "truststorePass";
-
-        setSslSystemPropertiesForCurrentTest(keystore, keystorePass, 
truststore, truststorePass);
-
-        TransportSslOptions options1 = new TransportSslOptions();
-
-        assertEquals(keystore, options1.getKeyStoreLocation());
-        assertEquals(keystorePass, options1.getKeyStorePassword());
-        assertEquals(truststore, options1.getTrustStoreLocation());
-        assertEquals(truststorePass, options1.getTrustStorePassword());
-
-        keystore +="2";
-        keystorePass +="2";
-        truststore +="2";
-        truststorePass +="2";
-
-        setSslSystemPropertiesForCurrentTest(keystore, keystorePass, 
truststore, truststorePass);
-
-        TransportSslOptions options2 = new TransportSslOptions();
-
-        assertEquals(keystore, options2.getKeyStoreLocation());
-        assertEquals(keystorePass, options2.getKeyStorePassword());
-        assertEquals(truststore, options2.getTrustStoreLocation());
-        assertEquals(truststorePass, options2.getTrustStorePassword());
-
-        assertNotEquals(options1.getKeyStoreLocation(), 
options2.getKeyStoreLocation());
-        assertNotEquals(options1.getKeyStorePassword(), 
options2.getKeyStorePassword());
-        assertNotEquals(options1.getTrustStoreLocation(), 
options2.getTrustStoreLocation());
-        assertNotEquals(options1.getTrustStorePassword(), 
options2.getTrustStorePassword());
-    }
-
-    private void setSslSystemPropertiesForCurrentTest(String keystore, String 
keystorePassword, String truststore, String truststorePassword) {
-        setTestSystemProperty(JAVAX_NET_SSL_KEY_STORE, keystore);
-        setTestSystemProperty(JAVAX_NET_SSL_KEY_STORE_PASSWORD, 
keystorePassword);
-        setTestSystemProperty(JAVAX_NET_SSL_TRUST_STORE, truststore);
-        setTestSystemProperty(JAVAX_NET_SSL_TRUST_STORE_PASSWORD, 
truststorePassword);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8bf97c4b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/TransportSupportTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/TransportSupportTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/TransportSupportTest.java
index bf6e995..23b58ff 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/TransportSupportTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/TransportSupportTest.java
@@ -68,7 +68,7 @@ public class TransportSupportTest extends QpidJmsTestCase {
 
     @Test
     public void testLegacySslProtocolsDisabledByDefault() throws Exception {
-        TransportSslOptions options = createJksSslOptions(null);
+        TransportOptions options = createJksSslOptions(null);
 
         SSLContext context = TransportSupport.createSslContext(options);
         assertNotNull(context);
@@ -83,7 +83,7 @@ public class TransportSupportTest extends QpidJmsTestCase {
 
     @Test
     public void testCreateSslContextJksStore() throws Exception {
-        TransportSslOptions options = createJksSslOptions();
+        TransportOptions options = createJksSslOptions();
 
         SSLContext context = TransportSupport.createSslContext(options);
         assertNotNull(context);
@@ -93,7 +93,7 @@ public class TransportSupportTest extends QpidJmsTestCase {
 
     @Test
     public void testCreateSslContextJksStoreWithConfiguredContextProtocol() 
throws Exception {
-        TransportSslOptions options = createJksSslOptions();
+        TransportOptions options = createJksSslOptions();
         String contextProtocol = "TLSv1.2";
         options.setContextProtocol(contextProtocol);
 
@@ -105,42 +105,42 @@ public class TransportSupportTest extends QpidJmsTestCase 
{
 
     @Test(expected = UnrecoverableKeyException.class)
     public void testCreateSslContextNoKeyStorePassword() throws Exception {
-        TransportSslOptions options = createJksSslOptions();
+        TransportOptions options = createJksSslOptions();
         options.setKeyStorePassword(null);
         TransportSupport.createSslContext(options);
     }
 
     @Test(expected = IOException.class)
     public void testCreateSslContextWrongKeyStorePassword() throws Exception {
-        TransportSslOptions options = createJksSslOptions();
+        TransportOptions options = createJksSslOptions();
         options.setKeyStorePassword("wrong");
         TransportSupport.createSslContext(options);
     }
 
     @Test(expected = IOException.class)
     public void testCreateSslContextBadPathToKeyStore() throws Exception {
-        TransportSslOptions options = createJksSslOptions();
+        TransportOptions options = createJksSslOptions();
         options.setKeyStoreLocation(CLIENT_JKS_KEYSTORE + ".bad");
         TransportSupport.createSslContext(options);
     }
 
     @Test(expected = IOException.class)
     public void testCreateSslContextWrongTrustStorePassword() throws Exception 
{
-        TransportSslOptions options = createJksSslOptions();
+        TransportOptions options = createJksSslOptions();
         options.setTrustStorePassword("wrong");
         TransportSupport.createSslContext(options);
     }
 
     @Test(expected = IOException.class)
     public void testCreateSslContextBadPathToTrustStore() throws Exception {
-        TransportSslOptions options = createJksSslOptions();
+        TransportOptions options = createJksSslOptions();
         options.setTrustStoreLocation(CLIENT_JKS_TRUSTSTORE + ".bad");
         TransportSupport.createSslContext(options);
     }
 
     @Test
     public void testCreateSslContextJceksStore() throws Exception {
-        TransportSslOptions options = createJceksSslOptions();
+        TransportOptions options = createJceksSslOptions();
 
         SSLContext context = TransportSupport.createSslContext(options);
         assertNotNull(context);
@@ -150,7 +150,7 @@ public class TransportSupportTest extends QpidJmsTestCase {
 
     @Test
     public void testCreateSslContextPkcs12Store() throws Exception {
-        TransportSslOptions options = createPkcs12SslOptions();
+        TransportOptions options = createPkcs12SslOptions();
 
         SSLContext context = TransportSupport.createSslContext(options);
         assertNotNull(context);
@@ -160,14 +160,14 @@ public class TransportSupportTest extends QpidJmsTestCase 
{
 
     @Test(expected = IOException.class)
     public void testCreateSslContextIncorrectStoreType() throws Exception {
-        TransportSslOptions options = createPkcs12SslOptions();
+        TransportOptions options = createPkcs12SslOptions();
         options.setStoreType(KEYSTORE_JCEKS_TYPE);
         TransportSupport.createSslContext(options);
     }
 
     @Test
     public void testCreateSslEngineFromPkcs12Store() throws Exception {
-        TransportSslOptions options = createPkcs12SslOptions();
+        TransportOptions options = createPkcs12SslOptions();
 
         SSLContext context = TransportSupport.createSslContext(options);
         assertNotNull(context);
@@ -181,7 +181,7 @@ public class TransportSupportTest extends QpidJmsTestCase {
 
     @Test
     public void 
testCreateSslEngineFromPkcs12StoreWithExplicitEnabledProtocols() throws 
Exception {
-        TransportSslOptions options = 
createPkcs12SslOptions(ENABLED_PROTOCOLS);
+        TransportOptions options = createPkcs12SslOptions(ENABLED_PROTOCOLS);
 
         SSLContext context = TransportSupport.createSslContext(options);
         assertNotNull(context);
@@ -194,7 +194,7 @@ public class TransportSupportTest extends QpidJmsTestCase {
 
     @Test
     public void testCreateSslEngineFromJksStore() throws Exception {
-        TransportSslOptions options = createJksSslOptions();
+        TransportOptions options = createJksSslOptions();
 
         SSLContext context = TransportSupport.createSslContext(options);
         assertNotNull(context);
@@ -208,7 +208,7 @@ public class TransportSupportTest extends QpidJmsTestCase {
 
     @Test
     public void testCreateSslEngineFromJksStoreWithExplicitEnabledProtocols() 
throws Exception {
-        TransportSslOptions options = createJksSslOptions(ENABLED_PROTOCOLS);
+        TransportOptions options = createJksSslOptions(ENABLED_PROTOCOLS);
 
         SSLContext context = TransportSupport.createSslContext(options);
         assertNotNull(context);
@@ -222,7 +222,7 @@ public class TransportSupportTest extends QpidJmsTestCase {
     @Test
     public void testCreateSslEngineFromJksStoreWithExplicitDisabledProtocols() 
throws Exception {
         // Discover the default enabled protocols
-        TransportSslOptions options = createJksSslOptions();
+        TransportOptions options = createJksSslOptions();
         SSLEngine directEngine = createSSLEngineDirectly(options);
         String[] protocols = directEngine.getEnabledProtocols();
         assertTrue("There were no initial protocols to choose from!", 
protocols.length > 0);
@@ -242,7 +242,7 @@ public class TransportSupportTest extends QpidJmsTestCase {
     @Test
     public void 
testCreateSslEngineFromJksStoreWithExplicitEnabledAndDisabledProtocols() throws 
Exception {
         // Discover the default enabled protocols
-        TransportSslOptions options = createJksSslOptions();
+        TransportOptions options = createJksSslOptions();
         SSLEngine directEngine = createSSLEngineDirectly(options);
         String[] protocols = directEngine.getEnabledProtocols();
         assertTrue("There were no initial protocols to choose from!", 
protocols.length > 1);
@@ -266,7 +266,7 @@ public class TransportSupportTest extends QpidJmsTestCase {
     @Test
     public void testCreateSslEngineFromJksStoreWithExplicitEnabledCiphers() 
throws Exception {
         // Discover the default enabled ciphers
-        TransportSslOptions options = createJksSslOptions();
+        TransportOptions options = createJksSslOptions();
         SSLEngine directEngine = createSSLEngineDirectly(options);
         String[] ciphers = directEngine.getEnabledCipherSuites();
         assertTrue("There were no initial ciphers to choose from!", 
ciphers.length > 0);
@@ -286,7 +286,7 @@ public class TransportSupportTest extends QpidJmsTestCase {
     @Test
     public void testCreateSslEngineFromJksStoreWithExplicitDisabledCiphers() 
throws Exception {
         // Discover the default enabled ciphers
-        TransportSslOptions options = createJksSslOptions();
+        TransportOptions options = createJksSslOptions();
         SSLEngine directEngine = createSSLEngineDirectly(options);
         String[] ciphers = directEngine.getEnabledCipherSuites();
         assertTrue("There were no initial ciphers to choose from!", 
ciphers.length > 0);
@@ -306,7 +306,7 @@ public class TransportSupportTest extends QpidJmsTestCase {
     @Test
     public void 
testCreateSslEngineFromJksStoreWithExplicitEnabledAndDisabledCiphers() throws 
Exception {
         // Discover the default enabled ciphers
-        TransportSslOptions options = createJksSslOptions();
+        TransportOptions options = createJksSslOptions();
         SSLEngine directEngine = createSSLEngineDirectly(options);
         String[] ciphers = directEngine.getEnabledCipherSuites();
         assertTrue("There werent enough initial ciphers to choose from!", 
ciphers.length > 1);
@@ -329,7 +329,7 @@ public class TransportSupportTest extends QpidJmsTestCase {
 
     @Test
     public void testCreateSslEngineFromJceksStore() throws Exception {
-        TransportSslOptions options = createJceksSslOptions();
+        TransportOptions options = createJceksSslOptions();
 
         SSLContext context = TransportSupport.createSslContext(options);
         assertNotNull(context);
@@ -343,7 +343,7 @@ public class TransportSupportTest extends QpidJmsTestCase {
 
     @Test
     public void 
testCreateSslEngineFromJceksStoreWithExplicitEnabledProtocols() throws 
Exception {
-        TransportSslOptions options = createJceksSslOptions(ENABLED_PROTOCOLS);
+        TransportOptions options = createJceksSslOptions(ENABLED_PROTOCOLS);
 
         SSLContext context = TransportSupport.createSslContext(options);
         assertNotNull(context);
@@ -356,7 +356,7 @@ public class TransportSupportTest extends QpidJmsTestCase {
 
     @Test
     public void testCreateSslEngineWithVerifyHost() throws Exception {
-        TransportSslOptions options = createJksSslOptions();
+        TransportOptions options = createJksSslOptions();
         options.setVerifyHost(true);
 
         SSLContext context = TransportSupport.createSslContext(options);
@@ -370,7 +370,7 @@ public class TransportSupportTest extends QpidJmsTestCase {
 
     @Test
     public void testCreateSslEngineWithoutVerifyHost() throws Exception {
-        TransportSslOptions options = createJksSslOptions();
+        TransportOptions options = createJksSslOptions();
         options.setVerifyHost(false);
 
         SSLContext context = TransportSupport.createSslContext(options);
@@ -384,7 +384,7 @@ public class TransportSupportTest extends QpidJmsTestCase {
 
     @Test
     public void testCreateSslContextWithKeyAliasWhichDoesntExist() throws 
Exception {
-        TransportSslOptions options = createJksSslOptions();
+        TransportOptions options = createJksSslOptions();
         options.setKeyAlias(ALIAS_DOES_NOT_EXIST);
 
         try {
@@ -397,7 +397,7 @@ public class TransportSupportTest extends QpidJmsTestCase {
 
     @Test
     public void testCreateSslContextWithKeyAliasWhichRepresentsNonKeyEntry() 
throws Exception {
-        TransportSslOptions options = createJksSslOptions();
+        TransportOptions options = createJksSslOptions();
         options.setKeyAlias(ALIAS_CA_CERT);
 
         try {
@@ -408,12 +408,12 @@ public class TransportSupportTest extends QpidJmsTestCase 
{
         }
     }
 
-    private TransportSslOptions createJksSslOptions() {
+    private TransportOptions createJksSslOptions() {
         return createJksSslOptions(null);
     }
 
-    private TransportSslOptions createJksSslOptions(String[] enabledProtocols) 
{
-        TransportSslOptions options = new TransportSslOptions();
+    private TransportOptions createJksSslOptions(String[] enabledProtocols) {
+        TransportOptions options = new TransportOptions();
 
         options.setKeyStoreLocation(CLIENT_JKS_KEYSTORE);
         options.setTrustStoreLocation(CLIENT_JKS_TRUSTSTORE);
@@ -427,12 +427,12 @@ public class TransportSupportTest extends QpidJmsTestCase 
{
         return options;
     }
 
-    private TransportSslOptions createJceksSslOptions() {
+    private TransportOptions createJceksSslOptions() {
         return createJceksSslOptions(null);
     }
 
-    private TransportSslOptions createJceksSslOptions(String[] 
enabledProtocols) {
-        TransportSslOptions options = new TransportSslOptions();
+    private TransportOptions createJceksSslOptions(String[] enabledProtocols) {
+        TransportOptions options = new TransportOptions();
 
         options.setKeyStoreLocation(CLIENT_JCEKS_KEYSTORE);
         options.setTrustStoreLocation(CLIENT_JCEKS_TRUSTSTORE);
@@ -446,12 +446,12 @@ public class TransportSupportTest extends QpidJmsTestCase 
{
         return options;
     }
 
-    private TransportSslOptions createPkcs12SslOptions() {
+    private TransportOptions createPkcs12SslOptions() {
         return createPkcs12SslOptions(null);
     }
 
-    private TransportSslOptions createPkcs12SslOptions(String[] 
enabledProtocols) {
-        TransportSslOptions options = new TransportSslOptions();
+    private TransportOptions createPkcs12SslOptions(String[] enabledProtocols) 
{
+        TransportOptions options = new TransportOptions();
 
         options.setKeyStoreLocation(CLIENT_PKCS12_KEYSTORE);
         options.setTrustStoreLocation(CLIENT_PKCS12_TRUSTSTORE);
@@ -465,10 +465,9 @@ public class TransportSupportTest extends QpidJmsTestCase {
         return options;
     }
 
-    private SSLEngine createSSLEngineDirectly(TransportSslOptions options) 
throws Exception {
+    private SSLEngine createSSLEngineDirectly(TransportOptions options) throws 
Exception {
         SSLContext context = TransportSupport.createSslContext(options);
         SSLEngine engine = context.createSSLEngine();
         return engine;
     }
-
 }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8bf97c4b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyEchoServer.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyEchoServer.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyEchoServer.java
index 32e86f8..3e9cbdc 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyEchoServer.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyEchoServer.java
@@ -32,12 +32,12 @@ public class NettyEchoServer extends NettyServer {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(NettyEchoServer.class);
 
-    public NettyEchoServer(TransportOptions options, boolean needClientAuth) {
-        super(options, needClientAuth);
+    public NettyEchoServer(TransportOptions options, boolean secure, boolean 
needClientAuth) {
+        super(options, secure, needClientAuth);
     }
 
-    public NettyEchoServer(TransportOptions options, boolean needClientAuth, 
boolean webSocketServer) {
-        super(options, needClientAuth, webSocketServer);
+    public NettyEchoServer(TransportOptions options, boolean secure, boolean 
needClientAuth, boolean webSocketServer) {
+        super(options, secure, needClientAuth, webSocketServer);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8bf97c4b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyServer.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyServer.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyServer.java
index 55e3624..afde7d6 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyServer.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyServer.java
@@ -31,7 +31,6 @@ import javax.net.ssl.SSLContext;
 import javax.net.ssl.SSLEngine;
 
 import org.apache.qpid.jms.transports.TransportOptions;
-import org.apache.qpid.jms.transports.TransportSslOptions;
 import org.apache.qpid.jms.transports.TransportSupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -62,6 +61,7 @@ import 
io.netty.handler.codec.http.websocketx.BinaryWebSocketFrame;
 import io.netty.handler.codec.http.websocketx.ContinuationWebSocketFrame;
 import io.netty.handler.codec.http.websocketx.WebSocketFrame;
 import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler;
+import 
io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler.HandshakeComplete;
 import io.netty.handler.logging.LogLevel;
 import io.netty.handler.logging.LoggingHandler;
 import io.netty.handler.ssl.SslHandler;
@@ -83,6 +83,7 @@ public abstract class NettyServer implements AutoCloseable {
     private EventLoopGroup workerGroup;
     private Channel serverChannel;
     private final TransportOptions options;
+    private final boolean secure;
     private int serverPort;
     private final boolean needClientAuth;
     private final boolean webSocketServer;
@@ -90,25 +91,27 @@ public abstract class NettyServer implements AutoCloseable {
     private String webSocketPath = WEBSOCKET_PATH;
     private volatile boolean fragmentWrites;
     private volatile SslHandler sslHandler;
+    private volatile HandshakeComplete handshakeComplete;
 
     private final AtomicBoolean started = new AtomicBoolean();
 
-    public NettyServer(TransportOptions options) {
-        this(options, false);
+    public NettyServer(TransportOptions options, boolean secure) {
+        this(options, secure, false);
     }
 
-    public NettyServer(TransportOptions options, boolean needClientAuth) {
-        this(options, needClientAuth, false);
+    public NettyServer(TransportOptions options, boolean secure, boolean 
needClientAuth) {
+        this(options, secure, needClientAuth, false);
     }
 
-    public NettyServer(TransportOptions options, boolean needClientAuth, 
boolean webSocketServer) {
+    public NettyServer(TransportOptions options, boolean secure, boolean 
needClientAuth, boolean webSocketServer) {
+        this.secure = secure;
         this.options = options;
         this.needClientAuth = needClientAuth;
         this.webSocketServer = webSocketServer;
     }
 
     public boolean isSecureServer() {
-        return options instanceof TransportSslOptions;
+        return secure;
     }
 
     public boolean isWebSocketServer() {
@@ -143,6 +146,10 @@ public abstract class NettyServer implements AutoCloseable 
{
         return fragmentWrites;
     }
 
+    public HandshakeComplete getHandshakeComplete() {
+        return handshakeComplete;
+    }
+
     protected URI getConnectionURI() throws Exception {
         if (!started.get()) {
             throw new IllegalStateException("Cannot get URI of non-started 
server");
@@ -193,10 +200,9 @@ public abstract class NettyServer implements AutoCloseable 
{
 
                 @Override
                 public void initChannel(Channel ch) throws Exception {
-                    if (options instanceof TransportSslOptions) {
-                        TransportSslOptions sslOptions = (TransportSslOptions) 
options;
-                        SSLContext context = 
TransportSupport.createSslContext(sslOptions);
-                        SSLEngine engine = 
TransportSupport.createSslEngine(context, sslOptions);
+                    if (isSecureServer()) {
+                        SSLContext context = 
TransportSupport.createSslContext(options);
+                        SSLEngine engine = 
TransportSupport.createSslEngine(context, options);
                         engine.setUseClientMode(false);
                         engine.setNeedClientAuth(needClientAuth);
                         sslHandler = new SslHandler(engine);
@@ -273,7 +279,7 @@ public abstract class NettyServer implements AutoCloseable {
         public void write(ChannelHandlerContext ctx, Object msg, 
ChannelPromise promise) throws Exception {
             LOG.trace("NettyServerHandler: Channel write: {}", msg);
             if (isWebSocketServer() && msg instanceof ByteBuf) {
-                if(isFragmentWrites()) {
+                if (isFragmentWrites()) {
                     ByteBuf orig = (ByteBuf) msg;
                     int origIndex = orig.readerIndex();
                     int split = orig.readableBytes()/2;
@@ -300,6 +306,13 @@ public abstract class NettyServer implements AutoCloseable 
{
     private class NettyServerInboundHandler extends 
ChannelInboundHandlerAdapter  {
 
         @Override
+        public void userEventTriggered(ChannelHandlerContext context, Object 
payload) {
+            if (payload instanceof HandshakeComplete) {
+                handshakeComplete = (HandshakeComplete) payload;
+            }
+        }
+
+        @Override
         public void channelActive(final ChannelHandlerContext ctx) {
             LOG.info("NettyServerHandler -> New active channel: {}", 
ctx.channel());
             SslHandler handler = ctx.pipeline().get(SslHandler.class);

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8bf97c4b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettySimpleAmqpServer.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettySimpleAmqpServer.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettySimpleAmqpServer.java
index 1525144..01d1f32 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettySimpleAmqpServer.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettySimpleAmqpServer.java
@@ -85,16 +85,16 @@ public class NettySimpleAmqpServer extends NettyServer {
     private boolean allowNonSaslConnections;
     private ConnectionIntercepter connectionIntercepter;
 
-    public NettySimpleAmqpServer(TransportOptions options) {
+    public NettySimpleAmqpServer(TransportOptions options, boolean secure) {
         this(options, false, false);
     }
 
-    public NettySimpleAmqpServer(TransportOptions options, boolean 
needClientAuth) {
-        this(options, needClientAuth, false);
+    public NettySimpleAmqpServer(TransportOptions options, boolean secure, 
boolean needClientAuth) {
+        this(options, secure, needClientAuth, false);
     }
 
-    public NettySimpleAmqpServer(TransportOptions options, boolean 
needClientAuth, boolean webSocketServer) {
-        super(options, needClientAuth, webSocketServer);
+    public NettySimpleAmqpServer(TransportOptions options, boolean secure, 
boolean needClientAuth, boolean webSocketServer) {
+        super(options, secure, needClientAuth, webSocketServer);
 
         this.serializer = Executors.newSingleThreadScheduledExecutor(new 
ThreadFactory() {
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8bf97c4b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettySslTransportFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettySslTransportFactoryTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettySslTransportFactoryTest.java
index c37a29e..054d41c 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettySslTransportFactoryTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettySslTransportFactoryTest.java
@@ -32,7 +32,6 @@ import java.util.List;
 
 import org.apache.qpid.jms.transports.Transport;
 import org.apache.qpid.jms.transports.TransportOptions;
-import org.apache.qpid.jms.transports.TransportSslOptions;
 import org.junit.Test;
 
 /**
@@ -90,18 +89,15 @@ public class NettySslTransportFactoryTest {
         assertEquals(TransportOptions.DEFAULT_SO_LINGER, 
options.getSoLinger());
         assertEquals(TransportOptions.DEFAULT_SO_TIMEOUT, 
options.getSoTimeout());
 
-        assertTrue(options instanceof TransportSslOptions);
-        TransportSslOptions sslOptions = (TransportSslOptions) options;
+        assertEquals(TransportOptions.DEFAULT_CONTEXT_PROTOCOL, 
options.getContextProtocol());
+        assertNull(options.getEnabledProtocols());
+        
assertArrayEquals(TransportOptions.DEFAULT_DISABLED_PROTOCOLS.toArray(new 
String[0]), options.getDisabledProtocols());
+        assertNull(options.getEnabledCipherSuites());
 
-        assertEquals(TransportSslOptions.DEFAULT_CONTEXT_PROTOCOL, 
sslOptions.getContextProtocol());
-        assertNull(sslOptions.getEnabledProtocols());
-        
assertArrayEquals(TransportSslOptions.DEFAULT_DISABLED_PROTOCOLS.toArray(new 
String[0]), sslOptions.getDisabledProtocols());
-        assertNull(sslOptions.getEnabledCipherSuites());
-
-        assertEquals(TransportSslOptions.DEFAULT_STORE_TYPE, 
sslOptions.getKeyStoreType());
-        assertEquals(TransportSslOptions.DEFAULT_STORE_TYPE, 
sslOptions.getTrustStoreType());
-        assertEquals(TransportSslOptions.DEFAULT_VERIFY_HOST, 
sslOptions.isVerifyHost());
-        assertNull(sslOptions.getKeyAlias());
+        assertEquals(TransportOptions.DEFAULT_STORE_TYPE, 
options.getKeyStoreType());
+        assertEquals(TransportOptions.DEFAULT_STORE_TYPE, 
options.getTrustStoreType());
+        assertEquals(TransportOptions.DEFAULT_VERIFY_HOST, 
options.isVerifyHost());
+        assertNull(options.getKeyAlias());
     }
 
     @Test(expected = IllegalArgumentException.class)
@@ -162,8 +158,8 @@ public class NettySslTransportFactoryTest {
         assertEquals(CUSTOM_SO_LINGER, options.getSoLinger());
         assertEquals(CUSTOM_SO_TIMEOUT, options.getSoTimeout());
 
-        assertTrue(options instanceof TransportSslOptions);
-        TransportSslOptions sslOptions = (TransportSslOptions) options;
+        assertTrue(options instanceof TransportOptions);
+        TransportOptions sslOptions = options;
 
         List<String> enabledProtocols = 
Arrays.asList(sslOptions.getEnabledProtocols());
         List<String> customProtocols = Arrays.asList(CUSTOM_ENABLED_PROTOCOLS);
@@ -197,11 +193,11 @@ public class NettySslTransportFactoryTest {
         NettySslTransportFactory factory = new NettySslTransportFactory();
         Transport transport = factory.createTransport(configuredURI);
         TransportOptions options = transport.getTransportOptions();
-        assertTrue(options instanceof TransportSslOptions);
-        TransportSslOptions sslOptions = (TransportSslOptions) options;
+        assertTrue(options instanceof TransportOptions);
+        TransportOptions sslOptions = options;
 
         assertEquals(CUSTOM_STORE_TYPE, sslOptions.getKeyStoreType());
-        assertEquals(TransportSslOptions.DEFAULT_STORE_TYPE, 
sslOptions.getTrustStoreType());
+        assertEquals(TransportOptions.DEFAULT_STORE_TYPE, 
sslOptions.getTrustStoreType());
     }
 
     @Test
@@ -213,10 +209,10 @@ public class NettySslTransportFactoryTest {
         NettySslTransportFactory factory = new NettySslTransportFactory();
         Transport transport = factory.createTransport(configuredURI);
         TransportOptions options = transport.getTransportOptions();
-        assertTrue(options instanceof TransportSslOptions);
-        TransportSslOptions sslOptions = (TransportSslOptions) options;
+        assertTrue(options instanceof TransportOptions);
+        TransportOptions sslOptions = options;
 
-        assertEquals(TransportSslOptions.DEFAULT_STORE_TYPE, 
sslOptions.getKeyStoreType());
+        assertEquals(TransportOptions.DEFAULT_STORE_TYPE, 
sslOptions.getKeyStoreType());
         assertEquals(CUSTOM_STORE_TYPE, sslOptions.getTrustStoreType());
     }
 
@@ -230,11 +226,10 @@ public class NettySslTransportFactoryTest {
         NettySslTransportFactory factory = new NettySslTransportFactory();
         Transport transport = factory.createTransport(configuredURI);
         TransportOptions options = transport.getTransportOptions();
-        assertTrue(options instanceof TransportSslOptions);
-        TransportSslOptions sslOptions = (TransportSslOptions) options;
+        assertTrue(options instanceof TransportOptions);
 
-        assertEquals(CUSTOM_STORE_TYPE_PKCS12, sslOptions.getKeyStoreType());
-        assertEquals(CUSTOM_STORE_TYPE, sslOptions.getTrustStoreType());
+        assertEquals(CUSTOM_STORE_TYPE_PKCS12, options.getKeyStoreType());
+        assertEquals(CUSTOM_STORE_TYPE, options.getTrustStoreType());
     }
 
     @Test
@@ -249,8 +244,8 @@ public class NettySslTransportFactoryTest {
         NettySslTransportFactory factory = new NettySslTransportFactory();
         Transport transport = factory.createTransport(configuredURI);
         TransportOptions options = transport.getTransportOptions();
-        assertTrue(options instanceof TransportSslOptions);
-        TransportSslOptions sslOptions = (TransportSslOptions) options;
+        assertTrue(options instanceof TransportOptions);
+        TransportOptions sslOptions = options;
 
         assertEquals(CUSTOM_TRUST_STORE_LOCATION, 
sslOptions.getTrustStoreLocation());
         assertEquals(CUSTOM_TRUST_STORE_PASSWORD, 
sslOptions.getTrustStorePassword());

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8bf97c4b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettySslTransportTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettySslTransportTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettySslTransportTest.java
index 4fbc66c..fa62a10 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettySslTransportTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettySslTransportTest.java
@@ -31,7 +31,6 @@ import java.security.cert.X509Certificate;
 import org.apache.qpid.jms.transports.Transport;
 import org.apache.qpid.jms.transports.TransportListener;
 import org.apache.qpid.jms.transports.TransportOptions;
-import org.apache.qpid.jms.transports.TransportSslOptions;
 import org.apache.qpid.jms.util.QpidJMSTestRunner;
 import org.apache.qpid.jms.util.Repeat;
 import org.junit.Test;
@@ -110,7 +109,7 @@ public class NettySslTransportTest extends 
NettyTcpTransportTest {
             int port = server.getServerPort();
             URI serverLocation = new URI("tcp://localhost:" + port);
 
-            TransportSslOptions options = new TransportSslOptions();
+            TransportOptions options = new TransportOptions();
 
             options.setTrustStoreLocation(OTHER_CA_TRUSTSTORE);
             options.setTrustStorePassword(PASSWORD);
@@ -157,7 +156,7 @@ public class NettySslTransportTest extends 
NettyTcpTransportTest {
 
     @Test(timeout = 60 * 1000)
     public void testConnectWithNeedClientAuth() throws Exception {
-        TransportSslOptions serverOptions = createServerOptions();
+        TransportOptions serverOptions = createServerOptions();
 
         try (NettyEchoServer server = createEchoServer(serverOptions, true)) {
             server.start();
@@ -165,7 +164,7 @@ public class NettySslTransportTest extends 
NettyTcpTransportTest {
             int port = server.getServerPort();
             URI serverLocation = new URI("tcp://localhost:" + port);
 
-            TransportSslOptions clientOptions = createClientOptions();
+            TransportOptions clientOptions = createClientOptions();
 
             NettyTcpTransport transport = createTransport(serverLocation, 
testListener, clientOptions);
             try {
@@ -195,7 +194,7 @@ public class NettySslTransportTest extends 
NettyTcpTransportTest {
     }
 
     private void doClientAuthAliasTestImpl(String alias, String expectedDN) 
throws Exception, URISyntaxException, IOException, InterruptedException {
-        TransportSslOptions serverOptions = createServerOptions();
+        TransportOptions serverOptions = createServerOptions();
 
         try (NettyEchoServer server = createEchoServer(serverOptions, true)) {
             server.start();
@@ -203,7 +202,7 @@ public class NettySslTransportTest extends 
NettyTcpTransportTest {
             int port = server.getServerPort();
             URI serverLocation = new URI("tcp://localhost:" + port);
 
-            TransportSslOptions clientOptions = createClientOptions();
+            TransportOptions clientOptions = createClientOptions();
             clientOptions.setKeyStoreLocation(CLIENT_MULTI_KEYSTORE);
             clientOptions.setKeyAlias(alias);
 
@@ -244,7 +243,7 @@ public class NettySslTransportTest extends 
NettyTcpTransportTest {
     }
 
     private void doConnectToServerVerifyHostTestImpl(boolean verifyHost) 
throws Exception, URISyntaxException, IOException, InterruptedException {
-        TransportSslOptions serverOptions = createServerOptions();
+        TransportOptions serverOptions = createServerOptions();
         serverOptions.setKeyStoreLocation(SERVER_WRONG_HOST_KEYSTORE);
 
         try (NettyEchoServer server = createEchoServer(serverOptions)) {
@@ -253,7 +252,7 @@ public class NettySslTransportTest extends 
NettyTcpTransportTest {
             int port = server.getServerPort();
             URI serverLocation = new URI("tcp://localhost:" + port);
 
-            TransportSslOptions clientOptions = 
createClientOptionsIsVerify(verifyHost);
+            TransportOptions clientOptions = 
createClientOptionsIsVerify(verifyHost);
 
             if (verifyHost) {
                 assertTrue("Expected verifyHost to be true", 
clientOptions.isVerifyHost());
@@ -288,16 +287,26 @@ public class NettySslTransportTest extends 
NettyTcpTransportTest {
 
     @Override
     protected NettyTcpTransport createTransport(URI serverLocation, 
TransportListener listener, TransportOptions options) {
-        return new NettyTcpTransport(listener, serverLocation, options);
+        return new NettyTcpTransport(listener, serverLocation, options, true);
     }
 
     @Override
-    protected TransportSslOptions createClientOptions() {
+       protected NettyEchoServer createEchoServer(TransportOptions options) {
+        return createEchoServer(options, false);
+    }
+
+    @Override
+       protected NettyEchoServer createEchoServer(TransportOptions options, 
boolean needClientAuth) {
+        return new NettyEchoServer(options, true, needClientAuth);
+    }
+
+    @Override
+    protected TransportOptions createClientOptions() {
         return createClientOptionsIsVerify(false);
     }
 
-    protected TransportSslOptions createClientOptionsIsVerify(boolean 
verifyHost) {
-        TransportSslOptions options = new TransportSslOptions();
+    protected TransportOptions createClientOptionsIsVerify(boolean verifyHost) 
{
+        TransportOptions options = new TransportOptions();
 
         options.setKeyStoreLocation(CLIENT_KEYSTORE);
         options.setKeyStorePassword(PASSWORD);
@@ -310,8 +319,8 @@ public class NettySslTransportTest extends 
NettyTcpTransportTest {
     }
 
     @Override
-    protected TransportSslOptions createServerOptions() {
-        TransportSslOptions options = new TransportSslOptions();
+    protected TransportOptions createServerOptions() {
+        TransportOptions options = new TransportOptions();
 
         options.setKeyStoreLocation(SERVER_KEYSTORE);
         options.setKeyStorePassword(PASSWORD);
@@ -323,8 +332,8 @@ public class NettySslTransportTest extends 
NettyTcpTransportTest {
         return options;
     }
 
-    protected TransportSslOptions createClientOptionsWithoutTrustStore(boolean 
trustAll) {
-        TransportSslOptions options = new TransportSslOptions();
+    protected TransportOptions createClientOptionsWithoutTrustStore(boolean 
trustAll) {
+        TransportOptions options = new TransportOptions();
 
         options.setStoreType(KEYSTORE_TYPE);
         options.setTrustAll(trustAll);

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8bf97c4b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpToMockServerTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpToMockServerTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpToMockServerTest.java
index 14418ef..57fb5eb 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpToMockServerTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpToMockServerTest.java
@@ -21,6 +21,8 @@ import static 
org.apache.qpid.jms.provider.amqp.AmqpSupport.OPEN_HOSTNAME;
 import static org.apache.qpid.jms.provider.amqp.AmqpSupport.PATH;
 import static org.apache.qpid.jms.provider.amqp.AmqpSupport.PORT;
 import static org.apache.qpid.jms.provider.amqp.AmqpSupport.SCHEME;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -34,6 +36,7 @@ import javax.jms.Connection;
 import javax.jms.InvalidClientIDException;
 import javax.jms.Session;
 
+import org.apache.qpid.jms.JmsConnectionExtensions;
 import org.apache.qpid.jms.JmsConnectionFactory;
 import org.apache.qpid.jms.test.QpidJmsTestCase;
 import org.apache.qpid.jms.transports.TransportOptions;
@@ -47,6 +50,8 @@ import org.junit.rules.TestName;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import 
io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler.HandshakeComplete;
+
 /**
  * Test Client connection to Mock AMQP server.
  */
@@ -294,6 +299,43 @@ public class NettyTcpToMockServerTest extends 
QpidJmsTestCase {
         }
     }
 
+    @Test(timeout = 60000)
+    public void testConnectToWSServerWithHttpHeaderConnectionExtensions() 
throws Exception {
+        try (NettySimpleAmqpServer server = 
createWSServer(createServerOptions())) {
+            server.start();
+
+            JmsConnectionFactory cf = new 
JmsConnectionFactory(createConnectionURI(server));
+            
cf.setExtension(JmsConnectionExtensions.HTTP_HEADERS_OVERRIDE.toString(), 
(connection) -> {
+                Map<String, String> headers = new HashMap<>();
+
+                headers.put("test-header1", "FOO");
+                headers.put("test-header2", "BAR");
+
+                return headers;
+            });
+
+            Connection connection = null;
+            try {
+                connection = cf.createConnection();
+                connection.start();
+
+                assertNotNull(server.getHandshakeComplete());
+
+                HandshakeComplete handshake = server.getHandshakeComplete();
+                
assertTrue(handshake.requestHeaders().contains("test-header1"));
+                
assertTrue(handshake.requestHeaders().contains("test-header2"));
+
+                assertEquals("FOO", 
handshake.requestHeaders().get("test-header1"));
+                assertEquals("BAR", 
handshake.requestHeaders().get("test-header2"));
+            } catch (Exception ex) {
+                LOG.error("Caught exception while attempting to connect");
+                fail("Should be able to connect in this simple test");
+            } finally {
+                connection.close();
+            }
+        }
+    }
+
     protected URI createConnectionURI(NettyServer server) throws Exception {
         return createConnectionURI(server, null);
     }
@@ -328,10 +370,10 @@ public class NettyTcpToMockServerTest extends 
QpidJmsTestCase {
     }
 
     protected NettySimpleAmqpServer createServer(TransportOptions options, 
boolean needClientAuth) {
-        return new NettySimpleAmqpServer(options, needClientAuth);
+        return new NettySimpleAmqpServer(options, false, needClientAuth);
     }
 
     protected NettySimpleAmqpServer createWSServer(TransportOptions options) {
-        return new NettySimpleAmqpServer(options, false, true);
+        return new NettySimpleAmqpServer(options, false, false, true);
     }
 }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8bf97c4b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpTransportFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpTransportFactoryTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpTransportFactoryTest.java
index fb81b35..1f0f97c 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpTransportFactoryTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpTransportFactoryTest.java
@@ -81,6 +81,13 @@ public class NettyTcpTransportFactoryTest {
         factory.createTransport(BASE_URI);
     }
 
+    @Test(expected = IllegalArgumentException.class)
+    public void testCreateTransportWithHttpHeaders() throws Exception {
+        URI BASE_URI = new URI("tcp://localhost:5672?transport.httpHeaders=A");
+        NettyTcpTransportFactory factory = new NettyTcpTransportFactory();
+        factory.createTransport(BASE_URI);
+    }
+
     @Test(expected = IOException.class)
     public void testCreateWithBadKey() throws Exception {
         URI BASE_URI = new 
URI("tcp://localhost:5672?transport.trafficClass=4096");

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8bf97c4b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpTransportTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpTransportTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpTransportTest.java
index 3d150f5..91a33b9 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpTransportTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyTcpTransportTest.java
@@ -649,9 +649,9 @@ public class NettyTcpTransportTest extends QpidJmsTestCase {
 
     protected Transport createTransport(URI serverLocation, TransportListener 
listener, TransportOptions options) {
         if (listener == null) {
-            return new NettyTcpTransport(serverLocation, options);
+            return new NettyTcpTransport(serverLocation, options, false);
         } else {
-            return new NettyTcpTransport(listener, serverLocation, options);
+            return new NettyTcpTransport(listener, serverLocation, options, 
false);
         }
     }
 
@@ -676,7 +676,7 @@ public class NettyTcpTransportTest extends QpidJmsTestCase {
     }
 
     protected NettyEchoServer createEchoServer(TransportOptions options, 
boolean needClientAuth) {
-        return new NettyEchoServer(options, needClientAuth);
+        return new NettyEchoServer(options, false, needClientAuth, false);
     }
 
     public class NettyTransportListener implements TransportListener {

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8bf97c4b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyWsTransportTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyWsTransportTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyWsTransportTest.java
index f7b6b69..fa1935f 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyWsTransportTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyWsTransportTest.java
@@ -18,6 +18,7 @@ package org.apache.qpid.jms.transports.netty;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -37,6 +38,7 @@ import org.slf4j.LoggerFactory;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.ByteBufUtil;
 import io.netty.buffer.Unpooled;
+import 
io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler.HandshakeComplete;
 
 /**
  * Test the Netty based WebSocket Transport
@@ -47,15 +49,15 @@ public class NettyWsTransportTest extends 
NettyTcpTransportTest {
 
     @Override
     protected NettyEchoServer createEchoServer(TransportOptions options, 
boolean needClientAuth) {
-        return new NettyEchoServer(options, needClientAuth, true);
+        return new NettyEchoServer(options, false, needClientAuth, true);
     }
 
     @Override
     protected Transport createTransport(URI serverLocation, TransportListener 
listener, TransportOptions options) {
         if (listener == null) {
-            return new NettyWsTransport(serverLocation, options);
+            return new NettyWsTransport(serverLocation, options, false);
         } else {
-            return new NettyWsTransport(listener, serverLocation, options);
+            return new NettyWsTransport(listener, serverLocation, options, 
false);
         }
     }
 
@@ -316,4 +318,66 @@ public class NettyWsTransportTest extends 
NettyTcpTransportTest {
             }, 10000, 50));
         }
     }
+
+    @Test(timeout = 30000)
+    public void testCreateWithHttpHeadersSpecified() throws Exception {
+        URI BASE_URI = new URI("ws://localhost:5672?" +
+                "transport.ws.httpHeader.first=FOO&" +
+                "transport.ws.httpHeader.second=BAR");
+
+        NettyWsTransportFactory factory = new NettyWsTransportFactory();
+
+        Transport transport = factory.createTransport(BASE_URI);
+
+        assertNotNull(transport);
+        assertTrue(transport instanceof NettyWsTransport);
+        assertFalse(transport.isConnected());
+
+        TransportOptions options = transport.getTransportOptions();
+        assertNotNull(options);
+
+        assertTrue(options.getHttpHeaders().containsKey("first"));
+        assertTrue(options.getHttpHeaders().containsKey("second"));
+
+        assertEquals("FOO", options.getHttpHeaders().get("first"));
+        assertEquals("BAR", options.getHttpHeaders().get("second"));
+    }
+
+    @Test(timeout = 60 * 1000)
+    public void testConfiguredHttpHeadersArriveAtServer() throws Exception {
+        try (NettyEchoServer server = createEchoServer(createServerOptions())) 
{
+            server.start();
+
+            int port = server.getServerPort();
+            URI serverLocation = new URI("tcp://localhost:" + port);
+
+            TransportOptions clientOptions = createClientOptions();
+            clientOptions.getHttpHeaders().put("test-header1", "FOO");
+            clientOptions.getHttpHeaders().put("test-header2", "BAR");
+
+            Transport transport = createTransport(serverLocation, 
testListener, clientOptions);
+            try {
+                transport.connect(null);
+                LOG.info("Connected to server:{} as expected.", 
serverLocation);
+            } catch (Exception e) {
+                fail("Should have connected to the server at " + 
serverLocation + " but got exception: " + e);
+            }
+
+            assertTrue(transport.isConnected());
+            assertEquals(serverLocation, transport.getRemoteLocation());
+
+            HandshakeComplete handshake = server.getHandshakeComplete();
+            assertTrue(handshake.requestHeaders().contains("test-header1"));
+            assertTrue(handshake.requestHeaders().contains("test-header2"));
+
+            assertEquals("FOO", 
handshake.requestHeaders().get("test-header1"));
+            assertEquals("BAR", 
handshake.requestHeaders().get("test-header2"));
+
+            transport.close();
+        }
+
+        assertTrue(!transportClosed);  // Normal shutdown does not trigger the 
event.
+        assertTrue(exceptions.isEmpty());
+        assertTrue(data.isEmpty());
+    }
 }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8bf97c4b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyWssTransportTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyWssTransportTest.java
 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyWssTransportTest.java
index 69fdd57..f157537 100644
--- 
a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyWssTransportTest.java
+++ 
b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyWssTransportTest.java
@@ -28,15 +28,15 @@ public class NettyWssTransportTest extends 
NettySslTransportTest {
 
     @Override
     protected NettyEchoServer createEchoServer(TransportOptions options, 
boolean needClientAuth) {
-        return new NettyEchoServer(options, needClientAuth, true);
+        return new NettyEchoServer(options, true, needClientAuth, true);
     }
 
     @Override
     protected NettyTcpTransport createTransport(URI serverLocation, 
TransportListener listener, TransportOptions options) {
         if (listener == null) {
-            return new NettyWsTransport(serverLocation, options);
+            return new NettyWsTransport(serverLocation, options, true);
         } else {
-            return new NettyWsTransport(listener, serverLocation, options);
+            return new NettyWsTransport(listener, serverLocation, options, 
true);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8bf97c4b/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsSSLConnectionTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsSSLConnectionTest.java
 
b/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsSSLConnectionTest.java
index a458fe6..dae603e 100644
--- 
a/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsSSLConnectionTest.java
+++ 
b/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsSSLConnectionTest.java
@@ -25,7 +25,7 @@ import javax.net.ssl.SSLContext;
 import org.apache.activemq.broker.BrokerService;
 import org.apache.activemq.broker.SslContext;
 import org.apache.activemq.broker.TransportConnector;
-import org.apache.qpid.jms.transports.TransportSslOptions;
+import org.apache.qpid.jms.transports.TransportOptions;
 import org.apache.qpid.jms.transports.TransportSupport;
 import org.junit.After;
 import org.junit.Before;
@@ -53,7 +53,7 @@ public class JmsSSLConnectionTest {
         brokerService.setUseJmx(false);
 
         // Setup broker SSL context...
-        TransportSslOptions sslOptions = new TransportSslOptions();
+        TransportOptions sslOptions = new TransportOptions();
         sslOptions.setKeyStoreLocation(KEYSTORE);
         sslOptions.setKeyStorePassword(PASSWORD);
         sslOptions.setVerifyHost(false);

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/8bf97c4b/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsWSSConnectionTest.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsWSSConnectionTest.java
 
b/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsWSSConnectionTest.java
index 4e3b183..3a01e73 100644
--- 
a/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsWSSConnectionTest.java
+++ 
b/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsWSSConnectionTest.java
@@ -28,7 +28,7 @@ import javax.net.ssl.SSLContext;
 import org.apache.activemq.broker.BrokerService;
 import org.apache.activemq.broker.SslContext;
 import org.apache.activemq.broker.TransportConnector;
-import org.apache.qpid.jms.transports.TransportSslOptions;
+import org.apache.qpid.jms.transports.TransportOptions;
 import org.apache.qpid.jms.transports.TransportSupport;
 import org.junit.After;
 import org.junit.Before;
@@ -60,7 +60,7 @@ public class JmsWSSConnectionTest {
         brokerService.setUseJmx(false);
 
         // Setup broker SSL context...
-        TransportSslOptions sslOptions = new TransportSslOptions();
+        TransportOptions sslOptions = new TransportOptions();
         sslOptions.setKeyStoreLocation(KEYSTORE);
         sslOptions.setKeyStorePassword(PASSWORD);
         sslOptions.setVerifyHost(false);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to