You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2009/08/25 05:37:27 UTC

svn commit: r807465 - in /camel/trunk/components/camel-jetty/src: main/java/org/apache/camel/component/jetty/ test/java/org/apache/camel/component/jetty/

Author: ningjiang
Date: Tue Aug 25 03:37:26 2009
New Revision: 807465

URL: http://svn.apache.org/viewvc?rev=807465&view=rev
Log:
CAMEL-1911 support multi https endpoints in jetty component

Modified:
    camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
    camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/ExplicitHttpsRouteTest.java
    camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpsRouteSetupWithSystemPropsTest.java
    camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpsRouteTest.java

Modified: camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java?rev=807465&r1=807464&r2=807465&view=diff
==============================================================================
--- camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java (original)
+++ camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java Tue Aug 25 03:37:26 2009
@@ -60,7 +60,7 @@
     protected String sslKeyPassword;
     protected String sslPassword;
     protected String sslKeystore;
-    protected SslSocketConnector sslSocketConnector;
+    protected Map<Integer, SslSocketConnector> sslSocketConnectors;
 
     class ConnectorRef {
         Server server;
@@ -137,7 +137,7 @@
             if (connectorRef == null) {
                 Connector connector;
                 if ("https".equals(endpoint.getProtocol())) {
-                    connector = getSslSocketConnector();
+                    connector = getSslSocketConnector(endpoint.getPort());
                 } else {
                     connector = new SelectChannelConnector();
                 }
@@ -235,29 +235,47 @@
         return sslKeystore;
     }
 
-    public synchronized SslSocketConnector getSslSocketConnector() {
-        if (sslSocketConnector == null) {
-            sslSocketConnector = new SslSocketConnector();
-            // with default null values, jetty ssl system properties
-            // and console will be read by jetty implementation
-            sslSocketConnector.setPassword(sslPassword);
-            sslSocketConnector.setKeyPassword(sslKeyPassword);
-            if (sslKeystore != null) {
-                sslSocketConnector.setKeystore(sslKeystore);
-            } else {
-                // try the keystore system property as a backup, jetty doesn't seem
-                // to read this property anymore
-                String keystoreProperty = System.getProperty(JETTY_SSL_KEYSTORE);
-                if (keystoreProperty != null) {
-                    sslSocketConnector.setKeystore(keystoreProperty);
-                }
+    public SslSocketConnector getSslSocketConnector(int port) {
+        SslSocketConnector answer = null;
+        if (sslSocketConnectors != null) {
+            answer = sslSocketConnectors.get(port);
+        }
+        if (answer == null) {
+            answer = createSslSocketConnector();
+        } else {
+            // try the keystore system property as a backup, jetty doesn't seem
+            // to read this property anymore
+            String keystoreProperty = System.getProperty(JETTY_SSL_KEYSTORE);
+            if (keystoreProperty != null) {
+                answer.setKeystore(keystoreProperty);
+            }
+
+        }
+        return answer;
+    }
+    
+    public SslSocketConnector createSslSocketConnector() {
+        SslSocketConnector answer = new SslSocketConnector();
+        // with default null values, jetty ssl system properties
+        // and console will be read by jetty implementation
+        answer.setPassword(sslPassword);
+        answer.setKeyPassword(sslKeyPassword);
+        if (sslKeystore != null) {
+            answer.setKeystore(sslKeystore);
+        } else {
+            // try the keystore system property as a backup, jetty doesn't seem
+            // to read this property anymore
+            String keystoreProperty = System.getProperty(JETTY_SSL_KEYSTORE);
+            if (keystoreProperty != null) {
+                answer.setKeystore(keystoreProperty);
             }
         }
-        return sslSocketConnector;
+        
+        return answer;
     }
 
-    public void setSslSocketConnector(SslSocketConnector connector) {
-        sslSocketConnector = connector;
+    public void setSslSocketConnectors(Map <Integer, SslSocketConnector> connectors) {
+        sslSocketConnectors = connectors;
     }
 
     protected CamelServlet createServletForConnector(Server server, Connector connector, List<Handler> handlers) throws Exception {

Modified: camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/ExplicitHttpsRouteTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/ExplicitHttpsRouteTest.java?rev=807465&r1=807464&r2=807465&view=diff
==============================================================================
--- camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/ExplicitHttpsRouteTest.java (original)
+++ camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/ExplicitHttpsRouteTest.java Tue Aug 25 03:37:26 2009
@@ -18,6 +18,8 @@
 
 import java.net.URISyntaxException;
 import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
@@ -25,20 +27,28 @@
 import org.mortbay.jetty.security.SslSocketConnector;
 
 public class ExplicitHttpsRouteTest extends HttpsRouteTest {
+    
+    private SslSocketConnector createSslSocketConnector() throws URISyntaxException {
+        SslSocketConnector sslSocketConnector = new SslSocketConnector();
+        sslSocketConnector.setKeyPassword(pwd);
+        sslSocketConnector.setPassword(pwd);
+        URL keyStoreUrl = this.getClass().getClassLoader().getResource("jsse/localhost.ks");
+        sslSocketConnector.setKeystore(keyStoreUrl.toURI().getPath());
+        sslSocketConnector.setTruststoreType("JKS");
+        return sslSocketConnector;
+    }
 
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() throws URISyntaxException {
-                SslSocketConnector sslSocketConnector = new SslSocketConnector();
-                sslSocketConnector.setKeyPassword(pwd);
-                sslSocketConnector.setPassword(pwd);
-                URL keyStoreUrl = this.getClass().getClassLoader().getResource("jsse/localhost.ks");
-                sslSocketConnector.setKeystore(keyStoreUrl.toURI().getPath());
-                sslSocketConnector.setTruststoreType("JKS");
                 
                 JettyHttpComponent componentJetty = (JettyHttpComponent) context.getComponent("jetty");
-                componentJetty.setSslSocketConnector(sslSocketConnector);
+                Map<Integer, SslSocketConnector> connectors = new HashMap<Integer, SslSocketConnector>();
+                connectors.put(9080, createSslSocketConnector());
+                connectors.put(9090, createSslSocketConnector());
+                
+                componentJetty.setSslSocketConnectors(connectors);
                 
                 from("jetty:https://localhost:9080/test").to("mock:a");
 
@@ -48,6 +58,8 @@
                     }
                 };
                 from("jetty:https://localhost:9080/hello").process(proc);
+                
+                from("jetty:https://localhost:9090/test").to("mock:b");
             }
         };
     }

Modified: camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpsRouteSetupWithSystemPropsTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpsRouteSetupWithSystemPropsTest.java?rev=807465&r1=807464&r2=807465&view=diff
==============================================================================
--- camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpsRouteSetupWithSystemPropsTest.java (original)
+++ camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpsRouteSetupWithSystemPropsTest.java Tue Aug 25 03:37:26 2009
@@ -53,6 +53,8 @@
                     }
                 };
                 from("jetty:https://localhost:9080/hello").process(proc);
+                
+                from("jetty:https://localhost:9090/test").to("mock:b");
             }
         };
     }

