You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (JIRA)" <ji...@apache.org> on 2016/05/20 07:34:13 UTC
[jira] [Updated] (CAMEL-9642) restlet consumer request not
propagating headers
[ https://issues.apache.org/jira/browse/CAMEL-9642?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Ibsen updated CAMEL-9642:
-------------------------------
Fix Version/s: 2.18.0
2.17.2
> 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
> Fix For: 2.17.2, 2.18.0
>
>
> 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)