Hi Willem,
I don't think adding "content-type" to the filters is necessary.
1. The header is "Content-Type" not "content-type", so the change
does not really affect anything.
2. Putting that aside. If we add filters for "Content-Type", it stops
the propagating from Camel header to/from CXF header, which we don't
want.
We probably should clean up the use of
CamelTransportContants.CONTENT_TYPE (value = content.type) and just
use Message.CONTENT_TYPE (value = Content-Type).
In DefaultCxfBinding.java, I don't see why we need to invent a header
constant (CamelTransportContants.CONTENT_TYPE) only used by camel-cxf
and have to map it back and forth.
That is, we can eliminate CamelTransportContants.CONTENT_TYPE and use
Message.CONTENT_TYPE consistently in:
// propagate content type
String key = Message.CONTENT_TYPE;
Object value = cxfMessage.get(key);
if (value != null &&
!headerFilterStrategy.applyFilterToExternalHeaders(key, value,
exchange)) {
camelHeaders.put(CamelTransportConstants.CONTENT_TYPE, value);
if (LOG.isTraceEnabled()) {
LOG.trace("Populate header from CXF header=" + key + "
value=" + value);
}
}
...
// put content type in exchange
if (CamelTransportConstants.CONTENT_TYPE.equals(entry.getKey())) {
cxfExchange.put(Message.CONTENT_TYPE, entry.getValue());
continue;
}
Thoughts?
==============================================================================
> ---
> camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfHeaderFilterStrategy.java
> (original)
> +++
> camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfHeaderFilterStrategy.java
> Wed May 6 04:56:14 2009
> @@ -63,6 +63,11 @@
> getOutFilter().add(Message.PROTOCOL_HEADERS);
> getInFilter().add(Message.PROTOCOL_HEADERS);
>
> + // Since the DefaultCxfBinding deal with the content-type separately.
> + // We need to filter this header
> + getOutFilter().add("content-type");
> + getInFilter().add("content-type");
> +
> // initialize message header filter map with default SOAP filter
> messageHeaderFiltersMap = new HashMap<String, MessageHeaderFilter>();
> addToMessageHeaderFilterMap(new SoapMessageHeaderFilter());
>