You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2014/01/09 17:53:53 UTC
svn commit: r1556873 [2/2] - in /qpid/trunk/qpid/java: ./
amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/
amqp-1-0-client-websocket/ amqp-1-0-client-websocket/resources/
amqp-1-0-client-websocket/src/ amqp-1-0-client-websocket/src/...
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AmqpPortAdapter.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AmqpPortAdapter.java?rev=1556873&r1=1556872&r2=1556873&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AmqpPortAdapter.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AmqpPortAdapter.java Thu Jan 9 16:53:51 2014
@@ -24,7 +24,6 @@ import static org.apache.qpid.transport.
import java.net.InetSocketAddress;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Map;
@@ -47,16 +46,17 @@ import org.apache.qpid.server.model.Prot
import org.apache.qpid.server.model.Transport;
import org.apache.qpid.server.model.TrustStore;
import org.apache.qpid.server.configuration.updater.TaskExecutor;
+import org.apache.qpid.server.plugin.QpidServiceLoader;
+import org.apache.qpid.server.plugin.TransportProviderFactory;
import org.apache.qpid.server.protocol.AmqpProtocolVersion;
-import org.apache.qpid.server.protocol.MultiVersionProtocolEngineFactory;
-import org.apache.qpid.transport.NetworkTransportConfiguration;
-import org.apache.qpid.transport.network.IncomingNetworkTransport;
+import org.apache.qpid.server.transport.AcceptingTransport;
+import org.apache.qpid.server.transport.TransportProvider;
import org.apache.qpid.transport.network.security.ssl.QpidMultipleTrustManager;
public class AmqpPortAdapter extends PortAdapter
{
private final Broker _broker;
- private IncomingNetworkTransport _transport;
+ private AcceptingTransport _transport;
public AmqpPortAdapter(UUID id, Broker broker, Map<String, Object> attributes, Map<String, Object> defaultAttributes, TaskExecutor taskExecutor)
{
@@ -70,42 +70,36 @@ public class AmqpPortAdapter extends Por
Collection<Transport> transports = getTransports();
Set<AmqpProtocolVersion> supported = convertFromModelProtocolsToAmqp(getProtocols());
- SSLContext sslContext = null;
- if (transports.contains(Transport.SSL))
+ TransportProvider transportProvider = null;
+ final HashSet<Transport> transportSet = new HashSet<Transport>(transports);
+ for(TransportProviderFactory tpf : (new QpidServiceLoader<TransportProviderFactory>()).instancesOf(TransportProviderFactory.class))
{
- sslContext = createSslContext();
+ if(tpf.getSupportedTransports().contains(transports))
+ {
+ transportProvider = tpf.getTransportProvider(transportSet);
+ }
}
- AmqpProtocolVersion defaultSupportedProtocolReply = getDefaultAmqpSupportedReply();
-
- String bindingAddress = (String) getAttribute(Port.BINDING_ADDRESS);
- if (WILDCARD_ADDRESS.equals(bindingAddress))
+ if(transportProvider == null)
{
- bindingAddress = null;
+ throw new IllegalConfigurationException("No transport providers found which can satisfy the requirement to support the transports: " + transports);
}
- Integer port = (Integer) getAttribute(Port.PORT);
- InetSocketAddress bindingSocketAddress = null;
- if ( bindingAddress == null )
- {
- bindingSocketAddress = new InetSocketAddress(port);
- }
- else
+
+ SSLContext sslContext = null;
+ if (transports.contains(Transport.SSL))
{
- bindingSocketAddress = new InetSocketAddress(bindingAddress, port);
+ sslContext = createSslContext();
}
- final NetworkTransportConfiguration settings = new ServerNetworkTransportConfiguration(
- bindingSocketAddress, (Boolean)getAttribute(TCP_NO_DELAY),
- (Integer)getAttribute(SEND_BUFFER_SIZE), (Integer)getAttribute(RECEIVE_BUFFER_SIZE),
- (Boolean)getAttribute(NEED_CLIENT_AUTH), (Boolean)getAttribute(WANT_CLIENT_AUTH));
+ AmqpProtocolVersion defaultSupportedProtocolReply = getDefaultAmqpSupportedReply();
- _transport = org.apache.qpid.transport.network.Transport.getIncomingTransportInstance();
- final MultiVersionProtocolEngineFactory protocolEngineFactory = new MultiVersionProtocolEngineFactory(
- _broker, transports.contains(Transport.TCP) ? sslContext : null,
- settings.wantClientAuth(), settings.needClientAuth(),
- supported, defaultSupportedProtocolReply, this, transports.contains(Transport.TCP) ? Transport.TCP : Transport.SSL);
+ _transport = transportProvider.createTransport(transportSet,
+ sslContext,
+ this,
+ supported,
+ defaultSupportedProtocolReply);
- _transport.accept(settings, protocolEngineFactory, transports.contains(Transport.TCP) ? null : sslContext);
+ _transport.start();
for(Transport transport : getTransports())
{
CurrentActor.get().message(BrokerMessages.LISTENING(String.valueOf(transport), getPort()));
@@ -211,65 +205,6 @@ public class AmqpPortAdapter extends Por
return null;
}
- class ServerNetworkTransportConfiguration implements NetworkTransportConfiguration
- {
- private final InetSocketAddress _bindingSocketAddress;
- private final Boolean _tcpNoDelay;
- private final Integer _sendBufferSize;
- private final Integer _receiveBufferSize;
- private final boolean _needClientAuth;
- private final boolean _wantClientAuth;
-
- public ServerNetworkTransportConfiguration(
- InetSocketAddress bindingSocketAddress, boolean tcpNoDelay,
- int sendBufferSize, int receiveBufferSize,
- boolean needClientAuth, boolean wantClientAuth)
- {
- _bindingSocketAddress = bindingSocketAddress;
- _tcpNoDelay = tcpNoDelay;
- _sendBufferSize = sendBufferSize;
- _receiveBufferSize = receiveBufferSize;
- _needClientAuth = needClientAuth;
- _wantClientAuth = wantClientAuth;
- }
-
- @Override
- public boolean wantClientAuth()
- {
- return _wantClientAuth;
- }
-
- @Override
- public boolean needClientAuth()
- {
- return _needClientAuth;
- }
-
- @Override
- public Boolean getTcpNoDelay()
- {
- return _tcpNoDelay;
- }
-
- @Override
- public Integer getSendBufferSize()
- {
- return _sendBufferSize;
- }
-
- @Override
- public Integer getReceiveBufferSize()
- {
- return _receiveBufferSize;
- }
-
- @Override
- public InetSocketAddress getAddress()
- {
- return _bindingSocketAddress;
- }
- };
-
public String toString()
{
return getName();
Added: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/TransportProviderFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/TransportProviderFactory.java?rev=1556873&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/TransportProviderFactory.java (added)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/TransportProviderFactory.java Thu Jan 9 16:53:51 2014
@@ -0,0 +1,35 @@
+/*
+ *
+ * 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.server.plugin;
+
+import org.apache.qpid.server.model.Transport;
+import org.apache.qpid.server.transport.TransportProvider;
+
+import java.util.Set;
+
+public interface TransportProviderFactory extends Pluggable
+{
+ Set<Set<Transport>> getSupportedTransports();
+
+ TransportProvider getTransportProvider(Set<Transport> transports);
+
+
+}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java?rev=1556873&r1=1556872&r2=1556873&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java Thu Jan 9 16:53:51 2014
@@ -38,6 +38,7 @@ import org.apache.qpid.server.model.Brok
import org.apache.qpid.server.model.Port;
import org.apache.qpid.server.model.Transport;
import org.apache.qpid.server.plugin.ProtocolEngineCreator;
+import org.apache.qpid.transport.Binary;
import org.apache.qpid.transport.Sender;
import org.apache.qpid.transport.network.NetworkConnection;
import org.apache.qpid.transport.network.security.SSLStatus;
@@ -274,9 +275,9 @@ public class MultiVersionProtocolEngine
public void received(ByteBuffer msg)
{
-
_lastReadTime = System.currentTimeMillis();
- ByteBuffer msgheader = msg.duplicate();
+ ByteBuffer msgheader = msg.duplicate().slice();
+
if(_header.remaining() > msgheader.limit())
{
msg.position(msg.limit());
@@ -329,6 +330,7 @@ public class MultiVersionProtocolEngine
}
}
+
if(newDelegate == null && looksLikeSSL(headerBytes))
{
if(_sslContext != null)
Added: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/AcceptingTransport.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/AcceptingTransport.java?rev=1556873&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/AcceptingTransport.java (added)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/AcceptingTransport.java Thu Jan 9 16:53:51 2014
@@ -0,0 +1,27 @@
+/*
+ *
+ * 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.server.transport;
+
+public interface AcceptingTransport
+{
+ public void start();
+ public void close();
+}
Added: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransport.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransport.java?rev=1556873&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransport.java (added)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransport.java Thu Jan 9 16:53:51 2014
@@ -0,0 +1,140 @@
+/*
+ *
+ * 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.server.transport;
+
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.Port;
+import org.apache.qpid.server.model.Transport;
+import org.apache.qpid.server.protocol.AmqpProtocolVersion;
+import org.apache.qpid.server.protocol.MultiVersionProtocolEngineFactory;
+import org.apache.qpid.transport.NetworkTransportConfiguration;
+import org.apache.qpid.transport.network.IncomingNetworkTransport;
+
+import javax.net.ssl.SSLContext;
+import java.net.InetSocketAddress;
+import java.util.Set;
+
+import static org.apache.qpid.transport.ConnectionSettings.WILDCARD_ADDRESS;
+
+class TCPandSSLTransport implements AcceptingTransport
+{
+ private IncomingNetworkTransport _networkTransport;
+ private Set<Transport> _transports;
+ private SSLContext _sslContext;
+ private InetSocketAddress _bindingSocketAddress;
+ private Port _port;
+ private Set<AmqpProtocolVersion> _supported;
+ private AmqpProtocolVersion _defaultSupportedProtocolReply;
+
+ TCPandSSLTransport(final Set<Transport> transports,
+ final SSLContext sslContext,
+ final Port port,
+ final Set<AmqpProtocolVersion> supported,
+ final AmqpProtocolVersion defaultSupportedProtocolReply)
+ {
+ _transports = transports;
+ _sslContext = sslContext;
+ _port = port;
+ _supported = supported;
+ _defaultSupportedProtocolReply = defaultSupportedProtocolReply;
+ }
+
+ @Override
+ public void start()
+ {
+ String bindingAddress = (String) _port.getAttribute(Port.BINDING_ADDRESS);
+ if (WILDCARD_ADDRESS.equals(bindingAddress))
+ {
+ bindingAddress = null;
+ }
+ Integer port = (Integer) _port.getAttribute(Port.PORT);
+ if ( bindingAddress == null )
+ {
+ _bindingSocketAddress = new InetSocketAddress(port);
+ }
+ else
+ {
+ _bindingSocketAddress = new InetSocketAddress(bindingAddress, port);
+ }
+
+ final NetworkTransportConfiguration settings = new ServerNetworkTransportConfiguration();
+ _networkTransport = org.apache.qpid.transport.network.Transport.getIncomingTransportInstance();
+ final MultiVersionProtocolEngineFactory protocolEngineFactory =
+ new MultiVersionProtocolEngineFactory(
+ _port.getParent(Broker.class), _transports.contains(Transport.TCP) ? _sslContext : null,
+ settings.wantClientAuth(), settings.needClientAuth(),
+ _supported,
+ _defaultSupportedProtocolReply,
+ _port,
+ _transports.contains(Transport.TCP) ? Transport.TCP : Transport.SSL);
+
+ _networkTransport.accept(settings, protocolEngineFactory, _transports.contains(Transport.TCP) ? null : _sslContext);
+ }
+
+ @Override
+ public void close()
+ {
+ _networkTransport.close();
+ }
+
+ class ServerNetworkTransportConfiguration implements NetworkTransportConfiguration
+ {
+ public ServerNetworkTransportConfiguration()
+ {
+ }
+
+ @Override
+ public boolean wantClientAuth()
+ {
+ return (Boolean)_port.getAttribute(Port.WANT_CLIENT_AUTH);
+ }
+
+ @Override
+ public boolean needClientAuth()
+ {
+ return (Boolean)_port.getAttribute(Port.NEED_CLIENT_AUTH);
+ }
+
+ @Override
+ public Boolean getTcpNoDelay()
+ {
+ return (Boolean)_port.getAttribute(Port.TCP_NO_DELAY);
+ }
+
+ @Override
+ public Integer getSendBufferSize()
+ {
+ return (Integer)_port.getAttribute(Port.SEND_BUFFER_SIZE);
+ }
+
+ @Override
+ public Integer getReceiveBufferSize()
+ {
+ return (Integer)_port.getAttribute(Port.RECEIVE_BUFFER_SIZE);
+ }
+
+ @Override
+ public InetSocketAddress getAddress()
+ {
+ return _bindingSocketAddress;
+ }
+ }
+}
Added: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransportProvider.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransportProvider.java?rev=1556873&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransportProvider.java (added)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransportProvider.java Thu Jan 9 16:53:51 2014
@@ -0,0 +1,41 @@
+/*
+ *
+ * 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.server.transport;
+
+import org.apache.qpid.server.model.Port;
+import org.apache.qpid.server.model.Transport;
+import org.apache.qpid.server.protocol.AmqpProtocolVersion;
+
+import javax.net.ssl.SSLContext;
+import java.util.Set;
+
+class TCPandSSLTransportProvider implements TransportProvider
+{
+ @Override
+ public AcceptingTransport createTransport(final Set<Transport> transports,
+ final SSLContext sslContext,
+ final Port port,
+ final Set<AmqpProtocolVersion> supported,
+ final AmqpProtocolVersion defaultSupportedProtocolReply)
+ {
+ return new TCPandSSLTransport(transports, sslContext, port, supported, defaultSupportedProtocolReply);
+ }
+}
Added: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransportProviderFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransportProviderFactory.java?rev=1556873&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransportProviderFactory.java (added)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TCPandSSLTransportProviderFactory.java Thu Jan 9 16:53:51 2014
@@ -0,0 +1,55 @@
+/*
+ *
+ * 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.server.transport;
+
+import org.apache.qpid.server.model.Transport;
+import org.apache.qpid.server.plugin.TransportProviderFactory;
+
+import java.util.Arrays;
+import java.util.EnumSet;
+import java.util.HashSet;
+import java.util.Set;
+
+public class TCPandSSLTransportProviderFactory implements TransportProviderFactory
+{
+
+ private static final String TYPE = "TCPandSSL";
+
+ @Override
+ public Set<Set<Transport>> getSupportedTransports()
+ {
+ return new HashSet<Set<Transport>>(Arrays.asList(EnumSet.of(Transport.TCP),
+ EnumSet.of(Transport.SSL),
+ EnumSet.of(Transport.TCP,Transport.SSL)));
+ }
+
+ @Override
+ public TransportProvider getTransportProvider(final Set<Transport> transports)
+ {
+ return new TCPandSSLTransportProvider();
+ }
+
+ @Override
+ public String getType()
+ {
+ return TYPE;
+ }
+}
Added: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TransportProvider.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TransportProvider.java?rev=1556873&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TransportProvider.java (added)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/transport/TransportProvider.java Thu Jan 9 16:53:51 2014
@@ -0,0 +1,38 @@
+/*
+ *
+ * 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.server.transport;
+
+import org.apache.qpid.server.model.Port;
+import org.apache.qpid.server.model.Transport;
+import org.apache.qpid.server.protocol.AmqpProtocolVersion;
+
+import javax.net.ssl.SSLContext;
+import java.net.InetSocketAddress;
+import java.util.Set;
+
+public interface TransportProvider
+{
+ AcceptingTransport createTransport(Set<Transport> transports,
+ SSLContext sslContext,
+ Port port,
+ Set<AmqpProtocolVersion> supported,
+ AmqpProtocolVersion defaultSupportedProtocolReply);
+}
Copied: qpid/trunk/qpid/java/broker-core/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.TransportProviderFactory (from r1556322, qpid/trunk/qpid/java/broker-core/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.PreferencesProviderFactory)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.TransportProviderFactory?p2=qpid/trunk/qpid/java/broker-core/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.TransportProviderFactory&p1=qpid/trunk/qpid/java/broker-core/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.PreferencesProviderFactory&r1=1556322&r2=1556873&rev=1556873&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.PreferencesProviderFactory (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.TransportProviderFactory Thu Jan 9 16:53:51 2014
@@ -16,4 +16,4 @@
# specific language governing permissions and limitations
# under the License.
#
-org.apache.qpid.server.model.adapter.FileSystemPreferencesProviderFactory
\ No newline at end of file
+org.apache.qpid.server.transport.TCPandSSLTransportProviderFactory
\ No newline at end of file
Copied: qpid/trunk/qpid/java/broker-plugins/websocket/build.xml (from r1556322, qpid/trunk/qpid/java/broker-plugins/memory-store/build.xml)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/websocket/build.xml?p2=qpid/trunk/qpid/java/broker-plugins/websocket/build.xml&p1=qpid/trunk/qpid/java/broker-plugins/memory-store/build.xml&r1=1556322&r2=1556873&rev=1556873&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/memory-store/build.xml (original)
+++ qpid/trunk/qpid/java/broker-plugins/websocket/build.xml Thu Jan 9 16:53:51 2014
@@ -16,7 +16,7 @@
- specific language governing permissions and limitations
- under the License.
-->
-<project name="Qpid Broker-Plugins Memory Store" default="build">
+<project name="Qpid Broker-Plugins Websocket Transport" default="build">
<property name="module.depends" value="common broker-core" />
<property name="module.test.depends" value="qpid-test-utils broker-core/tests" />
@@ -24,7 +24,7 @@
<property name="module.genpom.args" value="-Sqpid-common=provided -Sqpid-broker-core=provided"/>
<property name="broker.plugin" value="true"/>
- <property name="broker-plugins-memory-store.libs" value="" />
+ <property name="broker-plugins-websocket.libs" value="" />
<import file="../../module.xml" />
Added: qpid/trunk/qpid/java/broker-plugins/websocket/pom.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/websocket/pom.xml?rev=1556873&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/websocket/pom.xml (added)
+++ qpid/trunk/qpid/java/broker-plugins/websocket/pom.xml Thu Jan 9 16:53:51 2014
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>qpid-project</artifactId>
+ <groupId>org.apache.qpid</groupId>
+ <version>0.26-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>qpid-broker-plugins-websocket</artifactId>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.qpid</groupId>
+ <artifactId>qpid-broker-core</artifactId>
+ <version>0.26-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-servlet_2.5_spec</artifactId>
+ <version>1.2</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-server</artifactId>
+ <version>7.6.10.v20130312</version>
+ <scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.eclipse.jetty.orbit</groupId>
+ <artifactId>javax.servlet</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-continuation</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-http</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-continuation</artifactId>
+ <version>7.6.10.v20130312</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-security</artifactId>
+ <version>7.6.10.v20130312</version>
+ <scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-server</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-http</artifactId>
+ <version>7.6.10.v20130312</version>
+ <scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-io</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-io</artifactId>
+ <version>7.6.10.v20130312</version>
+ <scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-util</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-servlet</artifactId>
+ <version>7.6.10.v20130312</version>
+ <scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-security</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-util</artifactId>
+ <version>7.6.10.v20130312</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-websocket</artifactId>
+ <version>7.6.10.v20130312</version>
+ <scope>compile</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-util</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-io</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-http</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+
+ <build>
+ </build>
+
+</project>
\ No newline at end of file
Added: qpid/trunk/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketProvider.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketProvider.java?rev=1556873&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketProvider.java (added)
+++ qpid/trunk/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketProvider.java Thu Jan 9 16:53:51 2014
@@ -0,0 +1,294 @@
+/*
+ *
+ * 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.server.transport.websocket;
+
+import org.apache.qpid.protocol.ProtocolEngine;
+import org.apache.qpid.protocol.ProtocolEngineFactory;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.Port;
+import org.apache.qpid.server.model.Transport;
+import org.apache.qpid.server.protocol.AmqpProtocolVersion;
+import org.apache.qpid.server.protocol.MultiVersionProtocolEngineFactory;
+import org.apache.qpid.server.transport.AcceptingTransport;
+import org.apache.qpid.transport.Binary;
+import org.apache.qpid.transport.Sender;
+import org.apache.qpid.transport.network.NetworkConnection;
+import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.nio.SelectChannelConnector;
+import org.eclipse.jetty.server.ssl.SslSocketConnector;
+import org.eclipse.jetty.util.ssl.SslContextFactory;
+import org.eclipse.jetty.websocket.WebSocket;
+import org.eclipse.jetty.websocket.WebSocketHandler;
+
+import javax.net.ssl.SSLContext;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.nio.ByteBuffer;
+import java.security.Principal;
+import java.util.Set;
+
+class WebSocketProvider implements AcceptingTransport
+{
+ public static final String AMQP_WEBSOCKET_SUBPROTOCOL = "AMQPWSB10";
+ private final Transport _transport;
+ private final SSLContext _sslContext;
+ private final Port _port;
+ private final Set<AmqpProtocolVersion> _supported;
+ private final AmqpProtocolVersion _defaultSupportedProtocolReply;
+ private final ProtocolEngineFactory _factory;
+ private Server _server;
+
+ WebSocketProvider(final Transport transport,
+ final SSLContext sslContext,
+ final Port port,
+ final Set<AmqpProtocolVersion> supported,
+ final AmqpProtocolVersion defaultSupportedProtocolReply)
+ {
+ _transport = transport;
+ _sslContext = sslContext;
+ _port = port;
+ _supported = supported;
+ _defaultSupportedProtocolReply = defaultSupportedProtocolReply;
+ _factory = new MultiVersionProtocolEngineFactory(
+ _port.getParent(Broker.class), null,
+ (Boolean)_port.getAttribute(Port.WANT_CLIENT_AUTH),
+ (Boolean)_port.getAttribute(Port.NEED_CLIENT_AUTH),
+ _supported,
+ _defaultSupportedProtocolReply,
+ _port,
+ _transport);
+
+ }
+
+ @Override
+ public void start()
+ {
+ _server = new Server();
+
+ Connector connector = null;
+
+
+ if (_transport == Transport.WS)
+ {
+ connector = new SelectChannelConnector();
+ }
+ else if (_transport == Transport.WSS)
+ {
+ SslContextFactory factory = new SslContextFactory();
+ factory.setSslContext(_sslContext);
+ connector = new SslSocketConnector(factory);
+ }
+ else
+ {
+ throw new IllegalArgumentException("Unexpected transport on port " + _port.getName() + ":" + _transport);
+ }
+ String bindingAddress = _port.getBindingAddress();
+ if(bindingAddress != null && !bindingAddress.trim().equals("") && !bindingAddress.trim().equals("*"))
+ {
+ connector.setHost(bindingAddress.trim());
+ }
+ connector.setPort(_port.getPort());
+ _server.addConnector(connector);
+
+ WebSocketHandler wshandler = new WebSocketHandler()
+ {
+ @Override
+ public WebSocket doWebSocketConnect(final HttpServletRequest request, final String protocol)
+ {
+ SocketAddress remoteAddress = new InetSocketAddress(request.getRemoteHost(), request.getRemotePort());
+ SocketAddress localAddress = new InetSocketAddress(request.getLocalName(), request.getLocalPort());
+ return AMQP_WEBSOCKET_SUBPROTOCOL.equals(protocol) ? new AmqpWebSocket(_transport, localAddress, remoteAddress) : null;
+ }
+ };
+
+ _server.setHandler(wshandler);
+ try
+ {
+ _server.start();
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ @Override
+ public void close()
+ {
+
+ }
+
+ private class AmqpWebSocket implements WebSocket,WebSocket.OnBinaryMessage
+ {
+ private final SocketAddress _localAddress;
+ private final SocketAddress _remoteAddress;
+ private Connection _connection;
+ private final Transport _transport;
+ private ProtocolEngine _engine;
+
+ private AmqpWebSocket(final Transport transport,
+ final SocketAddress localAddress,
+ final SocketAddress remoteAddress)
+ {
+ _transport = transport;
+ _localAddress = localAddress;
+ _remoteAddress = remoteAddress;
+ }
+
+ @Override
+ public void onMessage(final byte[] data, final int offset, final int length)
+ {
+ _engine.received(ByteBuffer.wrap(data, offset, length).slice());
+ }
+
+ @Override
+ public void onOpen(final Connection connection)
+ {
+ _connection = connection;
+
+ _engine = _factory.newProtocolEngine();
+
+ final NetworkConnection connectionWrapper = new ConnectionWrapper(connection, _localAddress, _remoteAddress);
+ _engine.setNetworkConnection(connectionWrapper, connectionWrapper.getSender());
+
+ }
+
+ @Override
+ public void onClose(final int closeCode, final String message)
+ {
+ _engine.closed();
+ }
+ }
+
+ private class ConnectionWrapper implements NetworkConnection, Sender<ByteBuffer>
+ {
+ private final WebSocket.Connection _connection;
+ private final SocketAddress _localAddress;
+ private final SocketAddress _remoteAddress;
+ private Principal _principal;
+ private int _maxWriteIdle;
+ private int _maxReadIdle;
+
+ public ConnectionWrapper(final WebSocket.Connection connection,
+ final SocketAddress localAddress,
+ final SocketAddress remoteAddress)
+ {
+ _connection = connection;
+ _localAddress = localAddress;
+ _remoteAddress = remoteAddress;
+ }
+
+ @Override
+ public Sender<ByteBuffer> getSender()
+ {
+ return this;
+ }
+
+ @Override
+ public void start()
+ {
+
+ }
+
+ @Override
+ public void setIdleTimeout(final int i)
+ {
+
+ }
+
+ @Override
+ public void send(final ByteBuffer msg)
+ {
+ try
+ {
+ _connection.sendMessage(msg.array(),msg.arrayOffset()+msg.position(),msg.remaining());
+ }
+ catch (IOException e)
+ {
+ close();
+ }
+ }
+
+ @Override
+ public void flush()
+ {
+
+ }
+
+ @Override
+ public void close()
+ {
+ _connection.close();
+ }
+
+ @Override
+ public SocketAddress getRemoteAddress()
+ {
+ return _remoteAddress;
+ }
+
+ @Override
+ public SocketAddress getLocalAddress()
+ {
+ return _localAddress;
+ }
+
+ @Override
+ public void setMaxWriteIdle(final int sec)
+ {
+ _maxWriteIdle = sec;
+ }
+
+ @Override
+ public void setMaxReadIdle(final int sec)
+ {
+ _maxReadIdle = sec;
+ }
+
+ @Override
+ public void setPeerPrincipal(final Principal principal)
+ {
+ _principal = principal;
+ }
+
+ @Override
+ public Principal getPeerPrincipal()
+ {
+ return _principal;
+ }
+
+ @Override
+ public int getMaxReadIdle()
+ {
+ return _maxReadIdle;
+ }
+
+ @Override
+ public int getMaxWriteIdle()
+ {
+ return _maxWriteIdle;
+ }
+ }
+}
Added: qpid/trunk/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketTransportProvider.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketTransportProvider.java?rev=1556873&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketTransportProvider.java (added)
+++ qpid/trunk/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketTransportProvider.java Thu Jan 9 16:53:51 2014
@@ -0,0 +1,51 @@
+/*
+ *
+ * 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.server.transport.websocket;
+
+import org.apache.qpid.server.model.Port;
+import org.apache.qpid.server.model.Transport;
+import org.apache.qpid.server.protocol.AmqpProtocolVersion;
+import org.apache.qpid.server.transport.AcceptingTransport;
+import org.apache.qpid.server.transport.TransportProvider;
+
+import javax.net.ssl.SSLContext;
+import java.util.Set;
+
+class WebSocketTransportProvider implements TransportProvider
+{
+ public WebSocketTransportProvider()
+ {
+ }
+
+ @Override
+ public AcceptingTransport createTransport(final Set<Transport> transports,
+ final SSLContext sslContext,
+ final Port port,
+ final Set<AmqpProtocolVersion> supported,
+ final AmqpProtocolVersion defaultSupportedProtocolReply)
+ {
+ return new WebSocketProvider(transports.iterator().next(),
+ sslContext,
+ port,
+ supported,
+ defaultSupportedProtocolReply);
+ }
+}
Added: qpid/trunk/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketTransportProviderFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketTransportProviderFactory.java?rev=1556873&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketTransportProviderFactory.java (added)
+++ qpid/trunk/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketTransportProviderFactory.java Thu Jan 9 16:53:51 2014
@@ -0,0 +1,53 @@
+/*
+ *
+ * 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.server.transport.websocket;
+
+import org.apache.qpid.server.model.Transport;
+import org.apache.qpid.server.plugin.TransportProviderFactory;
+import org.apache.qpid.server.transport.TransportProvider;
+
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.Set;
+
+public class WebSocketTransportProviderFactory implements TransportProviderFactory
+{
+
+ private static final String TYPE = "Websocket";
+
+ @Override
+ public Set<Set<Transport>> getSupportedTransports()
+ {
+ return Collections.singleton((Set<Transport>)EnumSet.of(Transport.WS));
+ }
+
+ @Override
+ public TransportProvider getTransportProvider(final Set<Transport> transports)
+ {
+ return new WebSocketTransportProvider();
+ }
+
+ @Override
+ public String getType()
+ {
+ return TYPE;
+ }
+}
Added: qpid/trunk/qpid/java/broker-plugins/websocket/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.TransportProviderFactory
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/websocket/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.TransportProviderFactory?rev=1556873&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/websocket/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.TransportProviderFactory (added)
+++ qpid/trunk/qpid/java/broker-plugins/websocket/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.TransportProviderFactory Thu Jan 9 16:53:51 2014
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+org.apache.qpid.server.transport.websocket.WebSocketTransportProviderFactory
\ No newline at end of file
Modified: qpid/trunk/qpid/java/build.deps
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/build.deps?rev=1556873&r1=1556872&r2=1556873&view=diff
==============================================================================
--- qpid/trunk/qpid/java/build.deps (original)
+++ qpid/trunk/qpid/java/build.deps Thu Jan 9 16:53:51 2014
@@ -74,6 +74,7 @@ amqp-1-0-common.libs=
amqp-1-0-client.libs=
amqp-1-0-client-example.libs=${commons-cli}
amqp-1-0-client-jms.libs=${geronimo-jms}
+amqp-1-0-client-websocket.libs = ${jetty} ${jetty-continuation} ${jetty-security} ${jetty-http} ${jetty-io} ${jetty-servlet} ${jetty-util} ${servlet-api} ${jetty-websocket}
tools.libs=${commons-configuration.libs} ${log4j}
broker-core.libs=${commons-cli} ${commons-logging} ${log4j} ${slf4j-log4j} \
${xalan} ${derby-db} ${commons-configuration.libs} \
Modified: qpid/trunk/qpid/java/build.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/build.xml?rev=1556873&r1=1556872&r2=1556873&view=diff
==============================================================================
--- qpid/trunk/qpid/java/build.xml (original)
+++ qpid/trunk/qpid/java/build.xml Thu Jan 9 16:53:51 2014
@@ -34,7 +34,7 @@
<findSubProjects name="broker-plugins" dir="broker-plugins" excludes="${broker-plugins-exclude}"/>
<findSubProjects name="client-plugins" dir="client-plugins"/>
- <property name="modules.core" value="qpid-test-utils common management/common amqp-1-0-common broker-core broker client amqp-1-0-client amqp-1-0-client-jms tools"/>
+ <property name="modules.core" value="qpid-test-utils common management/common amqp-1-0-common broker-core broker client amqp-1-0-client amqp-1-0-client-jms amqp-1-0-client-websocket tools"/>
<property name="modules.examples" value="client/example management/example amqp-1-0-client/example amqp-1-0-client-jms/example"/>
<property name="modules.tests" value="systests perftests"/>
<property name="modules.plugin" value="${broker-plugins} ${client-plugins}"/>
Modified: qpid/trunk/qpid/java/ivy.nexus.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/ivy.nexus.xml?rev=1556873&r1=1556872&r2=1556873&view=diff
==============================================================================
--- qpid/trunk/qpid/java/ivy.nexus.xml (original)
+++ qpid/trunk/qpid/java/ivy.nexus.xml Thu Jan 9 16:53:51 2014
@@ -135,6 +135,12 @@
<artifact name="qpid-amqp-1-0-client-jms" type="jar.asc" ext="jar.asc"/>
<artifact name="qpid-amqp-1-0-client-jms" type="source" ext="jar" e:classifier="sources"/>
<artifact name="qpid-amqp-1-0-client-jms" type="source.asc" ext="jar.asc" e:classifier="sources"/>
+ <artifact name="qpid-amqp-1-0-client-websocket" type="pom" ext="pom"/>
+ <artifact name="qpid-amqp-1-0-client-websocket" type="pom.asc" ext="pom.asc"/>
+ <artifact name="qpid-amqp-1-0-client-websocket" type="jar" ext="jar"/>
+ <artifact name="qpid-amqp-1-0-client-websocket" type="jar.asc" ext="jar.asc"/>
+ <artifact name="qpid-amqp-1-0-client-websocket" type="source" ext="jar" e:classifier="sources"/>
+ <artifact name="qpid-amqp-1-0-client-websocket" type="source.asc" ext="jar.asc" e:classifier="sources"/>
<artifact name="qpid-management-common" type="pom" ext="pom"/>
<artifact name="qpid-management-common" type="pom.asc" ext="pom.asc"/>
<artifact name="qpid-management-common" type="jar" ext="jar"/>
Modified: qpid/trunk/qpid/java/module.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/module.xml?rev=1556873&r1=1556872&r2=1556873&view=diff
==============================================================================
--- qpid/trunk/qpid/java/module.xml (original)
+++ qpid/trunk/qpid/java/module.xml Thu Jan 9 16:53:51 2014
@@ -584,8 +584,8 @@
<copylist todir="${build.lib}" dir="${project.root}" files="${module.libs}"/>
</target>
-
- <target name="libs-release" description="copy dependencies into module release">
+
+ <target name="libs-release-basic" description="copy dependencies into module release">
<!-- Copy the module dependencies -->
<echo message="${module.libs}"/>
<copylist todir="${module.release}/lib" dir="${project.root}" files="${module.libs}"/>
@@ -594,10 +594,18 @@
<!-- Copy the jar for this module -->
<copy todir="${module.release}/lib" failonerror="true">
<fileset file="${module.jar}"/>
+ </copy>
+ </target>
+
+ <target name="libs-release-module-depends" description="copy dependencies into module release" unless="release.exclude.module.deps">
+ <copy todir="${module.release}/lib" failonerror="true">
<fileset dir="${build.lib}" includes="${module.depends.jars}"/>
</copy>
</target>
+ <target name="libs-release" description="copy dependencies into module release" depends="libs-release-basic,libs-release-module-depends">
+ </target>
+
<target name="resources" description="copy resources into build tree">
<copy todir="${build}" failonerror="false" flatten="true">
<fileset dir="${basedir}${file.separator}.." includes="${resources}"/>
Modified: qpid/trunk/qpid/java/pom.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/pom.xml?rev=1556873&r1=1556872&r2=1556873&view=diff
==============================================================================
--- qpid/trunk/qpid/java/pom.xml (original)
+++ qpid/trunk/qpid/java/pom.xml Thu Jan 9 16:53:51 2014
@@ -137,6 +137,7 @@
<modules>
<module>amqp-1-0-client</module>
<module>amqp-1-0-client-jms</module>
+ <module>amqp-1-0-client-websocket</module>
<module>amqp-1-0-common</module>
<module>broker</module>
<module>broker-core</module>
@@ -153,6 +154,7 @@
<module>broker-plugins/management-http</module>
<module>broker-plugins/management-jmx</module>
<module>broker-plugins/memory-store</module>
+ <module>broker-plugins/websocket</module>
<module>common</module>
<module>client</module>
<module>management/common</module>
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org