That sounds fine to me. - William
On Fri, May 8, 2009 at 9:49 PM, Willem Jiang <willem.ji...@gmail.com> wrote: > 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 >>>>>> >>>> >> > >