You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2014/02/05 11:09:31 UTC
[2/4] git commit: CAMEL-7172: Fixed netty configurations to all
support # lookup. Introduce method on default component to do all the work
for us. So its useable in other components as well.
CAMEL-7172: Fixed netty configurations to all support # lookup. Introduce method on default component to do all the work for us. So its useable in other components as well.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/26327aca
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/26327aca
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/26327aca
Branch: refs/heads/camel-2.12.x
Commit: 26327acaecd3318cbaa01c795f9383c6db79b374
Parents: a5af43c
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Feb 5 11:09:41 2014 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Feb 5 11:10:01 2014 +0100
----------------------------------------------------------------------
.../org/apache/camel/impl/DefaultComponent.java | 35 +++++++++++
.../apache/camel/impl/DefaultComponentTest.java | 21 +++++++
.../component/netty/NettyConfiguration.java | 22 +++----
.../netty/NettySSLPassphaseBeanTest.java | 65 ++++++++++++++++++++
4 files changed, 132 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/26327aca/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
index 584c9f0..3a0b3a0 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultComponent.java
@@ -28,6 +28,7 @@ import org.apache.camel.Component;
import org.apache.camel.ComponentConfiguration;
import org.apache.camel.Endpoint;
import org.apache.camel.EndpointConfiguration;
+import org.apache.camel.NoTypeConversionAvailableException;
import org.apache.camel.ResolveEndpointFailedException;
import org.apache.camel.support.ServiceSupport;
import org.apache.camel.util.CamelContextHelper;
@@ -317,6 +318,40 @@ public abstract class DefaultComponent extends ServiceSupport implements Compone
}
/**
+ * Gets the parameter and remove it from the parameter map. This method resolves
+ * reference parameters in the registry as well.
+ *
+ * @param parameters the parameters
+ * @param key the key
+ * @param type the requested type to convert the value from the parameter
+ * @return the converted value parameter
+ */
+ public <T> T getAndRemoveOrResolveReferenceParameter(Map<String, Object> parameters, String key, Class<T> type) {
+ return getAndRemoveOrResolveReferenceParameter(parameters, key, type, null);
+ }
+
+ /**
+ * Gets the parameter and remove it from the parameter map. This method resolves
+ * reference parameters in the registry as well.
+ *
+ * @param parameters the parameters
+ * @param key the key
+ * @param type the requested type to convert the value from the parameter
+ * @param defaultValue use this default value if the parameter does not contain the key
+ * @return the converted value parameter
+ */
+ public <T> T getAndRemoveOrResolveReferenceParameter(Map<String, Object> parameters, String key, Class<T> type, T defaultValue) {
+ String value = getAndRemoveParameter(parameters, key, String.class);
+ if (value == null) {
+ return defaultValue;
+ } else if (EndpointHelper.isReferenceParameter(value)) {
+ return EndpointHelper.resolveReferenceParameter(getCamelContext(), value, type);
+ } else {
+ return getCamelContext().getTypeConverter().convertTo(type, value);
+ }
+ }
+
+ /**
* Resolves a reference parameter in the registry and removes it from the map.
*
* @param <T> type of object to lookup in the registry.
http://git-wip-us.apache.org/repos/asf/camel/blob/26327aca/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java b/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java
index 044329d..508c4e2 100644
--- a/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java
+++ b/camel-core/src/test/java/org/apache/camel/impl/DefaultComponentTest.java
@@ -190,6 +190,27 @@ public class DefaultComponentTest extends ContextTestSupport {
}
}
+ public void testGetAndRemoveOrResolveReferenceParameter() {
+ Map<String, Object> parameters = new HashMap<String, Object>();
+ parameters.put("size", 123);
+ parameters.put("date", "#bean1");
+ MyComponent my = new MyComponent(this.context);
+
+ Integer value = my.getAndRemoveOrResolveReferenceParameter(parameters, "size", Integer.class);
+ assertNotNull(value);
+ assertEquals(123, value.intValue());
+ assertEquals(1, parameters.size());
+
+ Date bean1 = my.getAndRemoveOrResolveReferenceParameter(parameters, "date", Date.class);
+ assertNotNull(bean1);
+ assertEquals(new Date(10), bean1);
+ assertEquals(0, parameters.size());
+
+ Integer age = my.getAndRemoveOrResolveReferenceParameter(parameters, "age", Integer.class, 7);
+ assertNotNull(age);
+ assertEquals(7, age.intValue());
+ }
+
public void testContextShouldBeSet() throws Exception {
MyComponent my = new MyComponent(null);
try {
http://git-wip-us.apache.org/repos/asf/camel/blob/26327aca/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java
----------------------------------------------------------------------
diff --git a/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java b/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java
index 14066ce..83ab62d 100644
--- a/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java
+++ b/components/camel-netty/src/main/java/org/apache/camel/component/netty/NettyConfiguration.java
@@ -131,17 +131,17 @@ public class NettyConfiguration extends NettyServerBootstrapConfiguration implem
setHost(uri.getHost());
setPort(uri.getPort());
- ssl = component.getAndRemoveParameter(parameters, "ssl", boolean.class, false);
- sslHandler = component.resolveAndRemoveReferenceParameter(parameters, "sslHandler", SslHandler.class, sslHandler);
- passphrase = component.getAndRemoveParameter(parameters, "passphrase", String.class, passphrase);
- keyStoreFormat = component.getAndRemoveParameter(parameters, "keyStoreFormat", String.class, keyStoreFormat == null ? "JKS" : keyStoreFormat);
- securityProvider = component.getAndRemoveParameter(parameters, "securityProvider", String.class, securityProvider == null ? "SunX509" : securityProvider);
- keyStoreFile = component.resolveAndRemoveReferenceParameter(parameters, "keyStoreFile", File.class, keyStoreFile);
- trustStoreFile = component.resolveAndRemoveReferenceParameter(parameters, "trustStoreFile", File.class, trustStoreFile);
- keyStoreResource = component.getAndRemoveParameter(parameters, "keyStoreResource", String.class, keyStoreResource);
- trustStoreResource = component.getAndRemoveParameter(parameters, "trustStoreResource", String.class, trustStoreResource);
- clientPipelineFactory = component.resolveAndRemoveReferenceParameter(parameters, "clientPipelineFactory", ClientPipelineFactory.class, clientPipelineFactory);
- serverPipelineFactory = component.resolveAndRemoveReferenceParameter(parameters, "serverPipelineFactory", ServerPipelineFactory.class, serverPipelineFactory);
+ ssl = component.getAndRemoveOrResolveReferenceParameter(parameters, "ssl", boolean.class, false);
+ sslHandler = component.getAndRemoveOrResolveReferenceParameter(parameters, "sslHandler", SslHandler.class, sslHandler);
+ passphrase = component.getAndRemoveOrResolveReferenceParameter(parameters, "passphrase", String.class, passphrase);
+ keyStoreFormat = component.getAndRemoveOrResolveReferenceParameter(parameters, "keyStoreFormat", String.class, keyStoreFormat == null ? "JKS" : keyStoreFormat);
+ securityProvider = component.getAndRemoveOrResolveReferenceParameter(parameters, "securityProvider", String.class, securityProvider == null ? "SunX509" : securityProvider);
+ keyStoreFile = component.getAndRemoveOrResolveReferenceParameter(parameters, "keyStoreFile", File.class, keyStoreFile);
+ trustStoreFile = component.getAndRemoveOrResolveReferenceParameter(parameters, "trustStoreFile", File.class, trustStoreFile);
+ keyStoreResource = component.getAndRemoveOrResolveReferenceParameter(parameters, "keyStoreResource", String.class, keyStoreResource);
+ trustStoreResource = component.getAndRemoveOrResolveReferenceParameter(parameters, "trustStoreResource", String.class, trustStoreResource);
+ clientPipelineFactory = component.getAndRemoveOrResolveReferenceParameter(parameters, "clientPipelineFactory", ClientPipelineFactory.class, clientPipelineFactory);
+ serverPipelineFactory = component.getAndRemoveOrResolveReferenceParameter(parameters, "serverPipelineFactory", ServerPipelineFactory.class, serverPipelineFactory);
// set custom encoders and decoders first
List<ChannelHandler> referencedEncoders = component.resolveAndRemoveReferenceListParameter(parameters, "encoders", ChannelHandler.class, null);
http://git-wip-us.apache.org/repos/asf/camel/blob/26327aca/components/camel-netty/src/test/java/org/apache/camel/component/netty/NettySSLPassphaseBeanTest.java
----------------------------------------------------------------------
diff --git a/components/camel-netty/src/test/java/org/apache/camel/component/netty/NettySSLPassphaseBeanTest.java b/components/camel-netty/src/test/java/org/apache/camel/component/netty/NettySSLPassphaseBeanTest.java
new file mode 100644
index 0000000..1665cd0
--- /dev/null
+++ b/components/camel-netty/src/test/java/org/apache/camel/component/netty/NettySSLPassphaseBeanTest.java
@@ -0,0 +1,65 @@
+/**
+ * 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.netty;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.impl.JndiRegistry;
+import org.junit.Test;
+
+public class NettySSLPassphaseBeanTest extends BaseNettyTest {
+
+ @Override
+ protected JndiRegistry createRegistry() throws Exception {
+ JndiRegistry jndi = super.createRegistry();
+ jndi.bind("myBean", "changeit");
+ return jndi;
+ }
+
+ @Override
+ public boolean isUseRouteBuilder() {
+ return false;
+ }
+
+ @Test
+ public void testPassphaseBean() throws Exception {
+ // ibm jdks dont have sun security algorithms
+ if (isJavaVendor("ibm")) {
+ return;
+ }
+
+ context.addRoutes(new RouteBuilder() {
+ public void configure() {
+ from("netty:tcp://localhost:{{port}}?sync=true&ssl=true&passphrase=#myBean&keyStoreResource=classpath:keystore.jks&trustStoreResource=classpath:keystore.jks")
+ .process(new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ exchange.getOut().setBody("When You Go Home, Tell Them Of Us And Say, For Your Tomorrow, We Gave Our Today.");
+ }
+ });
+ }
+ });
+ context.start();
+
+ String response = template.requestBody(
+ "netty:tcp://localhost:{{port}}?sync=true&ssl=true&passphrase=#myBean&keyStoreResource=classpath:keystore.jks&trustStoreResource=classpath:keystore.jks",
+ "Epitaph in Kohima, India marking the WWII Battle of Kohima and Imphal, Burma Campaign - Attributed to John Maxwell Edmonds", String.class);
+ assertEquals("When You Go Home, Tell Them Of Us And Say, For Your Tomorrow, We Gave Our Today.", response);
+ }
+
+}