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 2009/05/24 10:29:28 UTC
svn commit: r778114 - in
/camel/trunk/camel-core/src/main/java/org/apache/camel:
builder/ExpressionBuilder.java util/ObjectHelper.java
Author: davsclaus
Date: Sun May 24 08:29:28 2009
New Revision: 778114
URL: http://svn.apache.org/viewvc?rev=778114&view=rev
Log:
CAMEL-1642: getScanner for GenericFile did not work. So splitter with streaming was affected.
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java?rev=778114&r1=778113&r2=778114&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java Sun May 24 08:29:28 2009
@@ -16,10 +16,6 @@
*/
package org.apache.camel.builder;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.nio.channels.ReadableByteChannel;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Collections;
@@ -33,7 +29,6 @@
import org.apache.camel.Exchange;
import org.apache.camel.Expression;
import org.apache.camel.Message;
-import org.apache.camel.RuntimeCamelException;
import org.apache.camel.impl.ExpressionAdapter;
import org.apache.camel.language.bean.BeanLanguage;
import org.apache.camel.spi.Language;
@@ -580,7 +575,7 @@
return new ExpressionAdapter() {
public Object evaluate(Exchange exchange) {
Object value = expression.evaluate(exchange, Object.class);
- Scanner scanner = getScanner(exchange, value);
+ Scanner scanner = ObjectHelper.getScanner(exchange, value);
scanner.useDelimiter(token);
return scanner;
}
@@ -602,7 +597,7 @@
return new ExpressionAdapter() {
public Object evaluate(Exchange exchange) {
Object value = expression.evaluate(exchange, Object.class);
- Scanner scanner = getScanner(exchange, value);
+ Scanner scanner = ObjectHelper.getScanner(exchange, value);
scanner.useDelimiter(regexTokenizer);
return scanner;
}
@@ -834,39 +829,4 @@
return beanExpression(expression);
}
- private static Scanner getScanner(Exchange exchange, Object value) {
- String charset = exchange.getProperty(Exchange.CHARSET_NAME, String.class);
-
- Scanner scanner = null;
- if (value instanceof Readable) {
- scanner = new Scanner((Readable)value);
- } else if (value instanceof InputStream) {
- scanner = charset == null ? new Scanner((InputStream)value) : new Scanner((InputStream)value, charset);
- } else if (value instanceof File) {
- try {
- scanner = charset == null ? new Scanner((File)value) : new Scanner((File)value, charset);
- } catch (FileNotFoundException e) {
- throw new RuntimeCamelException(e);
- }
- } else if (value instanceof String) {
- scanner = new Scanner((String)value);
- } else if (value instanceof ReadableByteChannel) {
- scanner = charset == null ? new Scanner((ReadableByteChannel)value) : new Scanner((ReadableByteChannel)value, charset);
- }
-
- if (scanner == null) {
- // value is not a suitable type, try to convert value to a string
- String text = exchange.getContext().getTypeConverter().convertTo(String.class, exchange, value);
- if (text != null) {
- scanner = new Scanner(text);
- }
- }
-
- if (scanner == null) {
- scanner = new Scanner("");
- }
-
- return scanner;
- }
-
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java?rev=778114&r1=778113&r2=778114&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java Sun May 24 08:29:28 2009
@@ -19,11 +19,14 @@
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.nio.charset.Charset;
+import java.nio.channels.ReadableByteChannel;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -39,6 +42,7 @@
import org.apache.camel.Exchange;
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.TypeConverter;
+import org.apache.camel.component.file.GenericFile;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -1029,6 +1033,53 @@
return new ExceptionIterator(exception);
}
+ /**
+ * Creates a {@link Scanner} for scanning the given value.
+ *
+ * @param exchange the current exchange
+ * @param value the value, typically the message IN body
+ * @return the scanner, is newer <tt>null</tt>
+ */
+ public static Scanner getScanner(Exchange exchange, Object value) {
+ if (value instanceof GenericFile) {
+ // generic file is just a wrapper for the real file so call again with the real file
+ GenericFile gf = (GenericFile) value;
+ return getScanner(exchange, gf.getFile());
+ }
+
+ String charset = exchange.getProperty(Exchange.CHARSET_NAME, String.class);
+ Scanner scanner = null;
+ if (value instanceof Readable) {
+ scanner = new Scanner((Readable)value);
+ } else if (value instanceof InputStream) {
+ scanner = charset == null ? new Scanner((InputStream)value) : new Scanner((InputStream)value, charset);
+ } else if (value instanceof File) {
+ try {
+ scanner = charset == null ? new Scanner((File)value) : new Scanner((File)value, charset);
+ } catch (FileNotFoundException e) {
+ throw new RuntimeCamelException(e);
+ }
+ } else if (value instanceof String) {
+ scanner = new Scanner((String)value);
+ } else if (value instanceof ReadableByteChannel) {
+ scanner = charset == null ? new Scanner((ReadableByteChannel)value) : new Scanner((ReadableByteChannel)value, charset);
+ }
+
+ if (scanner == null) {
+ // value is not a suitable type, try to convert value to a string
+ String text = exchange.getContext().getTypeConverter().convertTo(String.class, exchange, value);
+ if (text != null) {
+ scanner = new Scanner(text);
+ }
+ }
+
+ if (scanner == null) {
+ scanner = new Scanner("");
+ }
+
+ return scanner;
+ }
+
private static class ExceptionIterator implements Iterator<Throwable> {
private List<Throwable> tree = new ArrayList<Throwable>();
private Iterator<Throwable> it;