You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Phobos <sm...@gmail.com> on 2013/03/04 22:26:28 UTC

Camel XQuery - Saxon

Hi,

Saxon allows for java methods to invoke from XQuery, for example;

declare namespace math=java:java.lang.Math;

let $r := math:random()

return $r

It would appear that this doesn't work out of the box in the Camel
implementation. Does anyone know how to enable this?

Thanks



--
View this message in context: http://camel.465427.n5.nabble.com/Camel-XQuery-Saxon-tp5728490.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Camel XQuery - Saxon

Posted by Phobos <sm...@gmail.com>.
Hi,

I've tried the following;

Define myNamespaces in the context as a spring bean;

    <bean id="myNamespaces" class="java.util.HashMap">
        <constructor-arg>
            <map>
                <entry key="math" value="java:java.lang.Math" />
            </map>
        </constructor-arg>
    </bean>

Route;

>       from("direct:transform-queue"). 
>               to("xquery:transform.xqy?namespaces=#myNamespaces"). 
>               to("log:com.mydomain.TransformerRoute?level=INFO"); 

transform.xqy;

<Test rand="{ math:random() }" />


The XQuery processor appears to resolve the map as no type mismatch
exception is thrown but when processing the XQuery the following exception
is still thrown;

org.apache.camel.RuntimeExpressionException:
net.sf.saxon.trans.XPathException: Cannot find a matching 0-argument
function named {java:java.lang.Math}random()

Thanks



--
View this message in context: http://camel.465427.n5.nabble.com/Camel-XQuery-Saxon-tp5728490p5728655.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Camel XQuery - Saxon

Posted by Claus Ibsen <cl...@gmail.com>.
On Wed, Mar 6, 2013 at 2:29 AM, Raul Kripalani <ra...@evosent.com> wrote:
> I suppose this declares the namespaces through the StaticContext. But
> according to the XQuery spec, declaring them in the Prolog (leading section
> of the XQuery expression file) should have the same effect. And it's easier
> to maintain in the long run.
>

Yeah if that is possible, then that would IMHO also be the best solution.


