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 <angusyo...@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); + } + } }