You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2023/06/14 12:07:42 UTC

[camel] 01/02: (chores) camel-core-languages: break the doDate in more manageable parts

This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit cb67f8f7b192e8fa657611b43eed7f151fd32c68
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Wed Jun 14 08:13:40 2023 +0200

    (chores) camel-core-languages: break the doDate in more manageable parts
---
 .../camel/language/csimple/CSimpleHelper.java      | 109 ++++++++++++-------
 .../language/simple/SimpleExpressionBuilder.java   | 121 +++++++++++++--------
 2 files changed, 144 insertions(+), 86 deletions(-)

diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
index 72d57890c3f..c7af5e75a75 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
@@ -292,46 +292,7 @@ public final class CSimpleHelper {
             offsets.add(offsetMatcher.group(1).equals("+") ? value : -value);
         }
 
-        Date date;
-        if ("now".equals(command)) {
-            date = new Date();
-        } else if ("exchangeCreated".equals(command)) {
-            long num = exchange.getCreated();
-            date = new Date(num);
-        } else if (command.startsWith("header.")) {
-            String key = command.substring(command.lastIndexOf('.') + 1);
-            Object obj = exchange.getMessage().getHeader(key);
-            if (obj instanceof Date) {
-                date = (Date) obj;
-            } else if (obj instanceof Long) {
-                date = new Date((Long) obj);
-            } else {
-                throw new IllegalArgumentException("Cannot find Date/long object at command: " + command);
-            }
-        } else if (command.startsWith("exchangeProperty.")) {
-            String key = command.substring(command.lastIndexOf('.') + 1);
-            Object obj = exchange.getProperty(key);
-            if (obj instanceof Date) {
-                date = (Date) obj;
-            } else if (obj instanceof Long) {
-                date = new Date((Long) obj);
-            } else {
-                throw new IllegalArgumentException("Cannot find Date/long 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) {
-                date = new Date(num);
-            } else {
-                date = exchange.getIn().getHeader(Exchange.FILE_LAST_MODIFIED, Date.class);
-                if (date == null) {
-                    throw new IllegalArgumentException(
-                            "Cannot find " + Exchange.FILE_LAST_MODIFIED + " header at command: " + command);
-                }
-            }
-        } else {
-            throw new IllegalArgumentException("Command not supported for dateExpression: " + command);
-        }
+        Date date = evalDate(exchange, command);
 
         // Apply offsets
         long dateAsLong = date.getTime();
@@ -351,6 +312,74 @@ public final class CSimpleHelper {
         }
     }
 
