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") > >>> > >>> > >>> > >>> > >> > >> > > > > > >