Author: dvaleri Date: Thu Mar 1 15:50:19 2012 New Revision: 1295633 URL: http://svn.apache.org/viewvc?rev=1295633&view=rev Log: [CAMEL-5037] Added support for JSSE Confoguration Utility to Mina 2 component.
Added: camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SslConextParametersUdpTest.java (with props) camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SslContextParametersTcpTest.java (with props) camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SslContextParametersVmTest.java (with props) camel/trunk/components/camel-mina2/src/test/resources/jsse/ camel/trunk/components/camel-mina2/src/test/resources/jsse/localhost.ks Modified: camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Configuration.java camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Consumer.java camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/BaseMina2Test.java camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2UdpNoCamelTest.java Modified: camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java?rev=1295633&r1=1295632&r2=1295633&view=diff ============================================================================== --- camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java (original) +++ camel/trunk/components/camel-mail/src/main/java/org/apache/camel/component/mail/MailConfiguration.java Thu Mar 1 15:50:19 2012 @@ -22,8 +22,10 @@ import java.util.Map; import java.util.Properties; import javax.mail.Message; import javax.mail.Session; +import javax.net.ssl.SSLContext; import org.apache.camel.RuntimeCamelException; +import org.apache.camel.util.jsse.SSLContextParameters; /** * Represents the configuration data for communicating over email @@ -59,6 +61,7 @@ public class MailConfiguration implement private boolean useInlineAttachments; private boolean ignoreUnsupportedCharset; private boolean disconnect; + private SSLContextParameters sslContextParameters; public MailConfiguration() { } @@ -170,6 +173,15 @@ public class MailConfiguration implement properties.put("javax.net.debug", "all"); } + if (sslContextParameters != null && isSecureProtocol()) { + SSLContext sslContext; + try { + sslContext = sslContextParameters.createSSLContext(); + } catch (Exception e) { + throw new RuntimeCamelException("Error initializing SSLContext.", e); + } + properties.put("mail." + protocol + ".socketFactory", sslContext.getSocketFactory()); + } if (dummyTrustManager && isSecureProtocol()) { // set the custom SSL properties properties.put("mail." + protocol + ".socketFactory.class", "org.apache.camel.component.mail.security.DummySSLSocketFactory"); @@ -453,4 +465,12 @@ public class MailConfiguration implement public void setDisconnect(boolean disconnect) { this.disconnect = disconnect; } + + public SSLContextParameters getSslContextParameters() { + return sslContextParameters; + } + + public void setSslContextParameters(SSLContextParameters sslContextParameters) { + this.sslContextParameters = sslContextParameters; + } } Modified: camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Configuration.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Configuration.java?rev=1295633&r1=1295632&r2=1295633&view=diff ============================================================================== --- camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Configuration.java (original) +++ camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Configuration.java Thu Mar 1 15:50:19 2012 @@ -21,6 +21,7 @@ import java.util.List; import org.apache.camel.LoggingLevel; import org.apache.camel.RuntimeCamelException; +import org.apache.camel.util.jsse.SSLContextParameters; import org.apache.mina.core.filterchain.IoFilter; import org.apache.mina.filter.codec.ProtocolCodecFactory; @@ -48,6 +49,8 @@ public class Mina2Configuration implemen private boolean disconnect; private boolean disconnectOnNoReply = true; private LoggingLevel noReplyLogLevel = LoggingLevel.WARN; + private SSLContextParameters sslContextParameters; + private boolean autoStartTls = true; /** * Returns a copy of this configuration @@ -226,4 +229,20 @@ public class Mina2Configuration implemen public void setNoReplyLogLevel(LoggingLevel noReplyLogLevel) { this.noReplyLogLevel = noReplyLogLevel; } + + public SSLContextParameters getSslContextParameters() { + return sslContextParameters; + } + + public void setSslContextParameters(SSLContextParameters sslContextParameters) { + this.sslContextParameters = sslContextParameters; + } + + public boolean isAutoStartTls() { + return autoStartTls; + } + + public void setAutoStartTls(boolean autoStartTls) { + this.autoStartTls = autoStartTls; + } } Modified: camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Consumer.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Consumer.java?rev=1295633&r1=1295632&r2=1295633&view=diff ============================================================================== --- camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Consumer.java (original) +++ camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Consumer.java Thu Mar 1 15:50:19 2012 @@ -40,6 +40,7 @@ import org.apache.mina.filter.codec.seri import org.apache.mina.filter.codec.textline.LineDelimiter; import org.apache.mina.filter.executor.ExecutorFilter; import org.apache.mina.filter.logging.LoggingFilter; +import org.apache.mina.filter.ssl.SslFilter; import org.apache.mina.transport.socket.nio.NioDatagramAcceptor; import org.apache.mina.transport.socket.nio.NioProcessor; import org.apache.mina.transport.socket.nio.NioSocketAcceptor; @@ -60,7 +61,7 @@ public class Mina2Consumer extends Defau private IoAcceptor acceptor; private Mina2Configuration configuration; - public Mina2Consumer(final Mina2Endpoint endpoint, Processor processor) { + public Mina2Consumer(final Mina2Endpoint endpoint, Processor processor) throws Exception { super(endpoint, processor); this.configuration = endpoint.getConfiguration(); // @@ -111,9 +112,13 @@ public class Mina2Consumer extends Defau acceptor.getFilterChain().addLast("logger", new LoggingFilter()); } appendIoFiltersToChain(filters, acceptor.getFilterChain()); + if (configuration.getSslContextParameters() != null) { + LOG.warn("Using vm protocol" + + ", but an SSLContextParameters instance was provided. SSLContextParameters is only supported on the TCP protocol."); + } } - protected void createSocketEndpoint(String uri, Mina2Configuration configuration) { + protected void createSocketEndpoint(String uri, Mina2Configuration configuration) throws Exception { LOG.debug("createSocketEndpoint"); boolean minaLogger = configuration.isMinaLogger(); List<IoFilter> filters = configuration.getFilters(); @@ -133,6 +138,11 @@ public class Mina2Consumer extends Defau acceptor.getFilterChain().addLast("logger", new LoggingFilter()); } appendIoFiltersToChain(filters, acceptor.getFilterChain()); + if (configuration.getSslContextParameters() != null) { + SslFilter filter = new SslFilter(configuration.getSslContextParameters().createSSLContext(), configuration.isAutoStartTls()); + filter.setUseClientMode(true); + acceptor.getFilterChain().addFirst("sslFilter", filter); + } } protected void configureCodecFactory(String type, IoService service, Mina2Configuration configuration) { @@ -186,6 +196,10 @@ public class Mina2Consumer extends Defau acceptor.getFilterChain().addLast("logger", new LoggingFilter()); } appendIoFiltersToChain(filters, acceptor.getFilterChain()); + if (configuration.getSslContextParameters() != null) { + LOG.warn("Using datagram protocol, " + configuration.getProtocol() + + ", but an SSLContextParameters instance was provided. SSLContextParameters is only supported on the TCP protocol."); + } } /** Modified: camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java?rev=1295633&r1=1295632&r2=1295633&view=diff ============================================================================== --- camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java (original) +++ camel/trunk/components/camel-mina2/src/main/java/org/apache/camel/component/mina2/Mina2Producer.java Thu Mar 1 15:50:19 2012 @@ -47,6 +47,7 @@ import org.apache.mina.filter.codec.seri import org.apache.mina.filter.codec.textline.LineDelimiter; import org.apache.mina.filter.executor.ExecutorFilter; import org.apache.mina.filter.logging.LoggingFilter; +import org.apache.mina.filter.ssl.SslFilter; import org.apache.mina.transport.socket.nio.NioDatagramConnector; import org.apache.mina.transport.socket.nio.NioProcessor; import org.apache.mina.transport.socket.nio.NioSocketConnector; @@ -74,7 +75,7 @@ public class Mina2Producer extends Defau private Mina2Configuration configuration; private IoSessionConfig connectorConfig; - public Mina2Producer(Mina2Endpoint endpoint) { + public Mina2Producer(Mina2Endpoint endpoint) throws Exception { super(endpoint); configuration = endpoint.getConfiguration(); this.lazySessionCreation = configuration.isLazySessionCreation(); @@ -259,6 +260,10 @@ public class Mina2Producer extends Defau connector.getFilterChain().addLast("logger", new LoggingFilter()); } appendIoFiltersToChain(filters, connector.getFilterChain()); + if (configuration.getSslContextParameters() != null) { + LOG.warn("Using vm protocol" + + ", but an SSLContextParameters instance was provided. SSLContextParameters is only supported on the TCP protocol."); + } configureCodecFactory("Mina2Producer", connector); // set sync or async mode after endpoint is created @@ -269,7 +274,7 @@ public class Mina2Producer extends Defau } } - protected void createSocketEndpoint(String uri) { + protected void createSocketEndpoint(String uri) throws Exception { LOG.debug("createSocketEndpoint"); boolean minaLogger = configuration.isMinaLogger(); long timeout = configuration.getTimeout(); @@ -288,6 +293,9 @@ public class Mina2Producer extends Defau connector.getFilterChain().addLast("logger", new LoggingFilter()); } appendIoFiltersToChain(filters, connector.getFilterChain()); + if (configuration.getSslContextParameters() != null) { + connector.getFilterChain().addFirst("sslFilter", new SslFilter(configuration.getSslContextParameters().createSSLContext(), configuration.isAutoStartTls())); + } configureCodecFactory("Mina2Producer", connector); // set connect timeout to mina in seconds connector.setConnectTimeoutMillis(timeout); @@ -354,6 +362,10 @@ public class Mina2Producer extends Defau connector.getFilterChain().addLast("logger", new LoggingFilter()); } appendIoFiltersToChain(filters, connector.getFilterChain()); + if (configuration.getSslContextParameters() != null) { + LOG.warn("Using datagram protocol, " + configuration.getProtocol() + + ", but an SSLContextParameters instance was provided. SSLContextParameters is only supported on the TCP protocol."); + } configureDataGramCodecFactory("Mina2Producer", connector, configuration); // set connect timeout to mina in seconds connector.setConnectTimeoutMillis(timeout); Modified: camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/BaseMina2Test.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/BaseMina2Test.java?rev=1295633&r1=1295632&r2=1295633&view=diff ============================================================================== --- camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/BaseMina2Test.java (original) +++ camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/BaseMina2Test.java Thu Mar 1 15:50:19 2012 @@ -16,11 +16,20 @@ */ package org.apache.camel.component.mina2; +import org.apache.camel.impl.JndiRegistry; import org.apache.camel.test.AvailablePortFinder; import org.apache.camel.test.junit4.CamelTestSupport; +import org.apache.camel.util.jsse.ClientAuthentication; +import org.apache.camel.util.jsse.KeyManagersParameters; +import org.apache.camel.util.jsse.KeyStoreParameters; +import org.apache.camel.util.jsse.SSLContextParameters; +import org.apache.camel.util.jsse.SSLContextServerParameters; +import org.apache.camel.util.jsse.TrustManagersParameters; import org.junit.BeforeClass; public class BaseMina2Test extends CamelTestSupport { + + protected static final String KEY_STORE_PASSWORD = "changeit"; private static volatile int port; @@ -36,4 +45,44 @@ public class BaseMina2Test extends Camel protected int getPort() { return port; } + + protected boolean isUseSslContext() { + return false; + } + + @Override + protected JndiRegistry createRegistry() throws Exception { + JndiRegistry reg = super.createRegistry(); + + if (isUseSslContext()) { + addSslContextParametersToRegistry(reg); + } + return reg; + } + + protected void addSslContextParametersToRegistry(JndiRegistry registry) { + KeyStoreParameters ksp = new KeyStoreParameters(); + ksp.setResource(this.getClass().getClassLoader().getResource("jsse/localhost.ks").toString()); + ksp.setPassword(KEY_STORE_PASSWORD); + + KeyManagersParameters kmp = new KeyManagersParameters(); + kmp.setKeyPassword(KEY_STORE_PASSWORD); + kmp.setKeyStore(ksp); + + TrustManagersParameters tmp = new TrustManagersParameters(); + tmp.setKeyStore(ksp); + + // NOTE: Needed since the client uses a loose trust configuration when no ssl context + // is provided. We turn on client-auth to ensure that the tests onlt pass when + // the client is configured explicitly. + SSLContextServerParameters scsp = new SSLContextServerParameters(); + scsp.setClientAuthentication(ClientAuthentication.REQUIRE.name()); + + SSLContextParameters sslContextParameters = new SSLContextParameters(); + sslContextParameters.setKeyManagers(kmp); + sslContextParameters.setTrustManagers(tmp); + sslContextParameters.setServerParameters(scsp); + + registry.bind("sslContextParameters", sslContextParameters); + } } Added: camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SslConextParametersUdpTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SslConextParametersUdpTest.java?rev=1295633&view=auto ============================================================================== --- camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SslConextParametersUdpTest.java (added) +++ camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SslConextParametersUdpTest.java Thu Mar 1 15:50:19 2012 @@ -0,0 +1,78 @@ +/** + * 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.component.mina2; + +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; + +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.mock.MockEndpoint; +import org.junit.Test; + +/** + * @version + */ +public class Mina2SslConextParametersUdpTest extends BaseMina2Test { + + protected int messageCount = 3; + + public Mina2SslConextParametersUdpTest() { + } + + @Test + public void testMinaRoute() throws Exception { + MockEndpoint endpoint = getMockEndpoint("mock:result"); + endpoint.expectedBodiesReceived("Hello Message: 0", "Hello Message: 1", "Hello Message: 2"); + + sendUdpMessages(); + + assertMockEndpointsSatisfied(); + } + + protected void sendUdpMessages() throws Exception { + DatagramSocket socket = new DatagramSocket(); + try { + InetAddress address = InetAddress.getByName("127.0.0.1"); + for (int i = 0; i < messageCount; i++) { + String text = "Hello Message: " + Integer.toString(i); + byte[] data = text.getBytes(); + + //DatagramPacket packet = new DatagramPacket(data, data.length, address, getPort()); + DatagramPacket packet = new DatagramPacket(data, data.length, address, 10111); + socket.send(packet); + } + Thread.sleep(2000); + } finally { + socket.close(); + } + } + + @Override + protected boolean isUseSslContext() { + return true; + } + + protected RouteBuilder createRouteBuilder() { + return new RouteBuilder() { + + public void configure() { + from("mina2:udp://127.0.0.1:10111?sync=false&minaLogger=true&sslContextParameters=#sslContextParameters").to("mock:result"); + } + }; + } +} Propchange: camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SslConextParametersUdpTest.java ------------------------------------------------------------------------------ svn:eol-style = native Added: camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SslContextParametersTcpTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SslContextParametersTcpTest.java?rev=1295633&view=auto ============================================================================== --- camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SslContextParametersTcpTest.java (added) +++ camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SslContextParametersTcpTest.java Thu Mar 1 15:50:19 2012 @@ -0,0 +1,54 @@ +/** + * 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.component.mina2; + +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.mock.MockEndpoint; +import org.junit.Test; + +/** + * @version + */ +public class Mina2SslContextParametersTcpTest extends BaseMina2Test { + + @Test + public void testMinaRoute() throws Exception { + MockEndpoint endpoint = getMockEndpoint("mock:result"); + Object body = "Hello there!"; + endpoint.expectedBodiesReceived(body); + + template.sendBodyAndHeader(String.format("mina2:tcp://localhost:%1$s?sync=false&minaLogger=true&sslContextParameters=#sslContextParameters", getPort()), body, "cheese", + 123); + + assertMockEndpointsSatisfied(); + } + + @Override + protected boolean isUseSslContext() { + return true; + } + + protected RouteBuilder createRouteBuilder() { + return new RouteBuilder() { + + public void configure() { + from(String.format("mina2:tcp://localhost:%1$s?sync=false&minaLogger=true&sslContextParameters=#sslContextParameters", getPort())).to("log:before?showAll=true") + .to("mock:result").to("log:after?showAll=true"); + } + }; + } +} Propchange: camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SslContextParametersTcpTest.java ------------------------------------------------------------------------------ svn:eol-style = native Added: camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SslContextParametersVmTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SslContextParametersVmTest.java?rev=1295633&view=auto ============================================================================== --- camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SslContextParametersVmTest.java (added) +++ camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SslContextParametersVmTest.java Thu Mar 1 15:50:19 2012 @@ -0,0 +1,53 @@ +/** + * 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.component.mina2; + +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.mock.MockEndpoint; +import org.junit.Test; + +/** + * @version + */ +public class Mina2SslContextParametersVmTest extends BaseMina2Test { + + @Test + public void testMinaRoute() throws Exception { + MockEndpoint endpoint = getMockEndpoint("mock:result"); + Object body = "Hello there!"; + endpoint.expectedBodiesReceived(body); + + template.sendBodyAndHeader(String.format("mina2:vm://localhost:%1$s?sync=false&minaLogger=true&sslContextParameters=#sslContextParameters", getPort()), body, "cheese", 123); + + assertMockEndpointsSatisfied(); + } + + @Override + protected boolean isUseSslContext() { + return true; + } + + protected RouteBuilder createRouteBuilder() { + return new RouteBuilder() { + + public void configure() { + from(String.format("mina2:vm://localhost:%1$s?sync=false&minaLogger=true&sslContextParameters=#sslContextParameters", getPort())).to("log:before?showAll=true").to("mock:result") + .to("log:after?showAll=true"); + } + }; + } +} Propchange: camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2SslContextParametersVmTest.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2UdpNoCamelTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2UdpNoCamelTest.java?rev=1295633&r1=1295632&r2=1295633&view=diff ============================================================================== --- camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2UdpNoCamelTest.java (original) +++ camel/trunk/components/camel-mina2/src/test/java/org/apache/camel/component/mina2/Mina2UdpNoCamelTest.java Thu Mar 1 15:50:19 2012 @@ -41,7 +41,7 @@ import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; /** * Added: camel/trunk/components/camel-mina2/src/test/resources/jsse/localhost.ks URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mina2/src/test/resources/jsse/localhost.ks?rev=1295633&view=auto ============================================================================== Files camel/trunk/components/camel-mina2/src/test/resources/jsse/localhost.ks (added) and camel/trunk/components/camel-mina2/src/test/resources/jsse/localhost.ks Thu Mar 1 15:50:19 2012 differ