On Thu, May 7, 2009 at 5:02 AM, William Tam <email.w...@gmail.com> wrote:
> On Wed, May 6, 2009 at 9:57 PM, Willem Jiang <willem.ji...@gmail.com> wrote:
>> Hi William,
>>
>> Since the JMS can't accept the header which's name has the '-'
>> character, we introduce the CamelTransportContants.CONTENT_TYPE for it.
>
> I thought JMS could not handle dots in header names (that's why we
> went from org.apache.camel convention to CamelHeaderName "case"
> convention).  My memory may be wrong.
Hi

In Camel 2.0 we have added to the JMS component so it will be able to
transfer Content-Type with the hyphen, as its a common header.
If you use Camel on both sides then it will automatic revert it back
to normal again. It replaces - with a _HYPHEN_ constant. So its
transfered as Content_HYPHEN_Type.

>
>>
>> After checking the on wire message between the client and CXF consumer,
>> I found there are two lines of "content-type" in the http header.
>> One is "content-type", the other is "Content-Type".
>
> The comment in code is kinda off.
>
>>
>> So I added the filter of "content-type", and keep using "content.type"
>> in the Camel message.
>>
>> Willem
>>
>>
>> William Tam wrote:
>>> 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());
>>>>
>>>
>>
>>
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus
Apache Camel Reference Card:
http://refcardz.dzone.com/refcardz/enterprise-integration
Interview with me:
http://architects.dzone.com/articles/interview-claus-ibsen-about?mz=7893-progress

Reply via email to