Modified: camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpsRouteTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpsRouteTest.java?rev=807465&r1=807464&r2=807465&view=diff
==============================================================================
--- camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpsRouteTest.java (original)
+++ camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpsRouteTest.java Tue Aug 25 03:37:26 2009
@@ -79,13 +79,16 @@
 
     @Test
     public void testEndpoint() throws Exception {
-        MockEndpoint mockEndpoint = resolveMandatoryEndpoint("mock:a", MockEndpoint.class);
-        mockEndpoint.expectedBodiesReceived(expectedBody);
+        MockEndpoint mockEndpointA = resolveMandatoryEndpoint("mock:a", MockEndpoint.class);
+        mockEndpointA.expectedBodiesReceived(expectedBody);
+        MockEndpoint mockEndpointB = resolveMandatoryEndpoint("mock:b", MockEndpoint.class);
+        mockEndpointB.expectedBodiesReceived(expectedBody);
 
         invokeHttpEndpoint();
 
-        mockEndpoint.assertIsSatisfied();
-        List<Exchange> list = mockEndpoint.getReceivedExchanges();
+        mockEndpointA.assertIsSatisfied();
+        mockEndpointB.assertIsSatisfied();
+        List<Exchange> list = mockEndpointA.getReceivedExchanges();
         Exchange exchange = list.get(0);
         assertNotNull("exchange", exchange);
 
@@ -138,6 +141,7 @@
     
     protected void invokeHttpEndpoint() throws IOException {
         template.sendBodyAndHeader("jetty:https://localhost:9080/test", expectedBody, "Content-Type", "application/xml");
+        template.sendBodyAndHeader("jetty:https://localhost:9090/test", expectedBody, "Content-Type", "application/xml");
     }
 
     @Override
@@ -159,6 +163,8 @@
                     }
                 };
                 from("jetty:https://localhost:9080/hello").process(proc);
+                
+                from("jetty:https://localhost:9090/test").to("mock:b");
             }
         };
     }