Hi William,

How about we store these Content-Type with the same key: "CamelConentType"?

In this way we don't need to write a long check list for looking up the
Content-Type in the Camel message header.

Any thought?


Willem

William Tam wrote:
> Hi Willem,
> 
> I think you meant CxfHeaderHelper rather than CamelTransport.  I saw
> your checkin.   Changing the header name from "content.type" to
> "CamelContentType" is fine, although it is not consistent with
> DefaultCxfBinding where it just uses header name "Content-Type".
> Also, should it be "CamelCxfContentType"?   BTW, there is a
> CamelHttpContentType in HTTP component, and one
> (CamelRestletMediaType) for Restlet component.   They are have same
> semantics.
> 
> Cheers,
> William
> 
> On Fri, May 8, 2009 at 10:36 AM, William Tam <email.w...@gmail.com> wrote:
>> I couldn't find where CamelTransport is referencing
>> CamelTransportContants.CONTENT_TYPE.  Even if it is referenced, I
>> don't understand why we can have to use the constant  of value
>> "content.type".
>>
>> On Fri, May 8, 2009 at 3:56 AM, Willem Jiang <willem.ji...@gmail.com> wrote:
>>> Hi,
>>>
>>> I just found the CamelTransportContants.CONTENT_TYPE is used by the
>>> CamelTransport.
>>> The integration test of CustomerServicesTest shows the user case.
>>>
>>> Since there is no protocol header defined in Camel-xxx component, camel
>>> transport need to copy the content-type between the CXF message and
>>> Camel message back and forth.
>>>
>>> Since the DefaultCxfBinding will not be used in CamelTranpsort, I just
>>> revert the change of the CXFHeaderHelper.
>>>
>>> Willem
>>>
>>>
>>>
>>> William Tam wrote:
>>>> 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