Repository: camel Updated Branches: refs/heads/master 426922a26 -> 5ae785204
CAMEL-9950: Camel-Websocket: NPE in case minThreads, maxThreads and getThreadPool equals to null Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/57aac0f5 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/57aac0f5 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/57aac0f5 Branch: refs/heads/master Commit: 57aac0f5fd82c8ec6cf522943c6c3a653143688c Parents: 426922a Author: Andrea Cosentino <anco...@gmail.com> Authored: Fri May 6 13:13:10 2016 +0200 Committer: Andrea Cosentino <anco...@gmail.com> Committed: Fri May 6 13:13:10 2016 +0200 ---------------------------------------------------------------------- .../component/websocket/WebsocketComponent.java | 3 + .../WebscoketEndpointConfigurationTest.java | 64 ----------- .../WebsocketEndpointConfigurationTest.java | 107 +++++++++++++++++++ 3 files changed, 110 insertions(+), 64 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/57aac0f5/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketComponent.java ---------------------------------------------------------------------- diff --git a/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketComponent.java b/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketComponent.java index 271b75f..d721020 100644 --- a/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketComponent.java +++ b/components/camel-websocket/src/main/java/org/apache/camel/component/websocket/WebsocketComponent.java @@ -338,6 +338,9 @@ public class WebsocketComponent extends UriEndpointComponent { protected Server createServer() throws Exception { Server server = null; + if (minThreads == null && maxThreads == null && getThreadPool() == null) { + throw new RuntimeCamelException("Error creating JettyWebSocketServer. MinThreads/MaxThreads or ThreadPool must be defined"); + } // configure thread pool if min/max given if (minThreads != null || maxThreads != null) { if (getThreadPool() != null) { http://git-wip-us.apache.org/repos/asf/camel/blob/57aac0f5/components/camel-websocket/src/test/java/org/apache/camel/component/websocket/WebscoketEndpointConfigurationTest.java ---------------------------------------------------------------------- diff --git a/components/camel-websocket/src/test/java/org/apache/camel/component/websocket/WebscoketEndpointConfigurationTest.java b/components/camel-websocket/src/test/java/org/apache/camel/component/websocket/WebscoketEndpointConfigurationTest.java deleted file mode 100644 index 27e01ba..0000000 --- a/components/camel-websocket/src/test/java/org/apache/camel/component/websocket/WebscoketEndpointConfigurationTest.java +++ /dev/null @@ -1,64 +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.camel.component.websocket; - -import org.apache.camel.Consumer; -import org.apache.camel.Processor; -import org.apache.camel.component.websocket.WebsocketComponent.ConnectorRef; -import org.apache.camel.test.AvailablePortFinder; -import org.apache.camel.test.junit4.CamelTestSupport; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.junit.Test; -import org.mockito.Mock; - -public class WebscoketEndpointConfigurationTest extends CamelTestSupport { - - private int port; - - @Mock - private Processor processor; - - @Override - public void setUp() throws Exception { - port = AvailablePortFinder.getNextAvailable(16330); - super.setUp(); - } - - @Test - public void testSetServletInitalparameters() throws Exception { - String uri = "websocket://localhost:" + port + "/bar?bufferSize=65000&maxIdleTime=3000"; - WebsocketEndpoint websocketEndpoint = (WebsocketEndpoint)context.getEndpoint(uri); - WebsocketComponent component = websocketEndpoint.getComponent(); - component.setMinThreads(1); - component.setMaxThreads(20); - Consumer consumer = websocketEndpoint.createConsumer(processor); - component.connect((WebsocketProducerConsumer) consumer); - - assertNotNull(consumer); - assertEquals(WebsocketConsumer.class, consumer.getClass()); - - // just check the servlet initial parameters - ConnectorRef conector = WebsocketComponent.getConnectors().values().iterator().next(); - - ServletContextHandler context = (ServletContextHandler)conector.server.getHandler(); - String buffersize = context.getInitParameter("bufferSize"); - assertEquals("Get a wrong buffersize", "65000", buffersize); - String maxIdleTime = context.getInitParameter("maxIdleTime"); - assertEquals("Get a worng maxIdleTime", "3000", maxIdleTime); - } - -} http://git-wip-us.apache.org/repos/asf/camel/blob/57aac0f5/components/camel-websocket/src/test/java/org/apache/camel/component/websocket/WebsocketEndpointConfigurationTest.java ---------------------------------------------------------------------- diff --git a/components/camel-websocket/src/test/java/org/apache/camel/component/websocket/WebsocketEndpointConfigurationTest.java b/components/camel-websocket/src/test/java/org/apache/camel/component/websocket/WebsocketEndpointConfigurationTest.java new file mode 100644 index 0000000..5e8a59b --- /dev/null +++ b/components/camel-websocket/src/test/java/org/apache/camel/component/websocket/WebsocketEndpointConfigurationTest.java @@ -0,0 +1,107 @@ +/** + * 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.camel.component.websocket; + +import org.apache.camel.Consumer; +import org.apache.camel.Processor; +import org.apache.camel.component.websocket.WebsocketComponent.ConnectorRef; +import org.apache.camel.test.AvailablePortFinder; +import org.apache.camel.test.junit4.CamelTestSupport; +import org.eclipse.jetty.servlet.ServletContextHandler; +import org.eclipse.jetty.util.thread.QueuedThreadPool; +import org.junit.Test; +import org.mockito.Mock; + +public class WebsocketEndpointConfigurationTest extends CamelTestSupport { + + private int port; + + @Mock + private Processor processor; + + @Override + public void setUp() throws Exception { + port = AvailablePortFinder.getNextAvailable(16330); + super.setUp(); + } + + @Test + public void testSetServletInitalparameters() throws Exception { + String uri = "websocket://localhost:" + port + "/bar?bufferSize=65000&maxIdleTime=3000"; + WebsocketEndpoint websocketEndpoint = (WebsocketEndpoint)context.getEndpoint(uri); + WebsocketComponent component = websocketEndpoint.getComponent(); + component.setMinThreads(1); + component.setMaxThreads(20); + Consumer consumer = websocketEndpoint.createConsumer(processor); + component.connect((WebsocketProducerConsumer) consumer); + + assertNotNull(consumer); + assertEquals(WebsocketConsumer.class, consumer.getClass()); + + // just check the servlet initial parameters + ConnectorRef conector = WebsocketComponent.getConnectors().values().iterator().next(); + + ServletContextHandler context = (ServletContextHandler)conector.server.getHandler(); + String buffersize = context.getInitParameter("bufferSize"); + assertEquals("Get a wrong buffersize", "65000", buffersize); + String maxIdleTime = context.getInitParameter("maxIdleTime"); + assertEquals("Get a worng maxIdleTime", "3000", maxIdleTime); + } + + @Test(expected=RuntimeException.class) + public void testSetServletNoMinThreadsNoMaxThreadsNoThreadPool() throws Exception { + String uri = "websocket://localhost:" + port + "/bar?bufferSize=65000&maxIdleTime=3000"; + WebsocketEndpoint websocketEndpoint = (WebsocketEndpoint)context.getEndpoint(uri); + WebsocketComponent component = websocketEndpoint.getComponent(); + Consumer consumer = websocketEndpoint.createConsumer(processor); + component.connect((WebsocketProducerConsumer) consumer); + assertNotNull(consumer); + assertEquals(WebsocketConsumer.class, consumer.getClass()); + + // just check the servlet initial parameters + ConnectorRef conector = WebsocketComponent.getConnectors().values().iterator().next(); + + ServletContextHandler context = (ServletContextHandler)conector.server.getHandler(); + String buffersize = context.getInitParameter("bufferSize"); + assertEquals("Get a wrong buffersize", "65000", buffersize); + String maxIdleTime = context.getInitParameter("maxIdleTime"); + assertEquals("Get a worng maxIdleTime", "3000", maxIdleTime); + } + + @Test + public void testSetServletThreadPool() throws Exception { + String uri = "websocket://localhost:" + port + "/bar?bufferSize=65000&maxIdleTime=3000"; + WebsocketEndpoint websocketEndpoint = (WebsocketEndpoint)context.getEndpoint(uri); + WebsocketComponent component = websocketEndpoint.getComponent(); + QueuedThreadPool qtp = new QueuedThreadPool(20, 1); + component.setThreadPool(qtp); + Consumer consumer = websocketEndpoint.createConsumer(processor); + component.connect((WebsocketProducerConsumer) consumer); + assertNotNull(consumer); + assertEquals(WebsocketConsumer.class, consumer.getClass()); + + // just check the servlet initial parameters + ConnectorRef conector = WebsocketComponent.getConnectors().values().iterator().next(); + + ServletContextHandler context = (ServletContextHandler)conector.server.getHandler(); + String buffersize = context.getInitParameter("bufferSize"); + assertEquals("Get a wrong buffersize", "65000", buffersize); + String maxIdleTime = context.getInitParameter("maxIdleTime"); + assertEquals("Get a worng maxIdleTime", "3000", maxIdleTime); + } + +}