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

Jay mann commented on CAMEL-9642:
---------------------------------

Hey Claus,

Can you tell me what the correct default behavior should be for restlet 
consumer?  Should all the camel headers get mapped to the outgoing http headers 
of the restlet request?



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

Reply via email to