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 2019/08/04 09:50:46 UTC
[camel] 01/04: CAMEL-13774: Add Java8 Stream to Iterator as type
converter.
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 b0e60bef4f3b89cc568e85fd6dba554be30a2900
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Aug 4 11:36:50 2019 +0200
CAMEL-13774: Add Java8 Stream to Iterator as type converter.
---
.../java/org/apache/camel/converter/ObjectConverter.java | 1 +
.../java/org/apache/camel/converter/ObjectConverterTest.java | 10 ++++++++++
.../test/java/org/apache/camel/processor/SimpleMockTest.java | 2 ++
.../src/main/java/org/apache/camel/support/ObjectHelper.java | 12 ++++++++----
4 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/core/camel-base/src/main/java/org/apache/camel/converter/ObjectConverter.java b/core/camel-base/src/main/java/org/apache/camel/converter/ObjectConverter.java
index 6945f49..f546448 100644
--- a/core/camel-base/src/main/java/org/apache/camel/converter/ObjectConverter.java
+++ b/core/camel-base/src/main/java/org/apache/camel/converter/ObjectConverter.java
@@ -18,6 +18,7 @@ package org.apache.camel.converter;
import java.math.BigInteger;
import java.util.Iterator;
+import java.util.stream.Stream;
import org.apache.camel.Converter;
import org.apache.camel.Exchange;
diff --git a/core/camel-core/src/test/java/org/apache/camel/converter/ObjectConverterTest.java b/core/camel-core/src/test/java/org/apache/camel/converter/ObjectConverterTest.java
index b533f31..f6dcfe1 100644
--- a/core/camel-core/src/test/java/org/apache/camel/converter/ObjectConverterTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/converter/ObjectConverterTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.converter;
import java.math.BigInteger;
import java.util.Date;
import java.util.Iterator;
+import java.util.stream.Stream;
import org.junit.Assert;
import org.junit.Test;
@@ -33,6 +34,15 @@ public class ObjectConverterTest extends Assert {
assertEquals(false, it.hasNext());
}
+ @Test
+ public void testStreamIterator() {
+ Iterator<?> it = ObjectConverter.iterator(Stream.of("Claus", "Jonathan", "Andrea"));
+ assertEquals("Claus", it.next());
+ assertEquals("Jonathan", it.next());
+ assertEquals("Andrea", it.next());
+ assertEquals(false, it.hasNext());
+ }
+
@SuppressWarnings("unchecked")
@Test
public void testIterable() {
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/SimpleMockTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/SimpleMockTest.java
index 015a692..b8bd72d 100644
--- a/core/camel-core/src/test/java/org/apache/camel/processor/SimpleMockTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/SimpleMockTest.java
@@ -16,6 +16,8 @@
*/
package org.apache.camel.processor;
+import java.util.stream.Stream;
+
import org.apache.camel.ContextTestSupport;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/ObjectHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/ObjectHelper.java
index 195b1c7..19496e0 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/ObjectHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/ObjectHelper.java
@@ -25,6 +25,7 @@ import java.util.Collections;
import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.concurrent.Callable;
+import java.util.stream.Stream;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -382,7 +383,7 @@ public final class ObjectHelper {
}
/**
- * Creates an iterator over the value if the value is a collection, an
+ * Creates an iterator over the value if the value is a {@link Stream}, collection, an
* Object[], a String with values separated by comma,
* or a primitive type array; otherwise to simplify the caller's code,
* we just create a singleton collection iterator over a single value
@@ -398,7 +399,7 @@ public final class ObjectHelper {
}
/**
- * Creates an iterator over the value if the value is a collection, an
+ * Creates an iterator over the value if the value is a {@link Stream}, collection, an
* Object[], a String with values separated by the given delimiter,
* or a primitive type array; otherwise to simplify the caller's
* code, we just create a singleton collection iterator over a single value
@@ -414,7 +415,7 @@ public final class ObjectHelper {
}
/**
- * Creates an iterator over the value if the value is a collection, an
+ * Creates an iterator over the value if the value is a {@link Stream}, collection, an
* Object[], a String with values separated by the given delimiter,
* or a primitive type array; otherwise to simplify the caller's
* code, we just create a singleton collection iterator over a single value
@@ -434,7 +435,7 @@ public final class ObjectHelper {
}
/**
- * Creates an iterator over the value if the value is a collection, an
+ * Creates an iterator over the value if the value is a {@link Stream}, collection, an
* Object[], a String with values separated by the given delimiter,
* or a primitive type array; otherwise to simplify the caller's
* code, we just create a singleton collection iterator over a single value
@@ -452,6 +453,9 @@ public final class ObjectHelper {
*/
public static Iterator<?> createIterator(Object value, String delimiter,
boolean allowEmptyValues, boolean pattern) {
+ if (value instanceof Stream) {
+ return ((Stream) value).iterator();
+ }
return createIterable(value, delimiter, allowEmptyValues, pattern).iterator();
}