You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by th...@apache.org on 2012/03/12 16:34:01 UTC

svn commit: r1299713 - in /jackrabbit/sandbox/jackrabbit-microkernel/src: main/java/org/apache/jackrabbit/query/qom/ main/java/org/apache/jackrabbit/query/qom/tree/ main/java/org/apache/jackrabbit/query/reader/ test/resources/

Author: thomasm
Date: Mon Mar 12 15:34:00 2012
New Revision: 1299713

URL: http://svn.apache.org/viewvc?rev=1299713&view=rev
Log:
Query implementation (WIP)

Modified:
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/QueryObjectModelImpl.java
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/ChildNodeImpl.java
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/ChildNodeJoinConditionImpl.java
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/ColumnImpl.java
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/DescendantNodeImpl.java
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/EquiJoinConditionImpl.java
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/NodeLocalNameImpl.java
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/NodeNameImpl.java
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/PropertyExistenceImpl.java
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/PropertyValueImpl.java
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SameNodeImpl.java
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SameNodeJoinConditionImpl.java
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SelectorImpl.java
    jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/reader/TraversingCursor.java
    jackrabbit/sandbox/jackrabbit-microkernel/src/test/resources/queryTest.txt

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/QueryObjectModelImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/QueryObjectModelImpl.java?rev=1299713&r1=1299712&r2=1299713&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/QueryObjectModelImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/QueryObjectModelImpl.java Mon Mar 12 15:34:00 2012
@@ -96,6 +96,7 @@ public class QueryObjectModelImpl implem
             @Override
             public boolean visit(ChildNodeImpl node) {
                 node.setQuery(query);
+                node.bindSelector(source);
                 return true;
             }
 
@@ -148,12 +149,14 @@ public class QueryObjectModelImpl implem
             @Override
             public boolean visit(NodeLocalNameImpl node) {
                 node.setQuery(query);
+                node.bindSelector(source);
                 return true;
             }
 
             @Override
             public boolean visit(NodeNameImpl node) {
                 node.setQuery(query);
+                node.bindSelector(source);
                 return true;
             }
 

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/ChildNodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/ChildNodeImpl.java?rev=1299713&r1=1299712&r2=1299713&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/ChildNodeImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/ChildNodeImpl.java Mon Mar 12 15:34:00 2012
@@ -19,6 +19,7 @@
 package org.apache.jackrabbit.query.qom.tree;
 
 import javax.jcr.query.qom.ChildNode;
+import org.apache.jackrabbit.mk.util.PathUtils;
 
 
 /**
@@ -28,6 +29,7 @@ public class ChildNodeImpl extends Const
 
     private final String selectorName;
     private final String parentPath;
+    private SelectorImpl selector;
 
     public ChildNodeImpl(String selectorName, String parentPath) {
         this.selectorName = selectorName;
@@ -51,10 +53,19 @@ public class ChildNodeImpl extends Const
         return "ISCHILDNODE(" + selectorName + ", " + quotePath(parentPath) + ')';
     }
 
+    public void bindSelector(SourceImpl source) {
+        selector = source.getSelector(selectorName);
+        if (selector == null) {
+            throw new RuntimeException("Unknown selector: " + selectorName);
+        }
+    }
+
     @Override
     public boolean evaluate() {
-        // TODO Auto-generated method stub
-        return false;
+        String p = selector.currentPath();
+        // the parent of the root is the root,
+        // so we need to special case this
+        return !PathUtils.denotesRoot(p) && PathUtils.getParentPath(p).equals(parentPath);
     }
 
 }
\ No newline at end of file

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/ChildNodeJoinConditionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/ChildNodeJoinConditionImpl.java?rev=1299713&r1=1299712&r2=1299713&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/ChildNodeJoinConditionImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/ChildNodeJoinConditionImpl.java Mon Mar 12 15:34:00 2012
@@ -19,6 +19,7 @@
 package org.apache.jackrabbit.query.qom.tree;
 
 import javax.jcr.query.qom.ChildNodeJoinCondition;
+import org.apache.jackrabbit.mk.util.PathUtils;
 
 /**
  * The implementation of the corresponding JCR interface.
@@ -67,7 +68,11 @@ public class ChildNodeJoinConditionImpl 
 
     @Override
     public boolean evaluate() {
-        return parentSelector.currentPath().equals(childSelector.currentPath());
+        String p = parentSelector.currentPath();
+        String c = childSelector.currentPath();
+        // the parent of the root is the root,
+        // so we need to special case this
+        return !PathUtils.denotesRoot(c) && PathUtils.getParentPath(c).equals(p);
     }
 
 }
\ No newline at end of file

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/ColumnImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/ColumnImpl.java?rev=1299713&r1=1299712&r2=1299713&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/ColumnImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/ColumnImpl.java Mon Mar 12 15:34:00 2012
@@ -67,8 +67,7 @@ public class ColumnImpl extends QOMNode 
             String p = selector.currentPath();
             return p == null ? null : query.getValueFactory().createValue(p);
         }
-        String v = selector.currentNode().getProperty(propertyName);
-        return v == null ? null : query.getValueFactory().createValue(v);
+        return selector.currentProperty(propertyName);
     }
 
     public void bindSelector(SourceImpl source) {

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/DescendantNodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/DescendantNodeImpl.java?rev=1299713&r1=1299712&r2=1299713&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/DescendantNodeImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/DescendantNodeImpl.java Mon Mar 12 15:34:00 2012
@@ -45,7 +45,8 @@ public class DescendantNodeImpl extends 
 
     @Override
     public boolean evaluate() {
-        return PathUtils.isAncestor(ancestorPath, selector.currentNode().getPath());
+        String p = selector.currentPath();
+        return PathUtils.isAncestor(ancestorPath, p);
     }
 
     @Override

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/EquiJoinConditionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/EquiJoinConditionImpl.java?rev=1299713&r1=1299712&r2=1299713&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/EquiJoinConditionImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/EquiJoinConditionImpl.java Mon Mar 12 15:34:00 2012
@@ -18,8 +18,8 @@
  */
 package org.apache.jackrabbit.query.qom.tree;
 
