On Mon, May 23, 2011 at 5:39 AM, ext2 <[email protected]> wrote:
> Hi, Claus:
> Yes you are right.
> The use case(header xml) isn't so widespread as the  use-case( body xml)
>
> When we find the body is not xml(it's very easy to check), how about to give
> the user another chance to deal with header using in:header function()?
>
> If so, we could extend the use-case for xpath expression, we could use it to
> deal with not only body xml , but also header xml. (Even we can deal with
> no-xml data, just like simple language does. (this is a side effect))
>
> Anyway, this is just a suggestion. If you agree so, I could raise a issue
> and give a simple patch for it;
>

Well its just that if we do this, we open a new door. For example the
xquery language should most likely also be changed.

What would the proposed syntax change be for letting the in:header
function operate, despite the message body is not valid xml?



>> -----original -----
>>sender: Claus Ibsen [mailto:[email protected]]
>> date: 2011/5/21 19:59
>> Receiver: [email protected]
>> Subject: Re: an un-easy way to use camel-xpath in:header() function
>>
>> Hi
>>
>> You can use a POJO to set the header using xpath.
>> The xpath builder was designed to work on the message body.
>>
>> I wonder if your use case is widespread used, so its okay to alter the
>> code to support the use case?
>>
>>
>> On Fri, May 20, 2011 at 11:23 AM, tobeand <[email protected]> wrote:
>> > I guess the XPath language of Camel has one limitation. That is the
>> > body of input message must be a valid XML or null.
>> >
>> > In this problem, user want use XPath to process a xml in message
>> > header, but the message body is a plain text (not valid XML), and an
>> > exception occurs in parsing the content to DOM.
>> >
>> > After reading source code, we found that the
>> > XPathBuilder.doInEvaluateAs() method try to extract the document from
>> > the input message, and pass the document to XPathExpression.evaluate()
>> > method. The XPathBuilder.getDocument() method creates an InputSource
>> > for the text body and then the XPathExpression.evaluate() method
>> > creates a DocumentBuilder to parse the InputSource.
>> >
>> >
>> >
>> > On Fri, May 20, 2011 at 2:24 PM, Taariq Levack <[email protected]>
> wrote:
>> >> Also if null or an empty xml is valid in some situations, then a
> content
>> >> based router in front of this should do niely.
>> >>
>> >> On Fri, May 20, 2011 at 8:18 AM, Taariq Levack <[email protected]>
> wrote:
>> >>
>> >>> Have you looked at the Validation component?
>> >>> http://camel.apache.org/validation.html
>> >>>
>> >>>
>> >>> On Fri, May 20, 2011 at 7:10 AM, ext2 <[email protected]> wrote:
>> >>>
>> >>>> Using camel's in:header() xpath function,  we can deal with  xml
> stored
>> in
>> >>>> message header very easy; for example:
>> >>>>        <setHeader name="cheaperBooks">
>> >>>>
>> >>>>  <xpath>in:header('bookstore')/child::book[price<100]</xpath>
>> >>>>        </setHeader>
>> >>>>
>> >>>> The setHeader could retrieve all cheaper books(price less than 100)
> from
>> a
>> >>>> bookstore xml (which already stored in message header('bookstore')
>> >>>>
>> >>>> But in camel, things are not always so easy. The user must make sure
> input
>> >>>> message's body must be a valid XML or null(although the body's
> content
>> may
>> >>>> have nothing to do with the bookstore xml). Otherwise the above xapth
>> >>>> express will failed;
>> >>>>
>> >>>> Suggestion(Maybe):
>> >>>>
>> >>>> Camel's XPath expression should check if the input body's content
> could
>> be
>> >>>> convert to xml. If the body cannot, then using a null instead of
> original
>> >>>> message body to do XPathExpression.evaluate;
>> >>>>
>> >>>>
>> >>>>
>> >>>
>> >>
>> >
>>
>>
>>
>> --
>> Claus Ibsen
>> -----------------
>> FuseSource
>> Email: [email protected]
>> Web: http://fusesource.com
>> CamelOne 2011: http://fusesource.com/camelone2011/
>> Twitter: davsclaus, fusenews
>> Blog: http://davsclaus.blogspot.com/
>> Author of Camel in Action: http://www.manning.com/ibsen/
>
>
>



-- 
Claus Ibsen
-----------------
FuseSource
Email: [email protected]
Web: http://fusesource.com
CamelOne 2011: http://fusesource.com/camelone2011/
Twitter: davsclaus, fusenews
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/

Reply via email to