This is an automated email from the ASF dual-hosted git repository.

ffang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new e96225a  [CAMEL-16460]The Content-Language of CxfRsProducer should be 
configurable-polish up
e96225a is described below

commit e96225adbabe8a70c64b8725908fdbe6b769dc44
Author: Freeman Fang <freeman.f...@gmail.com>
AuthorDate: Tue Apr 6 15:01:59 2021 -0400

    [CAMEL-16460]The Content-Language of CxfRsProducer should be 
configurable-polish up
---
 .../apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git 
a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java
 
b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java
index 56e3104..5d7e212 100644
--- 
a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java
+++ 
b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java
@@ -64,6 +64,8 @@ public class DefaultCxfRsBinding implements CxfRsBinding, 
HeaderFilterStrategyAw
 
     private HeaderFilterStrategy headerFilterStrategy;
 
+    private String contentLanguage;
+
     public DefaultCxfRsBinding() {
     }
 
@@ -264,13 +266,13 @@ public class DefaultCxfRsBinding implements CxfRsBinding, 
HeaderFilterStrategyAw
             contentType = MediaType.WILDCARD;
         }
         String contentEncoding = 
camelMessage.getHeader(Exchange.CONTENT_ENCODING, String.class);
-        if (webClient != null) {
+        if (webClient != null && contentLanguage == null) {
             try {
                 Method getStateMethod = 
AbstractClient.class.getDeclaredMethod("getState");
                 getStateMethod.setAccessible(true);
                 ClientState clientState = (ClientState) 
getStateMethod.invoke(webClient);
                 if 
(clientState.getRequestHeaders().containsKey(HttpHeaders.CONTENT_LANGUAGE)) {
-                    String contentLanguage = clientState.getRequestHeaders()
+                    contentLanguage = clientState.getRequestHeaders()
                             .getFirst(HttpHeaders.CONTENT_LANGUAGE);
                     if (contentLanguage != null) {
                         return Entity.entity(body, new Variant(
@@ -279,9 +281,12 @@ public class DefaultCxfRsBinding implements CxfRsBinding, 
HeaderFilterStrategyAw
                     }
                 }
             } catch (Exception ex) {
-                LOG.warn("Cannot retrieve CONTENT_LANGUAGE from WebClient", 
ex);
+                LOG.warn(
+                        "Cannot retrieve CONTENT_LANGUAGE from WebClient. This 
exception is ignored, and US Locale will be used",
+                        ex);
             }
         }
+        contentLanguage = Locale.US.getLanguage();
         return Entity.entity(body, new Variant(MediaType.valueOf(contentType), 
Locale.US, contentEncoding));
     }
 

Reply via email to