+import javax.jcr.Value;
 import javax.jcr.query.qom.EquiJoinCondition;
-import org.apache.jackrabbit.mk.simple.NodeImpl;
 
 /**
  * The implementation of the corresponding JCR interface.
@@ -81,14 +81,12 @@ public class EquiJoinConditionImpl exten
 
     @Override
     public boolean evaluate() {
-        NodeImpl n1 = selector1.currentNode();
-        String v1 = n1.getProperty(property1Name);
+        Value v1 = selector1.currentProperty(property1Name);
         if (v1 == null) {
             return false;
         }
         // TODO data type mapping
-        NodeImpl n2 = selector2.currentNode();
-        String v2 = n2.getProperty(property2Name);
+        Value v2 = selector2.currentProperty(property2Name);
         if (v2 == null) {
             return false;
         }

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/NodeLocalNameImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/NodeLocalNameImpl.java?rev=1299713&r1=1299712&r2=1299713&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/NodeLocalNameImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/NodeLocalNameImpl.java Mon Mar 12 15:34:00 2012
@@ -20,6 +20,7 @@ package org.apache.jackrabbit.query.qom.
 
 import javax.jcr.Value;
 import javax.jcr.query.qom.NodeLocalName;
+import org.apache.jackrabbit.mk.util.PathUtils;
 
 /**
  * The implementation of the corresponding JCR interface.
@@ -27,6 +28,7 @@ import javax.jcr.query.qom.NodeLocalName
 public class NodeLocalNameImpl extends DynamicOperandImpl implements NodeLocalName {
 
     private final String selectorName;
+    private SelectorImpl selector;
 
     public NodeLocalNameImpl(String selectorName) {
         this.selectorName = selectorName;
@@ -45,10 +47,20 @@ public class NodeLocalNameImpl extends D
         return "LOCALNAME(" + getSelectorName() + ')';
     }
 
+    public void bindSelector(SourceImpl source) {
+        selector = source.getSelector(selectorName);
+        if (selector == null) {
+            throw new RuntimeException("Unknown selector: " + selectorName);
+        }
+    }
+
     @Override
-    public Value currentValue() {
-        // TODO Auto-generated method stub
-        return null;
+    public  Value currentValue() {
+        String name = PathUtils.getName(selector.currentPath());
+        int colon = name.indexOf(':');
+        // TODO LOCALNAME: evaluation of local name might not be correct
+        String localName = colon < 0 ? name : name.substring(colon + 1);
+        return query.getValueFactory().createValue(localName);
     }
 
 }

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/NodeNameImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/NodeNameImpl.java?rev=1299713&r1=1299712&r2=1299713&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/NodeNameImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/NodeNameImpl.java Mon Mar 12 15:34:00 2012
@@ -20,6 +20,7 @@ package org.apache.jackrabbit.query.qom.
 
 import javax.jcr.Value;
 import javax.jcr.query.qom.NodeName;
+import org.apache.jackrabbit.mk.util.PathUtils;
 
 /**
  * The implementation of the corresponding JCR interface.
@@ -27,6 +28,7 @@ import javax.jcr.query.qom.NodeName;
 public class NodeNameImpl extends DynamicOperandImpl implements NodeName {
 
     private final String selectorName;
+    private SelectorImpl selector;
 
     public NodeNameImpl(String selectorName) {
         this.selectorName = selectorName;
@@ -45,10 +47,17 @@ public class NodeNameImpl extends Dynami
         return "NAME(" + getSelectorName() + ')';
     }
 
+    public void bindSelector(SourceImpl source) {
+        selector = source.getSelector(selectorName);
+        if (selector == null) {
+            throw new RuntimeException("Unknown selector: " + selectorName);
+        }
+    }
+
     @Override
     public  Value currentValue() {
-        // TODO Auto-generated method stub
-        return null;
+        String name = PathUtils.getName(selector.currentPath());
+        return query.getValueFactory().createValue(name);
     }
 
 }

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/PropertyExistenceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/PropertyExistenceImpl.java?rev=1299713&r1=1299712&r2=1299713&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/PropertyExistenceImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/PropertyExistenceImpl.java Mon Mar 12 15:34:00 2012
@@ -18,8 +18,8 @@
  */
 package org.apache.jackrabbit.query.qom.tree;
 
