Author: dvaleri
Date: Tue Nov 15 15:53:24 2011
New Revision: 1202260

URL: http://svn.apache.org/viewvc?rev=1202260&view=rev
Log:
[CAMEL-4663] Added support for TLS config using the JSSE Config Utility

Added:
    
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/SslContextParametersCometdProducerConsumerTest.java
      - copied unchanged from r1202247, 
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/SslContextParametersCometdProducerConsumerTest.java
    
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/SslContextParametersInUriCometdProducerConsumerTest.java
      - copied unchanged from r1202247, 
camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/SslContextParametersInUriCometdProducerConsumerTest.java
Modified:
    
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java

Modified: 
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java?rev=1202260&r1=1202259&r2=1202260&view=diff
==============================================================================
--- 
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java
 (original)
+++ 
camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java
 Tue Nov 15 15:53:24 2011
@@ -22,12 +22,17 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.net.ssl.SSLContext;
+
 import org.apache.camel.Endpoint;
+import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.impl.DefaultComponent;
+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.eclipse.jetty.http.ssl.SslContextFactory;
 import org.eclipse.jetty.server.Connector;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.server.handler.ContextHandlerCollection;
@@ -56,6 +61,7 @@ public class CometdComponent extends Def
     private SslSocketConnector sslSocketConnector;
     private SecurityPolicy securityPolicy;
     private List<BayeuxServer.Extension> extensions;
+    private SSLContextParameters sslContextParameters;
 
     class ConnectorRef {
         Connector connector;
@@ -197,16 +203,28 @@ public class CometdComponent extends Def
     }
 
     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.getSslContextFactory().setKeyManagerPassword(sslPassword);
-            
sslSocketConnector.getSslContextFactory().setKeyStorePassword(sslKeyPassword);
-            if (sslKeystore != null) {
-                
sslSocketConnector.getSslContextFactory().setKeyStore(sslKeystore);
+        if (sslContextParameters != null && sslSocketConnector == null) {
+            SslContextFactory sslContextFactory = new 
CometdComponentSslContextFactory();
+            try {
+                
sslContextFactory.setSslContext(sslContextParameters.createSSLContext());
+            } catch (Exception e) {
+               throw new RuntimeCamelException("Error initiating SSLContext.", 
e);
+            }
+            sslSocketConnector = new SslSocketConnector(sslContextFactory);
+        }
+        else {
+            if (sslSocketConnector == null) {
+                sslSocketConnector = new SslSocketConnector();
+                // with default null values, jetty ssl system properties
+                // and console will be read by jetty implementation
+                
sslSocketConnector.getSslContextFactory().setKeyManagerPassword(sslPassword);
+                
sslSocketConnector.getSslContextFactory().setKeyStorePassword(sslKeyPassword);
+                if (sslKeystore != null) {
+                    
sslSocketConnector.getSslContextFactory().setKeyStore(sslKeystore);
+                }
             }
         }
+        
         return sslSocketConnector;
     }
 
@@ -267,6 +285,14 @@ public class CometdComponent extends Def
         }
         extensions.add(extension);
     }
+    
+    public SSLContextParameters getSslContextParameters() {
+        return sslContextParameters;
+    }
+
+    public void setSslContextParameters(SSLContextParameters 
sslContextParameters) {
+        this.sslContextParameters = sslContextParameters;
+    }
 
     protected Server createServer() throws Exception {
         Server server = new Server();
@@ -292,4 +318,14 @@ public class CometdComponent extends Def
     protected void doStart() throws Exception {
         super.doStart();
     }
+    
+    /**
+     * Override the key/trust store check method as it does not account for a 
factory that has
+     * a pre-configured {@link SSLContext}.
+     */
+    private static final class CometdComponentSslContextFactory extends 
SslContextFactory {
+        @Override
+        public void checkKeyStore() {
+        }
+    }
 }


Reply via email to