commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rahul Akolkar <>
Subject Re: [SCXML] XPathEvaluator / Error accessing complex event payload
Date Mon, 26 Oct 2009 03:10:04 GMT
On Sun, Oct 25, 2009 at 11:47 AM, Jaroslav Pullmann
<> wrote:
>  Hello Rahul,
>  although not yet officially released I like using the J6 branch
>  (commons-scxml-1.0-SNAPSHOT.jar) because of its XPath support.
>  Recently I experience problems when accessing the complex event
>  payload (Node: <payload><data><status>started</status></data></payload>,
>  plain string payload is o.k.)
>  This works fine with JexlEvaluator:
>        <transition event="statuschange">
>                <log label="Status changed to"
> expr="Data(_eventdata.payload,'/data/status')"/>
>        </transition>
>  but is broken with XPathEvaluator:
>        <transition event="statuschange">
>                <log label="Message" expr="$_eventdata/data/status"/>
>        </transition>

The two evaluators handle XPath processing differently, so in order to
track down the error below, please say more as to how you obtained the
Node that became the event payload. For example, if the
DocumentBuilder API is used to parse the above XML, I'd expect it to
work in either cases. I would, however, expect the expression when
using the XPath evaluator in this case to be either
"$_eventdata/payload/data/status" or "$_eventdata//data/status" (note
two /s before data). As an aside, for good measure, specifying an
xmlns on payloads is also recommended practice i.e. <payload

Also say something about the environment and how we're seeing xalan
classes in the traces that aren't repackaged. The J6 branch requires
JDK 1.6 where, for example, I'd expect to see something like as against
org.apache.xpath.XPath in the traces.

In order for us to reproduce this, if you can produce a small JUnit
test case in the Commons SCXML test suite (see existing ones in
src/test/java/...oacse.../xpath) that produces the trace below, that
can also help.


> javax.xml.transform.TransformerException: org.apache.xpath.objects.XObject
> incompatible with org.apache.xpath.objects.XNodeSet
>        at org.apache.xpath.XPath.execute(Unknown Source)
>        at org.apache.xpath.jaxp.XPathExpressionImpl.evaluate(Unknown Source)
>        at org.apache.xpath.jaxp.XPathImpl.evaluate(Unknown Source)
>        at
> org.apache.commons.scxml.env.xpath.XPathEvaluator.eval(
>        at org.apache.commons.scxml.model.Log.execute(
>        at
> org.apache.commons.scxml.semantics.SCXMLSemanticsImpl.executeActions(
>        at
> org.apache.commons.scxml.SCXMLExecutor.triggerEvents(
> Caused by: java.lang.ClassCastException: org.apache.xpath.objects.XObject
> incompatible with org.apache.xpath.objects.XNodeSet
>        at
> org.apache.xpath.axes.FilterExprIteratorSimple.executeFilterExpr(Unknown
> Source)
>        at org.apache.xpath.axes.FilterExprWalker.setRoot(Unknown Source)
>        at org.apache.xpath.axes.WalkingIterator.setRoot(Unknown Source)
>        at org.apache.xpath.axes.NodeSequence.setRoot(Unknown Source)
>        at org.apache.xpath.axes.LocPathIterator.execute(Unknown Source)
>        ... 13 more
>        Is this may be due to an incorrect variable naming or whichever user
> error ?
>    Many thanks for your help!
>      Jaro

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message