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 18:43:52 UTC

[camel] 01/03: (chores) camel-core-languages: cleanup duplicated code applying date offsets

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 9a27894b1610cc4808be98845242f65c03a11a7d
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Wed Jun 14 16:19:22 2023 +0200

     (chores) camel-core-languages: cleanup duplicated code applying date offsets
---
 .../camel/language/csimple/CSimpleHelper.java      | 19 +++----------
 .../language/simple/SimpleExpressionBuilder.java   | 18 ++-----------
 .../org/apache/camel/support/LanguageHelper.java   | 31 ++++++++++++++++++++++
 3 files changed, 36 insertions(+), 32 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 950e970905f..53bbe807ca0 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
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.language.csimple;
 
+import java.io.Serializable;
 import java.lang.reflect.Array;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -294,24 +295,10 @@ public final class CSimpleHelper {
 
         Date date = evalDate(exchange, command);
 
-        // Apply offsets
-        long dateAsLong = date.getTime();
-        for (long offset : offsets) {
-            dateAsLong += offset;
-        }
-        date = new Date(dateAsLong);
-
-        if (pattern != null && !pattern.isEmpty()) {
-            SimpleDateFormat df = new SimpleDateFormat(pattern);
-            if (timezone != null && !timezone.isEmpty()) {
-                df.setTimeZone(TimeZone.getTimeZone(timezone));
-            }
-            return df.format(date);
-        } else {
-            return date;
-        }
+        return LanguageHelper.applyDateOffsets(date, offsets, pattern, timezone);
     }
 
+
     private static Date evalDate(Exchange exchange, String command) {
         Date date;
         if ("now".equals(command)) {
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 97d406c80a1..c70490b4dfb 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
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.language.simple;
 
+import java.io.Serializable;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
@@ -547,22 +548,7 @@ public final class SimpleExpressionBuilder {
             public Object evaluate(Exchange exchange) {
                 Date date = evalDate(exchange, command);
 
-                // Apply offsets
-                long dateAsLong = date.getTime();
-                for (long offset : offsets) {
-                    dateAsLong += offset;
-                }
-                date = new Date(dateAsLong);
-
-                if (pattern != null && !pattern.isEmpty()) {
-                    SimpleDateFormat df = new SimpleDateFormat(pattern);
-                    if (timezone != null && !timezone.isEmpty()) {
-                        df.setTimeZone(TimeZone.getTimeZone(timezone));
-                    }
-                    return df.format(date);
-                } else {
-                    return date;
-                }
+                return LanguageHelper.applyDateOffsets(date, offsets, pattern, timezone);
             }
 
             @Override
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java
index f1c3b7586b6..e0dc8d1f639 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java
@@ -18,8 +18,12 @@
 package org.apache.camel.support;
 
 import java.io.PrintWriter;
+import java.io.Serializable;
 import java.io.StringWriter;
+import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.List;
+import java.util.TimeZone;
 import java.util.function.BiFunction;
 
 import org.apache.camel.CamelContext;
@@ -255,4 +259,31 @@ public final class LanguageHelper {
         date = new Date(num);
         return date;
     }
+
+    /**
+     * For the given offsets to a given Date instance and, optionally, convert it to a pattern. NOTE: this is for
+     * internal use of Camel
+     * @param date the date to apply the offset
+     * @param offsets the numeric offset as a milliseconds from epoch
+     * @param pattern the (optional) date pattern to convert the given date to
+     * @param timezone the timezone for the pattern
+     * @return A new Date instance with the offsets applied to it *or* a String-based if a pattern is provided
+     */
+    public static Object applyDateOffsets(final Date date, List<Long> offsets, String pattern, String timezone) {
+        // Apply offsets
+        long dateAsLong = date.getTime();
+        for (long offset : offsets) {
+            dateAsLong += offset;
+        }
+
+        if (pattern != null && !pattern.isEmpty()) {
+            SimpleDateFormat df = new SimpleDateFormat(pattern);
+            if (timezone != null && !timezone.isEmpty()) {
+                df.setTimeZone(TimeZone.getTimeZone(timezone));
+            }
+            return df.format(new Date(dateAsLong));
+        } else {
+            return new Date(dateAsLong);
+        }
+    }
 }