[ 
https://issues.apache.org/jira/browse/CAMEL-9694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15189226#comment-15189226
 ] 

Jostein Gogstad edited comment on CAMEL-9694 at 3/10/16 2:05 PM:
-----------------------------------------------------------------

Looks like a missing type converter to me. The following work around seems to 
fix the problem:

{code:java}
               
from("ftp://192.168.99.100/outbox?passiveMode=true&localWorkDirectory=/tmp&username=docker&password=docker&noop=true";)
                    .convertBodyTo(InputStream.class)
                    .convertBodyTo(StreamCache.class)
                    .wireTap("direct:mydirect");

               from("direct:mydirect")...
{code}


was (Author: jgogstad):
Looks like a missing type converter to me. The following work around seems to 
fix the problem:

{code:java}
               
from("ftp://192.168.99.100/utboks/gat55?passiveMode=true&localWorkDirectory=/tmp&username=docker&password=docker&noop=true";)
                    .convertBodyTo(InputStream.class)
                    .convertBodyTo(StreamCache.class)
                    .wireTap("direct:mydirect");

               from("direct:mydirect")...
{code}

> StreamCaching does not work with FTP2-components localWorkingDirectory
> ----------------------------------------------------------------------
>
>                 Key: CAMEL-9694
>                 URL: https://issues.apache.org/jira/browse/CAMEL-9694
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.16.2
>            Reporter: Jostein Gogstad
>
> From the [FTP2-components documentation|https://camel.apache.org/ftp2.html] 
> we read that the {{localWorkDirectory}} attribute can be used to download the 
> file up-front. Stream caching does not work in conjunction with this option.
> {code:java|title=StreamCachingTest.java}
> import org.apache.camel.EndpointInject;
> import org.apache.camel.Exchange;
> import org.apache.camel.LoggingLevel;
> import org.apache.camel.Processor;
> import org.apache.camel.builder.RouteBuilder;
> import org.apache.camel.component.mock.MockEndpoint;
> import org.apache.camel.test.junit4.CamelTestSupport;
> import org.apache.commons.io.IOUtils;
> import org.junit.Test;
> import org.slf4j.Logger;
> import org.slf4j.LoggerFactory;
> import java.io.IOException;
> import java.io.InputStream;
> public class StreamCachingTest extends CamelTestSupport {
>     public static final String URI_END_OF_ROUTE = "mock:end_of_route";
>     @EndpointInject(uri = URI_END_OF_ROUTE)
>     private MockEndpoint endOfRoute;
>     @Override
>     public boolean isUseAdviceWith() {
>         return true;
>     }
>     @Override
>     protected RouteBuilder createRouteBuilder() throws Exception {
>         return new RouteBuilder() {
>             @Override
>             public void configure() throws Exception {
>                 context.setStreamCaching(true);
>                 
> from("ftp://192.168.99.100/outbox?passiveMode=true&localWorkDirectory=/tmp&username=docker&password=docker&noop=true";)
>                     .wireTap("direct:mydirect");
>                 from("direct:mydirect")
>                     .process(new Processor() {
>                         @Override
>                         public void process(Exchange exchange) throws 
> Exception {
>                             Thread.sleep(3000);
>                             String s = 
> IOUtils.toString(exchange.getIn().getBody(InputStream.class));
>                             log.info("Consumed " + s.substring(0, 5));
>                         }
>                     })
>                     .to(URI_END_OF_ROUTE);
>             }
>         };
>     }
>     @Test
>     public void stream_caching_with_spring() throws Exception {
>         endOfRoute.expectedMessageCount(1);
>         context.start();
>         endOfRoute.assertIsSatisfied();
>     }
> }
> {code}
> It fails with:
> {code:none}
> Caused by: java.io.FileNotFoundException: /tmp/FOO.DAT (The system cannot 
> find the file specified)
>       at java.io.FileInputStream.open0(Native Method) ~[?:1.8.0_60]
>       at java.io.FileInputStream.open(FileInputStream.java:195) ~[?:1.8.0_60]
>       at java.io.FileInputStream.<init>(FileInputStream.java:138) 
> ~[?:1.8.0_60]
>       at 
> org.apache.camel.converter.IOConverter.toInputStream(IOConverter.java:78) 
> ~[camel-core-2.16.2.jar:2.16.2]
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
> ~[?:1.8.0_60]
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
> ~[?:1.8.0_60]
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  ~[?:1.8.0_60]
>       at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_60]
>       at 
> org.apache.camel.util.ObjectHelper.invokeMethod(ObjectHelper.java:1243) 
> ~[camel-core-2.16.2.jar:2.16.2]
>       at 
> org.apache.camel.impl.converter.StaticMethodTypeConverter.convertTo(StaticMethodTypeConverter.java:59)
>  ~[camel-core-2.16.2.jar:2.16.2]
>       at 
> org.apache.camel.impl.converter.BaseTypeConverterRegistry.doConvertTo(BaseTypeConverterRegistry.java:293)
>  ~[camel-core-2.16.2.jar:2.16.2]
>       at 
> org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:120)
>  ~[camel-core-2.16.2.jar:2.16.2]
>       ... 32 more
> {code}
> Looks like the stream caching isn't invoked at all.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to