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:54 UTC

[camel] 03/03: (chores) camel-core-languages: cleanup duplicated code for capturing offsets from a command

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 c8beee1673454fd82cd3da33372ef58724a5b5b8
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Wed Jun 14 16:31:24 2023 +0200

     (chores) camel-core-languages: cleanup duplicated code for capturing offsets from a command
---
 .../org/apache/camel/language/csimple/CSimpleHelper.java | 10 +---------
 .../camel/language/simple/SimpleExpressionBuilder.java   | 11 +++--------
 .../java/org/apache/camel/support/LanguageHelper.java    | 16 ++++++++++++++++
 3 files changed, 20 insertions(+), 17 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 53bbe807ca0..580fc44bbc1 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
@@ -284,21 +284,13 @@ public final class CSimpleHelper {
 
     private static Object doDate(Exchange exchange, String commandWithOffsets, String timezone, String pattern) {
         final String command = commandWithOffsets.split("[+-]", 2)[0].trim();
-        // Capture optional time offsets
-        final List<Long> offsets = new ArrayList<>();
-        Matcher offsetMatcher = OFFSET_PATTERN.matcher(commandWithOffsets);
-        while (offsetMatcher.find()) {
-            String time = offsetMatcher.group(2).trim();
-            long value = TimeUtils.toMilliSeconds(time);
-            offsets.add(offsetMatcher.group(1).equals("+") ? value : -value);
-        }
+        final List<Long> offsets = LanguageHelper.captureOffsets(commandWithOffsets, OFFSET_PATTERN);
 
         Date date = evalDate(exchange, command);
 
         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 c70490b4dfb..9256d35e167 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
@@ -534,14 +534,7 @@ public final class SimpleExpressionBuilder {
 
     public static Expression dateExpression(final String commandWithOffsets, final String timezone, final String pattern) {
         final String command = commandWithOffsets.split("[+-]", 2)[0].trim();
-        // Capture optional time offsets
-        final List<Long> offsets = new ArrayList<>();
-        Matcher offsetMatcher = OFFSET_PATTERN.matcher(commandWithOffsets);
-        while (offsetMatcher.find()) {
-            String time = offsetMatcher.group(2).trim();
-            long value = TimeUtils.toMilliSeconds(time);
-            offsets.add(offsetMatcher.group(1).equals("+") ? value : -value);
-        }
+        final List<Long> offsets = LanguageHelper.captureOffsets(commandWithOffsets, OFFSET_PATTERN);
 
         return new ExpressionAdapter() {
             @Override
@@ -564,6 +557,8 @@ public final class SimpleExpressionBuilder {
         };
     }
 
+
+
     private static Date evalDate(Exchange exchange, String command) {
         Date date;
         if ("now".equals(command)) {
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 e36dae30502..bee47158431 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
@@ -21,10 +21,13 @@ import java.io.PrintWriter;
 import java.io.Serializable;
 import java.io.StringWriter;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.TimeZone;
 import java.util.function.BiFunction;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
@@ -33,6 +36,7 @@ import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.ExchangeFormatter;
 import org.apache.camel.support.processor.DefaultExchangeFormatter;
 import org.apache.camel.util.IOHelper;
+import org.apache.camel.util.TimeUtils;
 
 public final class LanguageHelper {
     private LanguageHelper() {
@@ -289,4 +293,16 @@ public final class LanguageHelper {
             return new Date(dateAsLong);
         }
     }
+
+    public static List<Long> captureOffsets(String commandWithOffsets, Pattern offsetPattern) {
+        // Capture optional time offsets
+        final List<Long> offsets = new ArrayList<>();
+        Matcher offsetMatcher = offsetPattern.matcher(commandWithOffsets);
+        while (offsetMatcher.find()) {
+            String time = offsetMatcher.group(2).trim();
+            long value = TimeUtils.toMilliSeconds(time);
+            offsets.add(offsetMatcher.group(1).equals("+") ? value : -value);
+        }
+        return offsets;
+    }
 }