[
https://issues.apache.org/jira/browse/CAMEL-9642?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15166400#comment-15166400
]
Jay mann edited comment on CAMEL-9642 at 2/25/16 12:58 AM:
-----------------------------------------------------------
For some reason this is having the ill effect of setting multiple content-types
and Accept-types. But the other headers are coming in now. I'm guess restlet
merges the org.restlet.http.headers with the known headers.
Looks like the standard headers should not be added directly, but how to pick
and choose the headers you want to send over?
was (Author: jmandawg):
For some reason this is having the ill effect of setting multiple content-types
and Accept-types. But the other headers are coming in now. I'm guess restlet
merges the org.restlet.http.headers with the known headers.
> restlet consumer request not propagating headers
> ------------------------------------------------
>
> Key: CAMEL-9642
> URL: https://issues.apache.org/jira/browse/CAMEL-9642
> Project: Camel
> Issue Type: Bug
> Components: camel-restlet
> Affects Versions: 2.16.2
> Reporter: Jay mann
>
> Headers are not getting propagating from restlet consumers. The code is
> setting them incorrectly inside DefaultRestletBinding.java ->
> populateRestletRequestFromExchange
> This is the code that works (based on latest from github):
> {code}
> for (Map.Entry<String, Object> entry :
> exchange.getIn().getHeaders().entrySet()) {
> String key = entry.getKey();
> Object value = entry.getValue();
> if (!headerFilterStrategy.applyFilterToCamelHeaders(key, value,
> exchange)) {
> // put the org.restlet headers in attributes
> if (key.startsWith("org.restlet.")) {
> if(key.equals("org.restlet.http.headers")){
> //Check if existing headers already exist we don't
> want to wipe the headers that are already in there.
> Series<Header> headers =
> (Series)request.getAttributes().get("org.restlet.http.headers");
> if(headers != null){ //If headers exists add them to
> the existing ones
> Series<Header> newHeaders = (Series)value;
> for(Header h: newHeaders){
> headers.set(key, value.toString());
>
> }
> }
> else{
> request.getAttributes().put(key, value);
> }
> }
> else{
> request.getAttributes().put(key, value);
> }
>
> }
> // Use forms only for PUT, POST and x-www-form-urlencoded
> else if (form != null) {
> // put the user stuff in the form
> if (value instanceof Collection) {
> for (Object v : (Collection<?>) value) {
> form.add(key, v.toString());
> }
> } else {
> form.add(key, value.toString());
> }
> }else {
> // For non-form put all the headers in attributes header
> Series<Header> headers =
> (Series)request.getAttributes().get("org.restlet.http.headers");
> if(headers == null){
> headers = new Series<Header>(Header.class);
>
> request.getAttributes().put("org.restlet.http.headers", headers);
> }
> headers.set(key, value.toString());
> }
> LOG.debug("Populate Restlet request from exchange header: {}
> value: {}", key, value);
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)