+import javax.jcr.Value;
 import javax.jcr.query.qom.PropertyExistence;
-import org.apache.jackrabbit.mk.simple.NodeImpl;
 
 /**
  * The implementation of the corresponding JCR interface.
@@ -45,8 +45,8 @@ public class PropertyExistenceImpl exten
 
     @Override
     public boolean evaluate() {
-        NodeImpl n = selector.currentNode();
-        return n == null ? false : n.hasProperty(propertyName);
+        Value v = selector.currentProperty(propertyName);
+        return v != null;
     }
 
     @Override

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/PropertyValueImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/PropertyValueImpl.java?rev=1299713&r1=1299712&r2=1299713&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/PropertyValueImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/PropertyValueImpl.java Mon Mar 12 15:34:00 2012
@@ -20,8 +20,6 @@ package org.apache.jackrabbit.query.qom.
 
 import javax.jcr.Value;
 import javax.jcr.query.qom.PropertyValue;
-import org.apache.jackrabbit.mk.json.JsopTokenizer;
-import org.apache.jackrabbit.mk.simple.NodeImpl;
 
 /**
  * The implementation of the corresponding JCR interface.
@@ -57,14 +55,7 @@ public class PropertyValueImpl extends D
 
     @Override
     public Value currentValue() {
-        NodeImpl n = selector.currentNode();
-        String value = n.getProperty(propertyName);
-        if (value == null) {
-            return null;
-        }
-        // TODO data type mapping
-        value = JsopTokenizer.decodeQuoted(value);
-        return query.getValueFactory().createValue(value);
+        return selector.currentProperty(propertyName);
     }
 
     public void bindSelector(SourceImpl source) {

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SameNodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SameNodeImpl.java?rev=1299713&r1=1299712&r2=1299713&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SameNodeImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SameNodeImpl.java Mon Mar 12 15:34:00 2012
@@ -44,7 +44,7 @@ public class SameNodeImpl extends Constr
 
     @Override
     public boolean evaluate() {
-        return selector.currentNode().getPath().equals(path);
+        return selector.currentPath().equals(path);
     }
 
     @Override

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SameNodeJoinConditionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SameNodeJoinConditionImpl.java?rev=1299713&r1=1299712&r2=1299713&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SameNodeJoinConditionImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SameNodeJoinConditionImpl.java Mon Mar 12 15:34:00 2012
@@ -82,8 +82,9 @@ public class SameNodeJoinConditionImpl e
 
     @Override
     public boolean evaluate() {
-        // TODO Auto-generated method stub
-        return false;
+        String p1 = selector1.currentPath();
+        String p2 = selector2.currentPath();
+        return p1.equals(p2);
     }
 
 }

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SelectorImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SelectorImpl.java?rev=1299713&r1=1299712&r2=1299713&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SelectorImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/qom/tree/SelectorImpl.java Mon Mar 12 15:34:00 2012
@@ -18,8 +18,10 @@
  */
 package org.apache.jackrabbit.query.qom.tree;
 
+import javax.jcr.Value;
 import javax.jcr.query.qom.Selector;
 import org.apache.jackrabbit.mk.api.MicroKernel;