> Regards,
> Raúl.
> On 6 Mar 2013 01:08, "Willem jiang" <wi...@gmail.com> wrote:
>
>> I just checked the code of camel-xquery component, it supports to set the
>> namespaces through the uri.
>> myNamespace is map instance which you need to bind it into CamelContext
>> Registry.
>>
>> from("direct:transform-queue").
>> to("xquery:transform.xqy?namespaces=#myNamespace").
>> to("log:com.mydomain.TransformerRoute?level=INFO");
>>
>>
>> --
>> 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.iteye.com (http://jnn.javaeye.com/) (Chinese)
>> Twitter: willemjiang
>> Weibo: 姜宁willem
>>
>>
>>
>>
>>
>> On Wednesday, March 6, 2013 at 7:18 AM, Phobos wrote:
>>
>> >
>> > In principle that would appear to work as a filter, however in this
>> instance
>> > I am using the XQuery template as a transformer endpoint. For example;
>> >
>> > from("direct:transform-queue").
>> > to("xquery:transform.xqy").
>> > to("log:com.mydomain.TransformerRoute?level=INFO");
>> >
>> > Is there a way to inject custom namespaces into the above example (as an
>> > endpoint)?
>> >
>> > Thanks
>> >
>> >
>> >
>> > --
>> > View this message in context:
>> http://camel.465427.n5.nabble.com/Camel-XQuery-Saxon-tp5728490p5728604.html
>> > Sent from the Camel - Users mailing list archive at Nabble.com (
>> http://Nabble.com).
>>
>>
>>
>>



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
FuseSource is now part of Red Hat
Email: cibsen@redhat.com
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Re: Camel XQuery - Saxon

Posted by Raul Kripalani <ra...@evosent.com>.
I suppose this declares the namespaces through the StaticContext. But
according to the XQuery spec, declaring them in the Prolog (leading section
of the XQuery expression file) should have the same effect. And it's easier
to maintain in the long run.

Regards,
Raúl.
On 6 Mar 2013 01:08, "Willem jiang" <wi...@gmail.com> wrote:

> I just checked the code of camel-xquery component, it supports to set the
> namespaces through the uri.
> myNamespace is map instance which you need to bind it into CamelContext
> Registry.
>
> from("direct:transform-queue").
> to("xquery:transform.xqy?namespaces=#myNamespace").
> to("log:com.mydomain.TransformerRoute?level=INFO");
>
>
> --
> 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.iteye.com (http://jnn.javaeye.com/) (Chinese)
> Twitter: willemjiang
> Weibo: 姜宁willem
>
>
>
>
>
> On Wednesday, March 6, 2013 at 7:18 AM, Phobos wrote:
>
> >
> > In principle that would appear to work as a filter, however in this
> instance
> > I am using the XQuery template as a transformer endpoint. For example;
> >
> > from("direct:transform-queue").
> > to("xquery:transform.xqy").
> > to("log:com.mydomain.TransformerRoute?level=INFO");
> >
> > Is there a way to inject custom namespaces into the above example (as an
> > endpoint)?
> >
> > Thanks
> >
> >
> >
> > --
> > View this message in context:
> http://camel.465427.n5.nabble.com/Camel-XQuery-Saxon-tp5728490p5728604.html
> > Sent from the Camel - Users mailing list archive at Nabble.com (
> http://Nabble.com).
>
>
>
>

Re: Camel XQuery - Saxon

Posted by Willem jiang <wi...@gmail.com>.
I just checked the code of camel-xquery component, it supports to set the namespaces through the uri.  
myNamespace is map instance which you need to bind it into CamelContext Registry.

from("direct:transform-queue").
to("xquery:transform.xqy?namespaces=#myNamespace").
to("log:com.mydomain.TransformerRoute?level=INFO");


--  
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.iteye.com (http://jnn.javaeye.com/) (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem





On Wednesday, March 6, 2013 at 7:18 AM, Phobos wrote:

>  
> In principle that would appear to work as a filter, however in this instance
> I am using the XQuery template as a transformer endpoint. For example;
>  
> from("direct:transform-queue").
> to("xquery:transform.xqy").
> to("log:com.mydomain.TransformerRoute?level=INFO");
>  
> Is there a way to inject custom namespaces into the above example (as an
> endpoint)?
>  
> Thanks
>  
>  
>  
> --
> View this message in context: http://camel.465427.n5.nabble.com/Camel-XQuery-Saxon-tp5728490p5728604.html
> Sent from the Camel - Users mailing list archive at Nabble.com (http://Nabble.com).




Re: Camel XQuery - Saxon

Posted by Raúl Kripalani <ra...@evosent.com>.
In theory, there should be nothing to configure at the Camel level if you declare the namespace in the Prolog of the template. The XQuery template should be self-sufficient and independent from the runtime.

Have you tried placing the namespace URI inside quote marks? I think you're just missing those. Try:

declare namespace math="java:java.lang.Math";

Regards,
Raúl.

On Mar 5, 2013, at 23:18, Phobos wrote:

> 
> In principle that would appear to work as a filter, however in this instance
> I am using the XQuery template as a transformer endpoint. For example;
> 
>       from("direct:transform-queue").
>               to("xquery:transform.xqy").
>               to("log:com.mydomain.TransformerRoute?level=INFO");
> 
> Is there a way to inject custom namespaces into the above example (as an
> endpoint)?
> 
> Thanks
> 
> 
> 
> --
> View this message in context: http://camel.465427.n5.nabble.com/Camel-XQuery-Saxon-tp5728490p5728604.html
> Sent from the Camel - Users mailing list archive at Nabble.com.


Re: Camel XQuery - Saxon

Posted by Phobos <sm...@gmail.com>.
In principle that would appear to work as a filter, however in this instance
I am using the XQuery template as a transformer endpoint. For example;

        from("direct:transform-queue").
                to("xquery:transform.xqy").
                to("log:com.mydomain.TransformerRoute?level=INFO");

Is there a way to inject custom namespaces into the above example (as an
endpoint)?

Thanks



--
View this message in context: http://camel.465427.n5.nabble.com/Camel-XQuery-Saxon-tp5728490p5728604.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Camel XQuery - Saxon

Posted by Raul Kripalani <ra...@evosent.com>.
Try this:

XQueryBuilder.xquery("myScriptWhichUsesTheMathPrefix").namespace("math",
"java:java.lang.Math").


For example, within a filter() DSL:

.filter(XQueryBuilder.xquery("myScriptWhichUsesTheMathPrefix").namespace("math",
"java:java.lang.Math"))
   ....


You can also use this import to avoid having to specify the class name:

import static org.apache.camel.component.xquery.XQueryBuilder.xquery;


then it becomes:

.filter(xquery("myScriptWhichUsesTheMathPrefix").namespace("math",
"java:java.lang.Math"))

   ....

Does that help?

*Raúl Kripalani*
Apache Camel Committer
Enterprise Architect, Program Manager, Open Source Integration specialist
http://about.me/raulkripalani | http://www.linkedin.com/in/raulkripalani
http://blog.raulkr.net | twitter: @raulvk <http://twitter.com/raulvk>

On Tue, Mar 5, 2013 at 8:59 AM, Phobos <sm...@gmail.com> wrote:

>
> Hi,
>
> Stack trace is as follows, i'm putting together a test case now;
>
> org.apache.camel.RuntimeExpressionException:
> net.sf.saxon.trans.XPathException: Prefix math has not been declared
>         at
>
> org.apache.camel.component.xquery.XQueryBuilder.evaluate(XQueryBuilder.java:144)
>         at
>
> org.apache.camel.component.xquery.XQueryBuilder.process(XQueryBuilder.java:101)
>         at
>
> org.apache.camel.impl.ProcessorEndpoint.onExchange(ProcessorEndpoint.java:101)
>         at
>
> org.apache.camel.impl.ProcessorEndpoint$1.process(ProcessorEndpoint.java:71)
>         at
>
> org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
>         at
>
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>         at
>
> org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:122)
>         at
>
> org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:298)
>         at
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:117)
>         at
>
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>         at
>
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>         at
>
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>         at
>
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
>         at
>
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>         at
>
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>         at
>
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>         at
>
> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
>         at
>
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>         at
>
> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:334)
>         at
>
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220)
>         at
>
> org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:46)
>         at
>
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>         at
>
> org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:308)
>         at
>
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:117)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
>         at
>
> org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:46)
>         at
>
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>         at
>
> org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150)
>         at
>
> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117)
>         at
>
> org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48)
>         at
>
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>         at
>
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>         at
>
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>         at
>
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>         at
>
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
>         at
>
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:99)
>         at
>
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:86)
>         at
> org.apache.camel.component.http.CamelServlet.service(CamelServlet.java:98)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
>         at
>
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>         at
>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>         at
>
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
>         at
>
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
>         at
>
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>         at
>
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
>         at
>
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
>         at
>
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>         at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
>         at
>
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
>         at
>
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
>         at
>
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
>         at
>
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>         at
>
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>         at java.lang.Thread.run(Thread.java:680)
> Caused by: net.sf.saxon.trans.XPathException: Prefix math has not been
> declared
>         at net.sf.saxon.query.QueryParser.grumble(QueryParser.java:393)
>         at
> net.sf.saxon.expr.ExpressionParser.grumble(ExpressionParser.java:211)
>         at
>
> net.sf.saxon.expr.ExpressionParser.resolveFunctionName(ExpressionParser.java:2234)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseFunctionCall(ExpressionParser.java:2068)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseBasicStep(ExpressionParser.java:1525)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseStepExpression(ExpressionParser.java:1454)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseRelativePath(ExpressionParser.java:1389)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parsePathExpression(ExpressionParser.java:1375)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseUnaryExpression(ExpressionParser.java:1230)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseCastExpression(ExpressionParser.java:849)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseCastableExpression(ExpressionParser.java:804)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseTreatExpression(ExpressionParser.java:785)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseInstanceOfExpression(ExpressionParser.java:767)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseIntersectExpression(ExpressionParser.java:1263)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseUnionExpression(ExpressionParser.java:1245)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseMultiplicativeExpression(ExpressionParser.java:1181)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseAdditiveExpression(ExpressionParser.java:1161)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseRangeExpression(ExpressionParser.java:1046)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseComparisonExpression(ExpressionParser.java:995)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseAndExpression(ExpressionParser.java:568)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseOrExpression(ExpressionParser.java:550)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseExprSingle(ExpressionParser.java:474)
>         at
> net.sf.saxon.query.QueryParser.parseLetClause(QueryParser.java:2219)
>         at
> net.sf.saxon.query.QueryParser.parseForExpression(QueryParser.java:1906)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseExprSingle(ExpressionParser.java:450)
>         at
>
> net.sf.saxon.expr.ExpressionParser.parseExpression(ExpressionParser.java:418)
>         at net.sf.saxon.query.QueryParser.parseQuery(QueryParser.java:313)
>         at
> net.sf.saxon.query.QueryParser.makeXQueryExpression(QueryParser.java:135)
>         at
>
> net.sf.saxon.query.StaticQueryContext.compileQuery(StaticQueryContext.java:489)
>         at
>
> net.sf.saxon.query.StaticQueryContext.compileQuery(StaticQueryContext.java:551)
>         at
>
> org.apache.camel.component.xquery.XQueryBuilder$3.createQueryExpression(XQueryBuilder.java:259)
>         at
>
> org.apache.camel.component.xquery.XQueryBuilder.initialize(XQueryBuilder.java:633)
>         at
>
> org.apache.camel.component.xquery.XQueryBuilder.evaluateAsDOM(XQueryBuilder.java:173)
>         at
>
> org.apache.camel.component.xquery.XQueryBuilder.evaluate(XQueryBuilder.java:134)
>         ... 55 more
>
>
>
> --
> View this message in context:
> http://camel.465427.n5.nabble.com/Camel-XQuery-Saxon-tp5728490p5728551.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>

Re: Camel XQuery - Saxon

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

Yeah this is likely not supported currently.
Take a look in the XQueryBuilder and see what code it takes to
register that prefix / function.
Maybe we can improve the component to support that.

The problem would also be find a good way to configure this in Java
and XML DSLs.


On Tue, Mar 5, 2013 at 9:59 AM, Phobos <sm...@gmail.com> wrote:
>
> Hi,
>
> Stack trace is as follows, i'm putting together a test case now;
>
> org.apache.camel.RuntimeExpressionException:
> net.sf.saxon.trans.XPathException: Prefix math has not been declared
>         at
> org.apache.camel.component.xquery.XQueryBuilder.evaluate(XQueryBuilder.java:144)
>         at
> org.apache.camel.component.xquery.XQueryBuilder.process(XQueryBuilder.java:101)
>         at
> org.apache.camel.impl.ProcessorEndpoint.onExchange(ProcessorEndpoint.java:101)
>         at
> org.apache.camel.impl.ProcessorEndpoint$1.process(ProcessorEndpoint.java:71)
>         at
> org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>         at
> org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:122)
>         at
> org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:298)
>         at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:117)
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>         at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>         at
> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>         at
> org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:334)
>         at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220)
>         at
> org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:46)
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>         at
> org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:308)
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:117)
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
>         at
> org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:46)
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>         at
> org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150)
>         at
> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117)
>         at
> org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48)
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
>         at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:99)
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:86)
>         at
> org.apache.camel.component.http.CamelServlet.service(CamelServlet.java:98)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>         at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
>         at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
>         at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>         at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
>         at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
>         at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
>         at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>         at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
>         at
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
>         at
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
>         at
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>         at java.lang.Thread.run(Thread.java:680)
> Caused by: net.sf.saxon.trans.XPathException: Prefix math has not been
> declared
>         at net.sf.saxon.query.QueryParser.grumble(QueryParser.java:393)
>         at net.sf.saxon.expr.ExpressionParser.grumble(ExpressionParser.java:211)
>         at
> net.sf.saxon.expr.ExpressionParser.resolveFunctionName(ExpressionParser.java:2234)
>         at
> net.sf.saxon.expr.ExpressionParser.parseFunctionCall(ExpressionParser.java:2068)
>         at
> net.sf.saxon.expr.ExpressionParser.parseBasicStep(ExpressionParser.java:1525)
>         at
> net.sf.saxon.expr.ExpressionParser.parseStepExpression(ExpressionParser.java:1454)
>         at
> net.sf.saxon.expr.ExpressionParser.parseRelativePath(ExpressionParser.java:1389)
>         at
> net.sf.saxon.expr.ExpressionParser.parsePathExpression(ExpressionParser.java:1375)
>         at
> net.sf.saxon.expr.ExpressionParser.parseUnaryExpression(ExpressionParser.java:1230)
>         at
> net.sf.saxon.expr.ExpressionParser.parseCastExpression(ExpressionParser.java:849)
>         at
> net.sf.saxon.expr.ExpressionParser.parseCastableExpression(ExpressionParser.java:804)
>         at
> net.sf.saxon.expr.ExpressionParser.parseTreatExpression(ExpressionParser.java:785)
>         at
> net.sf.saxon.expr.ExpressionParser.parseInstanceOfExpression(ExpressionParser.java:767)
>         at
> net.sf.saxon.expr.ExpressionParser.parseIntersectExpression(ExpressionParser.java:1263)
>         at
> net.sf.saxon.expr.ExpressionParser.parseUnionExpression(ExpressionParser.java:1245)
>         at
> net.sf.saxon.expr.ExpressionParser.parseMultiplicativeExpression(ExpressionParser.java:1181)
>         at
> net.sf.saxon.expr.ExpressionParser.parseAdditiveExpression(ExpressionParser.java:1161)
>         at
> net.sf.saxon.expr.ExpressionParser.parseRangeExpression(ExpressionParser.java:1046)
>         at
> net.sf.saxon.expr.ExpressionParser.parseComparisonExpression(ExpressionParser.java:995)
>         at
> net.sf.saxon.expr.ExpressionParser.parseAndExpression(ExpressionParser.java:568)
>         at
> net.sf.saxon.expr.ExpressionParser.parseOrExpression(ExpressionParser.java:550)
>         at
> net.sf.saxon.expr.ExpressionParser.parseExprSingle(ExpressionParser.java:474)
>         at net.sf.saxon.query.QueryParser.parseLetClause(QueryParser.java:2219)
>         at net.sf.saxon.query.QueryParser.parseForExpression(QueryParser.java:1906)
>         at
> net.sf.saxon.expr.ExpressionParser.parseExprSingle(ExpressionParser.java:450)
>         at
> net.sf.saxon.expr.ExpressionParser.parseExpression(ExpressionParser.java:418)
>         at net.sf.saxon.query.QueryParser.parseQuery(QueryParser.java:313)
>         at
> net.sf.saxon.query.QueryParser.makeXQueryExpression(QueryParser.java:135)
>         at
> net.sf.saxon.query.StaticQueryContext.compileQuery(StaticQueryContext.java:489)
>         at
> net.sf.saxon.query.StaticQueryContext.compileQuery(StaticQueryContext.java:551)
>         at
> org.apache.camel.component.xquery.XQueryBuilder$3.createQueryExpression(XQueryBuilder.java:259)
>         at
> org.apache.camel.component.xquery.XQueryBuilder.initialize(XQueryBuilder.java:633)
>         at
> org.apache.camel.component.xquery.XQueryBuilder.evaluateAsDOM(XQueryBuilder.java:173)
>         at
> org.apache.camel.component.xquery.XQueryBuilder.evaluate(XQueryBuilder.java:134)
>         ... 55 more
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/Camel-XQuery-Saxon-tp5728490p5728551.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: cibsen@redhat.com
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen

