Repository: camel
Updated Branches:
  refs/heads/master 3c6a82935 -> dc4f20b30


CAMEL-11621: extend simple date formatter for properties

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

Branch: refs/heads/master
Commit: cc1037e6a30bc1af35a8bc8fe682a54b20064e5b
Parents: 3c6a829
Author: sdirbach <[email protected]>
Authored: Mon Aug 14 20:35:53 2017 +0200
Committer: Claus Ibsen <[email protected]>
Committed: Mon Aug 21 07:22:10 2017 +0200

----------------------------------------------------------------------
 .../apache/camel/builder/ExpressionBuilder.java |  6 ++++
 .../camel/language/simple/SimpleLanguage.java   |  1 +
 .../camel/language/simple/SimpleTest.java       | 30 ++++++++++++++++----
 3 files changed, 32 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/cc1037e6/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java 
b/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
index d8ace9b..db91f21 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
@@ -1949,6 +1949,12 @@ public final class ExpressionBuilder {
                     if (date == null) {
                         throw new IllegalArgumentException("Cannot find 
java.util.Date object at command: " + command);
                     }
+                } else if (command.startsWith("property.")) {
+                    String key = command.substring(command.lastIndexOf('.') + 
1);
+                    date = exchange.getProperty(key, Date.class);
+                    if (date == null) {
+                        throw new IllegalArgumentException("Cannot find 
java.util.Date object at command: " + command);
+                    }
                 } else if ("file".equals(command)) {
                     Long num = 
exchange.getIn().getHeader(Exchange.FILE_LAST_MODIFIED, Long.class);
                     if (num != null && num > 0) {

http://git-wip-us.apache.org/repos/asf/camel/blob/cc1037e6/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java 
b/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
index de4fc92..4685503 100644
--- 
a/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
+++ 
b/camel-core/src/main/java/org/apache/camel/language/simple/SimpleLanguage.java
@@ -56,6 +56,7 @@ import org.slf4j.LoggerFactory;
  *     Supported commands are: <tt>now</tt> for current timestamp,
  *     <tt>in.header.xxx</tt> or <tt>header.xxx</tt> to use the Date object in 
the in header.
  *     <tt>out.header.xxx</tt> to use the Date object in the out header.
+ *     <tt>property.xxx</tt> to use the Date object in the out header.
  *     <tt>file</tt> for the last modified timestamp of the file (available 
with a File consumer).
  *     Command accepts offsets such as: <tt>now-24h</tt> or 
<tt>in.header.xxx+1h</tt> or even <tt>now+1h30m-100</tt>.
  * </li>

http://git-wip-us.apache.org/repos/asf/camel/blob/cc1037e6/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java 
b/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
index 83a9945..5713265 100644
--- a/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
+++ b/camel-core/src/test/java/org/apache/camel/language/simple/SimpleTest.java
@@ -479,13 +479,33 @@ public class SimpleTest extends LanguageTestSupport {
     }
 
     public void testDateExpressions() throws Exception {
-        Calendar cal = Calendar.getInstance();
-        cal.set(1974, Calendar.APRIL, 20);
-        exchange.getIn().setHeader("birthday", cal.getTime());
-
-        assertExpression("date:header.birthday", cal.getTime());
+        Calendar inHeaderCalendar = Calendar.getInstance();
+        inHeaderCalendar.set(1974, Calendar.APRIL, 20);
+        exchange.getIn().setHeader("birthday", inHeaderCalendar.getTime());
+        
+        Calendar outHeaderCalendar = Calendar.getInstance();
+        outHeaderCalendar.set(1975, Calendar.MAY, 21);
+        exchange.getOut().setHeader("birthday", outHeaderCalendar.getTime());
+
+        Calendar propertyCalendar = Calendar.getInstance();
+        propertyCalendar.set(1976, Calendar.JUNE, 22);
+        exchange.setProperty("birthday", propertyCalendar.getTime());
+
+        assertExpression("date:header.birthday", inHeaderCalendar.getTime());
         assertExpression("date:header.birthday:yyyyMMdd", "19740420");
         assertExpression("date:header.birthday+24h:yyyyMMdd", "19740421");
+        
+        assertExpression("date:in.header.birthday", 
inHeaderCalendar.getTime());
+        assertExpression("date:in.header.birthday:yyyyMMdd", "19740420");
+        assertExpression("date:in.header.birthday+24h:yyyyMMdd", "19740421");
+        
+        assertExpression("date:out.header.birthday", 
outHeaderCalendar.getTime());
+        assertExpression("date:out.header.birthday:yyyyMMdd", "19750521");
+        assertExpression("date:out.header.birthday+24h:yyyyMMdd", "19750522");
+
+        assertExpression("date:property.birthday", propertyCalendar.getTime());
+        assertExpression("date:property.birthday:yyyyMMdd", "19760622");
+        assertExpression("date:property.birthday+24h:yyyyMMdd", "19760623");
 
         try {
             assertExpression("date:yyyyMMdd", "19740420");

Reply via email to