You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by th...@apache.org on 2016/08/10 10:16:50 UTC

svn commit: r1755708 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/query/ast/NodeLocalNameImpl.java main/java/org/apache/jackrabbit/oak/query/ast/NodeNameImpl.java test/resources/org/apache/jackrabbit/oak/query/sql2.txt

Author: thomasm
Date: Wed Aug 10 10:16:50 2016
New Revision: 1755708

URL: http://svn.apache.org/viewvc?rev=1755708&view=rev
Log:
OAK-4658 Outer join: name(b) and localname(b) can throw a NPE

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeLocalNameImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeNameImpl.java
    jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2.txt

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeLocalNameImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeLocalNameImpl.java?rev=1755708&r1=1755707&r2=1755708&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeLocalNameImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeLocalNameImpl.java Wed Aug 10 10:16:50 2016
@@ -68,7 +68,11 @@ public class NodeLocalNameImpl extends D
 
     @Override
     public PropertyValue currentProperty() {
-        String name = PathUtils.getName(selector.currentPath());
+        String path = selector.currentPath();
+        if (path == null) {
+            return null;
+        }
+        String name = PathUtils.getName(path);
         String localName = getLocalName(name);
         // TODO reverse namespace remapping?
         return PropertyValues.newString(localName);

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeNameImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeNameImpl.java?rev=1755708&r1=1755707&r2=1755708&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeNameImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NodeNameImpl.java Wed Aug 10 10:16:50 2016
@@ -78,6 +78,9 @@ public class NodeNameImpl extends Dynami
     @Override
     public PropertyValue currentProperty() {
         String path = selector.currentPath();
+        if (path == null) {
+            return null;
+        }
         String name = PathUtils.getName(path);
         // TODO reverse namespace remapping?
         return PropertyValues.newName(name);

Modified: jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2.txt
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2.txt?rev=1755708&r1=1755707&r2=1755708&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2.txt (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2.txt Wed Aug 10 10:16:50 2016
@@ -29,6 +29,18 @@
 
 commit / + "test": { "a": { "name": "Hello" }, "b": { "name" : "World" }}
 
+# OAK-4658
+select a.[jcr:path] from [nt:base] as a 
+  left outer join [nt:base] as b on ischildnode(b, a)
+  where name(b) = 'b'
+/test  
+
+# OAK-4658
+select a.[jcr:path] from [nt:base] as a 
+  left outer join [nt:base] as b on ischildnode(b, a)
+  where localname(b) = 'b'
+/test  
+
 select * from [nt:base]
   where [a] = 1 and [b] = 2 and [b] = 3 or [c] = 4