Re: Camel XQuery - Saxon

Posted by Phobos <sm...@gmail.com>.
Hi,

Stack trace is as follows, i'm putting together a test case now;

org.apache.camel.RuntimeExpressionException:
net.sf.saxon.trans.XPathException: Prefix math has not been declared
	at
org.apache.camel.component.xquery.XQueryBuilder.evaluate(XQueryBuilder.java:144)
	at
org.apache.camel.component.xquery.XQueryBuilder.process(XQueryBuilder.java:101)
	at
org.apache.camel.impl.ProcessorEndpoint.onExchange(ProcessorEndpoint.java:101)
	at
org.apache.camel.impl.ProcessorEndpoint$1.process(ProcessorEndpoint.java:71)
	at
org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
	at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
	at
org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:122)
	at
org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:298)
	at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:117)
	at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
	at
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
	at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
	at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
	at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
	at
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
	at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
	at
org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
	at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
	at
org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:334)
	at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:220)
	at
org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:46)
	at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
	at
org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:308)
	at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
	at org.apache.camel.processor.Pipeline.process(Pipeline.java:117)
	at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
	at
org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:46)
	at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
	at
org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150)
	at
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117)
	at
org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48)
	at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
	at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
	at
org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
	at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
	at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
	at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:99)
	at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:86)
	at
