Which exception did you get? Can you share the stack trace?
Which Camel version do you use?

Best,
Christian

Sent from a mobile device
Am 04.12.2012 11:40 schrieb "Jason Chaffee" <jchaf...@shopzilla.com>:

> I take that back.  It worked one time, but not the next time.  However, my
> hack works with every run.
>
>
>
> On 12/4/12 1:50 AM, "Jason Chaffee" <jchaf...@shopzilla.com> wrote:
>
> >If I use String.class instead of Integer.class it works.  It could be an
> >issue with my javascript why the Integer.class didn¹t work.
> >
> >
> >
> >On 12/4/12 1:20 AM, "Jason Chaffee" <jchaf...@shopzilla.com> wrote:
> >
> >>Tried that, but for some reason it fails to give me the expected results
> >>as it stops processing after 18,000 records whereas my "hack" finishes
> >>correctly after 34254 records.
> >>
> >>
> >>
> >>On 12/3/12 11:19 PM, "Willem jiang" <willem.ji...@gmail.com> wrote:
> >>
> >>>Hi,
> >>>
> >>>You should be able to set the xpath expression result like this
> >>>.setHeader("hasMore",
> >>>ns.xpath("/soapenv:Envelope/soapenv:Body/ns1:getItemsResponse/ns1:out/ns
> >>>1
> >>>:
> >>>hasMore/text()", Integer.class))
> >>>
> >>>The you don't need to header in you processor.
> >>>
> >>>--
> >>>Willem Jiang
> >>>
> >>>Red Hat, Inc.
> >>>FuseSource is now part of Red Hat
> >>>Web: http://www.fusesource.com | http://www.redhat.com
> >>>Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/
> )
> >>>(English)
> >>>          http://jnn.javaeye.com (http://jnn.javaeye.com/) (Chinese)
> >>>Twitter: willemjiang
> >>>Weibo: willemjiang
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>On Tuesday, December 4, 2012 at 11:00 AM, Jason Chaffee wrote:
> >>>
> >>>> Currently, I am using Xpath to read some elements from the body that
> >>>>are integers. Later in the process, I need to use those integers in a
> >>>>scripting language to do some comparisons and arithmetic. The problem I
> >>>>am seeing is that when I set the header it is a NodeList object instead
> >>>>of the integer or string from the XML, this causes the logic in the
> >>>>javascript to fail. I was able to work around the issue, but accessing
> >>>>the NodeList in a Processor and converting it and saving it back in the
> >>>>header. However, this seems very clunky and an extra step that I would
> >>>>expect to have to do.
> >>>>
> >>>> Code example is below, is there a better or cleaner way?
> >>>>
> >>>> val ns: Namespaces = new Namespaces("soapenv",
> >>>>"http://schemas.xmlsoap.org/soap/envelope/";)
> >>>> ns.add("ns1", "https://foobar.com/item/v2";)
> >>>>
> >>>>
> >>>> from("seda:Soap")
> >>>> .routeId("Soap")
> >>>> .setHeader("SOAPAction", constant("\"getItems\""))
> >>>> .to("cxf://" + savingsUri.toString())
> >>>> .unmarshal().string("UTF-8")
> >>>> .setHeader("hasMore",
> >>>>ns.xpath("/soapenv:Envelope/soapenv:Body/ns1:getItemsResponse/ns1:out/n
> >>>>s
> >>>>1
> >>>>:hasMore/text()"))
> >>>> .setHeader("recordsReturned",
> >>>>ns.xpath("/soapenv:Envelope/soapenv:Body/ns1:getItemsResponse/ns1:out/n
> >>>>s
> >>>>1
> >>>>:recordsReturned/text()"))
> >>>> .setHeader("totalRecordsAvailable",
> >>>>ns.xpath("/soapenv:Envelope/soapenv:Body/ns1:getItemsResponse/ns1:out/n
> >>>>s
> >>>>1
> >>>>:totalRecordsAvailable/text()"))
> >>>> .process(new Processor {
> >>>> override def process(exchange: Exchange) {
> >>>> val message: Message = exchange.getIn()
> >>>>
> >>>> val hasMore: NodeList = message.getHeader("hasMore",
> >>>>classOf[NodeList])
> >>>> message.setHeader("hasMore", hasMore.item(0).getTextContent())
> >>>>
> >>>> val recordsReturned: NodeList = message.getHeader("recordsReturned",
> >>>>classOf[NodeList])
> >>>> message.setHeader("recordsReturned",
> >>>>recordsReturned.item(0).getTextContent())
> >>>>
> >>>> val totalRecordsAvailable: NodeList =
> >>>>message.getHeader("totalRecordsAvailable", classOf[NodeList])
> >>>> message.setHeader("totalRecordsAvailable",
> >>>>totalRecordsAvailable.item(0).getTextContent())
> >>>> }
> >>>> })
> >>>> .choice()
> >>>>
> >>>>.when().javaScript("parseInt(request.headers.get('totalRecordsAvailable
> >>>>'
> >>>>)
> >>>>) > parseInt(request.headers.get('StartIndex'))")
> >>>>
> >>>>.setHeader("StartIndex").javaScript("(parseInt(request.headers.get('Sav
> >>>>i
> >>>>n
> >>>>gsStartIndex')) +
> >>>>parseInt(request.headers.get('SavingsPageSize'))).toFixed()")
> >>>> .choice()
> >>>>
> >>>>.when().javaScript("parseInt(request.headers.get('totalRecordsAvailable
> >>>>'
> >>>>)
> >>>>) - parseInt(request.headers.get('StartIndex')) <
> >>>>parseInt(request.headers.get('PageSize'))")
> >>>>
> >>>>.setHeader("PageSize").javaScript("(parseInt(request.headers.get('total
> >>>>R
> >>>>e
> >>>>cordsAvailable')) -
> >>>>parseInt(request.headers.get('StartIndex'))).toFixed()")
> >>>> .endChoice()
> >>>> .wireTap("seda:CreateMessage")
> >>>> .endChoice()
> >>>> .split()
> >>>> .tokenizeXML("ns1:items")
> >>>> .parallelProcessing()
> >>>> .streaming()
> >>>> .to("jms:queue:Split")
> >>>
> >>>
> >>>
> >>>
> >>
> >>
> >
> >
>
>

Reply via email to