This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch dep in repository https://gitbox.apache.org/repos/asf/camel.git
commit 24dafe19be55dca6f244c93356518a88029af0b7 Author: Claus Ibsen <[email protected]> AuthorDate: Sat Jan 17 15:07:24 2026 +0100 CAMEL-22867: camel-core - Deprecate binary operators in simple language with space in name --- .../modules/languages/pages/simple-language.adoc | 4 --- .../camel/language/simple/SimpleTokenizer.java | 10 +++--- .../language/simple/types/BinaryOperatorType.java | 42 +++++++++++++++++----- .../ROOT/pages/camel-4x-upgrade-guide-4_18.adoc | 12 +++++++ 4 files changed, 51 insertions(+), 17 deletions(-) diff --git a/core/camel-core-languages/src/main/docs/modules/languages/pages/simple-language.adoc b/core/camel-core-languages/src/main/docs/modules/languages/pages/simple-language.adoc index e63ea699d1ea..f8bacd5dfa01 100644 --- a/core/camel-core-languages/src/main/docs/modules/languages/pages/simple-language.adoc +++ b/core/camel-core-languages/src/main/docs/modules/languages/pages/simple-language.adoc @@ -637,12 +637,8 @@ defined as numbers: `from..to`. . |startsWith |For testing if the left-hand side string starts with the right-hand string. -|starts with |Same as the startsWith operator. - |endsWith |For testing if the left-hand side string ends with the right-hand string. - -|ends with |Same as the endsWith operator. |=== And the following unary operators can be used: diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java index f898c4885079..506e07fbfa0b 100644 --- a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java +++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleTokenizer.java @@ -64,24 +64,24 @@ public final class SimpleTokenizer { KNOWN_TOKENS[21] = new SimpleTokenType(TokenType.binaryOperator, "not is"); KNOWN_TOKENS[22] = new SimpleTokenType(TokenType.binaryOperator, "!is"); KNOWN_TOKENS[23] = new SimpleTokenType(TokenType.binaryOperator, "is"); - KNOWN_TOKENS[24] = new SimpleTokenType(TokenType.binaryOperator, "not contains"); + KNOWN_TOKENS[24] = new SimpleTokenType(TokenType.binaryOperator, "not contains"); // deprecated KNOWN_TOKENS[25] = new SimpleTokenType(TokenType.binaryOperator, "!contains"); KNOWN_TOKENS[26] = new SimpleTokenType(TokenType.binaryOperator, "contains"); KNOWN_TOKENS[27] = new SimpleTokenType(TokenType.binaryOperator, "!~~"); KNOWN_TOKENS[28] = new SimpleTokenType(TokenType.binaryOperator, "~~"); - KNOWN_TOKENS[29] = new SimpleTokenType(TokenType.binaryOperator, "not regex"); + KNOWN_TOKENS[29] = new SimpleTokenType(TokenType.binaryOperator, "not regex"); // deprecated KNOWN_TOKENS[30] = new SimpleTokenType(TokenType.binaryOperator, "!regex"); KNOWN_TOKENS[31] = new SimpleTokenType(TokenType.binaryOperator, "regex"); KNOWN_TOKENS[32] = new SimpleTokenType(TokenType.binaryOperator, "not in"); KNOWN_TOKENS[33] = new SimpleTokenType(TokenType.binaryOperator, "!in"); KNOWN_TOKENS[34] = new SimpleTokenType(TokenType.binaryOperator, "in"); - KNOWN_TOKENS[35] = new SimpleTokenType(TokenType.binaryOperator, "not range"); + KNOWN_TOKENS[35] = new SimpleTokenType(TokenType.binaryOperator, "not range"); // deprecated KNOWN_TOKENS[36] = new SimpleTokenType(TokenType.binaryOperator, "!range"); KNOWN_TOKENS[37] = new SimpleTokenType(TokenType.binaryOperator, "range"); KNOWN_TOKENS[38] = new SimpleTokenType(TokenType.binaryOperator, "startsWith"); - KNOWN_TOKENS[39] = new SimpleTokenType(TokenType.binaryOperator, "starts with"); + KNOWN_TOKENS[39] = new SimpleTokenType(TokenType.binaryOperator, "starts with"); // deprecated KNOWN_TOKENS[40] = new SimpleTokenType(TokenType.binaryOperator, "endsWith"); - KNOWN_TOKENS[41] = new SimpleTokenType(TokenType.binaryOperator, "ends with"); + KNOWN_TOKENS[41] = new SimpleTokenType(TokenType.binaryOperator, "ends with"); // deprecated // unary operators KNOWN_TOKENS[42] = new SimpleTokenType(TokenType.unaryOperator, "++"); diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/types/BinaryOperatorType.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/types/BinaryOperatorType.java index 46c24968580a..1c4781fd6c2f 100644 --- a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/types/BinaryOperatorType.java +++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/types/BinaryOperatorType.java @@ -16,11 +16,14 @@ */ package org.apache.camel.language.simple.types; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * Types of binary operators supported */ public enum BinaryOperatorType { - + EQ, EQ_IGNORE, GT, @@ -44,6 +47,8 @@ public enum BinaryOperatorType { STARTS_WITH, ENDS_WITH; + private static final Logger LOG = LoggerFactory.getLogger(BinaryOperatorType.class); + public static BinaryOperatorType asOperator(String text) { if ("==".equals(text)) { return EQ; @@ -63,7 +68,10 @@ public enum BinaryOperatorType { return NOT_EQ_IGNORE; } else if ("contains".equals(text)) { return CONTAINS; - } else if ("!contains".equals(text) || "not contains".equals(text)) { + } else if ("!contains".equals(text)) { + return NOT_CONTAINS; + } else if ("not contains".equals(text)) { + LOG.warn("Simple operator `not contains` is deprecated, use `!contains` instead"); return NOT_CONTAINS; } else if ("~~".equals(text)) { return CONTAINS_IGNORECASE; @@ -71,23 +79,41 @@ public enum BinaryOperatorType { return NOT_CONTAINS_IGNORECASE; } else if ("regex".equals(text)) { return REGEX; - } else if ("!regex".equals(text) || "not regex".equals(text)) { + } else if ("!regex".equals(text)) { + return NOT_REGEX; + } else if ("not regex".equals(text)) { + LOG.warn("Simple operator `not regex` is deprecated, use `!regex` instead"); return NOT_REGEX; } else if ("in".equals(text)) { return IN; - } else if ("!in".equals(text) || "not in".equals(text)) { + } else if ("!in".equals(text)) { + return NOT_IN; + } else if ("not in".equals(text)) { + LOG.warn("Simple operator `not in` is deprecated, use `!in` instead"); return NOT_IN; } else if ("is".equals(text)) { return IS; - } else if ("!is".equals(text) || "not is".equals(text)) { + } else if ("!is".equals(text)) { + return NOT_IS; + } else if ("not is".equals(text)) { + LOG.warn("Simple operator `not is` is deprecated, use `!is` instead"); return NOT_IS; } else if ("range".equals(text)) { return RANGE; - } else if ("!range".equals(text) || "not range".equals(text)) { + } else if ("!range".equals(text)) { + return NOT_RANGE; + } else if ("not range".equals(text)) { + LOG.warn("Simple operator `not range` is deprecated, use `!range` instead"); return NOT_RANGE; - } else if ("startsWith".equals(text) || "starts with".equals(text)) { + } else if ("startsWith".equals(text)) { return STARTS_WITH; - } else if ("endsWith".equals(text) || "ends with".equals(text)) { + } else if ("starts with".equals(text)) { + LOG.warn("Simple operator `starts with` is deprecated, use `startsWith` instead"); + return STARTS_WITH; + } else if ("endsWith".equals(text)) { + return ENDS_WITH; + } else if ("ends with".equals(text)) { + LOG.warn("Simple operator `ends with` is deprecated, use `endsWith` instead"); return ENDS_WITH; } throw new IllegalArgumentException("Operator not supported: " + text); diff --git a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_18.adoc b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_18.adoc index 8f73ede7e86b..f071203e164d 100644 --- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_18.adoc +++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_18.adoc @@ -13,6 +13,18 @@ See the xref:camel-upgrade-recipes-tool.adoc[documentation] page for details. == Upgrading Camel 4.17 to 4.18 +== camel-core + +=== camel-simple + +The *simple* language has deprecated binary operators that uses space in the name: + +- `not contains` use `!contains` instead +- `not regex` use `!regex` instead +- `not range` use `!range` instead +- `starts with` use `startsWith` instead +- `ends with` use `endsWith` instead + === Component deprecation The `camel-olingo2` and `camel-olingo4` component are deprecated.
