You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Jay mann (JIRA)" <ji...@apache.org> on 2016/02/24 19:07:18 UTC

[jira] [Created] (CAMEL-9642) restlet consumer request not propagating headers

Jay mann created CAMEL-9642:
-------------------------------

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

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.")) {
                    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);
            }
        }







--
This message was sent by Atlassian JIRA
(v6.3.4#6332)