Consider a http request response route:
from("jetty:http://localhost:8088/someService").unmarshal().string().pro
cess(
new Processor() {
public void process(Exchange e) {
String input = (String) e.getIn().getBody();
e.getOut().setBody(input + outputText);
}
});
Currently, the unmarshaller copies the input message to the output
message and augments it. The copy brings with it all of the http
headers.
The result is that Content-Length from the request ends in the reply.
This breaks the http response[1].
One solution is to add a .removeHeader("Content-Length") to the route
but should that be necessary?
the header really belongs with the in message.
I am thinking that it never makes sense to copy a Content-Length header
from a HttpMessage but it would be wrong to remove it.
I am thinking that there should be a strategy for copying headers.
The Message.copyFrom() can call getCopyHeaders() which can in turn call
a strategy method pruneCopyHeaders() which for a HttpMessage override
can remove the Content-Length header.
Is this overkill or are there other cases where request headers just do
not make sense in a reply?
[1] https://issues.apache.org/activemq/browse/CAMEL-324
----------------------------
IONA Technologies PLC (registered in Ireland)
Registered Number: 171387
Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland