On Wed, May 6, 2009 at 11:55 PM, Claus Ibsen <claus.ib...@gmail.com> wrote:
> 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.

In 2.0, does that mean it is OK to have hyphen in header?  If so, we
could clean up CamelTransportContants.CONTENT_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