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(),