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