You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ay...@apache.org on 2014/07/24 11:37:36 UTC
git commit: [CXF-5900] websocket destination in osgi fails to start
after being stopped
Repository: cxf
Updated Branches:
refs/heads/master 994d43eff -> fae074f22
[CXF-5900] websocket destination in osgi fails to start after being stopped
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/fae074f2
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/fae074f2
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/fae074f2
Branch: refs/heads/master
Commit: fae074f2246897b80488406bb80d46237e95271e
Parents: 994d43e
Author: Akitoshi Yoshida <ay...@apache.org>
Authored: Wed Jul 23 23:48:31 2014 +0200
Committer: Akitoshi Yoshida <ay...@apache.org>
Committed: Thu Jul 24 11:37:30 2014 +0200
----------------------------------------------------------------------
.../AtmosphereWebSocketServletDestination.java | 2 +-
.../jetty/JettyWebSocketServletDestination.java | 2 +-
...mosphereWebSocketServletDestinationTest.java | 80 +++++++++++++++++
.../jetty/JettyWebSocketDestinationTest.java | 94 ++++++++++++++++++++
.../JettyWebSocketServletDestinationTest.java | 79 ++++++++++++++++
...RSClientServerWebSocketSpringWebAppTest.java | 11 ++-
6 files changed, 265 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/fae074f2/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/atmosphere/AtmosphereWebSocketServletDestination.java
----------------------------------------------------------------------
diff --git a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/atmosphere/AtmosphereWebSocketServletDestination.java b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/atmosphere/AtmosphereWebSocketServletDestination.java
index 1885924..c8e5fae 100644
--- a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/atmosphere/AtmosphereWebSocketServletDestination.java
+++ b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/atmosphere/AtmosphereWebSocketServletDestination.java
@@ -52,7 +52,7 @@ public class AtmosphereWebSocketServletDestination extends ServletDestination im
public AtmosphereWebSocketServletDestination(Bus bus, DestinationRegistry registry, EndpointInfo ei,
String path) throws IOException {
- super(bus, registry, ei, ei.toString());
+ super(bus, registry, ei, path);
this.framework = new AtmosphereFramework(false, true);
framework.setUseNativeImplementation(false);
http://git-wip-us.apache.org/repos/asf/cxf/blob/fae074f2/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketServletDestination.java
----------------------------------------------------------------------
diff --git a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketServletDestination.java b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketServletDestination.java
index 53bc640..296410b 100644
--- a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketServletDestination.java
+++ b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketServletDestination.java
@@ -43,7 +43,7 @@ public class JettyWebSocketServletDestination extends ServletDestination impleme
public JettyWebSocketServletDestination(Bus bus, DestinationRegistry registry, EndpointInfo ei,
String path) throws IOException {
- super(bus, registry, ei, ei.toString());
+ super(bus, registry, ei, path);
webSocketManager = new JettyWebSocketManager();
webSocketManager.init(this);
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/fae074f2/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/atmosphere/AtmosphereWebSocketServletDestinationTest.java
----------------------------------------------------------------------
diff --git a/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/atmosphere/AtmosphereWebSocketServletDestinationTest.java b/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/atmosphere/AtmosphereWebSocketServletDestinationTest.java
new file mode 100644
index 0000000..f56c51c
--- /dev/null
+++ b/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/atmosphere/AtmosphereWebSocketServletDestinationTest.java
@@ -0,0 +1,80 @@
+/**
+ * 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.cxf.transport.websocket.atmosphere;
+
+import java.io.IOException;
+
+import javax.xml.namespace.QName;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.bus.extension.ExtensionManagerBus;
+import org.apache.cxf.service.model.EndpointInfo;
+import org.apache.cxf.transport.http.DestinationRegistry;
+import org.apache.cxf.transport.http.HTTPTransportFactory;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class AtmosphereWebSocketServletDestinationTest extends Assert {
+ private static final String ENDPOINT_ADDRESS = "/websocket/nada";
+ private static final QName ENDPOINT_NAME = new QName("urn:websocket:probe", "nada");
+
+ @Test
+ public void testRegisteration() throws Exception {
+ Bus bus = new ExtensionManagerBus();
+ DestinationRegistry registry = new HTTPTransportFactory().getRegistry();
+ EndpointInfo endpoint = new EndpointInfo();
+ endpoint.setAddress(ENDPOINT_ADDRESS);
+ endpoint.setName(ENDPOINT_NAME);
+
+ TestAtmosphereWebSocketServletDestination dest =
+ new TestAtmosphereWebSocketServletDestination(bus, registry, endpoint, ENDPOINT_ADDRESS);
+
+ dest.activate();
+
+ assertNotNull(registry.getDestinationForPath(ENDPOINT_ADDRESS));
+
+ dest.deactivate();
+
+ assertNull(registry.getDestinationForPath(ENDPOINT_ADDRESS));
+ }
+
+ private static class TestAtmosphereWebSocketServletDestination extends AtmosphereWebSocketServletDestination {
+
+
+ public TestAtmosphereWebSocketServletDestination(Bus bus, DestinationRegistry registry,
+ EndpointInfo ei, String path) throws IOException {
+ super(bus, registry, ei, path);
+ }
+
+ @Override
+ public void activate() {
+ super.activate();
+ }
+
+ @Override
+ public void deactivate() {
+ super.deactivate();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/cxf/blob/fae074f2/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketDestinationTest.java
----------------------------------------------------------------------
diff --git a/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketDestinationTest.java b/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketDestinationTest.java
new file mode 100644
index 0000000..3c3efb3
--- /dev/null
+++ b/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketDestinationTest.java
@@ -0,0 +1,94 @@
+/**
+ * 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.cxf.transport.websocket.jetty;
+
+import java.io.IOException;
+
+import javax.xml.namespace.QName;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.bus.extension.ExtensionManagerBus;
+import org.apache.cxf.service.model.EndpointInfo;
+import org.apache.cxf.transport.http.DestinationRegistry;
+import org.apache.cxf.transport.http.HTTPTransportFactory;
+import org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine;
+import org.apache.cxf.transport.http_jetty.JettyHTTPServerEngineFactory;
+import org.easymock.EasyMock;
+import org.easymock.IMocksControl;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class JettyWebSocketDestinationTest extends Assert {
+ private static final String ENDPOINT_ADDRESS = "ws://localhost:9001/websocket/nada";
+ private static final QName ENDPOINT_NAME = new QName("urn:websocket:probe", "nada");
+
+ private IMocksControl control;
+
+ @Before
+ public void setUp() {
+ control = EasyMock.createNiceControl();
+ }
+
+ @Test
+ public void testRegisteration() throws Exception {
+ Bus bus = new ExtensionManagerBus();
+ DestinationRegistry registry = new HTTPTransportFactory().getRegistry();
+ EndpointInfo endpoint = new EndpointInfo();
+ endpoint.setAddress(ENDPOINT_ADDRESS);
+ endpoint.setName(ENDPOINT_NAME);
+ JettyHTTPServerEngine engine = EasyMock.createMock(JettyHTTPServerEngine.class);
+
+ control.replay();
+
+ TestJettyWebSocketDestination dest = new TestJettyWebSocketDestination(bus, registry, endpoint, null, engine);
+
+ dest.activate();
+
+ assertNotNull(registry.getDestinationForPath(ENDPOINT_ADDRESS));
+
+ dest.deactivate();
+
+ assertNull(registry.getDestinationForPath(ENDPOINT_ADDRESS));
+ }
+
+ private static class TestJettyWebSocketDestination extends JettyWebSocketDestination {
+ public TestJettyWebSocketDestination(Bus bus, DestinationRegistry registry, EndpointInfo ei,
+ JettyHTTPServerEngineFactory serverEngineFactory,
+ JettyHTTPServerEngine engine) throws IOException {
+ super(bus, registry, ei, serverEngineFactory);
+ this.engine = engine;
+ }
+
+ @Override
+ public void activate() {
+ super.activate();
+ }
+
+ @Override
+ public void deactivate() {
+ super.deactivate();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/cxf/blob/fae074f2/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketServletDestinationTest.java
----------------------------------------------------------------------
diff --git a/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketServletDestinationTest.java b/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketServletDestinationTest.java
new file mode 100644
index 0000000..9e88d64
--- /dev/null
+++ b/rt/transports/websocket/src/test/java/org/apache/cxf/transport/websocket/jetty/JettyWebSocketServletDestinationTest.java
@@ -0,0 +1,79 @@
+/**
+ * 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.cxf.transport.websocket.jetty;
+
+import java.io.IOException;
+
+import javax.xml.namespace.QName;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.bus.extension.ExtensionManagerBus;
+import org.apache.cxf.service.model.EndpointInfo;
+import org.apache.cxf.transport.http.DestinationRegistry;
+import org.apache.cxf.transport.http.HTTPTransportFactory;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ *
+ */
+public class JettyWebSocketServletDestinationTest extends Assert {
+ private static final String ENDPOINT_ADDRESS = "/websocket/nada";
+ private static final QName ENDPOINT_NAME = new QName("urn:websocket:probe", "nada");
+
+ @Test
+ public void testRegisteration() throws Exception {
+ Bus bus = new ExtensionManagerBus();
+ DestinationRegistry registry = new HTTPTransportFactory().getRegistry();
+ EndpointInfo endpoint = new EndpointInfo();
+ endpoint.setAddress(ENDPOINT_ADDRESS);
+ endpoint.setName(ENDPOINT_NAME);
+
+ TestJettyWebSocketServletDestination dest =
+ new TestJettyWebSocketServletDestination(bus, registry, endpoint, ENDPOINT_ADDRESS);
+
+ dest.activate();
+
+ assertNotNull(registry.getDestinationForPath(ENDPOINT_ADDRESS));
+
+ dest.deactivate();
+
+ assertNull(registry.getDestinationForPath(ENDPOINT_ADDRESS));
+ }
+
+ private static class TestJettyWebSocketServletDestination extends JettyWebSocketServletDestination {
+
+ public TestJettyWebSocketServletDestination(Bus bus, DestinationRegistry registry, EndpointInfo ei,
+ String path) throws IOException {
+ super(bus, registry, ei, path);
+ }
+
+ @Override
+ public void activate() {
+ super.activate();
+ }
+
+ @Override
+ public void deactivate() {
+ super.deactivate();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/cxf/blob/fae074f2/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringWebAppTest.java
----------------------------------------------------------------------
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringWebAppTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringWebAppTest.java
index cf0bbab..4b9ce4f 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringWebAppTest.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/JAXRSClientServerWebSocketSpringWebAppTest.java
@@ -30,6 +30,7 @@ import org.eclipse.jetty.server.handler.HandlerCollection;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.webapp.WebAppContext;
+import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -38,9 +39,11 @@ import org.junit.Test;
*/
public class JAXRSClientServerWebSocketSpringWebAppTest extends JAXRSClientServerWebSocketTest {
private static final String PORT = BookServerWebSocket.PORT_WAR;
+ private static org.eclipse.jetty.server.Server server;
+
@BeforeClass
public static void startServers() throws Exception {
- org.eclipse.jetty.server.Server server = new org.eclipse.jetty.server.Server();
+ server = new org.eclipse.jetty.server.Server();
SelectChannelConnector connector = new SelectChannelConnector();
connector.setPort(Integer.parseInt(BookServerWebSocket.PORT_WAR));
@@ -64,6 +67,12 @@ public class JAXRSClientServerWebSocketSpringWebAppTest extends JAXRSClientServe
}
+ @AfterClass
+ public static void stopServers() throws Exception {
+ server.stop();
+ server.destroy();
+ }
+
@Test
public void testGetBookHTTP() throws Exception {
String address = "http://localhost:" + getPort() + getContext() + "/http/web/bookstore/books/1";