[
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)