camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tobias Schöneberg <>
Subject RE: Q about how to help the file2 component to do a better job
Date Fri, 03 Jun 2016 15:33:24 GMT
Hello Souciance,
and thx for your reply.
I stepped through the code and it really looked like I need to register my own Converter which
can then make the conversion the way I want it, 
i.e. without relying on the system's default encoding to make any sense.

If you are interested, this is how the Converter looks:

It can convert byte[] and ByteArrayInputStream.
I found the info i needed at (mostly in section
"Encoding support for byte[] and String Conversion").

However, I'm still not 100% sure I didn't miss something..I would have expected that this
stuff was "somehow" already there, and i would just have had to set the Exchange.CHARSET_NAME..
Probably I'm just spoiled by camel ;-).

Best regards

-----Original Message-----
From: souciance [] 
Sent: Donnerstag, 2. Juni 2016 10:33
Subject: Re: Q about how to help the file2 component to do a better job

Not sure if this helps but I had to go from a file with stream to third party library which
wanted a Reader and I used this:

//enforce UTF-8 encoding where stream is an InputStream stream = new ByteArrayInputStream(exchange.getIn().getBody().toString().

Then go from the stream to Reader..

On Thu, Jun 2, 2016 at 10:19 AM, Tobias Schöneberg [via Camel] <> wrote:

> Hi,
> we are using servicemix and I had a problem which was related to the 
> time when that servicemix's JVM started.
> Aparently, it started before the operating system's locale was set to 
> something UTF-8ish.
> I solved it (fingers crossed) by making sure that the system property 
> "file.encoding" is explicitly set to "UTF-8"
> This is the related background/documentation, i hope it sufficiently 
> explains what the problem was about:
> # If the camel file component needs to write an InputStream to a file 
> # and has to use  a given encoding # and doesn't have enough info to 
> do anything sophisticated, # then it creates a reader for the task, 
> using "new InputStreamReader(is)".
> # This reader uses the "default charset" to interpret the stream.
> # Depending on when the JVM was started, the default charset might be
> ANSI_X3.4-1968 a.k.a. US-Ascii.
> # Now, when we create EDI files, the smooks' SmooksDataFormat creates 
> a String and then writes it out as a UTF-8 encoded byte stream.
> # When this stream is read as US-Ascii, then all its nice Umlauts are 
> turned into "??"s.
> # To prevent this, we explicitly set the default encoding to UTF-8 for 
> the servicemix-JVM.
> .. and this is the code from FileOperations.storeFile() 
> (camel-2.16.1), which creates the InputStreamReader from the the 
> exchange's body
> <code>
> if (charset != null) {
>     // charset configured so we must use a reader so we can write with 
> encoding
>     Reader in =
> exchange.getContext().getTypeConverter().tryConvertTo(Reader.class,
> exchange, exchange.getIn().getBody());
>     if (in == null) {
>         // okay no direct reader conversion, so use an input stream 
> (which a lot can be converted as)
>         InputStream is =
> exchange.getIn().getMandatoryBody(InputStream.class);
>         in = new InputStreamReader(is);
>     }
>     // buffer the reader
>     in = IOHelper.buffered(in);
>     writeFileByReaderWithCharset(in, file, charset); } else { </code>
> Now to my question:
> Could you point me to a best practice in my route (i'm specifying it 
> via
> java-fluent) to tell camel "something", so that the tryConvertTo() 
> method succeeds in creating an UTF-8-based reader?
> E.g. by setting some propery or something?
> It would relief us from worrying about that system property on the 
> systems we deploy this component to.
> Best regards
> Tobi
> ------------------------------
> If you reply to this email, your message will be added to the 
> discussion
> below:
> ent-to-do-a-better-job-tp5783381.html
> To start a new topic under Camel - Users, email
> To unsubscribe from Camel - Users, click here 
> <
> bscribe_by_code&node=465428&code=c291Y2lhbmNlLmVxZGFtLnJhc2h0aUBnbWFpb
> C5jb218NDY1NDI4fDE1MzI5MTE2NTY=>
> .
> <
> o_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namesp
> ew.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%
> 3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%2
> 1nabble%3Aemail.naml>

View this message in context:
Sent from the Camel - Users mailing list archive at
View raw message