Repository: camel Updated Branches: refs/heads/master 87e3249f2 -> 044c3ad19
CAMEL-8996: Polished camel-undertow a bit Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/cdd64e10 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/cdd64e10 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/cdd64e10 Branch: refs/heads/master Commit: cdd64e10a6c761ccfba4b6d605c53df1250bb9eb Parents: 87e3249 Author: Claus Ibsen <davscl...@apache.org> Authored: Fri Jul 24 09:07:55 2015 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Fri Jul 24 09:07:55 2015 +0200 ---------------------------------------------------------------------- .../component/undertow/UndertowComponent.java | 44 ++------------------ .../component/undertow/UndertowEndpoint.java | 24 ++++++++--- .../component/undertow/UndertowHeaderTest.java | 21 ++++++++-- .../undertow/UndertowProducerTest.java | 4 -- .../src/test/resources/SpringTest.xml | 2 +- 5 files changed, 42 insertions(+), 53 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/cdd64e10/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowComponent.java ---------------------------------------------------------------------- diff --git a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowComponent.java b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowComponent.java index e1ffb30..d037eae 100644 --- a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowComponent.java +++ b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowComponent.java @@ -19,7 +19,6 @@ package org.apache.camel.component.undertow; import java.net.URI; import java.util.HashMap; import java.util.Map; -import javax.net.ssl.SSLContext; import io.undertow.Handlers; import io.undertow.Undertow; @@ -31,13 +30,11 @@ import org.apache.camel.Processor; import org.apache.camel.component.undertow.handlers.HttpCamelHandler; import org.apache.camel.component.undertow.handlers.NotFoundHandler; import org.apache.camel.impl.UriEndpointComponent; -import org.apache.camel.spi.HeaderFilterStrategy; import org.apache.camel.spi.RestConfiguration; import org.apache.camel.spi.RestConsumerFactory; import org.apache.camel.util.FileUtil; import org.apache.camel.util.URISupport; import org.apache.camel.util.UnsafeUriCharactersEncoder; -import org.apache.camel.util.jsse.SSLContextParameters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,55 +44,21 @@ import org.slf4j.LoggerFactory; public class UndertowComponent extends UriEndpointComponent implements RestConsumerFactory { private static final Logger LOG = LoggerFactory.getLogger(UndertowEndpoint.class); - private UndertowHttpBinding undertowHttpBinding; - private Map<Integer, UndertowRegistry> serversRegistry = new HashMap<Integer, UndertowRegistry>(); + private UndertowHttpBinding undertowHttpBinding = new DefaultUndertowHttpBinding(); + private final Map<Integer, UndertowRegistry> serversRegistry = new HashMap<Integer, UndertowRegistry>(); public UndertowComponent() { super(UndertowEndpoint.class); - this.undertowHttpBinding = new DefaultUndertowHttpBinding(); } @Override protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception { - //extract parameters from URI - Boolean matchOnUriPrefix = getAndRemoveParameter(parameters, "matchOnUriPrefix", Boolean.class); - HeaderFilterStrategy headerFilterStrategy = resolveAndRemoveReferenceParameter(parameters, "headerFilterStrategy", HeaderFilterStrategy.class); - SSLContextParameters sslContextParameters = resolveAndRemoveReferenceParameter(parameters, "sslContextParametersRef", SSLContextParameters.class); - Boolean throwExceptionOnFailure = getAndRemoveParameter(parameters, "throwExceptionOnFailure", Boolean.class); - Boolean transferException = getAndRemoveParameter(parameters, "transferException", Boolean.class); - String httpMethodRestrict = getAndRemoveParameter(parameters, "httpMethodRestrict", String.class); - String address = remaining; URI httpUri = new URI(UnsafeUriCharactersEncoder.encodeHttpURI(address)); URI endpointUri = URISupport.createRemainingURI(httpUri, parameters); UndertowEndpoint endpoint = new UndertowEndpoint(endpointUri.toString(), this, httpUri); - - if (endpoint.getUndertowHttpBinding() == null) { - endpoint.setUndertowHttpBinding(undertowHttpBinding); - } - - //set parameters if they exists in URI - if (httpMethodRestrict != null) { - endpoint.setHttpMethodRestrict(httpMethodRestrict); - } - if (matchOnUriPrefix != null) { - endpoint.setMatchOnUriPrefix(matchOnUriPrefix); - } - if (headerFilterStrategy != null) { - endpoint.setHeaderFilterStrategy(headerFilterStrategy); - } - if (sslContextParameters != null) { - SSLContext sslContext = sslContextParameters.createSSLContext(); - endpoint.setSslContext(sslContext); - } - if (throwExceptionOnFailure != null) { - endpoint.setThrowExceptionOnFailure(throwExceptionOnFailure); - } - if (transferException != null) { - endpoint.setTransferException(transferException); - } - + endpoint.setUndertowHttpBinding(undertowHttpBinding); setProperties(endpoint, parameters); return endpoint; } @@ -162,6 +125,7 @@ public class UndertowComponent extends UriEndpointComponent implements RestConsu @Override protected void doStop() throws Exception { super.doStop(); + serversRegistry.clear(); } protected Undertow rebuildServer(UndertowRegistry registy) { http://git-wip-us.apache.org/repos/asf/camel/blob/cdd64e10/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowEndpoint.java ---------------------------------------------------------------------- diff --git a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowEndpoint.java b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowEndpoint.java index c1b5d54..1c25225 100644 --- a/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowEndpoint.java +++ b/components/camel-undertow/src/main/java/org/apache/camel/component/undertow/UndertowEndpoint.java @@ -33,6 +33,7 @@ import org.apache.camel.spi.HeaderFilterStrategyAware; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; import org.apache.camel.spi.UriPath; +import org.apache.camel.util.jsse.SSLContextParameters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,6 +46,7 @@ public class UndertowEndpoint extends DefaultEndpoint implements HeaderFilterStr private static final Logger LOG = LoggerFactory.getLogger(UndertowEndpoint.class); private UndertowComponent component; + private SSLContext sslContext; @UriPath private URI httpURI; @@ -53,7 +55,7 @@ public class UndertowEndpoint extends DefaultEndpoint implements HeaderFilterStr @UriParam private HeaderFilterStrategy headerFilterStrategy; @UriParam - private SSLContext sslContext; + private SSLContextParameters sslContextParameters; @UriParam(label = "consumer") private String httpMethodRestrict; @UriParam(label = "consumer", defaultValue = "true") @@ -107,6 +109,10 @@ public class UndertowEndpoint extends DefaultEndpoint implements HeaderFilterStr return exchange; } + public SSLContext getSslContext() { + return sslContext; + } + public URI getHttpURI() { return httpURI; } @@ -152,15 +158,15 @@ public class UndertowEndpoint extends DefaultEndpoint implements HeaderFilterStr undertowHttpBinding.setHeaderFilterStrategy(headerFilterStrategy); } - public SSLContext getSslContext() { - return sslContext; + public SSLContextParameters getSslContextParameters() { + return sslContextParameters; } /** * To configure security using SSLContextParameters */ - public void setSslContext(SSLContext sslContext) { - this.sslContext = sslContext; + public void setSslContextParameters(SSLContextParameters sslContextParameters) { + this.sslContextParameters = sslContextParameters; } public Boolean getThrowExceptionOnFailure() { @@ -198,4 +204,12 @@ public class UndertowEndpoint extends DefaultEndpoint implements HeaderFilterStr this.undertowHttpBinding = undertowHttpBinding; } + @Override + protected void doStart() throws Exception { + super.doStart(); + + if (sslContextParameters != null) { + sslContext = sslContextParameters.createSSLContext(); + } + } } http://git-wip-us.apache.org/repos/asf/camel/blob/cdd64e10/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHeaderTest.java ---------------------------------------------------------------------- diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHeaderTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHeaderTest.java index b360c8a..3485da0 100644 --- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHeaderTest.java +++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowHeaderTest.java @@ -24,15 +24,30 @@ public class UndertowHeaderTest extends BaseUndertowTest { @Test public void testHttpHeaders() throws Exception { - getMockEndpoint("mock:input").expectedBodiesReceived("Hello World"); + getMockEndpoint("mock:input").expectedMessageCount(1); getMockEndpoint("mock:input").expectedHeaderReceived("param", "true"); - getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_METHOD, "POST"); + getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_METHOD, "GET"); getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_URL, "http://localhost:" + getPort() + "/headers"); getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_URI, "/headers"); getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_QUERY, "param=true"); getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_PATH, "/headers"); - String out = template.requestBody("http://localhost:" + getPort() + "/headers?param=true", "Hello World", String.class); + String out = template.requestBody("http://localhost:" + getPort() + "/headers?param=true", null, String.class); + assertEquals("Bye World", out); + + assertMockEndpointsSatisfied(); + } + + @Test + public void testHttpHeadersPost() throws Exception { + getMockEndpoint("mock:input").expectedBodiesReceived("Hello World"); + getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_METHOD, "POST"); + getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_URL, "http://localhost:" + getPort() + "/headers"); + getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_URI, "/headers"); + getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_QUERY, ""); + getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_PATH, "/headers"); + + String out = template.requestBody("http://localhost:" + getPort() + "/headers", "Hello World", String.class); assertEquals("Bye World", out); assertMockEndpointsSatisfied(); http://git-wip-us.apache.org/repos/asf/camel/blob/cdd64e10/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowProducerTest.java ---------------------------------------------------------------------- diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowProducerTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowProducerTest.java index 2fcd01c..bda4767 100644 --- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowProducerTest.java +++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowProducerTest.java @@ -18,12 +18,10 @@ package org.apache.camel.component.undertow; import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; -import org.junit.Ignore; import org.junit.Test; public class UndertowProducerTest extends BaseUndertowTest { - @Ignore @Test public void testHttpSimple() throws Exception { getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_METHOD, "GET"); @@ -34,7 +32,6 @@ public class UndertowProducerTest extends BaseUndertowTest { assertMockEndpointsSatisfied(); } - @Ignore @Test public void testHttpSimpleHeader() throws Exception { getMockEndpoint("mock:input").expectedHeaderReceived(Exchange.HTTP_METHOD, "POST"); @@ -45,7 +42,6 @@ public class UndertowProducerTest extends BaseUndertowTest { assertMockEndpointsSatisfied(); } - @Ignore @Test public void testHttpSimpleHeaderAndBody() throws Exception { http://git-wip-us.apache.org/repos/asf/camel/blob/cdd64e10/components/camel-undertow/src/test/resources/SpringTest.xml ---------------------------------------------------------------------- diff --git a/components/camel-undertow/src/test/resources/SpringTest.xml b/components/camel-undertow/src/test/resources/SpringTest.xml index e6baed9..eeee003 100644 --- a/components/camel-undertow/src/test/resources/SpringTest.xml +++ b/components/camel-undertow/src/test/resources/SpringTest.xml @@ -47,7 +47,7 @@ </bean> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> - <endpoint id="input" uri="undertow:https://localhost:#{dynaPort}/spring?sslContextParametersRef=sslContextParameters"/> + <endpoint id="input" uri="undertow:https://localhost:#{dynaPort}/spring?sslContextParameters=#sslContextParameters"/> <route> <from ref="input"/>