+    private static Date evalDate(Exchange exchange, String command) {
+        Date date;
+        if ("now".equals(command)) {
+            date = new Date();
+        } else if ("exchangeCreated".equals(command)) {
+            date = dateFromExchangeCreated(exchange);
+        } else if (command.startsWith("header.")) {
+            date = dateFromHeader(exchange, command);
+        } else if (command.startsWith("exchangeProperty.")) {
+            date = dateFromExchangeProperty(exchange, command);
+        } else if ("file".equals(command)) {
+            date = dateFromFileLastModified(exchange, command);
+        } else {
+            throw new IllegalArgumentException("Command not supported for dateExpression: " + command);
+        }
+        return date;
+    }
+
+    private static Date dateFromFileLastModified(Exchange exchange, String command) {
+        Date date;
+        Long num = exchange.getIn().getHeader(Exchange.FILE_LAST_MODIFIED, Long.class);
+        if (num != null && num > 0) {
+            date = new Date(num);
+        } else {
+            date = exchange.getIn().getHeader(Exchange.FILE_LAST_MODIFIED, Date.class);
+            if (date == null) {
+                throw new IllegalArgumentException(
+                        "Cannot find " + Exchange.FILE_LAST_MODIFIED + " header at command: " + command);
+            }
+        }
+        return date;
+    }
+
+    private static Date dateFromExchangeProperty(Exchange exchange, String command) {
+        Date date;
+        String key = command.substring(command.lastIndexOf('.') + 1);
+        Object obj = exchange.getProperty(key);
+        if (obj instanceof Date) {
+            date = (Date) obj;
+        } else if (obj instanceof Long) {
+            date = new Date((Long) obj);
+        } else {
+            throw new IllegalArgumentException("Cannot find Date/long object at command: " + command);
+        }
+        return date;
+    }
+
+    private static Date dateFromHeader(Exchange exchange, String command) {
+        Date date;
+        String key = command.substring(command.lastIndexOf('.') + 1);
+        Object obj = exchange.getMessage().getHeader(key);
+        if (obj instanceof Date) {
+            date = (Date) obj;
+        } else if (obj instanceof Long) {
+            date = new Date((Long) obj);
+        } else {
+            throw new IllegalArgumentException("Cannot find Date/long object at command: " + command);
+        }
+        return date;
+    }
+
+    private static Date dateFromExchangeCreated(Exchange exchange) {
+        Date date;
+        long num = exchange.getCreated();
+        date = new Date(num);
+        return date;
+    }
+
     public static String property(Exchange exchange, String key, String defaultValue) {
         try {
             // enclose key with {{ }} to force parsing as key can be a nested expression too
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
index 9a915925280..f29fd681f0f 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
@@ -545,52 +545,7 @@ public final class SimpleExpressionBuilder {
         return new ExpressionAdapter() {
             @Override
             public Object evaluate(Exchange exchange) {
-                Date date;
-                if ("now".equals(command)) {
-                    date = new Date();
-                } else if ("exchangeCreated".equals(command)) {
-                    long num = exchange.getCreated();
-                    date = new Date(num);
-                } else if (command.startsWith("header.")) {
-                    String key = command.substring(command.lastIndexOf('.') + 1);
-                    Object obj = exchange.getMessage().getHeader(key);
-                    if (obj instanceof Date) {
-                        date = (Date) obj;
-                    } else if (obj instanceof Long) {
-                        date = new Date((Long) obj);
-                    } else {
-                        date = exchange.getContext().getTypeConverter().tryConvertTo(Date.class, exchange, obj);
-                        if (date == null) {
-                            throw new IllegalArgumentException("Cannot find Date/long object at command: " + command);
-                        }
-                    }
-                } else if (command.startsWith("exchangeProperty.")) {
-                    String key = command.substring(command.lastIndexOf('.') + 1);
-                    Object obj = exchange.getProperty(key);
-                    if (obj instanceof Date) {
-                        date = (Date) obj;
-                    } else if (obj instanceof Long) {
-                        date = new Date((Long) obj);
-                    } else {
-                        date = exchange.getContext().getTypeConverter().tryConvertTo(Date.class, exchange, obj);
-                        if (date == null) {
-                            throw new IllegalArgumentException("Cannot find Date/long 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) {
-                        date = new Date(num);
-                    } else {
-                        date = exchange.getIn().getHeader(Exchange.FILE_LAST_MODIFIED, Date.class);
-                        if (date == null) {
-                            throw new IllegalArgumentException(
-                                    "Cannot find " + Exchange.FILE_LAST_MODIFIED + " header at command: " + command);
-                        }
-                    }
-                } else {
-                    throw new IllegalArgumentException("Command not supported for dateExpression: " + command);
-                }
+                Date date = evalDate(exchange, command);
 
                 // Apply offsets
                 long dateAsLong = date.getTime();
@@ -623,6 +578,80 @@ public final class SimpleExpressionBuilder {
         };
     }
 
+    private static Date evalDate(Exchange exchange, String command) {
+        Date date;
+        if ("now".equals(command)) {
+            date = new Date();
+        } else if ("exchangeCreated".equals(command)) {
+            date = dateFromExchangeCreated(exchange);
+        } else if (command.startsWith("header.")) {
+            date = dateFromHeader(exchange, command);
+        } else if (command.startsWith("exchangeProperty.")) {
+            date = dateFromExchangeProperty(exchange, command);
+        } else if ("file".equals(command)) {
+            date = dateFromFileLastModified(exchange, command);
+        } else {
+            throw new IllegalArgumentException("Command not supported for dateExpression: " + command);
+        }
+        return date;
+    }
+
+    private static Date dateFromFileLastModified(Exchange exchange, String command) {
+        Date date;
+        Long num = exchange.getIn().getHeader(Exchange.FILE_LAST_MODIFIED, Long.class);
+        if (num != null && num > 0) {
+            date = new Date(num);
+        } else {
+            date = exchange.getIn().getHeader(Exchange.FILE_LAST_MODIFIED, Date.class);
+            if (date == null) {
+                throw new IllegalArgumentException(
+                        "Cannot find " + Exchange.FILE_LAST_MODIFIED + " header at command: " + command);
+            }
+        }
+        return date;
+    }
+
+    private static Date dateFromExchangeProperty(Exchange exchange, String command) {
+        Date date;
+        String key = command.substring(command.lastIndexOf('.') + 1);
+        Object obj = exchange.getProperty(key);
+        if (obj instanceof Date) {
+            date = (Date) obj;
+        } else if (obj instanceof Long) {
+            date = new Date((Long) obj);
+        } else {
+            date = exchange.getContext().getTypeConverter().tryConvertTo(Date.class, exchange, obj);
+            if (date == null) {
+                throw new IllegalArgumentException("Cannot find Date/long object at command: " + command);
+            }
+        }
+        return date;
+    }
+
+    private static Date dateFromHeader(Exchange exchange, String command) {
+        Date date;
+        String key = command.substring(command.lastIndexOf('.') + 1);
+        Object obj = exchange.getMessage().getHeader(key);
+        if (obj instanceof Date) {
+            date = (Date) obj;
+        } else if (obj instanceof Long) {
+            date = new Date((Long) obj);
+        } else {
+            date = exchange.getContext().getTypeConverter().tryConvertTo(Date.class, exchange, obj);
+            if (date == null) {
+                throw new IllegalArgumentException("Cannot find Date/long object at command: " + command);
+            }
+        }
+        return date;
+    }
+
+    private static Date dateFromExchangeCreated(Exchange exchange) {
+        Date date;
+        long num = exchange.getCreated();
+        date = new Date(num);
+        return date;
+    }
+
     public static Expression skipIteratorExpression(final Expression expression, final int skip) {
         return new ExpressionAdapter() {
             @Override