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 2011/04/25 04:52:46 UTC

svn commit: r1096398 [3/4] - in /camel/trunk: camel-core/src/main/java/org/apache/camel/util/jsse/ camel-core/src/test/java/org/apache/camel/util/jsse/ camel-core/src/test/resources/org/apache/camel/util/ camel-core/src/test/resources/org/apache/camel/...

Added: camel/trunk/camel-core/src/test/java/org/apache/camel/util/jsse/SSLContextParametersTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/util/jsse/SSLContextParametersTest.java?rev=1096398&view=auto
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/util/jsse/SSLContextParametersTest.java (added)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/util/jsse/SSLContextParametersTest.java Mon Apr 25 02:52:44 2011
@@ -0,0 +1,653 @@
+/**
+ * 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.util.jsse;
+
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLEngine;
+import javax.net.ssl.SSLServerSocket;
+import javax.net.ssl.SSLSocket;
+
+import junit.framework.TestCase;
+
+public class SSLContextParametersTest extends TestCase {
+    
+    public void testServerParametersClientAuthentication() throws Exception {
+        SSLContext controlContext = SSLContext.getInstance("TLS");
+        controlContext.init(null, null, null);
+        SSLEngine controlEngine = controlContext.createSSLEngine();
+        SSLServerSocket controlServerSocket = (SSLServerSocket) controlContext.getServerSocketFactory().createServerSocket(); 
+        
+        
+        SSLContextParameters scp = new SSLContextParameters();
+        SSLContextServerParameters scsp = new SSLContextServerParameters();
+        
+        SSLContext context = scp.createSSLContext();
+        scp.setServerParameters(scsp);
+        
+        SSLEngine engine = context.createSSLEngine();
+        SSLServerSocket serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertEquals(controlServerSocket.getWantClientAuth(), serverSocket.getWantClientAuth());
+        assertEquals(controlServerSocket.getNeedClientAuth(), serverSocket.getNeedClientAuth());
+        assertEquals(controlEngine.getWantClientAuth(), engine.getWantClientAuth());
+        assertEquals(controlEngine.getNeedClientAuth(), engine.getNeedClientAuth());
+        
+        // ClientAuthentication - NONE
+        scsp.setClientAuthentication(ClientAuthentication.NONE);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertEquals(false, serverSocket.getWantClientAuth());
+        assertEquals(false, serverSocket.getNeedClientAuth());
+        assertEquals(false, engine.getWantClientAuth());
+        assertEquals(false, engine.getNeedClientAuth());
+        
+        // ClientAuthentication - WANT
+        scsp.setClientAuthentication(ClientAuthentication.WANT);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertEquals(true, serverSocket.getWantClientAuth());
+        assertEquals(false, serverSocket.getNeedClientAuth());
+        assertEquals(true, engine.getWantClientAuth());
+        assertEquals(false, engine.getNeedClientAuth());
+        
+        // ClientAuthentication - REQUIRE
+        scsp.setClientAuthentication(ClientAuthentication.REQUIRE);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertEquals(false, serverSocket.getWantClientAuth());
+        assertEquals(true, serverSocket.getNeedClientAuth());
+        assertEquals(false, engine.getWantClientAuth());
+        assertEquals(true, engine.getNeedClientAuth());
+    }
+    
+    public void testServerParameters() throws Exception {
+        SSLContext controlContext = SSLContext.getInstance("TLS");
+        controlContext.init(null, null, null);
+        SSLEngine controlEngine = controlContext.createSSLEngine();
+        SSLSocket controlSocket = (SSLSocket) controlContext.getSocketFactory().createSocket();
+        SSLServerSocket controlServerSocket = (SSLServerSocket) controlContext.getServerSocketFactory().createServerSocket(); 
+        
+        
+        SSLContextParameters scp = new SSLContextParameters();
+        SSLContextServerParameters scsp = new SSLContextServerParameters();
+        
+        SSLContext context = scp.createSSLContext();
+        scp.setServerParameters(scsp);
+        
+        SSLEngine engine = context.createSSLEngine();
+        SSLSocket socket = (SSLSocket) context.getSocketFactory().createSocket();
+        SSLServerSocket serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledCipherSuites(), engine.getEnabledCipherSuites()));
+        assertTrue(Arrays.equals(controlSocket.getEnabledCipherSuites(), socket.getEnabledCipherSuites()));
+        assertTrue(Arrays.equals(this.getDefaultCipherSuiteIncludes(controlServerSocket.getSupportedCipherSuites()), serverSocket.getEnabledCipherSuites()));
+        assertEquals(controlServerSocket.getWantClientAuth(), serverSocket.getWantClientAuth());
+        assertEquals(controlServerSocket.getNeedClientAuth(), serverSocket.getNeedClientAuth());
+        
+        // Csp on server params
+        CipherSuitesParameters csp = new CipherSuitesParameters();
+        scsp.setCipherSuites(csp);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledCipherSuites(), engine.getEnabledCipherSuites()));
+        assertTrue(Arrays.equals(controlSocket.getEnabledCipherSuites(), socket.getEnabledCipherSuites()));
+        assertEquals(0, serverSocket.getEnabledCipherSuites().length);
+        
+        // Cipher suites filter on server params
+        FilterParameters filter = new FilterParameters();
+        filter.getExclude().add(".*");
+        scsp.setCipherSuites(null);
+        scsp.setCipherSuitesFilter(filter);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledCipherSuites(), engine.getEnabledCipherSuites()));
+        assertTrue(Arrays.equals(controlSocket.getEnabledCipherSuites(), socket.getEnabledCipherSuites()));
+        assertEquals(0, serverSocket.getEnabledCipherSuites().length);
+        
+        // Csp on server overrides cipher suites filter on server
+        filter.getInclude().add(".*");
+        filter.getExclude().clear();
+        scsp.setCipherSuites(csp);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledCipherSuites(), engine.getEnabledCipherSuites()));
+        assertTrue(Arrays.equals(controlSocket.getEnabledCipherSuites(), socket.getEnabledCipherSuites()));
+        assertEquals(0, serverSocket.getEnabledCipherSuites().length);
+        
+        // Sspp on server params
+        SecureSocketProtocolsParameters sspp = new SecureSocketProtocolsParameters();
+        scsp.setSecureSocketProtocols(sspp);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledProtocols(), engine.getEnabledProtocols()));
+        assertTrue(Arrays.equals(controlSocket.getEnabledProtocols(), socket.getEnabledProtocols()));
+        assertEquals(0, serverSocket.getEnabledProtocols().length);
+        
+        // Secure socket protocols filter on client params
+        filter = new FilterParameters();
+        filter.getExclude().add(".*");
+        scsp.setSecureSocketProtocols(null);
+        scsp.setSecureSocketProtocolsFilter(filter);
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledProtocols(), engine.getEnabledProtocols()));
+        assertTrue(Arrays.equals(controlSocket.getEnabledProtocols(), socket.getEnabledProtocols()));
+        assertEquals(0, serverSocket.getEnabledProtocols().length);
+        
+        // Sspp on client params overrides  secure socket protocols filter on client
+        filter.getInclude().add(".*");
+        filter.getExclude().clear();
+        scsp.setSecureSocketProtocols(sspp);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledProtocols(), engine.getEnabledProtocols()));
+        assertTrue(Arrays.equals(controlSocket.getEnabledProtocols(), socket.getEnabledProtocols()));
+        assertEquals(0, serverSocket.getEnabledProtocols().length);
+        
+        // Server session timeout only affects server session configuration
+        scsp.setSessionTimeout(12345);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertEquals(controlContext.getClientSessionContext().getSessionTimeout(), context.getClientSessionContext().getSessionTimeout());
+        assertEquals(12345, context.getServerSessionContext().getSessionTimeout());
+    }
+    
+    public void testClientParameters() throws Exception {
+        SSLContext controlContext = SSLContext.getInstance("TLS");
+        controlContext.init(null, null, null);
+        SSLEngine controlEngine = controlContext.createSSLEngine();
+        SSLSocket controlSocket = (SSLSocket) controlContext.getSocketFactory().createSocket();
+        SSLServerSocket controlServerSocket = (SSLServerSocket) controlContext.getServerSocketFactory().createServerSocket(); 
+        
+        
+        SSLContextParameters scp = new SSLContextParameters();
+        SSLContextClientParameters sccp = new SSLContextClientParameters();
+        
+        SSLContext context = scp.createSSLContext();
+        scp.setClientParameters(sccp);
+        
+        SSLEngine engine = context.createSSLEngine();
+        SSLSocket socket = (SSLSocket) context.getSocketFactory().createSocket();
+        SSLServerSocket serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledCipherSuites(), engine.getEnabledCipherSuites()));
+        assertTrue(Arrays.equals(controlSocket.getEnabledCipherSuites(), socket.getEnabledCipherSuites()));
+        assertTrue(Arrays.equals(this.getDefaultCipherSuiteIncludes(controlServerSocket.getSupportedCipherSuites()), serverSocket.getEnabledCipherSuites()));
+        
+        // Csp on client params
+        CipherSuitesParameters csp = new CipherSuitesParameters();
+        sccp.setCipherSuites(csp);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledCipherSuites(), engine.getEnabledCipherSuites()));
+        assertEquals(0, socket.getEnabledCipherSuites().length);
+        assertTrue(Arrays.equals(this.getDefaultCipherSuiteIncludes(controlServerSocket.getSupportedCipherSuites()), serverSocket.getEnabledCipherSuites()));
+        
+        // Cipher suites filter on client params
+        FilterParameters filter = new FilterParameters();
+        filter.getExclude().add(".*");
+        sccp.setCipherSuites(null);
+        sccp.setCipherSuitesFilter(filter);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledCipherSuites(), engine.getEnabledCipherSuites()));
+        assertEquals(0, socket.getEnabledCipherSuites().length);
+        assertTrue(Arrays.equals(this.getDefaultCipherSuiteIncludes(controlServerSocket.getSupportedCipherSuites()), serverSocket.getEnabledCipherSuites()));
+        
+        // Csp on client overrides cipher suites filter on client
+        filter.getInclude().add(".*");
+        filter.getExclude().clear();
+        sccp.setCipherSuites(csp);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledCipherSuites(), engine.getEnabledCipherSuites()));
+        assertEquals(0, socket.getEnabledCipherSuites().length);
+        assertTrue(Arrays.equals(this.getDefaultCipherSuiteIncludes(controlServerSocket.getSupportedCipherSuites()), serverSocket.getEnabledCipherSuites()));
+        
+        // Sspp on client params
+        SecureSocketProtocolsParameters sspp = new SecureSocketProtocolsParameters();
+        sccp.setSecureSocketProtocols(sspp);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledProtocols(), engine.getEnabledProtocols()));
+        assertEquals(0, socket.getEnabledProtocols().length);
+        assertTrue(Arrays.equals(controlServerSocket.getEnabledProtocols(), serverSocket.getEnabledProtocols()));
+        
+        // Secure socket protocols filter on client params
+        filter = new FilterParameters();
+        filter.getExclude().add(".*");
+        sccp.setSecureSocketProtocols(null);
+        sccp.setSecureSocketProtocolsFilter(filter);
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledProtocols(), engine.getEnabledProtocols()));
+        assertEquals(0, socket.getEnabledProtocols().length);
+        assertTrue(Arrays.equals(controlServerSocket.getEnabledProtocols(), serverSocket.getEnabledProtocols()));
+        
+        // Sspp on client params overrides  secure socket protocols filter on client
+        filter.getInclude().add(".*");
+        filter.getExclude().clear();
+        sccp.setSecureSocketProtocols(sspp);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledProtocols(), engine.getEnabledProtocols()));
+        assertEquals(0, socket.getEnabledProtocols().length);
+        assertTrue(Arrays.equals(controlServerSocket.getEnabledProtocols(), serverSocket.getEnabledProtocols()));      
+        
+        // Client session timeout only affects client session configuration
+        sccp.setSessionTimeout(12345);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertEquals(controlContext.getServerSessionContext().getSessionTimeout(), context.getServerSessionContext().getSessionTimeout());
+        assertEquals(12345, context.getClientSessionContext().getSessionTimeout());
+    }
+    
+    public void testCipherSuites() throws Exception {
+        SSLContext controlContext = SSLContext.getInstance("TLS");
+        controlContext.init(null, null, null);
+        SSLEngine controlEngine = controlContext.createSSLEngine();
+        SSLSocket controlSocket = (SSLSocket) controlContext.getSocketFactory().createSocket();
+        SSLServerSocket controlServerSocket = (SSLServerSocket) controlContext.getServerSocketFactory().createServerSocket(); 
+        
+        // default
+        SSLContextParameters scp = new SSLContextParameters();
+        
+        SSLContext context = scp.createSSLContext();
+        
+        SSLEngine engine = context.createSSLEngine();
+        SSLSocket socket = (SSLSocket) context.getSocketFactory().createSocket();
+        SSLServerSocket serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledCipherSuites(), engine.getEnabledCipherSuites()));
+        assertTrue(Arrays.equals(controlSocket.getEnabledCipherSuites(), socket.getEnabledCipherSuites()));
+        assertTrue(Arrays.equals(this.getDefaultCipherSuiteIncludes(controlServerSocket.getSupportedCipherSuites()), serverSocket.getEnabledCipherSuites()));
+        
+        
+        // empty csp
+        
+        CipherSuitesParameters csp = new CipherSuitesParameters();
+        scp.setCipherSuites(csp);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertEquals(0, engine.getEnabledCipherSuites().length);
+        assertEquals(0, socket.getEnabledCipherSuites().length);
+        assertEquals(0, serverSocket.getEnabledCipherSuites().length);
+        
+        // explicit csp
+        
+        csp.getCipherSuite().add(controlEngine.getEnabledCipherSuites()[0]);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertEquals(1, engine.getEnabledCipherSuites().length);
+        assertEquals(controlEngine.getEnabledCipherSuites()[0], engine.getEnabledCipherSuites()[0]);
+        assertEquals(1, socket.getEnabledCipherSuites().length);
+        assertEquals(controlEngine.getEnabledCipherSuites()[0], socket.getEnabledCipherSuites()[0]);
+        assertEquals(1, serverSocket.getEnabledCipherSuites().length);
+        assertEquals(controlEngine.getEnabledCipherSuites()[0], serverSocket.getEnabledCipherSuites()[0]);
+
+        // explicit csp overrides filter
+        
+        FilterParameters filter = new FilterParameters();
+        filter.getInclude().add(".*");
+        scp.setCipherSuitesFilter(filter);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertEquals(1, engine.getEnabledCipherSuites().length);
+        assertEquals(controlEngine.getEnabledCipherSuites()[0], engine.getEnabledCipherSuites()[0]);
+        assertEquals(1, socket.getEnabledCipherSuites().length);
+        assertEquals(controlEngine.getEnabledCipherSuites()[0], socket.getEnabledCipherSuites()[0]);
+        assertEquals(1, socket.getEnabledCipherSuites().length);
+        assertEquals(controlEngine.getEnabledCipherSuites()[0], serverSocket.getEnabledCipherSuites()[0]);
+    }
+    
+    public void testCipherSuitesFilter() throws Exception {
+        SSLContext controlContext = SSLContext.getInstance("TLS");
+        controlContext.init(null, null, null);
+        SSLEngine controlEngine = controlContext.createSSLEngine();
+        SSLSocket controlSocket = (SSLSocket) controlContext.getSocketFactory().createSocket();
+        SSLServerSocket controlServerSocket = (SSLServerSocket) controlContext.getServerSocketFactory().createServerSocket(); 
+        
+        // default
+        SSLContextParameters scp = new SSLContextParameters();
+        
+        SSLContext context = scp.createSSLContext();
+        
+        SSLEngine engine = context.createSSLEngine();
+        SSLSocket socket = (SSLSocket) context.getSocketFactory().createSocket();
+        SSLServerSocket serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledProtocols(), engine.getEnabledProtocols()));
+        assertTrue(Arrays.equals(controlSocket.getEnabledProtocols(), socket.getEnabledProtocols()));
+        assertTrue(Arrays.equals(controlServerSocket.getEnabledProtocols(), serverSocket.getEnabledProtocols()));
+        
+        // empty filter
+        
+        FilterParameters filter = new FilterParameters();
+        scp.setSecureSocketProtocolsFilter(filter);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertEquals(0, engine.getEnabledProtocols().length);
+        assertEquals(0, socket.getEnabledProtocols().length);
+        assertEquals(0, serverSocket.getEnabledProtocols().length);
+        
+        // explicit filter
+        
+        filter.getInclude().add(".*");
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledProtocols(), engine.getEnabledProtocols()));
+        assertTrue(Arrays.equals(controlSocket.getEnabledProtocols(), socket.getEnabledProtocols()));
+        assertTrue(Arrays.equals(controlServerSocket.getEnabledProtocols(), serverSocket.getEnabledProtocols()));
+        
+        // explicit filter with excludes (excludes overrides)
+        filter.getExclude().add(".*");
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertEquals(0, engine.getEnabledProtocols().length);
+        assertEquals(0, socket.getEnabledProtocols().length);
+        assertEquals(0, serverSocket.getEnabledProtocols().length);
+        
+        // explicit filter single include
+        
+        filter.getInclude().clear();
+        filter.getExclude().clear();
+        filter.getInclude().add("TLS.*");
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(engine.getEnabledProtocols().length >= 1);
+        assertStartsWith(engine.getEnabledProtocols(), "TLS");
+        assertTrue(socket.getEnabledProtocols().length >= 1);
+        assertStartsWith(socket.getEnabledProtocols(), "TLS");
+        assertTrue(socket.getEnabledProtocols().length >= 1);
+        assertStartsWith(serverSocket.getEnabledProtocols(), "TLS");        
+    }
+
+    public void testSecureSocketProtocols() throws Exception {
+        SSLContext controlContext = SSLContext.getInstance("TLS");
+        controlContext.init(null, null, null);
+        SSLEngine controlEngine = controlContext.createSSLEngine();
+        SSLSocket controlSocket = (SSLSocket) controlContext.getSocketFactory().createSocket();
+        SSLServerSocket controlServerSocket = (SSLServerSocket) controlContext.getServerSocketFactory().createServerSocket(); 
+        
+        // default
+        SSLContextParameters scp = new SSLContextParameters();
+        
+        SSLContext context = scp.createSSLContext();
+        
+        SSLEngine engine = context.createSSLEngine();
+        SSLSocket socket = (SSLSocket) context.getSocketFactory().createSocket();
+        SSLServerSocket serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledProtocols(), engine.getEnabledProtocols()));
+        assertTrue(Arrays.equals(controlSocket.getEnabledProtocols(), socket.getEnabledProtocols()));
+        assertTrue(Arrays.equals(controlServerSocket.getEnabledProtocols(), serverSocket.getEnabledProtocols()));
+        
+        // empty sspp
+        
+        SecureSocketProtocolsParameters sspp = new SecureSocketProtocolsParameters();
+        scp.setSecureSocketProtocols(sspp);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertEquals(0, engine.getEnabledProtocols().length);
+        assertEquals(0, socket.getEnabledProtocols().length);
+        assertEquals(0, serverSocket.getEnabledProtocols().length);
+        
+        // explicit sspp
+        
+        sspp.getSecureSocketProtocol().add("TLSv1");
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertEquals(1, engine.getEnabledProtocols().length);
+        assertEquals("TLSv1", engine.getEnabledProtocols()[0]);
+        assertEquals(1, socket.getEnabledProtocols().length);
+        assertEquals("TLSv1", socket.getEnabledProtocols()[0]);
+        assertEquals(1, serverSocket.getEnabledProtocols().length);
+        assertEquals("TLSv1", serverSocket.getEnabledProtocols()[0]);
+        
+        // explicit sspp overrides filter
+        
+        FilterParameters filter = new FilterParameters();
+        filter.getInclude().add(".*");
+        scp.setSecureSocketProtocolsFilter(filter);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertEquals(1, engine.getEnabledProtocols().length);
+        assertEquals("TLSv1", engine.getEnabledProtocols()[0]);
+        assertEquals(1, socket.getEnabledProtocols().length);
+        assertEquals("TLSv1", socket.getEnabledProtocols()[0]);
+        assertEquals(1, socket.getEnabledProtocols().length);
+        assertEquals("TLSv1", serverSocket.getEnabledProtocols()[0]);        
+    }
+    
+    public void testSecureSocketProtocolsFilter() throws Exception {
+        SSLContext controlContext = SSLContext.getInstance("TLS");
+        controlContext.init(null, null, null);
+        SSLEngine controlEngine = controlContext.createSSLEngine();
+        SSLSocket controlSocket = (SSLSocket) controlContext.getSocketFactory().createSocket();
+        SSLServerSocket controlServerSocket = (SSLServerSocket) controlContext.getServerSocketFactory().createServerSocket(); 
+        
+        // default
+        SSLContextParameters scp = new SSLContextParameters();
+        
+        SSLContext context = scp.createSSLContext();
+        
+        SSLEngine engine = context.createSSLEngine();
+        SSLSocket socket = (SSLSocket) context.getSocketFactory().createSocket();
+        SSLServerSocket serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledProtocols(), engine.getEnabledProtocols()));
+        assertTrue(Arrays.equals(controlSocket.getEnabledProtocols(), socket.getEnabledProtocols()));
+        assertTrue(Arrays.equals(controlServerSocket.getEnabledProtocols(), serverSocket.getEnabledProtocols()));
+        
+        // empty filter
+        
+        FilterParameters filter = new FilterParameters();
+        scp.setSecureSocketProtocolsFilter(filter);
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertEquals(0, engine.getEnabledProtocols().length);
+        assertEquals(0, socket.getEnabledProtocols().length);
+        assertEquals(0, serverSocket.getEnabledProtocols().length);
+        
+        // explicit filter
+        
+        filter.getInclude().add(".*");
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(Arrays.equals(controlEngine.getEnabledProtocols(), engine.getEnabledProtocols()));
+        assertTrue(Arrays.equals(controlSocket.getEnabledProtocols(), socket.getEnabledProtocols()));
+        assertTrue(Arrays.equals(controlServerSocket.getEnabledProtocols(), serverSocket.getEnabledProtocols()));
+        
+        // explicit filter with excludes (excludes overrides)
+        filter.getExclude().add(".*");
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertEquals(0, engine.getEnabledProtocols().length);
+        assertEquals(0, socket.getEnabledProtocols().length);
+        assertEquals(0, serverSocket.getEnabledProtocols().length);
+        
+        // explicit filter single include
+        
+        filter.getInclude().clear();
+        filter.getExclude().clear();
+        filter.getInclude().add("TLS.*");
+        context = scp.createSSLContext();
+        engine = context.createSSLEngine();
+        socket = (SSLSocket) context.getSocketFactory().createSocket();
+        serverSocket = (SSLServerSocket) context.getServerSocketFactory().createServerSocket();
+        
+        assertTrue(engine.getEnabledProtocols().length >= 1);
+        assertStartsWith(engine.getEnabledProtocols(), "TLS");
+        assertTrue(socket.getEnabledProtocols().length >= 1);
+        assertStartsWith(socket.getEnabledProtocols(), "TLS");
+        assertTrue(socket.getEnabledProtocols().length >= 1);
+        assertStartsWith(serverSocket.getEnabledProtocols(), "TLS");        
+    }
+    
+    public void testSessionTimeout() throws Exception {
+        SSLContextParameters scp = new SSLContextParameters();
+        scp.setSessionTimeout(60);
+        
+        SSLContext context = scp.createSSLContext();
+        
+        assertEquals(60, context.getClientSessionContext().getSessionTimeout());
+        assertEquals(60, context.getServerSessionContext().getSessionTimeout());
+        
+        scp.setSessionTimeout(0);
+        
+        context = scp.createSSLContext();
+        
+        assertEquals(0, context.getClientSessionContext().getSessionTimeout());
+        assertEquals(0, context.getServerSessionContext().getSessionTimeout());
+        
+    }
+    
+    public void testDefaultSecureSocketProtocol() throws Exception {
+        SSLContextParameters scp = new SSLContextParameters();
+        
+        SSLContext context = scp.createSSLContext();
+        
+        assertEquals("TLS", context.getProtocol());
+    }
+    
+    public void testSecureSocketProtocol() throws Exception {
+        SSLContextParameters scp = new SSLContextParameters();
+        scp.setSecureSocketProtocol("SSLv3");
+        
+        SSLContext context = scp.createSSLContext();
+        
+        assertEquals("SSLv3", context.getProtocol());
+    }
+    
+    public void testProvider() throws Exception {
+        SSLContextParameters scp = new SSLContextParameters();
+        scp.createSSLContext();
+        
+        SSLContext context = scp.createSSLContext();
+        
+        SSLContext defaultContext = SSLContext.getDefault();
+        
+        assertEquals(defaultContext.getProvider().getName(), context.getProvider().getName());
+    }
+    
+    protected String[] getDefaultCipherSuiteIncludes(String[] availableCipherSuites) {
+        List<String> enabled = new LinkedList<String>();
+        
+        for (String string : availableCipherSuites) {
+            if (!string.contains("_anon_") && !string.contains("_NULL_")) {
+                enabled.add(string);
+            }
+        }
+        
+        return enabled.toArray(new String[enabled.size()]);
+    }
+    
+    protected void assertStartsWith(String[] values, String prefix) {
+        for (String value : values) {
+            assertTrue(value.startsWith(prefix));
+        }
+    }
+}

Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/util/jsse/SSLContextParametersTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/util/jsse/SSLContextParametersTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/camel-core/src/test/java/org/apache/camel/util/jsse/SecureRandomParametersTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/util/jsse/SecureRandomParametersTest.java?rev=1096398&view=auto
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/util/jsse/SecureRandomParametersTest.java (added)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/util/jsse/SecureRandomParametersTest.java Mon Apr 25 02:52:44 2011
@@ -0,0 +1,80 @@
+/**
+ * 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.util.jsse;
+
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.SecureRandom;
+
+import junit.framework.TestCase;
+
+public class SecureRandomParametersTest extends TestCase {
+    
+    public void testCreateSecureRandom() throws Exception {
+        
+        if (this.canTest()) {
+            SecureRandomParameters srp = new SecureRandomParameters();
+            srp.setAlgorithm("SHA1PRNG");
+            
+            SecureRandom sr = srp.createSecureRandom();
+            assertEquals("SHA1PRNG", sr.getAlgorithm());
+            
+            String providerName = sr.getProvider().getName();
+            srp.setProvider(providerName);
+            
+            sr = srp.createSecureRandom();
+            assertEquals("SHA1PRNG", sr.getAlgorithm());
+            assertEquals(providerName, sr.getProvider().getName());
+        }
+    }
+    
+    public void testExplicitInvalidAlgorithm() throws Exception {
+        SecureRandomParameters srp = new SecureRandomParameters();
+        srp.setAlgorithm("fsafsadfasdfasdf");
+        
+        try {
+            srp.createSecureRandom();
+            fail();
+        } catch (NoSuchAlgorithmException e) {
+            // expected
+        }
+    }
+    
+    public void testExplicitInvalidProvider() throws Exception {
+        if (this.canTest()) {
+            SecureRandomParameters srp = new SecureRandomParameters();
+            srp.setAlgorithm("SHA1PRNG");
+            srp.setProvider("asdfsadfasdfasdf");
+            
+            try {
+                srp.createSecureRandom();
+                fail();
+            } catch (NoSuchProviderException e) {
+                // expected
+            }
+        }
+    }
+    
+    protected boolean canTest() {
+        try {
+            SecureRandom.getInstance("SHA1PRNG");
+            return true;
+        } catch (NoSuchAlgorithmException e) {
+            return false;
+        }
+    }
+}

Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/util/jsse/SecureRandomParametersTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/util/jsse/SecureRandomParametersTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/camel-core/src/test/java/org/apache/camel/util/jsse/TrustManagersParametersTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/util/jsse/TrustManagersParametersTest.java?rev=1096398&view=auto
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/util/jsse/TrustManagersParametersTest.java (added)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/util/jsse/TrustManagersParametersTest.java Mon Apr 25 02:52:44 2011
@@ -0,0 +1,101 @@
+/**
+ * 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.util.jsse;
+
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+
+import javax.net.ssl.KeyManagerFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+import junit.framework.TestCase;
+
+public class TrustManagersParametersTest extends TestCase {
+    
+    protected KeyStoreParameters createMinimalKeyStoreParameters() {
+        KeyStoreParameters ksp = new KeyStoreParameters();
+        
+        ksp.setResource("org/apache/camel/util/jsse/localhost.ks");
+        ksp.setPassword("changeit");
+        
+        return ksp;
+    }
+    
+    protected TrustManagersParameters createMinimalTrustManagersParameters() {
+        TrustManagersParameters tmp = new TrustManagersParameters();
+        tmp.setKeyStore(this.createMinimalKeyStoreParameters());
+        
+        
+        return tmp;
+    }
+    
+    public void testCreateTrustManagers() throws Exception {
+        TrustManagersParameters tmp = this.createMinimalTrustManagersParameters();
+        
+        TrustManager[] tms = tmp.createTrustManagers();
+        validateTrustManagers(tms);
+    }
+    
+    public void testExplicitAlgorithm() throws Exception {
+        TrustManagersParameters tmp = this.createMinimalTrustManagersParameters();
+        tmp.setAlgorithm(KeyManagerFactory.getDefaultAlgorithm());
+        
+        TrustManager[] tms = tmp.createTrustManagers();
+        validateTrustManagers(tms);
+    }
+    
+    public void testExplicitProvider() throws Exception {
+        TrustManagersParameters tmp = this.createMinimalTrustManagersParameters();
+        tmp.setProvider(KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm())
+                        .getProvider().getName());
+        
+        TrustManager[] tms = tmp.createTrustManagers();
+        validateTrustManagers(tms);
+    }
+    
+    public void testInvalidExplicitAlgorithm() throws Exception {
+        TrustManagersParameters tmp = this.createMinimalTrustManagersParameters();
+        tmp.setAlgorithm("dsfsdfsdfdsfdsF");
+        
+        try {
+            tmp.createTrustManagers();
+            fail();
+        } catch (NoSuchAlgorithmException e) {
+            // expected
+        }
+    }
+    
+    public void testInvalidExplicitProvider() throws Exception {
+        TrustManagersParameters tmp = this.createMinimalTrustManagersParameters();
+        tmp.setProvider("dsfsdfsdfdsfdsF");
+        
+        try {
+            tmp.createTrustManagers();
+            fail();
+        } catch (NoSuchProviderException e) {
+            // expected
+        }
+    }
+
+    protected void validateTrustManagers(TrustManager[] tms) {
+        assertEquals(1, tms.length);
+        assertTrue(tms[0] instanceof X509TrustManager);
+        X509TrustManager tm = (X509TrustManager) tms[0];
+        assertNotNull(tm.getAcceptedIssuers());
+    }
+}

Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/util/jsse/TrustManagersParametersTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/util/jsse/TrustManagersParametersTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/camel-core/src/test/resources/org/apache/camel/util/jsse/localhost.ks
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/resources/org/apache/camel/util/jsse/localhost.ks?rev=1096398&view=auto
==============================================================================
Binary file - no diff available.

Propchange: camel/trunk/camel-core/src/test/resources/org/apache/camel/util/jsse/localhost.ks
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractBaseSSLContextParametersFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractBaseSSLContextParametersFactoryBean.java?rev=1096398&view=auto
==============================================================================
--- camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractBaseSSLContextParametersFactoryBean.java (added)
+++ camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractBaseSSLContextParametersFactoryBean.java Mon Apr 25 02:52:44 2011
@@ -0,0 +1,136 @@
+/**
+ * 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.core.xml.util.jsse;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.apache.camel.util.jsse.BaseSSLContextParameters;
+import org.apache.camel.util.jsse.CipherSuitesParameters;
+import org.apache.camel.util.jsse.FilterParameters;
+import org.apache.camel.util.jsse.SecureSocketProtocolsParameters;
+
+@XmlTransient
+public abstract class AbstractBaseSSLContextParametersFactoryBean<T extends BaseSSLContextParameters> extends AbstractJsseUtilFactoryBean<T> {
+    
+    private CipherSuitesParametersDefinition cipherSuites;
+    
+    private FilterParametersDefinition cipherSuitesFilter;
+    
+    private SecureSocketProtocolsParametersDefinition secureSocketProtocols;
+    
+    private FilterParametersDefinition secureSocketProtocolsFilter;
+    
+    @XmlAttribute
+    private Integer sessionTimeout;
+    
+    @XmlTransient
+    private T instance;
+    
+    @Override
+    public final T getObject() throws Exception {
+        if (this.isSingleton()) {
+            if (instance == null) { 
+                instance = createInstanceInternal();   
+            }
+            
+            return instance;
+        } else {
+            return createInstanceInternal();
+        } 
+    }
+    
+    protected abstract T createInstance() throws Exception;
+    
+    private T createInstanceInternal() throws Exception {
+        T newInstance = createInstance();
+        
+        if (cipherSuites != null) {
+            CipherSuitesParameters cipherSuitesInstance = new CipherSuitesParameters();
+            cipherSuitesInstance.getCipherSuite().addAll(cipherSuites.getCipherSuite());
+            newInstance.setCipherSuites(cipherSuitesInstance);
+        }
+        
+        if (cipherSuitesFilter != null) {
+            newInstance.setCipherSuitesFilter(createFilterParameters(cipherSuitesFilter));
+        }
+        
+        if (secureSocketProtocols != null) {
+            SecureSocketProtocolsParameters secureSocketProtocolsInstance = new SecureSocketProtocolsParameters();
+            secureSocketProtocolsInstance.getSecureSocketProtocol().addAll(secureSocketProtocols.getSecureSocketProtocol());
+            newInstance.setSecureSocketProtocols(secureSocketProtocolsInstance);
+        }
+        
+        if (secureSocketProtocolsFilter != null) {
+            newInstance.setSecureSocketProtocolsFilter(createFilterParameters(secureSocketProtocolsFilter));
+        }
+        
+        if (sessionTimeout != null) {
+            newInstance.setSessionTimeout(sessionTimeout);
+        }
+        
+        return newInstance;
+    }
+    
+    private FilterParameters createFilterParameters(FilterParametersDefinition definition) {
+        FilterParameters filter = new FilterParameters();
+        filter.getInclude().addAll(definition.getInclude());
+        filter.getExclude().addAll(definition.getExclude());
+        
+        return filter;
+    }
+
+    public CipherSuitesParametersDefinition getCipherSuites() {
+        return cipherSuites;
+    }
+
+    public void setCipherSuites(CipherSuitesParametersDefinition cipherSuites) {
+        this.cipherSuites = cipherSuites;
+    }
+
+    public FilterParametersDefinition getCipherSuitesFilter() {
+        return cipherSuitesFilter;
+    }
+
+    public void setCipherSuitesFilter(FilterParametersDefinition cipherSuitesFilter) {
+        this.cipherSuitesFilter = cipherSuitesFilter;
+    }
+
+    public SecureSocketProtocolsParametersDefinition getSecureSocketProtocols() {
+        return secureSocketProtocols;
+    }
+
+    public void setSecureSocketProtocols(SecureSocketProtocolsParametersDefinition secureSocketProtocols) {
+        this.secureSocketProtocols = secureSocketProtocols;
+    }
+
+    public FilterParametersDefinition getSecureSocketProtocolsFilter() {
+        return secureSocketProtocolsFilter;
+    }
+
+    public void setSecureSocketProtocolsFilter(FilterParametersDefinition secureSocketProtocolsFilter) {
+        this.secureSocketProtocolsFilter = secureSocketProtocolsFilter;
+    }
+
+    public Integer getSessionTimeout() {
+        return sessionTimeout;
+    }
+
+    public void setSessionTimeout(Integer sessionTimeout) {
+        this.sessionTimeout = sessionTimeout;
+    }
+}

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractBaseSSLContextParametersFactoryBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractBaseSSLContextParametersFactoryBean.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractJsseUtilFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractJsseUtilFactoryBean.java?rev=1096398&view=auto
==============================================================================
--- camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractJsseUtilFactoryBean.java (added)
+++ camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractJsseUtilFactoryBean.java Mon Apr 25 02:52:44 2011
@@ -0,0 +1,30 @@
+/**
+ * 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.core.xml.util.jsse;
+
+import org.apache.camel.model.IdentifiedType;
+
+public abstract class AbstractJsseUtilFactoryBean<T> extends IdentifiedType {
+    
+    public abstract T getObject() throws Exception;
+    
+    public boolean isSingleton() {
+        return true;
+    }
+
+    public abstract Class<? extends T> getObjectType();
+}

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractJsseUtilFactoryBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractJsseUtilFactoryBean.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractKeyManagersParametersFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractKeyManagersParametersFactoryBean.java?rev=1096398&view=auto
==============================================================================
--- camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractKeyManagersParametersFactoryBean.java (added)
+++ camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractKeyManagersParametersFactoryBean.java Mon Apr 25 02:52:44 2011
@@ -0,0 +1,101 @@
+/**
+ * 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.core.xml.util.jsse;
+
+import javax.net.ssl.KeyManager;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.apache.camel.util.jsse.KeyManagersParameters;
+
+/**
+ * A representation of configuration options for creating and loading
+ * {@link KeyManager} instance(s).
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+public abstract class AbstractKeyManagersParametersFactoryBean extends AbstractJsseUtilFactoryBean<KeyManagersParameters> {
+    
+    @XmlAttribute
+    protected String keyPassword;
+    
+    @XmlAttribute
+    protected String provider;
+    
+    @XmlAttribute
+    protected String algorithm;
+    
+    @XmlTransient
+    private KeyManagersParameters instance;
+
+    public String getKeyPassword() {
+        return keyPassword;
+    }
+
+    public void setKeyPassword(String value) {
+        this.keyPassword = value;
+    }
+
+    public String getProvider() {
+        return provider;
+    }
+
+    public void setProvider(String value) {
+        this.provider = value;
+    }
+
+    public String getAlgorithm() {
+        return algorithm;
+    }
+
+    public void setAlgorithm(String value) {
+        this.algorithm = value;
+    }
+    
+    @Override
+    public KeyManagersParameters getObject() throws Exception {
+        if (this.isSingleton()) {
+            if (instance == null) { 
+                instance = createInstance();   
+            }
+            
+            return instance;
+        } else {
+            return createInstance();
+        }   
+    }
+
+    @Override
+    public Class<? extends KeyManagersParameters> getObjectType() {
+        return KeyManagersParameters.class;
+    }
+
+    protected KeyManagersParameters createInstance() throws Exception {
+        KeyManagersParameters newInstance = new KeyManagersParameters();
+        
+        newInstance.setAlgorithm(algorithm);
+        newInstance.setKeyPassword(keyPassword);
+        if (getKeyStore() != null) {
+            newInstance.setKeyStore(getKeyStore().getObject());
+        }
+        newInstance.setProvider(provider);
+        return newInstance;
+    }
+    
+    public abstract AbstractKeyStoreParametersFactoryBean getKeyStore();
+}

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractKeyManagersParametersFactoryBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractKeyManagersParametersFactoryBean.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractKeyStoreParametersFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractKeyStoreParametersFactoryBean.java?rev=1096398&view=auto
==============================================================================
--- camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractKeyStoreParametersFactoryBean.java (added)
+++ camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractKeyStoreParametersFactoryBean.java Mon Apr 25 02:52:44 2011
@@ -0,0 +1,105 @@
+/**
+ * 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.core.xml.util.jsse;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.apache.camel.util.jsse.KeyStoreParameters;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+public abstract class AbstractKeyStoreParametersFactoryBean extends AbstractJsseUtilFactoryBean<KeyStoreParameters> {
+
+    @XmlAttribute
+    protected String type;
+    
+    @XmlAttribute
+    protected String password;
+    
+    @XmlAttribute
+    protected String provider;
+    
+    @XmlAttribute
+    protected String resource;
+    
+    @XmlTransient
+    private KeyStoreParameters instance;
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String value) {
+        this.type = value;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String value) {
+        this.password = value;
+    }
+
+    public String getProvider() {
+        return provider;
+    }
+
+    public void setProvider(String value) {
+        this.provider = value;
+    }
+
+    public String getResource() {
+        return resource;
+    }
+
+    public void setResource(String value) {
+        this.resource = value;
+    }
+    
+    @Override
+    public KeyStoreParameters getObject() throws Exception {
+        if (this.isSingleton()) {
+            if (instance == null) { 
+                instance = createInstance();   
+            }
+            
+            return instance;
+        } else {
+            return createInstance();
+        }   
+    }
+    
+    protected KeyStoreParameters createInstance() {
+        KeyStoreParameters newInstance = new KeyStoreParameters();
+        
+        newInstance.setPassword(this.password);
+        newInstance.setProvider(this.provider);
+        newInstance.setResource(this.resource);
+        newInstance.setType(this.type);
+        
+        return newInstance;
+    }
+    
+    @Override
+    public Class<? extends KeyStoreParameters> getObjectType() {
+        return KeyStoreParameters.class;
+    }
+    
+}

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractKeyStoreParametersFactoryBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractKeyStoreParametersFactoryBean.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSSLContextClientParametersFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSSLContextClientParametersFactoryBean.java?rev=1096398&view=auto
==============================================================================
--- camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSSLContextClientParametersFactoryBean.java (added)
+++ camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSSLContextClientParametersFactoryBean.java Mon Apr 25 02:52:44 2011
@@ -0,0 +1,38 @@
+/**
+ * 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.core.xml.util.jsse;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.apache.camel.util.jsse.SSLContextClientParameters;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlTransient
+public abstract class AbstractSSLContextClientParametersFactoryBean extends AbstractBaseSSLContextParametersFactoryBean<SSLContextClientParameters> {
+    
+    @Override
+    protected SSLContextClientParameters createInstance() {
+        return new SSLContextClientParameters();
+    }
+
+    @Override
+    public Class<SSLContextClientParameters> getObjectType() {
+        return SSLContextClientParameters.class;
+    }
+}

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSSLContextClientParametersFactoryBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSSLContextClientParametersFactoryBean.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSSLContextParametersFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSSLContextParametersFactoryBean.java?rev=1096398&view=auto
==============================================================================
--- camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSSLContextParametersFactoryBean.java (added)
+++ camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSSLContextParametersFactoryBean.java Mon Apr 25 02:52:44 2011
@@ -0,0 +1,97 @@
+/**
+ * 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.core.xml.util.jsse;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.apache.camel.util.jsse.SSLContextParameters;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlTransient
+public abstract class AbstractSSLContextParametersFactoryBean extends AbstractBaseSSLContextParametersFactoryBean<SSLContextParameters> {
+    
+    @XmlAttribute
+    private String provider;
+
+    @XmlAttribute
+    private String secureSocketProtocol;
+
+    @Override
+    protected SSLContextParameters createInstance() throws Exception {
+        SSLContextParameters newInstance = new SSLContextParameters();
+        
+        if (getKeyManagers() != null) {
+            newInstance.setKeyManagers(getKeyManagers().getObject());
+        }
+        
+        if (getTrustManagers() != null) {
+            newInstance.setTrustManagers(getTrustManagers().getObject());
+        }
+        
+        if (getSecureRandom() != null) {
+            newInstance.setSecureRandom(getSecureRandom().getObject());
+        }
+        
+        
+        if (getClientParameters() != null) {
+            newInstance.setClientParameters(getClientParameters().getObject());
+        }
+
+        if (getServerParameters() != null) {
+            newInstance.setServerParameters(getServerParameters().getObject());
+        }
+        
+        newInstance.setProvider(provider);
+        newInstance.setSecureSocketProtocol(secureSocketProtocol);
+        
+        return newInstance;
+    }
+
+    @Override
+    public Class<? extends SSLContextParameters> getObjectType() {
+        return SSLContextParameters.class;
+    }
+    
+    public String getProvider() {
+        return provider;
+    }
+
+    public void setProvider(String provider) {
+        this.provider = provider;
+    }
+
+    public String getSecureSocketProtocol() {
+        return secureSocketProtocol;
+    }
+
+    public void setSecureSocketProtocol(String secureSocketProtocol) {
+        this.secureSocketProtocol = secureSocketProtocol;
+    }
+
+    protected abstract AbstractKeyManagersParametersFactoryBean getKeyManagers();
+
+    protected abstract AbstractTrustManagersParametersFactoryBean getTrustManagers();
+
+    protected abstract AbstractSecureRandomParametersFactoryBean getSecureRandom();
+
+    protected abstract AbstractSSLContextClientParametersFactoryBean getClientParameters();
+
+    protected abstract AbstractSSLContextServerParametersFactoryBean getServerParameters();
+}

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSSLContextParametersFactoryBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSSLContextParametersFactoryBean.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSSLContextServerParametersFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSSLContextServerParametersFactoryBean.java?rev=1096398&view=auto
==============================================================================
--- camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSSLContextServerParametersFactoryBean.java (added)
+++ camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSSLContextServerParametersFactoryBean.java Mon Apr 25 02:52:44 2011
@@ -0,0 +1,58 @@
+/**
+ * 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.core.xml.util.jsse;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.apache.camel.util.jsse.ClientAuthentication;
+import org.apache.camel.util.jsse.SSLContextServerParameters;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlTransient
+public abstract class AbstractSSLContextServerParametersFactoryBean extends AbstractBaseSSLContextParametersFactoryBean<SSLContextServerParameters> {
+
+    @XmlAttribute
+    protected ClientAuthenticationDefinition clientAuthentication;
+
+    public ClientAuthenticationDefinition getClientAuthentication() {
+        return clientAuthentication;
+    }
+
+    public void setClientAuthentication(ClientAuthenticationDefinition clientAuthentication) {
+        this.clientAuthentication = clientAuthentication;
+    }
+
+    @Override
+    protected SSLContextServerParameters createInstance() {
+        SSLContextServerParameters newInstance = new SSLContextServerParameters();
+        
+        if (clientAuthentication != null) {
+            ClientAuthentication clientAuthenticationInstance = ClientAuthentication.valueOf(clientAuthentication.name());
+            newInstance.setClientAuthentication(clientAuthenticationInstance);
+        }
+        
+        return newInstance;
+    }
+
+    @Override
+    public Class<SSLContextServerParameters> getObjectType() {
+        return SSLContextServerParameters.class;
+    }
+}

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSSLContextServerParametersFactoryBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSSLContextServerParametersFactoryBean.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSecureRandomParametersFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSecureRandomParametersFactoryBean.java?rev=1096398&view=auto
==============================================================================
--- camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSecureRandomParametersFactoryBean.java (added)
+++ camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSecureRandomParametersFactoryBean.java Mon Apr 25 02:52:44 2011
@@ -0,0 +1,80 @@
+/**
+ * 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.core.xml.util.jsse;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.apache.camel.util.jsse.SecureRandomParameters;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+public abstract class AbstractSecureRandomParametersFactoryBean extends AbstractJsseUtilFactoryBean<SecureRandomParameters> {
+
+    @XmlAttribute(required = true)
+    protected String algorithm;
+    
+    @XmlAttribute
+    protected String provider;
+    
+    @XmlTransient
+    private SecureRandomParameters instance;
+
+    public String getAlgorithm() {
+        return algorithm;
+    }
+
+    public void setAlgorithm(String algorithm) {
+        this.algorithm = algorithm;
+    }
+
+    public String getProvider() {
+        return provider;
+    }
+
+    public void setProvider(String provider) {
+        this.provider = provider;
+    }
+
+    @Override
+    public SecureRandomParameters getObject() throws Exception {
+        if (this.isSingleton()) {
+            if (instance == null) { 
+                instance = createInstance();   
+            }
+            
+            return instance;
+        } else {
+            return createInstance();
+        } 
+    }
+
+    protected SecureRandomParameters createInstance() {
+        SecureRandomParameters newInstance = new SecureRandomParameters();
+        
+        newInstance.setAlgorithm(algorithm);
+        newInstance.setProvider(provider);
+        
+        return newInstance;
+    }
+
+    @Override
+    public Class<? extends SecureRandomParameters> getObjectType() {
+        return SecureRandomParameters.class;
+    }
+}

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSecureRandomParametersFactoryBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractSecureRandomParametersFactoryBean.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractTrustManagersParametersFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractTrustManagersParametersFactoryBean.java?rev=1096398&view=auto
==============================================================================
--- camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractTrustManagersParametersFactoryBean.java (added)
+++ camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractTrustManagersParametersFactoryBean.java Mon Apr 25 02:52:44 2011
@@ -0,0 +1,84 @@
+/**
+ * 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.core.xml.util.jsse;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.apache.camel.util.jsse.TrustManagersParameters;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+public abstract class AbstractTrustManagersParametersFactoryBean extends AbstractJsseUtilFactoryBean<TrustManagersParameters> {
+
+    @XmlAttribute
+    protected String provider;
+    
+    @XmlAttribute
+    protected String algorithm;
+    
+    @XmlTransient
+    private TrustManagersParameters instance;
+    
+    public String getProvider() {
+        return provider;
+    }
+
+    public void setProvider(String value) {
+        this.provider = value;
+    }
+
+    public String getAlgorithm() {
+        return algorithm;
+    }
+
+    public void setAlgorithm(String value) {
+        this.algorithm = value;
+    }
+    
+    @Override
+    public TrustManagersParameters getObject() throws Exception {
+        if (this.isSingleton()) {
+            if (instance == null) { 
+                instance = createInstance();   
+            }
+            
+            return instance;
+        } else {
+            return createInstance();
+        }   
+    }
+    
+    @Override
+    public Class<TrustManagersParameters> getObjectType() {
+        return TrustManagersParameters.class;
+    }
+    
+    protected TrustManagersParameters createInstance() throws Exception {
+        TrustManagersParameters newInstance = new TrustManagersParameters();
+        
+        newInstance.setAlgorithm(algorithm);
+        if (getKeyStore() != null) {
+            newInstance.setKeyStore(getKeyStore().getObject());
+        }
+        newInstance.setProvider(provider);
+        return newInstance;
+    }
+    
+    protected abstract AbstractKeyStoreParametersFactoryBean getKeyStore();
+}

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractTrustManagersParametersFactoryBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/AbstractTrustManagersParametersFactoryBean.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/CipherSuitesParametersDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/CipherSuitesParametersDefinition.java?rev=1096398&view=auto
==============================================================================
--- camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/CipherSuitesParametersDefinition.java (added)
+++ camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/CipherSuitesParametersDefinition.java Mon Apr 25 02:52:44 2011
@@ -0,0 +1,42 @@
+/**
+ * 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.core.xml.util.jsse;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "cipherSuitesParameters", propOrder = {"cipherSuite"})
+public class CipherSuitesParametersDefinition {
+
+    private List<String> cipherSuite;
+
+    /**
+     * Returns a live reference to the list of cipher suite names.
+     *
+     * @return a reference to the list, never {@code null}
+     */
+    public List<String> getCipherSuite() {
+        if (this.cipherSuite == null) {
+            this.cipherSuite = new ArrayList<String>();
+        }
+        return this.cipherSuite;
+    }
+}

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/CipherSuitesParametersDefinition.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/CipherSuitesParametersDefinition.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/ClientAuthenticationDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/ClientAuthenticationDefinition.java?rev=1096398&view=auto
==============================================================================
--- camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/ClientAuthenticationDefinition.java (added)
+++ camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/ClientAuthenticationDefinition.java Mon Apr 25 02:52:44 2011
@@ -0,0 +1,41 @@
+/**
+ * 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.core.xml.util.jsse;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * Represents the options for the client authentication settings of a server socket.
+ */
+@XmlEnum(value = String.class)
+@XmlType(name = "clientAuthenticationParameters")
+public enum ClientAuthenticationDefinition {
+
+    /**
+     * No client authentication required or requested.
+     */
+    NONE,
+    /**
+     * Client authentication requested.
+     */
+    WANT,
+    /**
+     * Client authentication required.
+     */
+    REQUIRE;
+}

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/ClientAuthenticationDefinition.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/ClientAuthenticationDefinition.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/FilterParametersDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/FilterParametersDefinition.java?rev=1096398&view=auto
==============================================================================
--- camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/FilterParametersDefinition.java (added)
+++ camel/trunk/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/util/jsse/FilterParametersDefinition.java Mon Apr 25 02:52:44 2011
@@ -0,0 +1,62 @@
+/**
+ * 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.core.xml.util.jsse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * Represents a set of regular expression based filter patterns for
+ * including and excluding content of some type.
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "filterParameters", propOrder = {"include", "exclude"})
+public class FilterParametersDefinition {
+
+    protected List<String> include;
+    protected List<String> exclude;
+
+    /**
+     * Returns a live copy of the list of patterns to include.
+     * The list of excludes takes precedence over the include patterns.
+     *
+     * @return the list of patterns to include
+     */
+    public List<String> getInclude() {
+        if (this.include == null) {
+            this.include = new ArrayList<String>();
+        }
+        return this.include;
+    }
+
+    /**
+     * Returns a live copy of the list of patterns to exclude.
+     * This list takes precedence over the include patterns.
+     *
+     * @return the list of patterns to exclude
+     */
+    public List<String> getExclude() {
+        if (exclude == null) {
+            exclude = new ArrayList<String>();
+        }
+        return this.exclude;
+    }
+}