Home
Reading
Searching
Subscribe
Sponsors
Statistics
Posting
Contact
Spam
Lists
Links
About
Hosting
Filtering
Features Download
Marketing
Archives
FAQ
Blog
 
Gmane
From: Dan Diephouse (JIRA) <jira <at> apache.org>
Subject: Updated: (JCR-977) jcr:deref in xpath predicates
Newsgroups: gmane.comp.apache.jackrabbit.devel
Date: Wednesday 1st July 2009 20:45:47 UTC (over 7 years ago)
[ https://issues.apache.org/jira/browse/JCR-977?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Dan Diephouse updated JCR-977:
------------------------------

    Attachment: deref.patch

Here's a first stab at this. Needs cleanup, but the important part is it
works. :-)

> jcr:deref in xpath predicates
> -----------------------------
>
>                 Key: JCR-977
>                 URL: https://issues.apache.org/jira/browse/JCR-977
>             Project: Jackrabbit Content Repository
>          Issue Type: Improvement
>          Components: jackrabbit-core, query
>         Environment: n/a
>            Reporter: Frederic Esnault
>         Attachments: deref.patch
>
>
> 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')[email protected] =
'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_PATH.
> 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
 
CD: 2ms