Splitting Message from Ftp Consumer
Hi all, I’m getting an strange behaviour splitting a message body coming from a ftp consumer. Below route works perfectly when I use a local file consumer (line commented). I get a log message per file input line, and I can process the content later correctly. But when I change to the ftp I get the file information data: [fromFtp2SOAP] INFO - Line: -rw-r--r--1 513 51283 Dec 05 09:55 simpleTextData.txt The log line with “ftp:${body}” present correctly the full text content of the file. I have tried with and without localWorkDirectory option, with same result. Any clue? Thanks in advance. ftp://user:pass@host /postalBox/inBox?fileName=simpleTextData.txt&localWorkDirectory=temp"/>
Rép: Splitting Message from Ftp Consumer
Your issue is probably due to the fact you use "\n" as separator. Use binary ftp option, to guaranty you will receive the very same encoded ascii stream as it could be hosted remote side, and test other fragrances of CRLF ("\r\n", "\n"...). Noam Ramonet a écrit : >Hi all, > >I’m getting an strange behaviour splitting a message body coming from a ftp >consumer. Below route works perfectly when I use a local file consumer >(line commented). I get a log message per file input line, and I can >process the content later correctly. > > > >But when I change to the ftp I get the file information data: > > >[fromFtp2SOAP] INFO - Line: -rw-r--r--1 513 51283 Dec >05 09:55 simpleTextData.txt > > > >The log line with “ftp:${body}” present correctly the full text content of >the file. > > > >I have tried with and without localWorkDirectory option, with same result. > > > >Any clue? Thanks in advance. > > ftp://user:pass@host >/postalBox/inBox?fileName=simpleTextData.txt&localWorkDirectory=temp"/> > > > > > > > >
Re: Rép: Splitting Message from Ftp Consumer
Thanks Francois for your suggestions. I forced binary and changed tokenize pattern to ";" (semicolon), but problem remains: ftp://user:pass@host/ postalBox/inBox?fileName=simpleTextData.txt&localWorkDirectory=temp&binary=true"/> 2014-12-05 14:24 GMT+01:00 Francois Liot : > Your issue is probably due to the fact you use "\n" as separator. > > Use binary ftp option, to guaranty you will receive the very same encoded > ascii stream as it could be hosted remote side, and test other fragrances > of CRLF ("\r\n", "\n"...). > > > Noam Ramonet a écrit : > > >Hi all, > > > >I’m getting an strange behaviour splitting a message body coming from a > ftp > >consumer. Below route works perfectly when I use a local file consumer > >(line commented). I get a log message per file input line, and I can > >process the content later correctly. > > > > > > > >But when I change to the ftp I get the file information data: > > > > > >[fromFtp2SOAP] INFO - Line: -rw-r--r--1 513 51283 Dec > >05 09:55 simpleTextData.txt > > > > > > > >The log line with “ftp:${body}” present correctly the full text content of > >the file. > > > > > > > >I have tried with and without localWorkDirectory option, with same result. > > > > > > > >Any clue? Thanks in advance. > > > > ftp://user:pass@host > > >/postalBox/inBox?fileName=simpleTextData.txt&localWorkDirectory=temp"/> > > > > > > > > > > > > > > > > >
Re: Rép: Splitting Message from Ftp Consumer
Do a route that will simply grab the file and store it locally, check the difference between what you really get, and what you want to treat. ftp://user:pass@host/ postalBox/inBox?fileName=simpleTextData.txt&localWorkDirectory=temp&binary=true"/> initial.txt after_text_conversion.txt mailto:francois.l...@poplidays.com> www.poplidays.com<http://www.poplidays.com/> [1_logo]<http://www.poplidays.com/>? From: Noam Ramonet Sent: Friday, December 5, 2014 3:15 PM To: François LIOT Cc: users@camel.apache.org Subject: Re: Rép: Splitting Message from Ftp Consumer Thanks Francois for your suggestions. I forced binary and changed tokenize pattern to ";" (semicolon), but problem remains: ftp://user:pass@host/ postalBox/inBox?fileName=simpleTextData.txt&localWorkDirectory=temp&binary=true"/> 2014-12-05 14:24 GMT+01:00 Francois Liot mailto:francois.l...@poplidays.com>>: Your issue is probably due to the fact you use "\n" as separator. Use binary ftp option, to guaranty you will receive the very same encoded ascii stream as it could be hosted remote side, and test other fragrances of CRLF ("\r\n", "\n"...). Noam Ramonet mailto:noamramo...@gmail.com>> a écrit : >Hi all, > >I'm getting an strange behaviour splitting a message body coming from a ftp >consumer. Below route works perfectly when I use a local file consumer >(line commented). I get a log message per file input line, and I can >process the content later correctly. > > > >But when I change to the ftp I get the file information data: > > >[fromFtp2SOAP] INFO - Line: -rw-r--r--1 513 51283 Dec >05 09:55 simpleTextData.txt > > > >The log line with "ftp:${body}" present correctly the full text content of >the file. > > > >I have tried with and without localWorkDirectory option, with same result. > > > >Any clue? Thanks in advance. > > ftp://user:pass@host >/postalBox/inBox?fileName=simpleTextData.txt&localWorkDirectory=temp"/> > > > > > > > >
Re: Rép: Splitting Message from Ftp Consumer
Hi, I’ve testing a little more and the issue seems related to the Expresion used by split to iterate. Ftp consumers generates a message with body input of type RemoteFile< FtpFile>. org.apache.commons.net.ftp.FtpFile#toString() method returns the strange splitted content which originated the post “-rw-r--r--1 513 51283 Dec 05 09:55 simpleTextData.txt”. RouteBuilder#body() Expresion generates this String as output. It can be seen using Java DSL. Next route presents the same log as the Spring counterpart: from("ftp://user:pass@host /postalBox/inBox?fileName=simpleTextData.txt&localWorkDirectory=temp") .split(body().tokenize("\n")) .log("Line: ${body}") .end(); Whereas below route works as I need: from("ftp://user:pass@host /postalBox/inBox?fileName=simpleTextData.txt&localWorkDirectory=temp") .split(body(String.class).tokenize("\n")) .log("Line: ${body}") .end(); Is there any way to force the String type conversion in Spring DSL? I already tried , pointed by Francois, without success. Is this an expected behaviour or a bug? Meanwhile, a simple workaround for Spring DSL would be replacing the tokenizer with a custom bean for splitting: public class CustomTokenizer { public List splitFtpFile(String remote){ return Arrays.asList(remote.split("\n")); } }
Re: Rép: Splitting Message from Ftp Consumer
Correction. Inserting an explicit conversion to String solves the problem: ftp://user:pass@host/ postalBox/inBox?fileName=simpleTextData.txt&localWorkDirectory=temp&binary=true"/> -- View this message in context: http://camel.465427.n5.nabble.com/Rep-Splitting-Message-from-Ftp-Consumer-tp5760220p5760489.html Sent from the Camel - Users mailing list archive at Nabble.com.