You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/02/27 18:08:55 UTC

[camel] branch camel-3.x updated: CAMEL-19094: Tokenizer ignores includeTokens

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-3.x by this push:
     new 77b20eab35b CAMEL-19094: Tokenizer ignores includeTokens
77b20eab35b is described below

commit 77b20eab35b77a6b6afb34076978ee721dd7a2a1
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Feb 27 19:08:21 2023 +0100

    CAMEL-19094: Tokenizer ignores includeTokens
---
 .../resources/org/apache/camel/catalog/languages/tokenize.json         | 2 +-
 .../generated/resources/org/apache/camel/catalog/models/tokenize.json  | 2 +-
 .../resources/org/apache/camel/language/tokenizer/tokenize.json        | 2 +-
 .../java/org/apache/camel/language/tokenizer/TokenizeLanguage.java     | 3 +++
 .../generated/resources/org/apache/camel/model/language/tokenize.json  | 2 +-
 .../main/java/org/apache/camel/model/language/TokenizerExpression.java | 3 ++-
 6 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/languages/tokenize.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/languages/tokenize.json
index 7a75b31f01f..88c34d842e5 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/languages/tokenize.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/languages/tokenize.json
@@ -21,7 +21,7 @@
     "inheritNamespaceTagName": { "kind": "attribute", "displayName": "Inherit Namespace Tag Name", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To inherit namespaces from a root\/parent tag name when using XML You can use simple language as the tag name to support dynamic names." },
     "regex": { "kind": "attribute", "displayName": "Regex", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If the token is a regular expression pattern. The default value is false" },
     "xml": { "kind": "attribute", "displayName": "Xml", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the input is XML messages. This option must be set to true if working with XML payloads." },
-    "includeTokens": { "kind": "attribute", "displayName": "Include Tokens", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to include the tokens in the parts when using pairs The default value is false" },
+    "includeTokens": { "kind": "attribute", "displayName": "Include Tokens", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to include the tokens in the parts when using pairs. When including tokens then the endToken property must also be configured (to use pair mode). The default value is false" },
     "group": { "kind": "attribute", "displayName": "Group", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To group N parts together, for example to split big files into chunks of 1000 lines. You can use simple language as the group to support dynamic group sizes." },
     "groupDelimiter": { "kind": "attribute", "displayName": "Group Delimiter", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the delimiter to use when grouping. If this has not been set then token will be used as the delimiter." },
     "skipFirst": { "kind": "attribute", "displayName": "Skip First", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "To skip the very first element" },
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/tokenize.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/tokenize.json
index 4c8379a9151..72cad0509c2 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/tokenize.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/tokenize.json
@@ -18,7 +18,7 @@
     "inheritNamespaceTagName": { "kind": "attribute", "displayName": "Inherit Namespace Tag Name", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To inherit namespaces from a root\/parent tag name when using XML You can use simple language as the tag name to support dynamic names." },
     "regex": { "kind": "attribute", "displayName": "Regex", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If the token is a regular expression pattern. The default value is false" },
     "xml": { "kind": "attribute", "displayName": "Xml", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the input is XML messages. This option must be set to true if working with XML payloads." },
-    "includeTokens": { "kind": "attribute", "displayName": "Include Tokens", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to include the tokens in the parts when using pairs The default value is false" },
+    "includeTokens": { "kind": "attribute", "displayName": "Include Tokens", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to include the tokens in the parts when using pairs. When including tokens then the endToken property must also be configured (to use pair mode). The default value is false" },
     "group": { "kind": "attribute", "displayName": "Group", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To group N parts together, for example to split big files into chunks of 1000 lines. You can use simple language as the group to support dynamic group sizes." },
     "groupDelimiter": { "kind": "attribute", "displayName": "Group Delimiter", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the delimiter to use when grouping. If this has not been set then token will be used as the delimiter." },
     "skipFirst": { "kind": "attribute", "displayName": "Skip First", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "To skip the very first element" },
diff --git a/core/camel-core-languages/src/generated/resources/org/apache/camel/language/tokenizer/tokenize.json b/core/camel-core-languages/src/generated/resources/org/apache/camel/language/tokenizer/tokenize.json
index 7a75b31f01f..88c34d842e5 100644
--- a/core/camel-core-languages/src/generated/resources/org/apache/camel/language/tokenizer/tokenize.json
+++ b/core/camel-core-languages/src/generated/resources/org/apache/camel/language/tokenizer/tokenize.json
@@ -21,7 +21,7 @@
     "inheritNamespaceTagName": { "kind": "attribute", "displayName": "Inherit Namespace Tag Name", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To inherit namespaces from a root\/parent tag name when using XML You can use simple language as the tag name to support dynamic names." },
     "regex": { "kind": "attribute", "displayName": "Regex", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If the token is a regular expression pattern. The default value is false" },
     "xml": { "kind": "attribute", "displayName": "Xml", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the input is XML messages. This option must be set to true if working with XML payloads." },
-    "includeTokens": { "kind": "attribute", "displayName": "Include Tokens", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to include the tokens in the parts when using pairs The default value is false" },
+    "includeTokens": { "kind": "attribute", "displayName": "Include Tokens", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to include the tokens in the parts when using pairs. When including tokens then the endToken property must also be configured (to use pair mode). The default value is false" },
     "group": { "kind": "attribute", "displayName": "Group", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To group N parts together, for example to split big files into chunks of 1000 lines. You can use simple language as the group to support dynamic group sizes." },
     "groupDelimiter": { "kind": "attribute", "displayName": "Group Delimiter", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the delimiter to use when grouping. If this has not been set then token will be used as the delimiter." },
     "skipFirst": { "kind": "attribute", "displayName": "Skip First", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "To skip the very first element" },
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/tokenizer/TokenizeLanguage.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/tokenizer/TokenizeLanguage.java
index e0836186eda..7150af5f5d6 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/tokenizer/TokenizeLanguage.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/tokenizer/TokenizeLanguage.java
@@ -165,6 +165,9 @@ public class TokenizeLanguage extends SingleInputLanguageSupport implements Prop
         if (isXml() && (endToken != null || includeTokens)) {
             throw new IllegalArgumentException("Cannot have both xml and pair tokenizer enabled.");
         }
+        if (endToken == null && includeTokens) {
+            throw new IllegalArgumentException("The option includeTokens requires endToken to be specified.");
+        }
 
         Expression answer = null;
         if (isXml()) {
diff --git a/core/camel-core-model/src/generated/resources/org/apache/camel/model/language/tokenize.json b/core/camel-core-model/src/generated/resources/org/apache/camel/model/language/tokenize.json
index 4c8379a9151..72cad0509c2 100644
--- a/core/camel-core-model/src/generated/resources/org/apache/camel/model/language/tokenize.json
+++ b/core/camel-core-model/src/generated/resources/org/apache/camel/model/language/tokenize.json
@@ -18,7 +18,7 @@
     "inheritNamespaceTagName": { "kind": "attribute", "displayName": "Inherit Namespace Tag Name", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To inherit namespaces from a root\/parent tag name when using XML You can use simple language as the tag name to support dynamic names." },
     "regex": { "kind": "attribute", "displayName": "Regex", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If the token is a regular expression pattern. The default value is false" },
     "xml": { "kind": "attribute", "displayName": "Xml", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the input is XML messages. This option must be set to true if working with XML payloads." },
-    "includeTokens": { "kind": "attribute", "displayName": "Include Tokens", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to include the tokens in the parts when using pairs The default value is false" },
+    "includeTokens": { "kind": "attribute", "displayName": "Include Tokens", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to include the tokens in the parts when using pairs. When including tokens then the endToken property must also be configured (to use pair mode). The default value is false" },
     "group": { "kind": "attribute", "displayName": "Group", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To group N parts together, for example to split big files into chunks of 1000 lines. You can use simple language as the group to support dynamic group sizes." },
     "groupDelimiter": { "kind": "attribute", "displayName": "Group Delimiter", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the delimiter to use when grouping. If this has not been set then token will be used as the delimiter." },
     "skipFirst": { "kind": "attribute", "displayName": "Skip First", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "To skip the very first element" },
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/language/TokenizerExpression.java b/core/camel-core-model/src/main/java/org/apache/camel/model/language/TokenizerExpression.java
index 63280a46fc3..7ef422bdcbd 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/language/TokenizerExpression.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/language/TokenizerExpression.java
@@ -148,7 +148,8 @@ public class TokenizerExpression extends SingleInputExpressionDefinition {
     }
 
     /**
-     * Whether to include the tokens in the parts when using pairs
+     * Whether to include the tokens in the parts when using pairs. When including tokens then the endToken property
+     * must also be configured (to use pair mode).
      * <p/>
      * The default value is false
      */