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

Julien Greffe edited comment on CXF-8447 at 4/6/21, 2:21 PM:
-------------------------------------------------------------

Hello, [~reta], [~ffang],

thanks for your answers.

Just to be sure fix has to processed on camel side, I'll give some details 
about my use case.

I used this dsl with {{cxfRsEndpointConfigurer}}:
{code:java}
cxfrs://https://reqres.in?...&cxfRsEndpointConfigurer=#endpointConfigurer_cREST_2...{code}
Declared as, and explicitely setting language: 
[https://github.com/apache/cxf/blob/master/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java#L842]
 
{code:java}
registry.put("endpointConfigurer_cREST_2", new CxfRsEndpointConfigurer() {
    public void configure(AbstractJAXRSFactoryBean factoryBean) {
    }

    public void configureClient(Client client) {
        JAXRSClientFactoryBean cfb = cf_cREST_2;
        String authHeader = "username:something";
        authHeader = "Basic " + 
Base64.getEncoder().encodeToString(authHeader.getBytes());
        client.header("Authorization", new Object[]{authHeader});
        client.language("fr");
    }

    public void configureServer(Server server) {
    }
});{code}
 

Here, {{client.language("fr");}} is useless as it's always overwritten by 
entity value.

 

Shouldn't we check here language is actually null before overwriting with 
Entity value? 
[https://github.com/apache/cxf/blob/master/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java#L1329]
 , something like:
{code:java}
...
if (entity.getLanguage() != null && 
!getState().getRequestHeaders().containsKey(HttpHeaders.CONTENT_LANGUAGE)) {
   language(entity.getLanguage().toString());
}
...{code}
?

 

Thanks,


was (Author: jgreffe):
Hello, [~reta], [~ffang],

thanks for your answers.

Just to be sure it's on camel side, I used this dsl with 
{{cxfRsEndpointConfigurer}}:
{code:java}
cxfrs://https://reqres.in?...&cxfRsEndpointConfigurer=#endpointConfigurer_cREST_2...{code}
Declared as, and explicitely setting language: 
[https://github.com/apache/cxf/blob/master/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java#L842]
 
{code:java}
registry.put("endpointConfigurer_cREST_2", new CxfRsEndpointConfigurer() {
    public void configure(AbstractJAXRSFactoryBean factoryBean) {
    }

    public void configureClient(Client client) {
        JAXRSClientFactoryBean cfb = cf_cREST_2;
        String authHeader = "username:something";
        authHeader = "Basic " + 
Base64.getEncoder().encodeToString(authHeader.getBytes());
        client.header("Authorization", new Object[]{authHeader});
        client.language("fr");
    }

    public void configureServer(Server server) {
    }
});{code}
 

Here, {{client.language("fr");}} is useless as it's always overwritten by 
entity value.

 

Shouldn't we check here language is actually null before overwriting with 
Entity value? 
[https://github.com/apache/cxf/blob/master/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java#L1329]
 , something like:
{code:java}
...
if (entity.getLanguage() != null && 
!getState().getRequestHeaders().containsKey(HttpHeaders.CONTENT_LANGUAGE)) {
   language(entity.getLanguage().toString());
}
...{code}
?

 

Thanks,

> Content-Language always set to en_US
> ------------------------------------
>
>                 Key: CXF-8447
>                 URL: https://issues.apache.org/jira/browse/CXF-8447
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 3.3.1, 3.4.3
>            Reporter: Julien Greffe
>            Priority: Minor
>
> Hello,
> it seems there's an issue with header {{Content-Language}} which is always 
> set to {{en_US}}.
> Here, entity is created with this default value:
> [https://github.com/apache/camel/blob/master/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/DefaultCxfRsBinding.java#L255]
> And even when using {{language()}} on {{WebClient}}, value is always 
> overriden here:
> [https://github.com/apache/cxf/blob/master/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java#L1329]
>  
> Could you please provide a fix?



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to