Repository: camel Updated Branches: refs/heads/camel-2.16.x d044875cc -> bb7fafabc
[CAMEL-9960]create ReaderInputStream align encoding with Exchange (cherry picked from commit 767a98b47aba44c7392dbb8b7f3c5f556e40682b) (cherry picked from commit 0de81d1e029d30ca61446a7b8977c30c56f198a0) Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/bb7fafab Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/bb7fafab Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/bb7fafab Branch: refs/heads/camel-2.16.x Commit: bb7fafabc4699389a10107611403bef48c81c8a7 Parents: d044875 Author: Freeman Fang <freeman.f...@gmail.com> Authored: Thu May 12 10:42:14 2016 +0800 Committer: Freeman Fang <freeman.f...@gmail.com> Committed: Thu May 12 10:56:38 2016 +0800 ---------------------------------------------------------------------- .../apache/camel/component/cxf/DefaultCxfBinding.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/bb7fafab/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java ---------------------------------------------------------------------- diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java index 13f035b..aad23d5 100644 --- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java +++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java @@ -165,8 +165,9 @@ public class DefaultCxfBinding implements CxfBinding, HeaderFilterStrategyAware camelExchange.getOut().getHeaders().putAll(camelExchange.getIn().getHeaders()); // propagate body + String encoding = (String)camelExchange.getProperty(Exchange.CHARSET_NAME); camelExchange.getOut().setBody(DefaultCxfBinding.getContentFromCxf(cxfMessage, - camelExchange.getProperty(CxfConstants.DATA_FORMAT_PROPERTY, DataFormat.class))); + camelExchange.getProperty(CxfConstants.DATA_FORMAT_PROPERTY, DataFormat.class), encoding)); // propagate response context if (responseContext != null && responseContext.size() > 0) { @@ -277,8 +278,9 @@ public class DefaultCxfBinding implements CxfBinding, HeaderFilterStrategyAware setCharsetWithContentType(camelExchange); // set body + String encoding = (String)camelExchange.getProperty(Exchange.CHARSET_NAME); Object body = DefaultCxfBinding.getContentFromCxf(cxfMessage, - camelExchange.getProperty(CxfConstants.DATA_FORMAT_PROPERTY, DataFormat.class)); + camelExchange.getProperty(CxfConstants.DATA_FORMAT_PROPERTY, DataFormat.class), encoding); if (body != null) { camelExchange.getIn().setBody(body); } @@ -708,7 +710,7 @@ public class DefaultCxfBinding implements CxfBinding, HeaderFilterStrategyAware } } - protected static Object getContentFromCxf(Message message, DataFormat dataFormat) { + protected static Object getContentFromCxf(Message message, DataFormat dataFormat, String encoding) { Set<Class<?>> contentFormats = message.getContentFormats(); Object answer = null; if (contentFormats != null) { @@ -738,7 +740,11 @@ public class DefaultCxfBinding implements CxfBinding, HeaderFilterStrategyAware if (answer == null) { answer = message.getContent(Reader.class); if (answer != null) { - answer = new ReaderInputStream((Reader)answer); + if (encoding == null) { + encoding = "UTF-8"; + } + LOG.trace("file encoding is = {}", encoding); + answer = new ReaderInputStream((Reader)answer, Charset.forName(encoding)); } }