diff options
| author | Alex Rudyy <orudyy@apache.org> | 2015-04-15 09:47:28 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2015-04-15 09:47:28 +0000 |
| commit | 0a0baee45ebcff44635907d457c4ff6810b09c87 (patch) | |
| tree | 8bfb0f9eddbc23cff88af69be80ab3ce7d47011c /qpid/java/broker-plugins/websocket | |
| parent | 54aa3d7070da16ce55c28ccad3f7d0871479e461 (diff) | |
| download | qpid-python-0a0baee45ebcff44635907d457c4ff6810b09c87.tar.gz | |
QPID-6481: Move java source tree to top level
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1673693 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-plugins/websocket')
4 files changed, 0 insertions, 531 deletions
diff --git a/qpid/java/broker-plugins/websocket/pom.xml b/qpid/java/broker-plugins/websocket/pom.xml deleted file mode 100644 index eb92e9da36..0000000000 --- a/qpid/java/broker-plugins/websocket/pom.xml +++ /dev/null @@ -1,77 +0,0 @@ -<?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"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.apache.qpid</groupId> - <artifactId>qpid-java-build</artifactId> - <version>0.32-SNAPSHOT</version> - <relativePath>../../pom.xml</relativePath> - </parent> - - <artifactId>qpid-broker-plugins-websocket</artifactId> - <name>Qpid WebSocket Broker Plug-in</name> - <description>WebSocket broker plug-in</description> - - <dependencies> - <dependency> - <groupId>org.apache.qpid</groupId> - <artifactId>qpid-broker-core</artifactId> - <version>${project.version}</version> - <scope>provided</scope> - </dependency> - - - <dependency> - <groupId>org.apache.qpid</groupId> - <artifactId>qpid-broker-codegen</artifactId> - <version>${project.version}</version> - <optional>true</optional> - </dependency> - - <dependency> - <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-servlet_3.0_spec</artifactId> - <version>${geronimo-servlet-version}</version> - </dependency> - - <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-server</artifactId> - <version>${jetty-version}</version> - <exclusions> - <exclusion> - <groupId>org.eclipse.jetty.orbit</groupId> - <artifactId>javax.servlet</artifactId> - </exclusion> - </exclusions> - </dependency> - - <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-websocket</artifactId> - <version>${jetty-version}</version> - </dependency> - - </dependencies> - - <build> - </build> - -</project> diff --git a/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketProvider.java b/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketProvider.java deleted file mode 100644 index 896a7119f7..0000000000 --- a/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketProvider.java +++ /dev/null @@ -1,345 +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.server.transport.websocket; - -import java.io.IOException; -import java.net.InetSocketAddress; -import java.net.SocketAddress; -import java.nio.ByteBuffer; -import java.security.Principal; -import java.security.cert.X509Certificate; -import java.util.Collections; -import java.util.Set; - -import javax.net.ssl.SSLContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.Request; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.handler.AbstractHandler; -import org.eclipse.jetty.server.nio.SelectChannelConnector; -import org.eclipse.jetty.server.ssl.SslSelectChannelConnector; -import org.eclipse.jetty.util.ssl.SslContextFactory; -import org.eclipse.jetty.websocket.WebSocket; -import org.eclipse.jetty.websocket.WebSocketHandler; - -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.Protocol; -import org.apache.qpid.server.model.Transport; -import org.apache.qpid.server.model.port.AmqpPort; -import org.apache.qpid.server.protocol.MultiVersionProtocolEngineFactory; -import org.apache.qpid.server.transport.AcceptingTransport; -import org.apache.qpid.server.util.ServerScopedRuntimeException; -import org.apache.qpid.transport.ByteBufferSender; -import org.apache.qpid.transport.network.NetworkConnection; -import org.apache.qpid.transport.network.security.ssl.SSLUtil; - -class WebSocketProvider implements AcceptingTransport -{ - public static final String AMQP_WEBSOCKET_SUBPROTOCOL = "AMQPWSB10"; - public static final String X509_CERTIFICATES = "javax.servlet.request.X509Certificate"; - private final Transport _transport; - private final SSLContext _sslContext; - private final AmqpPort<?> _port; - private final Set<Protocol> _supported; - private final Protocol _defaultSupportedProtocolReply; - private final ProtocolEngineFactory _factory; - private Server _server; - - WebSocketProvider(final Transport transport, - final SSLContext sslContext, - final AmqpPort<?> port, - final Set<Protocol> supported, - final Protocol defaultSupportedProtocolReply) - { - _transport = transport; - _sslContext = sslContext; - _port = port; - _supported = supported; - _defaultSupportedProtocolReply = defaultSupportedProtocolReply; - _factory = new MultiVersionProtocolEngineFactory( - _port.getParent(Broker.class), - _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); - factory.addExcludeProtocols(SSLUtil.SSLV3_PROTOCOL); - factory.setNeedClientAuth(_port.getNeedClientAuth()); - factory.setWantClientAuth(_port.getWantClientAuth()); - connector = new SslSelectChannelConnector(factory); - } - else - { - throw new IllegalArgumentException("Unexpected transport on port " + _port.getName() + ":" + _transport); - } - - String bindingAddress = null; - - 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) - { - - Principal principal = null; - if(Collections.list(request.getAttributeNames()).contains(X509_CERTIFICATES)) - { - X509Certificate[] certificates = - (X509Certificate[]) request.getAttribute(X509_CERTIFICATES); - if(certificates != null && certificates.length != 0) - { - - principal = certificates[0].getSubjectDN(); - } - } - - 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, principal) : null; - } - }; - - _server.setHandler(wshandler); - _server.setSendServerVersion(false); - wshandler.setHandler(new AbstractHandler() - { - @Override - public void handle(final String target, - final Request baseRequest, - final HttpServletRequest request, - final HttpServletResponse response) - throws IOException, ServletException - { - if (response.isCommitted() || baseRequest.isHandled()) - { - return; - } - baseRequest.setHandled(true); - response.setStatus(HttpServletResponse.SC_FORBIDDEN); - - - } - }); - try - { - _server.start(); - } - catch(RuntimeException e) - { - throw e; - } - catch (Exception e) - { - throw new ServerScopedRuntimeException(e); - } - - } - - @Override - public void close() - { - - } - - private class AmqpWebSocket implements WebSocket,WebSocket.OnBinaryMessage - { - private final SocketAddress _localAddress; - private final SocketAddress _remoteAddress; - private final Principal _userPrincipal; - private Connection _connection; - private final Transport _transport; - private ProtocolEngine _engine; - - private AmqpWebSocket(final Transport transport, - final SocketAddress localAddress, - final SocketAddress remoteAddress, - final Principal userPrincipal) - { - _transport = transport; - _localAddress = localAddress; - _remoteAddress = remoteAddress; - _userPrincipal = userPrincipal; - } - - @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(_remoteAddress); - - final ConnectionWrapper connectionWrapper = - new ConnectionWrapper(connection, _localAddress, _remoteAddress); - connectionWrapper.setPeerPrincipal(_userPrincipal); - _engine.setNetworkConnection(connectionWrapper, connectionWrapper.getSender()); - - } - - @Override - public void onClose(final int closeCode, final String message) - { - _engine.closed(); - } - } - - private class ConnectionWrapper implements NetworkConnection, ByteBufferSender - { - 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 ByteBufferSender getSender() - { - return this; - } - - @Override - public void start() - { - - } - - @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 Principal getPeerPrincipal() - { - return _principal; - } - - @Override - public int getMaxReadIdle() - { - return _maxReadIdle; - } - - @Override - public int getMaxWriteIdle() - { - return _maxWriteIdle; - } - - void setPeerPrincipal(final Principal peerPrincipal) - { - _principal = peerPrincipal; - } - } -} diff --git a/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketTransportProvider.java b/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketTransportProvider.java deleted file mode 100644 index c7578adb91..0000000000 --- a/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketTransportProvider.java +++ /dev/null @@ -1,52 +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.server.transport.websocket; - -import java.util.Set; - -import javax.net.ssl.SSLContext; - -import org.apache.qpid.server.model.Protocol; -import org.apache.qpid.server.model.Transport; -import org.apache.qpid.server.model.port.AmqpPort; -import org.apache.qpid.server.transport.AcceptingTransport; -import org.apache.qpid.server.transport.TransportProvider; - -class WebSocketTransportProvider implements TransportProvider -{ - public WebSocketTransportProvider() - { - } - - @Override - public AcceptingTransport createTransport(final Set<Transport> transports, - final SSLContext sslContext, - final AmqpPort<?> port, - final Set<Protocol> supported, - final Protocol defaultSupportedProtocolReply) - { - return new WebSocketProvider(transports.iterator().next(), - sslContext, - port, - supported, - defaultSupportedProtocolReply); - } -} diff --git a/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketTransportProviderFactory.java b/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketTransportProviderFactory.java deleted file mode 100644 index e3db7e3686..0000000000 --- a/qpid/java/broker-plugins/websocket/src/main/java/org/apache/qpid/server/transport/websocket/WebSocketTransportProviderFactory.java +++ /dev/null @@ -1,57 +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.server.transport.websocket; - -import java.util.Arrays; -import java.util.EnumSet; -import java.util.HashSet; -import java.util.Set; - -import org.apache.qpid.server.model.Transport; -import org.apache.qpid.server.plugin.PluggableService; -import org.apache.qpid.server.plugin.TransportProviderFactory; -import org.apache.qpid.server.transport.TransportProvider; - -@PluggableService -public class WebSocketTransportProviderFactory implements TransportProviderFactory -{ - - private static final String TYPE = "Websocket"; - - @Override - public Set<Set<Transport>> getSupportedTransports() - { - return new HashSet<Set<Transport>>(Arrays.asList(EnumSet.of(Transport.WS), - EnumSet.of(Transport.WSS))); - } - - @Override - public TransportProvider getTransportProvider(final Set<Transport> transports) - { - return new WebSocketTransportProvider(); - } - - @Override - public String getType() - { - return TYPE; - } -} |
