camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From William Tam <email.w...@gmail.com>
Subject Re: svn commit: r772054 - in /camel/trunk/components/camel-cxf/src: main/java/org/apache/camel/component/cxf/CxfHeaderFilterStrategy.java test/java/org/apache/camel/component/cxf/CxfRawMessageRouterTest.java
Date Fri, 08 May 2009 14:54:28 GMT
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.wtam@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.jiang@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.ibsen@gmail.com> wrote:
>>>> On Thu, May 7, 2009 at 5:02 AM, William Tam <email.wtam@gmail.com>
wrote:
>>>>> On Wed, May 6, 2009 at 9:57 PM, Willem Jiang <willem.jiang@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
>>>>
>>>
>>
>>
>

Mime
View raw message