Hi .setHeader("root_element", xpath("name(/*)"))
This xpath expression is maybe returning a list as NodeList. You may want to try to use a string type instead, or try to make the expression only select a single instance. You can also tell Camel to try to return this as a String .setHeader("root_element", xpath("name(/*), String.class")) On Sun, Apr 28, 2013 at 6:44 PM, hgasmi <houssem.ga...@gmail.com> wrote: > I am trying to retrieve the name of root element to append it separately in > the header as follows: > > from("jms:axon-events") > .setHeader("root_element", xpath("name(/*)")) > .process(new Processor() { > public void process(Exchange exchange) throws Exception { > System.out.println("root name : " + > exchange.getIn().getHeader("root_element", String.class)); > } > }) > .to("jms:streambase-events"); > } > }); > > However, I am getting the following exception: > > 2013-04-28 17:43:19.436+0100 [Camel (camel-1) thread #0 - > JmsConsumer[axon-events]] WARN o.a.c.c.jms.EndpointMessageListener - > Execution of JMS message listener failed. Caused by: > [org.apache.camel.builder.xml.InvalidXPathExpression - Invalid xpath: > name(/*). Reason: javax.xml.xpath.XPathExpressionException] > org.apache.camel.builder.xml.InvalidXPathExpression: Invalid xpath: > name(/*). Reason: javax.xml.xpath.XPathExpressionException > at > org.apache.camel.builder.xml.XPathBuilder.doInEvaluateAs(XPathBuilder.java:873) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.builder.xml.XPathBuilder.evaluateAs(XPathBuilder.java:756) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.builder.xml.XPathBuilder.evaluate(XPathBuilder.java:726) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.builder.xml.XPathBuilder.evaluate(XPathBuilder.java:154) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.builder.ProcessorBuilder$4.process(ProcessorBuilder.java:96) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:334) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:46) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:308) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) > ~[camel-core-2.10.4.jar:2.10.4] > at org.apache.camel.processor.Pipeline.process(Pipeline.java:117) > ~[camel-core-2.10.4.jar:2.10.4] > at org.apache.camel.processor.Pipeline.process(Pipeline.java:80) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:46) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:99) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:86) > ~[camel-core-2.10.4.jar:2.10.4] > at > org.apache.camel.component.jms.EndpointMessageListener.onMessage(EndpointMessageListener.java:104) > ~[camel-jms-2.10.4.jar:2.10.4] > at > org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:560) > ~[spring-jms-3.0.7.RELEASE.jar:3.0.7.RELEASE] > at > org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:498) > ~[spring-jms-3.0.7.RELEASE.jar:3.0.7.RELEASE] > at > org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:467) > ~[spring-jms-3.0.7.RELEASE.jar:3.0.7.RELEASE] > at > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:325) > [spring-jms-3.0.7.RELEASE.jar:3.0.7.RELEASE] > at > org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:263) > [spring-jms-3.0.7.RELEASE.jar:3.0.7.RELEASE] > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058) > [spring-jms-3.0.7.RELEASE.jar:3.0.7.RELEASE] > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050) > [spring-jms-3.0.7.RELEASE.jar:3.0.7.RELEASE] > at > org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947) > [spring-jms-3.0.7.RELEASE.jar:3.0.7.RELEASE] > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > [na:1.6.0_37] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > [na:1.6.0_37] > at java.lang.Thread.run(Thread.java:662) [na:1.6.0_37] > Caused by: javax.xml.xpath.XPathExpressionException: null > at > com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.evaluate(XPathExpressionImpl.java:196) > ~[na:1.6.0_37] > at > org.apache.camel.builder.xml.XPathBuilder.doInEvaluateAs(XPathBuilder.java:859) > ~[camel-core-2.10.4.jar:2.10.4] > ... 46 common frames omitted > Caused by: com.sun.org.apache.xpath.internal.XPathException: Can not convert > #STRING to a NodeList! > at > com.sun.org.apache.xpath.internal.objects.XObject.error(XObject.java:703) > ~[na:1.6.0_37] > at > com.sun.org.apache.xpath.internal.objects.XObject.nodelist(XObject.java:449) > ~[na:1.6.0_37] > at > com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.getResultAsType(XPathExpressionImpl.java:356) > ~[na:1.6.0_37] > at > com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.eval(XPathExpressionImpl.java:102) > ~[na:1.6.0_37] > at > com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.evaluate(XPathExpressionImpl.java:183) > ~[na:1.6.0_37] > ... 47 common frames omitted > > > Can anyone help? > > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/xml-document-root-element-name-retrieval-using-xpath-method-tp5731697.html > Sent from the Camel - Users mailing list archive at Nabble.com. -- Claus Ibsen ----------------- Red Hat, Inc. FuseSource is now part of Red Hat Email: cib...@redhat.com Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen