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