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 2014/06/26 08:00:59 UTC

[3/5] git commit: CAMEL-7539 StringTemplateEndpoint should support set variable map from message header

CAMEL-7539 StringTemplateEndpoint should support set variable map from message header


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/157ef3af
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/157ef3af
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/157ef3af

Branch: refs/heads/master
Commit: 157ef3af08f6cef1e8a9fc3a3fce6bfefc6b4206
Parents: 676d8cb
Author: Willem Jiang <wi...@gmail.com>
Authored: Wed Jun 25 23:15:11 2014 +0800
Committer: Willem Jiang <wi...@gmail.com>
Committed: Thu Jun 26 12:03:12 2014 +0800

----------------------------------------------------------------------
 .../stringtemplate/StringTemplateConstants.java |  1 +
 .../stringtemplate/StringTemplateEndpoint.java  |  7 +++++-
 .../stringtemplate/StringTemplateTest.java      | 25 ++++++++++++++++++++
 3 files changed, 32 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/157ef3af/components/camel-stringtemplate/src/main/java/org/apache/camel/component/stringtemplate/StringTemplateConstants.java
----------------------------------------------------------------------
diff --git a/components/camel-stringtemplate/src/main/java/org/apache/camel/component/stringtemplate/StringTemplateConstants.java b/components/camel-stringtemplate/src/main/java/org/apache/camel/component/stringtemplate/StringTemplateConstants.java
index a01ce63..a06d90e 100644
--- a/components/camel-stringtemplate/src/main/java/org/apache/camel/component/stringtemplate/StringTemplateConstants.java
+++ b/components/camel-stringtemplate/src/main/java/org/apache/camel/component/stringtemplate/StringTemplateConstants.java
@@ -22,6 +22,7 @@ package org.apache.camel.component.stringtemplate;
 public final class StringTemplateConstants {
 
     public static final String STRINGTEMPLATE_RESOURCE_URI = "CamelStringTemplateResourceUri";
+    public static final String STRINGTEMPLATE_VARIABLE_MAP = "CamelStringTemplateVariableMap";
 
     private StringTemplateConstants() {
         // Utility class

http://git-wip-us.apache.org/repos/asf/camel/blob/157ef3af/components/camel-stringtemplate/src/main/java/org/apache/camel/component/stringtemplate/StringTemplateEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-stringtemplate/src/main/java/org/apache/camel/component/stringtemplate/StringTemplateEndpoint.java b/components/camel-stringtemplate/src/main/java/org/apache/camel/component/stringtemplate/StringTemplateEndpoint.java
index a5d6837..5e2d356 100644
--- a/components/camel-stringtemplate/src/main/java/org/apache/camel/component/stringtemplate/StringTemplateEndpoint.java
+++ b/components/camel-stringtemplate/src/main/java/org/apache/camel/component/stringtemplate/StringTemplateEndpoint.java
@@ -72,7 +72,12 @@ public class StringTemplateEndpoint extends ResourceEndpoint {
     @Override
     protected void onExchange(Exchange exchange) throws Exception {
         StringWriter buffer = new StringWriter();
-        Map<String, Object> variableMap = ExchangeHelper.createVariableMap(exchange);
+        
+        @SuppressWarnings("unchecked")
+        Map<String, Object> variableMap = exchange.getIn().getHeader(StringTemplateConstants.STRINGTEMPLATE_VARIABLE_MAP, Map.class);
+        if (variableMap == null) {
+            variableMap = ExchangeHelper.createVariableMap(exchange);
+        }
 
         // getResourceAsInputStream also considers the content cache
         String text = exchange.getContext().getTypeConverter().mandatoryConvertTo(String.class, getResourceAsInputStream());

http://git-wip-us.apache.org/repos/asf/camel/blob/157ef3af/components/camel-stringtemplate/src/test/java/org/apache/camel/component/stringtemplate/StringTemplateTest.java
----------------------------------------------------------------------
diff --git a/components/camel-stringtemplate/src/test/java/org/apache/camel/component/stringtemplate/StringTemplateTest.java b/components/camel-stringtemplate/src/test/java/org/apache/camel/component/stringtemplate/StringTemplateTest.java
index 56b983e..acee109 100644
--- a/components/camel-stringtemplate/src/test/java/org/apache/camel/component/stringtemplate/StringTemplateTest.java
+++ b/components/camel-stringtemplate/src/test/java/org/apache/camel/component/stringtemplate/StringTemplateTest.java
@@ -16,6 +16,9 @@
  */
 package org.apache.camel.component.stringtemplate;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import javax.activation.DataHandler;
 
 import org.apache.camel.Exchange;
@@ -44,6 +47,28 @@ public class StringTemplateTest extends CamelTestSupport {
         assertEquals("Christian", response.getOut().getHeader("name"));
         assertSame(dataHandler, response.getOut().getAttachment("item"));
     }
+    
+    @Test
+    public void testVelocityContext() throws Exception {
+        Exchange exchange = template.request("direct:a", new Processor() {
+            @Override
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setBody("");
+                exchange.getIn().setHeader("name", "Christian");
+                Map<String, Object> variableMap = new HashMap<String, Object>();
+                Map<String, Object> headersMap = new HashMap<String, Object>();
+                headersMap.put("name", "Willem");
+                variableMap.put("headers", headersMap);
+                variableMap.put("body", "Monday");
+                variableMap.put("exchange", exchange);
+                exchange.getIn().setHeader(StringTemplateConstants.STRINGTEMPLATE_VARIABLE_MAP, variableMap);
+                exchange.setProperty("item", "7");
+            }
+        });
+
+        assertEquals("Dear Willem. You ordered item 7 on Monday.", exchange.getOut().getBody());
+        assertEquals("Christian", exchange.getOut().getHeader("name"));
+    }
 
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {