Author: davsclaus Date: Thu May 19 08:36:40 2011 New Revision: 1124595 URL: http://svn.apache.org/viewvc?rev=1124595&view=rev Log: CAMEL-3962: java.io.File -> InputStream converter should favor using FileInputStream instead of loading content into memory.
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConverter.java camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/GenericFileConverterTest.java Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConverter.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConverter.java?rev=1124595&r1=1124594&r2=1124595&view=diff ============================================================================== --- camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConverter.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/GenericFileConverter.java Thu May 19 08:36:40 2011 @@ -16,6 +16,8 @@ */ package org.apache.camel.component.file; +import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.Serializable; @@ -63,7 +65,11 @@ public final class GenericFileConverter @Converter public static InputStream genericFileToInputStream(GenericFile<?> file, Exchange exchange) throws IOException { if (exchange != null) { - // ensure the body is loaded as we want the input stream of the body + // use a file input stream if its a java.io.File + if (file.getFile() instanceof java.io.File) { + return new FileInputStream((File) file.getFile()); + } + // otherwise ensure the body is loaded as we want the input stream of the body file.getBinding().loadContent(exchange, file); return exchange.getContext().getTypeConverter().convertTo(InputStream.class, exchange, file.getBody()); } else { Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/GenericFileConverterTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/GenericFileConverterTest.java?rev=1124595&r1=1124594&r2=1124595&view=diff ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/GenericFileConverterTest.java (original) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/component/file/GenericFileConverterTest.java Thu May 19 08:36:40 2011 @@ -17,11 +17,13 @@ package org.apache.camel.component.file; import java.io.File; +import java.io.FileInputStream; import java.io.InputStream; import java.io.Serializable; import org.apache.camel.ContextTestSupport; import org.apache.camel.Exchange; +import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; @@ -145,4 +147,32 @@ public class GenericFileConverterTest ex assertMockEndpointsSatisfied(); } + public void testToFileInputStream() throws Exception { + context.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + from("file://target/gf") + .convertBodyTo(InputStream.class) + .process(new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + Object body = exchange.getIn().getBody(); + assertIsInstanceOf(FileInputStream.class, body); + } + }) + .to("mock:result"); + } + }); + context.start(); + + MockEndpoint mock = getMockEndpoint("mock:result"); + mock.expectedMessageCount(1); + mock.message(0).body().isInstanceOf(FileInputStream.class); + mock.message(0).body(String.class).isEqualTo("Hello World"); + + template.sendBodyAndHeader("file://target/gf", "Hello World", Exchange.FILE_NAME, "hello.txt"); + + assertMockEndpointsSatisfied(); + } + }