You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by Brian Moseley <bc...@osafoundation.org> on 2005/10/10 22:59:47 UTC

xpath query failure

the following xpath query is failing with the below stack trace. the 
problem seems to be the space in the item name "morgen calendar-2". the 
space character is obviously allowed in the item name in this position, 
so is this a bug, or am i missing something? thanks!

/jcr:root/morgen/morgen calendar-2//element(*, 
caldav:resource)[@icalendar:uid = 'e505b68c-36c9-11da- cb90-000a95bb2738']

2005-10-06 17:33:43,120 ERROR [JCRCalendarDao] JCR error storing  calendar
javax.jcr.query.InvalidQueryException: Internal error: data is not a 
RelationQueryNode
         at 
org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
(XPathQueryBuilder.java:435)
         at  org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
(SimpleNode.java:80)
         at 
org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept 
(SimpleNode.java:89)
         at 
org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
(XPathQueryBuilder.java:455)
         at  org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
(SimpleNode.java:80)
         at 
org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept 
(SimpleNode.java:89)
         at 
org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
(XPathQueryBuilder.java:455)
         at  org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
(SimpleNode.java:80)
         at 
org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept 
(SimpleNode.java:89)
         at 
org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
(XPathQueryBuilder.java:455)
         at  org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
(SimpleNode.java:80)
         at 
org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept 
(SimpleNode.java:89)
         at 
org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
(XPathQueryBuilder.java:455)
         at  org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
(SimpleNode.java:80)
         at 
org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept 
(SimpleNode.java:89)
         at 
org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
(XPathQueryBuilder.java:455)
         at  org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
(SimpleNode.java:80)
         at 
org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept 
(SimpleNode.java:89)
         at 
org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
(XPathQueryBuilder.java:455)
         at  org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
(SimpleNode.java:80)
         at 
org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept 
(SimpleNode.java:89)
         at 
org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
(XPathQueryBuilder.java:455)
         at  org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
(SimpleNode.java:80)
         at 
org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept 
(SimpleNode.java:89)
         at 
org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
(XPathQueryBuilder.java:455)
         at  org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
(SimpleNode.java:80)
         at 
org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept 
(SimpleNode.java:89)
         at 
org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.createPathQuery 
Node(XPathQueryBuilder.java:617)
         at 
org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
(XPathQueryBuilder.java:318)
         at  org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
(SimpleNode.java:80)
         at 
org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.<init> 
(XPathQueryBuilder.java:245)
         at 
org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.createQuery 
(XPathQueryBuilder.java:276)
         at 
org.apache.jackrabbit.core.query.xpath.QueryBuilder.createQueryTree 
(QueryBuilder.java:37)
         at org.apache.jackrabbit.core.query.QueryParser.parse 
(QueryParser.java:54)
         at org.apache.jackrabbit.core.query.lucene.QueryImpl.<init> 
(QueryImpl.java:125)
         at 
org.apache.jackrabbit.core.query.lucene.SearchIndex.createExecutableQuer 
y(SearchIndex.java:268)
         at org.apache.jackrabbit.core.query.QueryImpl.<init> 
(QueryImpl.java:90)
         at org.apache.jackrabbit.core.SearchManager.createQuery 
(SearchManager.java:165)
         at 
org.apache.jackrabbit.core.query.QueryManagerImpl.createQuery 
(QueryManagerImpl.java:87)
...

Re: xpath query failure

Posted by Brian Moseley <bc...@osafoundation.org>.
Marcel Reutegger wrote:

> using the class org.apache.jackrabbit.core.util.ISO9075 is probably the
> better choice ;)

yeah, you're right, it probably is :)

Re: xpath query failure

Posted by Marcel Reutegger <ma...@gmail.com>.
Hi Brian,

sorry for the late reply...

using the class org.apache.jackrabbit.core.util.ISO9075 is probably the
better choice ;)

regards
   marcel

Brian Moseley wrote:
> Brian Moseley wrote:
> 
>> ah yes, and section 6.6.4.9. thanks for the pointer. i had read down 
>> to 6.6.4.7 but not gone any further :)
>>
>> i don't see an escaping utility in the jcr api. this seems like code 
>> that should only have to be written once and be usable by all jcr 
>> clients. how do other folks handle escaping?
> 
> 
> for what it's worth, i copied 
> org.apache.jackrabbit.test.api.EscapeJCRUtil. that class really ought to 
> be generally available somehow rather than buried down in the jackrabbit 
> test code :)
> 
> 

Re: xpath query failure

Posted by Brian Moseley <bc...@osafoundation.org>.
Brian Moseley wrote:

