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 2021/04/07 07:40:24 UTC

[camel] 01/02: Revert CAMEL-16462: camel-core - Optimize RecipientList EIP for default delimiter usage.

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

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

commit 11fdf6d4cbdfc3355bb3c5edbd1c05c03d4236fd
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Apr 7 09:06:09 2021 +0200

    Revert CAMEL-16462: camel-core - Optimize RecipientList EIP for default delimiter usage.
---
 .../org/apache/camel/builder/BuilderSupport.java   |  7 ++++++
 .../org/apache/camel/processor/RecipientList.java  | 26 +++++++---------------
 2 files changed, 15 insertions(+), 18 deletions(-)

diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/BuilderSupport.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/BuilderSupport.java
index 15cfde4..83504d1 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/builder/BuilderSupport.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/BuilderSupport.java
@@ -102,6 +102,13 @@ public abstract class BuilderSupport {
     }
 
     /**
+     * Returns a constant expression value builder
+     */
+    public ValueBuilder constant(Object... value) {
+        return Builder.constant(value);
+    }
+
+    /**
      * Returns a JOOR expression value builder
      */
     public ValueBuilder joor(String value) {
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/RecipientList.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/RecipientList.java
index c45167a..d8b2321 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/RecipientList.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/RecipientList.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.processor;
 
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.concurrent.ExecutorService;
@@ -191,25 +190,16 @@ public class RecipientList extends AsyncProcessorSupport implements IdAware, Rou
      * Sends the given exchange to the recipient list
      */
     public boolean sendToRecipientList(Exchange exchange, Object recipientList, AsyncCallback callback) {
-        Iterator<?> iter = null;
-
-        if (recipientList instanceof String && delimiter != null && !delimiter.equalsIgnoreCase(IGNORE_DELIMITER_MARKER)) {
-            // optimize for fast iterator
-            String str = (String) recipientList;
-            if (delimiter.length() == 1) {
-                int count = StringHelper.countChar(str, delimiter.charAt(0)) + 1;
-                String[] parts = StringHelper.splitOnCharacter(str, delimiter, count);
-                iter = Arrays.asList((Object[]) parts).iterator();
-            }
-        }
-        if (iter == null) {
-            if (delimiter != null && delimiter.equalsIgnoreCase(IGNORE_DELIMITER_MARKER)) {
-                iter = ObjectHelper.createIterator(recipientList, null);
-            } else {
-                iter = ObjectHelper.createIterator(recipientList, delimiter);
-            }
+        Iterator<?> iter;
+
+        if (delimiter != null && delimiter.equalsIgnoreCase(IGNORE_DELIMITER_MARKER)) {
+            iter = ObjectHelper.createIterator(recipientList, null);
+        } else {
+            iter = ObjectHelper.createIterator(recipientList, delimiter);
         }
 
+        // TODO: Do not create a new processor per exchange
+        // TODO: Store iter on exchange property to be used when creating the pairs
         RecipientListProcessor rlp = new RecipientListProcessor(
                 exchange.getContext(), null, producerCache, iter, getAggregationStrategy(),
                 isParallelProcessing(), getExecutorService(), isShutdownExecutorService(),