Author: chetanm
Date: Wed Mar  8 05:40:25 2017
New Revision: 1785916

URL: http://svn.apache.org/viewvc?rev=1785916&view=rev
Log:
OAK-5894 - IndexDefinitionBuilder shouldn't set type=lucene if type=disabled in 
existing tree

Set type=lucene in all cases other than where type is set to disabled

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=1785916&r1=1785915&r2=1785916&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
 Wed Mar  8 05:40:25 2017
@@ -75,7 +75,7 @@ public final class IndexDefinitionBuilde
         this.tree = TreeFactory.createTree(builder);
         tree.setProperty(LuceneIndexConstants.COMPAT_MODE, 2);
         tree.setProperty("async", "async");
-        tree.setProperty(IndexConstants.TYPE_PROPERTY_NAME, "lucene");
+        setType();
         tree.setProperty(JCR_PRIMARYTYPE, "oak:QueryIndexDefinition", NAME);
         indexRule = getOrCreateChild(tree, LuceneIndexConstants.INDEX_RULES);
     }
@@ -144,6 +144,13 @@ public final class IndexDefinitionBuilde
         }
     }
 
+    private void setType() {
+        PropertyState type = 
tree.getProperty(IndexConstants.TYPE_PROPERTY_NAME);
+        if (type == null || !"disabled".equals(type.getValue(Type.STRING))) {
+            tree.setProperty(IndexConstants.TYPE_PROPERTY_NAME, "lucene");
+        }
+    }
+
     //~--------------------------------------< IndexRule >
 
     public IndexRule indexRule(String type){

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=1785916&r1=1785915&r2=1785916&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
 Wed Mar  8 05:40:25 2017
@@ -257,4 +257,21 @@ public class IndexDefinitionBuilderTest
         assertTrue(idx.getTree("/indexRules/nt:base/properties/bar").exists());
         assertTrue(idx.getTree("/indexRules/nt:base/properties/foo").exists());
     }
+
+    @Test
+    public void typeNotChangedIfSet() throws Exception{
+        NodeState state = builder.build();
+        assertEquals("lucene", state.getString("type"));
+
+        NodeBuilder updated = state.builder();
+        updated.setProperty("type", "disabled");
+        IndexDefinitionBuilder newBuilder = new 
IndexDefinitionBuilder(updated);
+
+        NodeState updatedState = newBuilder.build();
+        assertEquals("disabled", updatedState.getString("type"));
+
+        //Type other than 'disabled' would be reset
+        updated.setProperty("type", "foo");
+        assertEquals("lucene", new 
IndexDefinitionBuilder(updated).build().getString("type"));
+    }
 }
\ No newline at end of file


Reply via email to