01: package javax.jcr.query.qom;
02:
03: /**
04: * Tests whether the {@link #getDescendantSelectorName descendantSelector} node
05: * is a descendant of the {@link #getAncestorSelectorName ancestorSelector}
06: * node. A node-tuple satisfies the constraint only if:
07: * <pre> descendantSelectorNode.getAncestor(n).isSame(ancestorSelectorNode) &&
08: * descendantSelectorNode.getDepth() > n</pre>
09: * would return true some some non-negative integer <code>n</code>, where
10: * <code>descendantSelectorNode</code> is the node for
11: * {@link #getDescendantSelectorName descendantSelector} and
12: * <code>ancestorSelectorNode</code> is the node for
13: * {@link #getAncestorSelectorName ancestorSelector}.
14: * <p>
15: * The query is invalid if:
16: * <ul>
17: * <li>{@link #getDescendantSelectorName descendantSelector} is not the name
18: * of a selector in the query, or</li>
19: * <li>{@link #getAncestorSelectorName ancestorSelector} is not the name of a
20: * selector in the query, or</li>
21: * <li>{@link #getDescendantSelectorName descendantSelector} is the same as
22: * {@link #getAncestorSelectorName ancestorSelector}.
23: * </ul>
24: */
25: public interface DescendantNodeJoin extends JoinCondition {
26: /**
27: * Gets the name of the descendant selector.
28: *
29: * @return the selector name; non-null
30: */
31: public String getDescendantSelectorName();
32:
33: /**
34: * Gets the name of the ancestor selector.
35: *
36: * @return the selector name; non-null
37: */
38: public String getAncestorSelectorName();
39: }
40:
41: // EOF
|