> ah yes, and section 6.6.4.9. thanks for the pointer. i had read down to 
> 6.6.4.7 but not gone any further :)
> 
> i don't see an escaping utility in the jcr api. this seems like code 
> that should only have to be written once and be usable by all jcr 
> clients. how do other folks handle escaping?

for what it's worth, i copied 
org.apache.jackrabbit.test.api.EscapeJCRUtil. that class really ought to 
be generally available somehow rather than buried down in the jackrabbit 
test code :)

Re: xpath query failure

Posted by Brian Moseley <bc...@osafoundation.org>.
Daniel Mullen wrote:
> You probably need to escape names.  See section 6.4.3 of JSR-170.

ah yes, and section 6.6.4.9. thanks for the pointer. i had read down to 
6.6.4.7 but not gone any further :)

i don't see an escaping utility in the jcr api. this seems like code 
that should only have to be written once and be usable by all jcr 
clients. how do other folks handle escaping?

Re: xpath query failure

Posted by Daniel Mullen <da...@oracle.com>.
You probably need to escape names.  See section 6.4.3 of JSR-170.

Cheers,
..Dan

Brian Moseley wrote:

> the following xpath query is failing with the below stack trace. the 
> problem seems to be the space in the item name "morgen calendar-2". 
> the space character is obviously allowed in the item name in this 
> position, so is this a bug, or am i missing something? thanks!
>
> /jcr:root/morgen/morgen calendar-2//element(*, 
> caldav:resource)[@icalendar:uid = 'e505b68c-36c9-11da- 
> cb90-000a95bb2738']
>
> 2005-10-06 17:33:43,120 ERROR [JCRCalendarDao] JCR error storing  
> calendar
> javax.jcr.query.InvalidQueryException: Internal error: data is not a 
> RelationQueryNode
>         at 
> org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
> (XPathQueryBuilder.java:435)
>         at  
> org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
> (SimpleNode.java:80)
>         at 
> org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept 
> (SimpleNode.java:89)
>         at 
> org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
> (XPathQueryBuilder.java:455)
>         at  
> org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
> (SimpleNode.java:80)
>         at 
> org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept 
> (SimpleNode.java:89)
>         at 
> org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
> (XPathQueryBuilder.java:455)
>         at  
> org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
> (SimpleNode.java:80)
>         at 
> org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept 
> (SimpleNode.java:89)
>         at 
> org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
> (XPathQueryBuilder.java:455)
>         at  
> org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
> (SimpleNode.java:80)
>         at 
> org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept 
> (SimpleNode.java:89)
>         at 
> org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
> (XPathQueryBuilder.java:455)
>         at  
> org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
> (SimpleNode.java:80)
>         at 
> org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept 
> (SimpleNode.java:89)
>         at 
> org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
> (XPathQueryBuilder.java:455)
>         at  
> org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
> (SimpleNode.java:80)
>         at 
> org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept 
> (SimpleNode.java:89)
>         at 
> org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
> (XPathQueryBuilder.java:455)
>         at  
> org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
> (SimpleNode.java:80)
>         at 
> org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept 
> (SimpleNode.java:89)
>         at 
> org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
> (XPathQueryBuilder.java:455)
>         at  
> org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
> (SimpleNode.java:80)
>         at 
> org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept 
> (SimpleNode.java:89)
>         at 
> org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
> (XPathQueryBuilder.java:455)
>         at  
> org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
> (SimpleNode.java:80)
>         at 
> org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept 
> (SimpleNode.java:89)
>         at 
> org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.createPathQuery 
> Node(XPathQueryBuilder.java:617)
>         at 
> org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit 
> (XPathQueryBuilder.java:318)
>         at  
> org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept 
> (SimpleNode.java:80)
>         at 
> org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.<init> 
> (XPathQueryBuilder.java:245)
>         at 
> org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.createQuery 
> (XPathQueryBuilder.java:276)
>         at 
> org.apache.jackrabbit.core.query.xpath.QueryBuilder.createQueryTree 
> (QueryBuilder.java:37)
>         at org.apache.jackrabbit.core.query.QueryParser.parse 
> (QueryParser.java:54)
>         at org.apache.jackrabbit.core.query.lucene.QueryImpl.<init> 
> (QueryImpl.java:125)
>         at 
> org.apache.jackrabbit.core.query.lucene.SearchIndex.createExecutableQuer 
> y(SearchIndex.java:268)
>         at org.apache.jackrabbit.core.query.QueryImpl.<init> 
> (QueryImpl.java:90)
>         at org.apache.jackrabbit.core.SearchManager.createQuery 
> (SearchManager.java:165)
>         at 
> org.apache.jackrabbit.core.query.QueryManagerImpl.createQuery 
> (QueryManagerImpl.java:87)
> ...
>