Author: chetanm
Date: Fri Oct 20 05:48:26 2017
New Revision: 1812709

URL: http://svn.apache.org/viewvc?rev=1812709&view=rev
Log:
OAK-6849 - Avoid creating empty properties node under indexRules

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=1812709&r1=1812708&r2=1812709&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
 Fri Oct 20 05:48:26 2017
@@ -188,14 +188,12 @@ public final class IndexDefinitionBuilde
 
     public static class IndexRule {
         private final Tree indexRule;
-        private final Tree propsTree;
         private final String ruleName;
         private final Map<String, PropertyRule> props = Maps.newHashMap();
         private final Set<String> propNodeNames = Sets.newHashSet();
 
         private IndexRule(Tree indexRule, String type) {
             this.indexRule = indexRule;
-            this.propsTree = getOrCreateChild(indexRule, 
LuceneIndexConstants.PROP_NODE);
             this.ruleName = type;
             loadExisting();
         }
@@ -235,7 +233,7 @@ public final class IndexDefinitionBuilde
                     if (propDefnNodeName == null){
                         propDefnNodeName = createPropNodeName(name, regex);
                     }
-                    propTree = getOrCreateChild(propsTree, propDefnNodeName);
+                    propTree = getOrCreateChild(getPropsTree(), 
propDefnNodeName);
                 }
                 propRule = new PropertyRule(this, propTree, name, regex);
                 props.put(name, propRule);
@@ -244,7 +242,11 @@ public final class IndexDefinitionBuilde
         }
 
         private void loadExisting() {
-            for (Tree tree : propsTree.getChildren()){
+            if (!indexRule.hasChild(LuceneIndexConstants.PROP_NAME)) {
+                return;
+            }
+
+            for (Tree tree : getPropsTree().getChildren()){
                 if (!tree.hasProperty(LuceneIndexConstants.PROP_NAME)){
                     continue;
                 }
@@ -259,7 +261,7 @@ public final class IndexDefinitionBuilde
         }
 
         private Tree findExisting(String name) {
-            for (Tree tree : propsTree.getChildren()){
+            for (Tree tree : getPropsTree().getChildren()){
                 if 
(name.equals(tree.getProperty(LuceneIndexConstants.PROP_NAME).getValue(Type.STRING))){
                     return tree;
                 }
@@ -286,6 +288,10 @@ public final class IndexDefinitionBuilde
         public boolean hasPropertyRule(String propName){
             return findExisting(propName) != null;
         }
+
+        private Tree getPropsTree() {
+            return getOrCreateChild(indexRule, LuceneIndexConstants.PROP_NODE);
+        }
     }
 
     public static class PropertyRule {

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=1812709&r1=1812708&r2=1812709&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
 Fri Oct 20 05:48:26 2017
@@ -304,4 +304,13 @@ public class IndexDefinitionBuilderTest
         
assertTrue(state.getBoolean(LuceneIndexConstants.PROP_INDEX_NODE_TYPE));
         assertTrue(ntFileRule.getBoolean(LuceneIndexConstants.PROP_SYNC));
     }
+
+    @Test
+    public void noPropertiesNodeForEmptyRule() throws Exception{
+        builder.nodeTypeIndex();
+        builder.indexRule("nt:file").sync();
+
+        NodeState state = builder.build();
+        assertFalse(NodeStateUtils.getNode(state, 
"/indexRules/nt:file/properties").exists());
+    }
 }
\ No newline at end of file


Reply via email to