You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Frederic Esnault (JIRA)" <ji...@apache.org> on 2007/06/22 11:42:26 UTC
[jira] Updated: (JCR-977) jcr:deref in xpath predicates
[ https://issues.apache.org/jira/browse/JCR-977?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Frederic Esnault updated JCR-977:
---------------------------------
Description:
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_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
was:
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
> 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_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
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.