CAMEL-8637: Upgrade Jetty version to 9.x in Camel-CometD
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/2a2505f6 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/2a2505f6 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/2a2505f6 Branch: refs/heads/master Commit: 2a2505f69c5676d77601342fcbcceaed4850fd5a Parents: 25461f9 Author: Andrea Cosentino <anco...@gmail.com> Authored: Thu Apr 21 14:21:32 2016 +0200 Committer: Andrea Cosentino <anco...@gmail.com> Committed: Thu Apr 21 15:18:40 2016 +0200 ---------------------------------------------------------------------- components/camel-cometd/pom.xml | 12 ++--- .../camel/component/cometd/CometdComponent.java | 53 ++++++++------------ .../camel/component/cometd/CometdConsumer.java | 4 +- .../component/cometd/CometdConsumerTest.java | 10 +++- 4 files changed, 39 insertions(+), 40 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/2a2505f6/components/camel-cometd/pom.xml ---------------------------------------------------------------------- diff --git a/components/camel-cometd/pom.xml b/components/camel-cometd/pom.xml index 82a94f5..814e1c7 100644 --- a/components/camel-cometd/pom.xml +++ b/components/camel-cometd/pom.xml @@ -52,32 +52,32 @@ <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> - <version>${jetty8-version}</version> + <version>${jetty9-version}</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-servlet</artifactId> - <version>${jetty8-version}</version> + <version>${jetty9-version}</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-servlets</artifactId> - <version>${jetty8-version}</version> + <version>${jetty9-version}</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util</artifactId> - <version>${jetty8-version}</version> + <version>${jetty9-version}</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-jmx</artifactId> - <version>${jetty8-version}</version> + <version>${jetty9-version}</version> </dependency> <dependency> <groupId>org.cometd.java</groupId> <artifactId>cometd-java-server</artifactId> - <version>${cometd-java-server}</version> + <version>3.0.9</version> </dependency> <!-- Test Dependencies --> http://git-wip-us.apache.org/repos/asf/camel/blob/2a2505f6/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java ---------------------------------------------------------------------- diff --git a/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java b/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java index 50e3b53..61179c7 100644 --- a/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java +++ b/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java @@ -26,21 +26,18 @@ import javax.net.ssl.SSLContext; import javax.servlet.DispatcherType; import org.apache.camel.Endpoint; -import org.apache.camel.RuntimeCamelException; import org.apache.camel.impl.UriEndpointComponent; import org.apache.camel.util.jsse.SSLContextParameters; import org.cometd.bayeux.server.BayeuxServer; import org.cometd.bayeux.server.SecurityPolicy; import org.cometd.server.BayeuxServerImpl; -import org.cometd.server.CometdServlet; +import org.cometd.server.CometDServlet; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.handler.ContextHandlerCollection; -import org.eclipse.jetty.server.nio.SelectChannelConnector; import org.eclipse.jetty.server.session.HashSessionManager; import org.eclipse.jetty.server.session.SessionHandler; -import org.eclipse.jetty.server.ssl.SslConnector; -import org.eclipse.jetty.server.ssl.SslSelectChannelConnector; import org.eclipse.jetty.servlet.FilterHolder; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; @@ -68,11 +65,11 @@ public class CometdComponent extends UriEndpointComponent { class ConnectorRef { Connector connector; - CometdServlet servlet; + CometDServlet servlet; Server server; int refCount; - public ConnectorRef(Connector connector, CometdServlet servlet, Server server) { + public ConnectorRef(Connector connector, CometDServlet servlet, Server server) { this.connector = connector; this.servlet = servlet; this.server = server; @@ -103,6 +100,7 @@ public class CometdComponent extends UriEndpointComponent { * Connects the URL specified on the endpoint to the specified processor. */ public void connect(CometdProducerConsumer prodcon) throws Exception { + Server server = null; // Make sure that there is a connector for the requested endpoint. CometdEndpoint endpoint = prodcon.getEndpoint(); String connectorKey = endpoint.getProtocol() + ":" + endpoint.getUri().getHost() + ":" + endpoint.getPort(); @@ -110,11 +108,12 @@ public class CometdComponent extends UriEndpointComponent { synchronized (connectors) { ConnectorRef connectorRef = connectors.get(connectorKey); if (connectorRef == null) { - Connector connector; + ServerConnector connector; + server = createServer(); if ("cometds".equals(endpoint.getProtocol())) { - connector = getSslSocketConnector(); + connector = getSslSocketConnector(server); } else { - connector = new SelectChannelConnector(); + connector = new ServerConnector(server); } connector.setPort(endpoint.getPort()); connector.setHost(endpoint.getUri().getHost()); @@ -122,10 +121,10 @@ public class CometdComponent extends UriEndpointComponent { LOG.warn("You use localhost interface! It means that no external connections will be available." + " Don't you want to use 0.0.0.0 instead (all network interfaces)?"); } - Server server = createServer(); + server.addConnector(connector); - CometdServlet servlet = createServletForConnector(server, connector, endpoint); + CometDServlet servlet = createServletForConnector(server, connector, endpoint); connectorRef = new ConnectorRef(connector, servlet, server); server.start(); @@ -175,11 +174,10 @@ public class CometdComponent extends UriEndpointComponent { } } - protected CometdServlet createServletForConnector(Server server, Connector connector, CometdEndpoint endpoint) throws Exception { - CometdServlet servlet = new CometdServlet(); + protected CometDServlet createServletForConnector(Server server, Connector connector, CometdEndpoint endpoint) throws Exception { + CometDServlet servlet = new CometDServlet(); ServletContextHandler context = new ServletContextHandler(server, "/", ServletContextHandler.NO_SECURITY | ServletContextHandler.NO_SESSIONS); - context.setConnectorNames(new String[]{connector.getName()}); ServletHolder holder = new ServletHolder(); holder.setServlet(servlet); @@ -218,29 +216,22 @@ public class CometdComponent extends UriEndpointComponent { return servlet; } - protected SslConnector getSslSocketConnector() { - SslSelectChannelConnector sslSocketConnector = null; + protected ServerConnector getSslSocketConnector(Server server) throws Exception { + ServerConnector sslSocketConnector = null; if (sslContextParameters != null) { SslContextFactory sslContextFactory = new CometdComponentSslContextFactory(); - try { - sslContextFactory.setSslContext(sslContextParameters.createSSLContext()); - } catch (Exception e) { - throw new RuntimeCamelException("Error initiating SSLContext.", e); - } - sslSocketConnector = new SslSelectChannelConnector(sslContextFactory); + sslContextFactory.setSslContext(sslContextParameters.createSSLContext()); + sslSocketConnector = new ServerConnector(server, sslContextFactory); } else { - - sslSocketConnector = new SslSelectChannelConnector(); - // with default null values, jetty ssl system properties - // and console will be read by jetty implementation - sslSocketConnector.getSslContextFactory().setKeyManagerPassword(sslPassword); - sslSocketConnector.getSslContextFactory().setKeyStorePassword(sslKeyPassword); + SslContextFactory sslContextFactory = new SslContextFactory(); + sslContextFactory.setKeyStorePassword(sslKeyPassword); + sslContextFactory.setKeyManagerPassword(sslPassword); if (sslKeystore != null) { - sslSocketConnector.getSslContextFactory().setKeyStorePath(sslKeystore); + sslContextFactory.setKeyStorePath(sslKeystore); } + sslSocketConnector = new ServerConnector(server, sslContextFactory); } - return sslSocketConnector; } http://git-wip-us.apache.org/repos/asf/camel/blob/2a2505f6/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConsumer.java ---------------------------------------------------------------------- diff --git a/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConsumer.java b/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConsumer.java index 3ddf9f6..175715a 100644 --- a/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConsumer.java +++ b/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdConsumer.java @@ -75,12 +75,14 @@ public class CometdConsumer extends DefaultConsumer implements CometdProducerCon private final CometdEndpoint endpoint; private final CometdConsumer consumer; private final CometdBinding binding; + private final String channelName; public ConsumerService(String channel, BayeuxServerImpl bayeux, CometdConsumer consumer) { super(bayeux, channel); this.endpoint = consumer.getEndpoint(); this.binding = createBinding(bayeux); this.consumer = consumer; + this.channelName = channel; addService(channel, "push"); } @@ -89,7 +91,7 @@ public class CometdConsumer extends DefaultConsumer implements CometdProducerCon return new CometdBinding(bayeux, enableSessionHeaders); } - public void push(ServerSession remote, String channelName, ServerMessage cometdMessage, String messageId) throws Exception { + public void push(ServerSession remote, ServerMessage cometdMessage) throws Exception { Object data = null; Message message = binding.createCamelMessage(remote, cometdMessage, data); http://git-wip-us.apache.org/repos/asf/camel/blob/2a2505f6/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdConsumerTest.java ---------------------------------------------------------------------- diff --git a/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdConsumerTest.java b/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdConsumerTest.java index 9e5c6ba..8cd8bd2 100644 --- a/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdConsumerTest.java +++ b/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/CometdConsumerTest.java @@ -23,6 +23,7 @@ import org.apache.camel.Exchange; import org.apache.camel.Message; import org.apache.camel.Processor; import org.apache.camel.component.cometd.CometdConsumer.ConsumerService; +import org.cometd.bayeux.MarkedReference; import org.cometd.bayeux.server.LocalSession; import org.cometd.bayeux.server.ServerChannel; import org.cometd.bayeux.server.ServerMessage; @@ -38,6 +39,7 @@ import org.mockito.runners.MockitoJUnitRunner; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.anyString; +import static org.mockito.Matchers.anyObject; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -62,12 +64,16 @@ public class CometdConsumerTest { private ServerChannel serverChannel; @Mock private ServerSession remote; + @Mock + private MarkedReference<ServerChannel> markedReferenceServerChannel; @Before public void before() { when(bayeuxServerImpl.newLocalSession(anyString())).thenReturn(localSession); - when(bayeuxServerImpl.getLogger()).thenReturn(logger); + //when(bayeuxServerImpl.get).thenReturn(logger); when(bayeuxServerImpl.getChannel(anyString())).thenReturn(serverChannel); + when(bayeuxServerImpl.createChannelIfAbsent(anyString())).thenReturn(markedReferenceServerChannel); + when(markedReferenceServerChannel.getReference()).thenReturn(serverChannel); testObj = new CometdConsumer(endpoint, processor); testObj.setBayeux(bayeuxServerImpl); @@ -104,7 +110,7 @@ public class CometdConsumerTest { ArgumentCaptor<Message> transferredMessage = ArgumentCaptor.forClass(Message.class); // act - testObj.getConsumerService().push(remote, "channelName", cometdMessage, "messageId"); + testObj.getConsumerService().push(remote, cometdMessage); // verify verify(exchange).setIn(transferredMessage.capture());