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 >