Odd. I know I've used instance methods in JXPath before. But I can't
say I tried to do so where the instance method was on a member item of
a collection.
One thing I can say is that I've had difficulties in the past with the
1.2 release where my object graphs contain a mixture of maps,
collections, and pojos.
Suggestion - try your test case with one of the JXPath nightly builds.
I had to do that because some fixes for traversing collections of
collections which contain maps, etc. The 1.2 release is quite old.
-Scott Heaberlin
On 3/4/07, Neil Benn <[EMAIL PROTECTED]> wrote:
Hello,
Thanks for the tip - I tried that but unfortunatly it does not work, I
still get the same problem. The stack trace is now:
---
org.apache.commons.jxpath.JXPathException: Invalid XPath:
'.[1]/getQuestion(.[1], \'lastname\')'. Syntax error after: '.[1]/g'
org.apache.commons.jxpath.ri.Parser.parseExpression(Parser.java:60)
org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.compileExpression(JXPathContextReferenceImpl.java:218)
org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.getValue(JXPathContextReferenceImpl.java:247)
---
It is the same problem. Interestingly I did try putting a list into the
JXContext and calling size as follows:
List objValues = new ArrayList<String>();
objValues.add("test1");
objValues.add("test2");
JXPathContext objContext = JXPathContext.newContext(objValues);
System.out.println(objContext.getValue("size(.)"));
assertEquals("test1", objContext.getValue(".[1]"));
This works, it prints out 2 for the size of the list. I wonder if it is
because the method I am calling has parameters? In the meantime, I'm gonna
trawl trhough the testcases in the source to see if I can find an example.
Thanks for your assistance.
Cheers,
Neil
"Scott Heaberlin" <[EMAIL PROTECTED]> wrote:
> Try passing the object on which you want to call the method as the
> first arg in the xpath function (the object's method).
>
> .[1]/getQuestion(.[1], 'lastname')
>
> Object methods take the syntax above as part of JXPath's standard
> extension functions.
>
>
http://jakarta.apache.org/commons/jxpath/users-guide.html#Standard_Extension_Functions
>
> Hope this helps,
>
> -Scott Heaberlin
>
> On 3/3/07, Neil Benn <[EMAIL PROTECTED]> wrote:
> > Hello,
> >
> >
> >
> > I have a a strane problem when I'm trying to call a method
with
> > JXPath. The object graph has a user which has a method called
> > getQuestion(String pstrQuestionID). The JXPath I have written for this
is:
> >
> >
> >
> > .[1]/getQuestion(\'lastname\')
> >
> >
> > The dot at the front is notation to allow me to access the
first
> > element, the root of the context is a list. However when I attempt to run
> > this I get the following stack trace :
> >
> >
> >
> > org.apache.commons.jxpath.JXPathException: Invalid XPath:
> > '.[1]/getQuestion(\'lastname\')'. Syntax error after: '.[1]/g'
> > org.apache.commons.jxpath.ri.Parser.parseExpression(Parser.java:60)
> >
>
org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.compileExpression(JXPathContextReferenceImpl.java:218)
> >
>
org.apache.commons.jxpath.ri.JXPathContextReferenceImpl.getValue(JXPathContextReferenceImpl.java:247)
> >
> >
> > However as far as I can see, the XPath notation is valid – I
> would
> > be most grateful is someone could let me know what I've done wrong.
> >
> >
> >
> > Thanks, in advance for your help.
> >
> >
> >
> > Cheers,
> >
> >
> >
> > Neil
> >
> >
> >
> > ---
> >
> > Neil Benn Msc
> >
> > CEO Ziath Ltd
> >
> > Website - http://www.ziath.com
> >
> > Blog - http://labauto-lounge.com
> >
> >
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---
Neil Benn Msc
CEO Ziath Ltd
Website - http://www.ziath.com
Blog - http://labauto-lounge.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]