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