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 ca...@apache.org on 2019/09/05 13:49:55 UTC

svn commit: r1866456 - in /jackrabbit/oak/trunk/oak-lucene/src: main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilder.java test/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilderTest.java

Author: catholicon
Date: Thu Sep  5 13:49:55 2019
New Revision: 1866456

URL: http://svn.apache.org/viewvc?rev=1866456&view=rev
Log:
OAK-8589: NPE in IndexDefintionBuilder with existing property rule without "name" property

Modified:
    jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilder.java
    jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilderTest.java

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilder.java?rev=1866456&r1=1866455&r2=1866456&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilder.java Thu Sep  5 13:49:55 2019
@@ -312,7 +312,13 @@ public final class IndexDefinitionBuilde
 
         private Tree findExisting(String name) {
             for (Tree tree : getPropsTree().getChildren()){
-                if (name.equals(tree.getProperty(FulltextIndexConstants.PROP_NAME).getValue(Type.STRING))){
+                String treeName = tree.getName();
+                PropertyState ps = tree.getProperty(FulltextIndexConstants.PROP_NAME);
+                if(ps != null) {
+                    treeName = ps.getValue(Type.STRING);
+                }
+
+                if (name.equals(treeName)) {
                     return tree;
                 }
             }

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilderTest.java?rev=1866456&r1=1866455&r2=1866456&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilderTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilderTest.java Thu Sep  5 13:49:55 2019
@@ -973,4 +973,20 @@ public class IndexDefinitionBuilderTest
         assertThat(state.getProperty(INDEX_TAGS).getValue(Type.STRINGS),
                 Matchers.containsInAnyOrder("foo5"));
     }
+
+    @Test
+    public void unnamedPropertyRuleInExistingIndex() {
+        // create an initial index with property rule for "foo"
+        builder
+                .indexRule("nt:base")
+                .property("foo")
+                //  remove "name" property explicitly
+                .getBuilderTree().removeProperty("name");
+        NodeState initialIndexState = builder.build();
+
+        // Use initial index def to add some other property rule - this should work
+        new IndexDefinitionBuilder(initialIndexState.builder())
+                .indexRule("nt:base")
+                .property("bar");
+    }
 }
\ No newline at end of file