+import org.apache.jackrabbit.mk.json.JsopTokenizer;
 import org.apache.jackrabbit.mk.simple.NodeImpl;
 import org.apache.jackrabbit.query.qom.QueryObjectModelImpl;
 import org.apache.jackrabbit.query.reader.Cursor;
@@ -32,6 +34,8 @@ import org.apache.jackrabbit.query.reade
  */
 public class SelectorImpl extends SourceImpl implements Selector {
 
+    private static final String JCR_PATH = "jcr:path";
+
     private final String nodeTypeName, selectorName;
     protected NodeReader reader;
     private Cursor cursor;
@@ -89,6 +93,24 @@ public class SelectorImpl extends Source
         return cursor.currentNode();
     }
 
+    public Value currentProperty(String propertyName) {
+        if (propertyName.equals(JCR_PATH)) {
+            String p = currentPath();
+            return p == null ? null : query.getValueFactory().createValue(p);
+        }
+        NodeImpl n = currentNode();
+        if (n == null) {
+            return null;
+        }
+        String value = n.getProperty(propertyName);
+        if (value == null) {
+            return null;
+        }
+        // TODO data type mapping
+        value = JsopTokenizer.decodeQuoted(value);
+        return query.getValueFactory().createValue(value);
+    }
+
     @Override
     public void init(QueryObjectModelImpl qom) {
         // TODO Auto-generated method stub

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/reader/TraversingCursor.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/reader/TraversingCursor.java?rev=1299713&r1=1299712&r2=1299713&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/reader/TraversingCursor.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/query/reader/TraversingCursor.java Mon Mar 12 15:34:00 2012
@@ -57,6 +57,7 @@ public class TraversingCursor implements
                 return null;
             }
             currentNode = NodeImpl.parse(mk.getNodes(currentPath, revisionId));
+            currentNode.setPath(currentPath);
         }
         return currentNode;
     }

Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/test/resources/queryTest.txt
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/test/resources/queryTest.txt?rev=1299713&r1=1299712&r2=1299713&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/test/resources/queryTest.txt (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/test/resources/queryTest.txt Mon Mar 12 15:34:00 2012
@@ -6,18 +6,58 @@
 # * new tests are typically be added on top, after the syntax docs
 # * use ascii character only
 
++ "test": { "jcr:resource": {}, "resource": { "x" : {}}}
+
+select * from [nt:base] as b where ischildnode(b, '/test')
+/test/jcr:resource
+/test/resource
+
+select * from [nt:base] as b where issamenode(b, '/test')
+/test
+
+select * from [nt:base] where name() = 'resource'
+/test/resource
+
+select * from [nt:base] as b where localname(b) = 'resource'
+/test/jcr:resource
+/test/resource
+
+select * from [nt:base] as x where isdescendantnode(x, '/')
+/
+/test
+/test/jcr:resource
+/test/resource
+/test/resource/x
+
+- "test"
+
 + "parents": { "p0": {"id": "0"}, "p1": {"id": "1"}, "p2": {"id": "2"}}
 + "children": { "c1": {"p": "1"}, "c2": {"p": "1"}, "c3": {"p": "2"}, "c4": {"p": "3"}}
 
+select * from [nt:base] as p where p.[jcr:path] = '/parents'
+/parents
+
+select * from [nt:base] as p inner join [nt:base] as p2 on ischildnode(p2, p) where p.[jcr:path] = '/'
+/, /parents
+/, /children
+
+select * from [nt:base] as p inner join [nt:base] as p2 on isdescendantnode(p2, p) where p.[jcr:path] = '/parents'
+/parents, /parents/p0
+/parents, /parents/p1
+/parents, /parents/p2
+
+select * from [nt:base] as p inner join [nt:base] as p2 on issamenode(p2, p) where p.[jcr:path] = '/parents'
+/parents, /parents
+
 select id from [nt:base] where id is not null
-"0"
-"1"
-"2"
+0
+1
+2
 
 select id from [nt:base] where id is not null order by id desc
-"2"
-"1"
-"0"
+2
+1
+0
 
 select * from [nt:base] as c right outer join [nt:base] as p on p.id = c.p where p.id is not null
 null, /parents/p0
@@ -89,11 +129,11 @@ select * from [nt:base] where x is null
 + "test5": { "name": "10 percent" }
 
 select name from [nt:base] order by upper(name)
-"10 percent"
-"10%"
-"Hallo"
-"hello"
-"World!"
+10 percent
+10%
+Hallo
+hello
+World!
 null
 
 select * from [nt:base] where length(name) = 5