org.apache.camel.component.http.CamelServlet.service(CamelServlet.java:98)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
	at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
	at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)
Caused by: net.sf.saxon.trans.XPathException: Prefix math has not been
declared
	at net.sf.saxon.query.QueryParser.grumble(QueryParser.java:393)
	at net.sf.saxon.expr.ExpressionParser.grumble(ExpressionParser.java:211)
	at
net.sf.saxon.expr.ExpressionParser.resolveFunctionName(ExpressionParser.java:2234)
	at
net.sf.saxon.expr.ExpressionParser.parseFunctionCall(ExpressionParser.java:2068)
	at
net.sf.saxon.expr.ExpressionParser.parseBasicStep(ExpressionParser.java:1525)
	at
net.sf.saxon.expr.ExpressionParser.parseStepExpression(ExpressionParser.java:1454)
	at
net.sf.saxon.expr.ExpressionParser.parseRelativePath(ExpressionParser.java:1389)
	at
net.sf.saxon.expr.ExpressionParser.parsePathExpression(ExpressionParser.java:1375)
	at
net.sf.saxon.expr.ExpressionParser.parseUnaryExpression(ExpressionParser.java:1230)
	at
net.sf.saxon.expr.ExpressionParser.parseCastExpression(ExpressionParser.java:849)
	at
