Uploaded image for project: 'Jackrabbit Content Repository'
  1. Jackrabbit Content Repository
  2. JCR-977

jcr:deref and parent axis in xpath predicates

    XMLWordPrintableJSON

Details

    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

      Attachments

        1. deref.patch
          59 kB
          Marcel Reutegger
        2. deref.patch
          53 kB
          Daniel Diephouse

        Issue Links

          Activity

            People

              mreutegg Marcel Reutegger
              vk_phoenixfr Frederic Esnault
              Votes:
              2 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: