Author: alexparvulescu
Date: Sat Aug 31 09:21:14 2013
New Revision: 1519163

URL: http://svn.apache.org/r1519163
Log:
OAK-985 The query engine doesn't properly extract the node type information 
from queries with conditions on jcr:primaryType
 - workaround for the lucene index

Modified:
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java
    
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAggregationTest.java

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java?rev=1519163&r1=1519162&r2=1519163&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java
 Sat Aug 31 09:21:14 2013
@@ -47,6 +47,7 @@ import java.util.List;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicReference;
 
+import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.plugins.index.aggregate.NodeAggregator;
@@ -470,6 +471,10 @@ public class LuceneIndex implements Full
             if ("rep:excerpt".equals(name)) {
                 continue;
             }
+            // TODO OAK-985
+            if (JcrConstants.JCR_PRIMARYTYPE.equals(name)) {
+                continue;
+            }
 
             String first = null;
             String last = null;

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAggregationTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAggregationTest.java?rev=1519163&r1=1519162&r2=1519163&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAggregationTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAggregationTest.java
 Sat Aug 31 09:21:14 2013
@@ -228,4 +228,31 @@ public class LuceneIndexAggregationTest 
         assertQuery(matchOnlyTitleOr, "xpath", ImmutableList.of("/myFolder"));
     }
 
+    @Test
+    public void testNodeTypes() throws Exception {
+
+        Tree folder = root.getTree("/").addChild("myFolder");
+        folder.setProperty(JCR_PRIMARYTYPE, NT_FOLDER, Type.NAME);
+        Tree file = folder.addChild("myFile");
+        file.setProperty(JCR_PRIMARYTYPE, NT_FILE, Type.NAME);
+        file.setProperty("jcr:title", "title");
+        file.setProperty("jcr:description", "description");
+
+        Tree resource = file.addChild(JCR_CONTENT);
+        resource.setProperty(JCR_PRIMARYTYPE, "nt:resource", Type.NAME);
+        resource.setProperty("jcr:lastModified", Calendar.getInstance());
+        resource.setProperty("jcr:encoding", "UTF-8");
+        resource.setProperty("jcr:mimeType", "text/plain");
+        resource.setProperty(binaryProperty(JCR_DATA,
+                "the quick brown fox jumps over the lazy dog."));
+
+        root.commit();
+
+        String matchContentSimple = "//*[(jcr:contains(., 'dog')) and 
@jcr:primaryType = 'nt:file']";
+        assertQuery(matchContentSimple, "xpath", 
ImmutableList.of("/myFolder/myFile"));
+
+        String matchContentDouble = "//*[(jcr:contains(., 'dog')) and 
(@jcr:primaryType = 'nt:file' or @jcr:primaryType = 'nt:folder')]";
+        assertQuery(matchContentDouble, "xpath", ImmutableList.of("/myFolder", 
"/myFolder/myFile"));
+    }
+
 }


Reply via email to