net.sf.saxon.expr.ExpressionParser.parseCastableExpression(ExpressionParser.java:804)
	at
net.sf.saxon.expr.ExpressionParser.parseTreatExpression(ExpressionParser.java:785)
	at
net.sf.saxon.expr.ExpressionParser.parseInstanceOfExpression(ExpressionParser.java:767)
	at
net.sf.saxon.expr.ExpressionParser.parseIntersectExpression(ExpressionParser.java:1263)
	at
net.sf.saxon.expr.ExpressionParser.parseUnionExpression(ExpressionParser.java:1245)
	at
net.sf.saxon.expr.ExpressionParser.parseMultiplicativeExpression(ExpressionParser.java:1181)
	at
net.sf.saxon.expr.ExpressionParser.parseAdditiveExpression(ExpressionParser.java:1161)
	at
net.sf.saxon.expr.ExpressionParser.parseRangeExpression(ExpressionParser.java:1046)
	at
net.sf.saxon.expr.ExpressionParser.parseComparisonExpression(ExpressionParser.java:995)
	at
net.sf.saxon.expr.ExpressionParser.parseAndExpression(ExpressionParser.java:568)
	at
net.sf.saxon.expr.ExpressionParser.parseOrExpression(ExpressionParser.java:550)
	at
net.sf.saxon.expr.ExpressionParser.parseExprSingle(ExpressionParser.java:474)
	at net.sf.saxon.query.QueryParser.parseLetClause(QueryParser.java:2219)
	at net.sf.saxon.query.QueryParser.parseForExpression(QueryParser.java:1906)
	at
net.sf.saxon.expr.ExpressionParser.parseExprSingle(ExpressionParser.java:450)
	at
net.sf.saxon.expr.ExpressionParser.parseExpression(ExpressionParser.java:418)
	at net.sf.saxon.query.QueryParser.parseQuery(QueryParser.java:313)
	at
net.sf.saxon.query.QueryParser.makeXQueryExpression(QueryParser.java:135)
	at
net.sf.saxon.query.StaticQueryContext.compileQuery(StaticQueryContext.java:489)
	at
net.sf.saxon.query.StaticQueryContext.compileQuery(StaticQueryContext.java:551)
	at
org.apache.camel.component.xquery.XQueryBuilder$3.createQueryExpression(XQueryBuilder.java:259)
	at
org.apache.camel.component.xquery.XQueryBuilder.initialize(XQueryBuilder.java:633)
	at
org.apache.camel.component.xquery.XQueryBuilder.evaluateAsDOM(XQueryBuilder.java:173)
	at
org.apache.camel.component.xquery.XQueryBuilder.evaluate(XQueryBuilder.java:134)
	... 55 more



--
View this message in context: http://camel.465427.n5.nabble.com/Camel-XQuery-Saxon-tp5728490p5728551.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Camel XQuery - Saxon

Posted by Willem jiang <wi...@gmail.com>.
Hi,

What's stack trace look like?
Can you submit a simple test case for it?


--  
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.iteye.com (http://jnn.javaeye.com/) (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem





On Tuesday, March 5, 2013 at 5:26 AM, Phobos wrote:

>  
> Hi,
>  
> Saxon allows for java methods to invoke from XQuery, for example;
>  
> declare namespace math=java:java.lang.Math;
>  
> let $r := math:random()
>  
> return $r
>  
> It would appear that this doesn't work out of the box in the Camel
> implementation. Does anyone know how to enable this?
>  
> Thanks
>  
>  
>  
> --
> View this message in context: http://camel.465427.n5.nabble.com/Camel-XQuery-Saxon-tp5728490.html
> Sent from the Camel - Users mailing list archive at Nabble.com (http://Nabble.com).