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 2015/06/24 08:06:29 UTC
[1/4] camel git commit: FUSETOOLS-1352 - Found issue with camel-dozer
loading script files for expression mappings. Added functionality and new
tests to camel component
Repository: camel
Updated Branches:
refs/heads/camel-2.15.x bfcd55687 -> ae1f2015e
refs/heads/master 3fbf4e851 -> 0fa00d30d
FUSETOOLS-1352 - Found issue with camel-dozer loading script files for
expression mappings. Added functionality and new tests to camel
component
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ad77413b
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ad77413b
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ad77413b
Branch: refs/heads/master
Commit: ad77413bfa7e3a4b6a52c201416ec8c44e7959e6
Parents: 3fbf4e8
Author: Brian Fitzpatrick <bf...@redhat.com>
Authored: Tue Jun 23 11:32:27 2015 -0600
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Jun 24 07:58:50 2015 +0200
----------------------------------------------------------------------
.../camel/component/dozer/ExpressionMapper.java | 83 +++++++++++++++++++-
.../dozer/ExpressionMappingClasspathTest.java | 72 +++++++++++++++++
.../dozer/ExpressionMappingFileTest.java | 72 +++++++++++++++++
.../component/dozer/ExpressionMappingTest.java | 1 +
.../ExpressionMappingClasspathTest-context.xml | 29 +++++++
.../dozer/ExpressionMappingFileTest-context.xml | 29 +++++++
.../component/dozer/expressionClasspath.txt | 1 +
.../camel/component/dozer/expressionFile.txt | 1 +
.../dozer/expressionMappingClasspath.xml | 43 ++++++++++
.../component/dozer/expressionMappingFile.xml | 43 ++++++++++
10 files changed, 373 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/ad77413b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java
index afee452..007cc97 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java
@@ -16,9 +16,14 @@
*/
package org.apache.camel.component.dozer;
+import java.io.IOException;
+import java.io.InputStream;
+
import org.apache.camel.Exchange;
import org.apache.camel.Expression;
import org.apache.camel.spi.Language;
+import org.apache.camel.util.ResourceHelper;
+import org.apache.camel.util.IOHelper;
/**
* Provides support for mapping a Camel expression to a target field in a
@@ -44,7 +49,22 @@ public class ExpressionMapper extends BaseConverter {
// Resolve the language being used for this expression and evaluate
Exchange exchange = currentExchange.get();
Language expLang = exchange.getContext().resolveLanguage(getLanguagePart());
- Expression exp = expLang.createExpression(getExpressionPart());
+ String scheme = getSchemePart();
+ Expression exp = null;
+ if (scheme != null &&
+ (scheme.equalsIgnoreCase("classpath") ||
+ scheme.equalsIgnoreCase("file") ||
+ scheme.equalsIgnoreCase("http"))) {
+ String path = getPathPart();
+ try {
+ exp = expLang.createExpression(resolveScript(scheme + ":" + path));
+ } catch (IOException e) {
+ throw new IllegalStateException(
+ "Expression script specified but not found", e);
+ }
+ } else {
+ exp = expLang.createExpression(getExpressionPart());
+ }
return exp.evaluate(exchange, destinationClass);
} finally {
done();
@@ -52,6 +72,37 @@ public class ExpressionMapper extends BaseConverter {
}
/**
+ * Resolves the script.
+ *
+ * @param script script or uri for a script to load
+ * @return the script
+ * @throws IOException is thrown if error loading the script
+ */
+ protected String resolveScript(String script) throws IOException {
+ String answer;
+ if (ResourceHelper.hasScheme(script)) {
+ InputStream is = loadResource(script);
+ answer = currentExchange.get().getContext().getTypeConverter().convertTo(String.class, is);
+ IOHelper.close(is);
+ } else {
+ answer = script;
+ }
+
+ return answer;
+ }
+
+ /**
+ * Loads the given resource.
+ *
+ * @param uri uri of the resource.
+ * @return the loaded resource
+ * @throws IOException is thrown if resource is not found or cannot be loaded
+ */
+ protected InputStream loadResource(String uri) throws IOException {
+ return ResourceHelper.resolveMandatoryResourceAsInputStream(currentExchange.get().getContext().getClassResolver(), uri);
+ }
+
+ /**
* Used as the source field for Dozer mappings.
*/
public String getExpression() {
@@ -81,4 +132,34 @@ public class ExpressionMapper extends BaseConverter {
public void setCurrentExchange(Exchange exchange) {
currentExchange.set(exchange);
}
+
+ /**
+ * The scheme used for this mapping's resource file (classpath, file, http).
+ */
+ public String getSchemePart() {
+ return getParameterPart(":", 1);
+ }
+
+ /**
+ * The path used for this mapping's resource file.
+ */
+ public String getPathPart() {
+ return getParameterPart(":", 2);
+ }
+
+ /*
+ * Parse the URI to get at one of the parameters.
+ * @param separator
+ * @param idx
+ * @return
+ */
+ private String getParameterPart(String separator, int idx) {
+ String part = null;
+ String[] parts = getParameter().split(separator);
+ if (parts.length > idx) {
+ part = parts[idx];
+ }
+ return part;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/camel/blob/ad77413b/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingClasspathTest.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingClasspathTest.java b/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingClasspathTest.java
new file mode 100644
index 0000000..37ddf59
--- /dev/null
+++ b/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingClasspathTest.java
@@ -0,0 +1,72 @@
+/**
+ * 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.dozer;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.component.dozer.example.abc.ABCOrder;
+import org.apache.camel.component.dozer.example.xyz.XYZOrder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration
+public class ExpressionMappingClasspathTest {
+
+ @EndpointInject(uri = "mock:result")
+ private MockEndpoint resultEndpoint;
+
+ @Produce(uri = "direct:start")
+ private ProducerTemplate startEndpoint;
+
+ @Autowired
+ private CamelContext camelContext;
+
+ @After
+ public void tearDown() {
+ resultEndpoint.reset();
+ }
+
+ @Test
+ public void testExpressionMappingScript() throws Exception {
+ resultEndpoint.expectedMessageCount(1);
+ Map<String, Object> headers = new HashMap<String, Object>();
+ final String customerNumber = "CAFE-345";
+ final String orderNumber = "ABC-001";
+ headers.put("customerNumber", customerNumber);
+ headers.put("orderNumber", orderNumber);
+ ABCOrder abcOrder = new ABCOrder();
+ // Header value should be mapped to custId in target model
+ startEndpoint.sendBodyAndHeaders(abcOrder, headers);
+ // check results
+ resultEndpoint.assertIsSatisfied();
+ XYZOrder result = resultEndpoint.getExchanges().get(0).getIn().getBody(XYZOrder.class);
+ Assert.assertEquals(customerNumber, result.getCustId());
+ Assert.assertEquals(orderNumber, result.getOrderId());
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/ad77413b/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingFileTest.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingFileTest.java b/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingFileTest.java
new file mode 100644
index 0000000..6cec546
--- /dev/null
+++ b/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingFileTest.java
@@ -0,0 +1,72 @@
+/**
+ * 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.dozer;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.component.dozer.example.abc.ABCOrder;
+import org.apache.camel.component.dozer.example.xyz.XYZOrder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration
+public class ExpressionMappingFileTest {
+
+ @EndpointInject(uri = "mock:result")
+ private MockEndpoint resultEndpoint;
+
+ @Produce(uri = "direct:start")
+ private ProducerTemplate startEndpoint;
+
+ @Autowired
+ private CamelContext camelContext;
+
+ @After
+ public void tearDown() {
+ resultEndpoint.reset();
+ }
+
+ @Test
+ public void testExpressionMappingScriptFile() throws Exception {
+ resultEndpoint.expectedMessageCount(1);
+ Map<String, Object> headers = new HashMap<String, Object>();
+ final String customerNumber = "CAFE-678";
+ final String orderNumber = "ABC-002";
+ headers.put("customerNumber", customerNumber);
+ headers.put("orderNumber", orderNumber);
+ ABCOrder abcOrder = new ABCOrder();
+ // Header value should be mapped to custId in target model
+ startEndpoint.sendBodyAndHeaders(abcOrder, headers);
+ // check results
+ resultEndpoint.assertIsSatisfied();
+ XYZOrder result = resultEndpoint.getExchanges().get(0).getIn().getBody(XYZOrder.class);
+ Assert.assertEquals(customerNumber, result.getCustId());
+ Assert.assertEquals(orderNumber, result.getOrderId());
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/ad77413b/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingTest.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingTest.java b/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingTest.java
index 423f2a9..669487a 100644
--- a/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingTest.java
+++ b/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingTest.java
@@ -69,4 +69,5 @@ public class ExpressionMappingTest {
Assert.assertEquals(customerNumber, result.getCustId());
Assert.assertEquals(orderNumber, result.getOrderId());
}
+
}
http://git-wip-us.apache.org/repos/asf/camel/blob/ad77413b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/ExpressionMappingClasspathTest-context.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/ExpressionMappingClasspathTest-context.xml b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/ExpressionMappingClasspathTest-context.xml
new file mode 100644
index 0000000..c5b7e9d
--- /dev/null
+++ b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/ExpressionMappingClasspathTest-context.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ 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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:camel="http://camel.apache.org/schema/spring" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
+
+ <!-- Camel route -->
+ <camelContext xmlns="http://camel.apache.org/schema/spring">
+ <endpoint uri="dozer:java2java?mappingFile=org/apache/camel/component/dozer/expressionMappingClasspath.xml&targetModel=org.apache.camel.component.dozer.example.xyz.XYZOrder&sourceModel=org.apache.camel.component.dozer.example.abc.ABCOrder" id="java2java"/>
+ <route>
+ <from uri="direct:start"/>
+ <to ref="java2java"/>
+ <to uri="mock:result"/>
+ </route>
+</camelContext>
+</beans>
http://git-wip-us.apache.org/repos/asf/camel/blob/ad77413b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/ExpressionMappingFileTest-context.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/ExpressionMappingFileTest-context.xml b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/ExpressionMappingFileTest-context.xml
new file mode 100644
index 0000000..0acad77
--- /dev/null
+++ b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/ExpressionMappingFileTest-context.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ 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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:camel="http://camel.apache.org/schema/spring" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
+
+ <!-- Camel route -->
+ <camelContext xmlns="http://camel.apache.org/schema/spring">
+ <endpoint uri="dozer:java2java?mappingFile=org/apache/camel/component/dozer/expressionMappingFile.xml&targetModel=org.apache.camel.component.dozer.example.xyz.XYZOrder&sourceModel=org.apache.camel.component.dozer.example.abc.ABCOrder" id="java2java"/>
+ <route>
+ <from uri="direct:start"/>
+ <to ref="java2java"/>
+ <to uri="mock:result"/>
+ </route>
+</camelContext>
+</beans>
http://git-wip-us.apache.org/repos/asf/camel/blob/ad77413b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionClasspath.txt
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionClasspath.txt b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionClasspath.txt
new file mode 100644
index 0000000..418906f
--- /dev/null
+++ b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionClasspath.txt
@@ -0,0 +1 @@
+orderNumber
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/ad77413b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionFile.txt
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionFile.txt b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionFile.txt
new file mode 100644
index 0000000..418906f
--- /dev/null
+++ b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionFile.txt
@@ -0,0 +1 @@
+orderNumber
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/ad77413b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingClasspath.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingClasspath.xml b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingClasspath.xml
new file mode 100644
index 0000000..3b36fa3
--- /dev/null
+++ b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingClasspath.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ 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.
+-->
+<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://dozer.sourceforge.net http://dozer.sourceforge.net/schema/beanmapping.xsd">
+ <mapping>
+ <class-a>org.apache.camel.component.dozer.example.abc.ABCOrder</class-a>
+ <class-b>org.apache.camel.component.dozer.example.xyz.XYZOrder</class-b>
+ <field>
+ <a>header.status</a>
+ <b>priority</b>
+ </field>
+ <field>
+ <a>header.orderNum</a>
+ <b>orderId</b>
+ </field>
+ </mapping>
+ <mapping>
+ <class-a>org.apache.camel.component.dozer.ExpressionMapper</class-a>
+ <class-b>org.apache.camel.component.dozer.example.xyz.XYZOrder</class-b>
+ <field custom-converter-id="_expressionMapping" custom-converter-param="simple:\${header.customerNumber}">
+ <a>expression</a>
+ <b>custId</b>
+ </field>
+ <field custom-converter-id="_expressionMapping" custom-converter-param="header:classpath:/org/apache/camel/component/dozer/expressionClasspath.txt">
+ <a>expression</a>
+ <b>orderId</b>
+ </field>
+ </mapping>
+</mappings>
http://git-wip-us.apache.org/repos/asf/camel/blob/ad77413b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingFile.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingFile.xml b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingFile.xml
new file mode 100644
index 0000000..56cf32b
--- /dev/null
+++ b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingFile.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ 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.
+-->
+<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://dozer.sourceforge.net http://dozer.sourceforge.net/schema/beanmapping.xsd">
+ <mapping>
+ <class-a>org.apache.camel.component.dozer.example.abc.ABCOrder</class-a>
+ <class-b>org.apache.camel.component.dozer.example.xyz.XYZOrder</class-b>
+ <field>
+ <a>header.status</a>
+ <b>priority</b>
+ </field>
+ <field>
+ <a>header.orderNum</a>
+ <b>orderId</b>
+ </field>
+ </mapping>
+ <mapping>
+ <class-a>org.apache.camel.component.dozer.ExpressionMapper</class-a>
+ <class-b>org.apache.camel.component.dozer.example.xyz.XYZOrder</class-b>
+ <field custom-converter-id="_expressionMapping" custom-converter-param="simple:\${header.customerNumber}">
+ <a>expression</a>
+ <b>custId</b>
+ </field>
+ <field custom-converter-id="_expressionMapping" custom-converter-param="header:file:src/test/resources/org/apache/camel/component/dozer/expressionFile.txt">
+ <a>expression</a>
+ <b>orderId</b>
+ </field>
+ </mapping>
+</mappings>
[4/4] camel git commit: Fixed CS
Posted by da...@apache.org.
Fixed CS
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ae1f2015
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ae1f2015
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ae1f2015
Branch: refs/heads/camel-2.15.x
Commit: ae1f2015ee6127e32f165646b62cd2d9cd0583d1
Parents: 6ee7b9e
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Jun 24 08:11:02 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Jun 24 08:12:08 2015 +0200
----------------------------------------------------------------------
.../apache/camel/component/dozer/ExpressionMapper.java | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/ae1f2015/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java
index 007cc97..9a6ec17 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java
@@ -22,8 +22,8 @@ import java.io.InputStream;
import org.apache.camel.Exchange;
import org.apache.camel.Expression;
import org.apache.camel.spi.Language;
-import org.apache.camel.util.ResourceHelper;
import org.apache.camel.util.IOHelper;
+import org.apache.camel.util.ResourceHelper;
/**
* Provides support for mapping a Camel expression to a target field in a
@@ -46,15 +46,14 @@ public class ExpressionMapper extends BaseConverter {
throw new IllegalStateException(
"Current exchange has not been set for ExpressionMapper");
}
+
+ Expression exp;
+
// Resolve the language being used for this expression and evaluate
Exchange exchange = currentExchange.get();
Language expLang = exchange.getContext().resolveLanguage(getLanguagePart());
String scheme = getSchemePart();
- Expression exp = null;
- if (scheme != null &&
- (scheme.equalsIgnoreCase("classpath") ||
- scheme.equalsIgnoreCase("file") ||
- scheme.equalsIgnoreCase("http"))) {
+ if (scheme != null && (scheme.equalsIgnoreCase("classpath") || scheme.equalsIgnoreCase("file") || scheme.equalsIgnoreCase("http"))) {
String path = getPathPart();
try {
exp = expLang.createExpression(resolveScript(scheme + ":" + path));
[3/4] camel git commit: FUSETOOLS-1352 - Found issue with camel-dozer
loading script files for expression mappings. Added functionality and new
tests to camel component
Posted by da...@apache.org.
FUSETOOLS-1352 - Found issue with camel-dozer loading script files for
expression mappings. Added functionality and new tests to camel
component
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/6ee7b9ec
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/6ee7b9ec
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/6ee7b9ec
Branch: refs/heads/camel-2.15.x
Commit: 6ee7b9ec7507f5f69ef78ac889408d47e58766e5
Parents: bfcd556
Author: Brian Fitzpatrick <bf...@redhat.com>
Authored: Tue Jun 23 11:32:27 2015 -0600
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Jun 24 08:12:03 2015 +0200
----------------------------------------------------------------------
.../camel/component/dozer/ExpressionMapper.java | 83 +++++++++++++++++++-
.../dozer/ExpressionMappingClasspathTest.java | 72 +++++++++++++++++
.../dozer/ExpressionMappingFileTest.java | 72 +++++++++++++++++
.../component/dozer/ExpressionMappingTest.java | 1 +
.../ExpressionMappingClasspathTest-context.xml | 29 +++++++
.../dozer/ExpressionMappingFileTest-context.xml | 29 +++++++
.../component/dozer/expressionClasspath.txt | 1 +
.../camel/component/dozer/expressionFile.txt | 1 +
.../dozer/expressionMappingClasspath.xml | 43 ++++++++++
.../component/dozer/expressionMappingFile.xml | 43 ++++++++++
10 files changed, 373 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/6ee7b9ec/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java
index afee452..007cc97 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java
@@ -16,9 +16,14 @@
*/
package org.apache.camel.component.dozer;
+import java.io.IOException;
+import java.io.InputStream;
+
import org.apache.camel.Exchange;
import org.apache.camel.Expression;
import org.apache.camel.spi.Language;
+import org.apache.camel.util.ResourceHelper;
+import org.apache.camel.util.IOHelper;
/**
* Provides support for mapping a Camel expression to a target field in a
@@ -44,7 +49,22 @@ public class ExpressionMapper extends BaseConverter {
// Resolve the language being used for this expression and evaluate
Exchange exchange = currentExchange.get();
Language expLang = exchange.getContext().resolveLanguage(getLanguagePart());
- Expression exp = expLang.createExpression(getExpressionPart());
+ String scheme = getSchemePart();
+ Expression exp = null;
+ if (scheme != null &&
+ (scheme.equalsIgnoreCase("classpath") ||
+ scheme.equalsIgnoreCase("file") ||
+ scheme.equalsIgnoreCase("http"))) {
+ String path = getPathPart();
+ try {
+ exp = expLang.createExpression(resolveScript(scheme + ":" + path));
+ } catch (IOException e) {
+ throw new IllegalStateException(
+ "Expression script specified but not found", e);
+ }
+ } else {
+ exp = expLang.createExpression(getExpressionPart());
+ }
return exp.evaluate(exchange, destinationClass);
} finally {
done();
@@ -52,6 +72,37 @@ public class ExpressionMapper extends BaseConverter {
}
/**
+ * Resolves the script.
+ *
+ * @param script script or uri for a script to load
+ * @return the script
+ * @throws IOException is thrown if error loading the script
+ */
+ protected String resolveScript(String script) throws IOException {
+ String answer;
+ if (ResourceHelper.hasScheme(script)) {
+ InputStream is = loadResource(script);
+ answer = currentExchange.get().getContext().getTypeConverter().convertTo(String.class, is);
+ IOHelper.close(is);
+ } else {
+ answer = script;
+ }
+
+ return answer;
+ }
+
+ /**
+ * Loads the given resource.
+ *
+ * @param uri uri of the resource.
+ * @return the loaded resource
+ * @throws IOException is thrown if resource is not found or cannot be loaded
+ */
+ protected InputStream loadResource(String uri) throws IOException {
+ return ResourceHelper.resolveMandatoryResourceAsInputStream(currentExchange.get().getContext().getClassResolver(), uri);
+ }
+
+ /**
* Used as the source field for Dozer mappings.
*/
public String getExpression() {
@@ -81,4 +132,34 @@ public class ExpressionMapper extends BaseConverter {
public void setCurrentExchange(Exchange exchange) {
currentExchange.set(exchange);
}
+
+ /**
+ * The scheme used for this mapping's resource file (classpath, file, http).
+ */
+ public String getSchemePart() {
+ return getParameterPart(":", 1);
+ }
+
+ /**
+ * The path used for this mapping's resource file.
+ */
+ public String getPathPart() {
+ return getParameterPart(":", 2);
+ }
+
+ /*
+ * Parse the URI to get at one of the parameters.
+ * @param separator
+ * @param idx
+ * @return
+ */
+ private String getParameterPart(String separator, int idx) {
+ String part = null;
+ String[] parts = getParameter().split(separator);
+ if (parts.length > idx) {
+ part = parts[idx];
+ }
+ return part;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/camel/blob/6ee7b9ec/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingClasspathTest.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingClasspathTest.java b/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingClasspathTest.java
new file mode 100644
index 0000000..37ddf59
--- /dev/null
+++ b/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingClasspathTest.java
@@ -0,0 +1,72 @@
+/**
+ * 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.dozer;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.component.dozer.example.abc.ABCOrder;
+import org.apache.camel.component.dozer.example.xyz.XYZOrder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration
+public class ExpressionMappingClasspathTest {
+
+ @EndpointInject(uri = "mock:result")
+ private MockEndpoint resultEndpoint;
+
+ @Produce(uri = "direct:start")
+ private ProducerTemplate startEndpoint;
+
+ @Autowired
+ private CamelContext camelContext;
+
+ @After
+ public void tearDown() {
+ resultEndpoint.reset();
+ }
+
+ @Test
+ public void testExpressionMappingScript() throws Exception {
+ resultEndpoint.expectedMessageCount(1);
+ Map<String, Object> headers = new HashMap<String, Object>();
+ final String customerNumber = "CAFE-345";
+ final String orderNumber = "ABC-001";
+ headers.put("customerNumber", customerNumber);
+ headers.put("orderNumber", orderNumber);
+ ABCOrder abcOrder = new ABCOrder();
+ // Header value should be mapped to custId in target model
+ startEndpoint.sendBodyAndHeaders(abcOrder, headers);
+ // check results
+ resultEndpoint.assertIsSatisfied();
+ XYZOrder result = resultEndpoint.getExchanges().get(0).getIn().getBody(XYZOrder.class);
+ Assert.assertEquals(customerNumber, result.getCustId());
+ Assert.assertEquals(orderNumber, result.getOrderId());
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/6ee7b9ec/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingFileTest.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingFileTest.java b/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingFileTest.java
new file mode 100644
index 0000000..6cec546
--- /dev/null
+++ b/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingFileTest.java
@@ -0,0 +1,72 @@
+/**
+ * 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.dozer;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.component.dozer.example.abc.ABCOrder;
+import org.apache.camel.component.dozer.example.xyz.XYZOrder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration
+public class ExpressionMappingFileTest {
+
+ @EndpointInject(uri = "mock:result")
+ private MockEndpoint resultEndpoint;
+
+ @Produce(uri = "direct:start")
+ private ProducerTemplate startEndpoint;
+
+ @Autowired
+ private CamelContext camelContext;
+
+ @After
+ public void tearDown() {
+ resultEndpoint.reset();
+ }
+
+ @Test
+ public void testExpressionMappingScriptFile() throws Exception {
+ resultEndpoint.expectedMessageCount(1);
+ Map<String, Object> headers = new HashMap<String, Object>();
+ final String customerNumber = "CAFE-678";
+ final String orderNumber = "ABC-002";
+ headers.put("customerNumber", customerNumber);
+ headers.put("orderNumber", orderNumber);
+ ABCOrder abcOrder = new ABCOrder();
+ // Header value should be mapped to custId in target model
+ startEndpoint.sendBodyAndHeaders(abcOrder, headers);
+ // check results
+ resultEndpoint.assertIsSatisfied();
+ XYZOrder result = resultEndpoint.getExchanges().get(0).getIn().getBody(XYZOrder.class);
+ Assert.assertEquals(customerNumber, result.getCustId());
+ Assert.assertEquals(orderNumber, result.getOrderId());
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/6ee7b9ec/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingTest.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingTest.java b/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingTest.java
index 423f2a9..669487a 100644
--- a/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingTest.java
+++ b/components/camel-dozer/src/test/java/org/apache/camel/component/dozer/ExpressionMappingTest.java
@@ -69,4 +69,5 @@ public class ExpressionMappingTest {
Assert.assertEquals(customerNumber, result.getCustId());
Assert.assertEquals(orderNumber, result.getOrderId());
}
+
}
http://git-wip-us.apache.org/repos/asf/camel/blob/6ee7b9ec/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/ExpressionMappingClasspathTest-context.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/ExpressionMappingClasspathTest-context.xml b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/ExpressionMappingClasspathTest-context.xml
new file mode 100644
index 0000000..c5b7e9d
--- /dev/null
+++ b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/ExpressionMappingClasspathTest-context.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ 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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:camel="http://camel.apache.org/schema/spring" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
+
+ <!-- Camel route -->
+ <camelContext xmlns="http://camel.apache.org/schema/spring">
+ <endpoint uri="dozer:java2java?mappingFile=org/apache/camel/component/dozer/expressionMappingClasspath.xml&targetModel=org.apache.camel.component.dozer.example.xyz.XYZOrder&sourceModel=org.apache.camel.component.dozer.example.abc.ABCOrder" id="java2java"/>
+ <route>
+ <from uri="direct:start"/>
+ <to ref="java2java"/>
+ <to uri="mock:result"/>
+ </route>
+</camelContext>
+</beans>
http://git-wip-us.apache.org/repos/asf/camel/blob/6ee7b9ec/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/ExpressionMappingFileTest-context.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/ExpressionMappingFileTest-context.xml b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/ExpressionMappingFileTest-context.xml
new file mode 100644
index 0000000..0acad77
--- /dev/null
+++ b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/ExpressionMappingFileTest-context.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ 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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:camel="http://camel.apache.org/schema/spring" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
+
+ <!-- Camel route -->
+ <camelContext xmlns="http://camel.apache.org/schema/spring">
+ <endpoint uri="dozer:java2java?mappingFile=org/apache/camel/component/dozer/expressionMappingFile.xml&targetModel=org.apache.camel.component.dozer.example.xyz.XYZOrder&sourceModel=org.apache.camel.component.dozer.example.abc.ABCOrder" id="java2java"/>
+ <route>
+ <from uri="direct:start"/>
+ <to ref="java2java"/>
+ <to uri="mock:result"/>
+ </route>
+</camelContext>
+</beans>
http://git-wip-us.apache.org/repos/asf/camel/blob/6ee7b9ec/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionClasspath.txt
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionClasspath.txt b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionClasspath.txt
new file mode 100644
index 0000000..418906f
--- /dev/null
+++ b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionClasspath.txt
@@ -0,0 +1 @@
+orderNumber
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/6ee7b9ec/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionFile.txt
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionFile.txt b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionFile.txt
new file mode 100644
index 0000000..418906f
--- /dev/null
+++ b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionFile.txt
@@ -0,0 +1 @@
+orderNumber
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/6ee7b9ec/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingClasspath.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingClasspath.xml b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingClasspath.xml
new file mode 100644
index 0000000..3b36fa3
--- /dev/null
+++ b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingClasspath.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ 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.
+-->
+<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://dozer.sourceforge.net http://dozer.sourceforge.net/schema/beanmapping.xsd">
+ <mapping>
+ <class-a>org.apache.camel.component.dozer.example.abc.ABCOrder</class-a>
+ <class-b>org.apache.camel.component.dozer.example.xyz.XYZOrder</class-b>
+ <field>
+ <a>header.status</a>
+ <b>priority</b>
+ </field>
+ <field>
+ <a>header.orderNum</a>
+ <b>orderId</b>
+ </field>
+ </mapping>
+ <mapping>
+ <class-a>org.apache.camel.component.dozer.ExpressionMapper</class-a>
+ <class-b>org.apache.camel.component.dozer.example.xyz.XYZOrder</class-b>
+ <field custom-converter-id="_expressionMapping" custom-converter-param="simple:\${header.customerNumber}">
+ <a>expression</a>
+ <b>custId</b>
+ </field>
+ <field custom-converter-id="_expressionMapping" custom-converter-param="header:classpath:/org/apache/camel/component/dozer/expressionClasspath.txt">
+ <a>expression</a>
+ <b>orderId</b>
+ </field>
+ </mapping>
+</mappings>
http://git-wip-us.apache.org/repos/asf/camel/blob/6ee7b9ec/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingFile.xml
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingFile.xml b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingFile.xml
new file mode 100644
index 0000000..56cf32b
--- /dev/null
+++ b/components/camel-dozer/src/test/resources/org/apache/camel/component/dozer/expressionMappingFile.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ 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.
+-->
+<mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://dozer.sourceforge.net http://dozer.sourceforge.net/schema/beanmapping.xsd">
+ <mapping>
+ <class-a>org.apache.camel.component.dozer.example.abc.ABCOrder</class-a>
+ <class-b>org.apache.camel.component.dozer.example.xyz.XYZOrder</class-b>
+ <field>
+ <a>header.status</a>
+ <b>priority</b>
+ </field>
+ <field>
+ <a>header.orderNum</a>
+ <b>orderId</b>
+ </field>
+ </mapping>
+ <mapping>
+ <class-a>org.apache.camel.component.dozer.ExpressionMapper</class-a>
+ <class-b>org.apache.camel.component.dozer.example.xyz.XYZOrder</class-b>
+ <field custom-converter-id="_expressionMapping" custom-converter-param="simple:\${header.customerNumber}">
+ <a>expression</a>
+ <b>custId</b>
+ </field>
+ <field custom-converter-id="_expressionMapping" custom-converter-param="header:file:src/test/resources/org/apache/camel/component/dozer/expressionFile.txt">
+ <a>expression</a>
+ <b>orderId</b>
+ </field>
+ </mapping>
+</mappings>
[2/4] camel git commit: Fixed CS
Posted by da...@apache.org.
Fixed CS
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/0fa00d30
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/0fa00d30
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/0fa00d30
Branch: refs/heads/master
Commit: 0fa00d30d0ec7c0ada6d7c661ac6e1263030c57a
Parents: ad77413
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Jun 24 08:11:02 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Jun 24 08:11:02 2015 +0200
----------------------------------------------------------------------
.../apache/camel/component/dozer/ExpressionMapper.java | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/0fa00d30/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java
index 007cc97..9a6ec17 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/ExpressionMapper.java
@@ -22,8 +22,8 @@ import java.io.InputStream;
import org.apache.camel.Exchange;
import org.apache.camel.Expression;
import org.apache.camel.spi.Language;
-import org.apache.camel.util.ResourceHelper;
import org.apache.camel.util.IOHelper;
+import org.apache.camel.util.ResourceHelper;
/**
* Provides support for mapping a Camel expression to a target field in a
@@ -46,15 +46,14 @@ public class ExpressionMapper extends BaseConverter {
throw new IllegalStateException(
"Current exchange has not been set for ExpressionMapper");
}
+
+ Expression exp;
+
// Resolve the language being used for this expression and evaluate
Exchange exchange = currentExchange.get();
Language expLang = exchange.getContext().resolveLanguage(getLanguagePart());
String scheme = getSchemePart();
- Expression exp = null;
- if (scheme != null &&
- (scheme.equalsIgnoreCase("classpath") ||
- scheme.equalsIgnoreCase("file") ||
- scheme.equalsIgnoreCase("http"))) {
+ if (scheme != null && (scheme.equalsIgnoreCase("classpath") || scheme.equalsIgnoreCase("file") || scheme.equalsIgnoreCase("http"))) {
String path = getPathPart();
try {
exp = expLang.createExpression(resolveScript(scheme + ":" + path));