You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ge...@apache.org on 2008/09/08 22:56:21 UTC
svn commit: r693267 - in /activemq/camel/trunk/camel-core/src:
main/java/org/apache/camel/builder/ main/java/org/apache/camel/converter/
main/java/org/apache/camel/processor/ main/java/org/apache/camel/util/
test/java/org/apache/camel/converter/ test/j...
Author: gertv
Date: Mon Sep 8 13:56:19 2008
New Revision: 693267
URL: http://svn.apache.org/viewvc?rev=693267&view=rev
Log:
CAMEL-876: part 1 -- return a Scanner/Iterator from the Expression instead of the entire List at once
Added:
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/converter/CollectionConverterTest.java
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/CollectionConverter.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java?rev=693267&r1=693266&r2=693267&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java Mon Sep 8 13:56:19 2008
@@ -406,18 +406,10 @@
final String token) {
return new Expression<E>() {
public Object evaluate(E exchange) {
- List<String> answer = new ArrayList<String>();
-
Object value = expression.evaluate(exchange);
- Scanner scanner = getScanner(expression, exchange, value);
- if (scanner != null) {
- scanner.useDelimiter(token);
- while (scanner.hasNext()) {
- answer.add(scanner.next());
- }
- }
-
- return answer;
+ Scanner scanner = getScanner(exchange, value);
+ scanner.useDelimiter(token);
+ return scanner;
}
@Override
@@ -436,18 +428,10 @@
final Pattern pattern = Pattern.compile(regexTokenizer);
return new Expression<E>() {
public Object evaluate(E exchange) {
- List<String> answer = new ArrayList<String>();
-
Object value = expression.evaluate(exchange);
- Scanner scanner = getScanner(expression, exchange, value);
- if (scanner != null) {
- scanner.useDelimiter(regexTokenizer);
- while (scanner.hasNext()) {
- answer.add(scanner.next());
- }
- }
-
- return answer;
+ Scanner scanner = getScanner(exchange, value);
+ scanner.useDelimiter(regexTokenizer);
+ return scanner;
}
@Override
@@ -457,7 +441,7 @@
};
}
- private static Scanner getScanner(Expression expression, Exchange exchange, Object value) {
+ private static Scanner getScanner(Exchange exchange, Object value) {
String charset = exchange.getProperty(Exchange.CHARSET_NAME, String.class);
Scanner scanner = null;
@@ -486,6 +470,10 @@
scanner = new Scanner(text);
}
}
+
+ if (scanner == null) {
+ scanner = new Scanner("");
+ }
return scanner;
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/CollectionConverter.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/CollectionConverter.java?rev=693267&r1=693266&r2=693267&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/CollectionConverter.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/CollectionConverter.java Mon Sep 8 13:56:19 2008
@@ -22,6 +22,7 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
@@ -70,6 +71,18 @@
public static List toList(Collection collection) {
return new ArrayList(collection);
}
+
+ /**
+ * Converts an {@link Iterator} to a {@link ArrayList}
+ */
+ @Converter
+ public static ArrayList toArrayList(Iterator it) {
+ ArrayList list = new ArrayList();
+ while (it.hasNext()) {
+ list.add(it.next());
+ }
+ return list;
+ }
@Converter
public static Set toSet(Object[] array) {
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java?rev=693267&r1=693266&r2=693267&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java Mon Sep 8 13:56:19 2008
@@ -139,7 +139,7 @@
Exchange result = null;
List<ProcessorExchangePair> pairs = createProcessorExchangePairs(exchange);
-
+
// Parallel Processing the producer
if (isParallelProcessing) {
Exchange[] exchanges = new Exchange[pairs.size()];
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java?rev=693267&r1=693266&r2=693267&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java Mon Sep 8 13:56:19 2008
@@ -239,6 +239,8 @@
public static Iterator createIterator(Object value) {
if (value == null) {
return Collections.EMPTY_LIST.iterator();
+ } else if (value instanceof Iterator) {
+ return (Iterator) value;
} else if (value instanceof Collection) {
Collection collection = (Collection)value;
return collection.iterator();
Added: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/converter/CollectionConverterTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/converter/CollectionConverterTest.java?rev=693267&view=auto
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/converter/CollectionConverterTest.java (added)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/converter/CollectionConverterTest.java Mon Sep 8 13:56:19 2008
@@ -0,0 +1,43 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.converter;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+/**
+ * Test cases for {@link CollectionConverter}
+ */
+@SuppressWarnings("unchecked")
+public class CollectionConverterTest extends TestCase {
+
+ private static final List<String> SMURFS = Arrays.asList("Papa smurf", "Smurfette", "Hefty smurf", "Jokey smurf");
+
+ public void testIteratorToList() throws Exception {
+ assertSmurfs(CollectionConverter.toArrayList(SMURFS.iterator()));
+ }
+
+ private void assertSmurfs(Collection<String> result) {
+ assertEquals(SMURFS.size(), result.size());
+ for (String key : result) {
+ assertTrue(SMURFS.contains(key));
+ }
+ }
+}
Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java?rev=693267&r1=693266&r2=693267&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java Mon Sep 8 13:56:19 2008
@@ -17,8 +17,11 @@
package org.apache.camel.util;
import java.lang.reflect.Method;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
import junit.framework.TestCase;
@@ -124,4 +127,9 @@
assertTrue(ObjectHelper.equalByteArray(a, b));
}
+ public void testCreateIterator() {
+ List<String> list = new ArrayList<String>();
+ Iterator<String> iterator = list.iterator();
+ assertSame("Should return the same iterator", iterator, ObjectHelper.createIterator(iterator));
+ }
}