jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Frederic Esnault (JIRA)" <j...@apache.org>
Subject [jira] Created: (JCR-977) jcr:deref in xpath predicates
Date Fri, 22 Jun 2007 09:40:26 GMT
jcr:deref in xpath predicates

                 Key: JCR-977
                 URL: https://issues.apache.org/jira/browse/JCR-977
             Project: Jackrabbit
          Issue Type: Improvement
          Components: query
    Affects Versions: 1.3
         Environment: n/a
            Reporter: Frederic Esnault
             Fix For: 1.3.1, 1.4

Currently, the jcr:deref() function is not allowed in a xpath query predicate. Example :
book holds a reference property on its author(s)
authors have a name

We want all books from a specific author :

/jcr:root/element(*, bookType)[jcr:deref(@author, 'authorType')/@name = 'King']

This fails with an InvalidQueryException currently (not supported).

The error is raised in the XPathQueryBuilder class, in function : private QueryNode createFunction(SimpleNode
node, QueryNode queryNode), in the block :
else if (NameFormat.format(JCR_DEREF, resolver).equals(fName))

Problem is that with this query, when evaluating the jcr:deref() function, then in this method
at this point, queryNode.getType() is 0 and tests raise the exception if queryNode.getType()
is neither QueryNode.TYPE_LOCATION nor QueryNode.TYPE_LOCATION.

I think this is a useful place to put a deref function in a query, as I don't know how we
could test the referenced node properties another way.

Frederic Esnault

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message