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"/>

Reply via email to