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 ch...@apache.org on 2016/12/08 06:52:40 UTC

svn commit: r1773189 - 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: chetanm
Date: Thu Dec  8 06:52:40 2016
New Revision: 1773189

URL: http://svn.apache.org/viewvc?rev=1773189&view=rev
Log:
OAK-5247 - Allow setting property node name in IndexDefinitionBuilder

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=1773189&r1=1773188&r2=1773189&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 Dec  8 06:52:40 2016
@@ -186,12 +186,23 @@ public final class IndexDefinitionBuilde
             return property(name, false);
         }
 
-        public PropertyRule property(String name, boolean regex){
+        public PropertyRule property(String name, boolean regex) {
+            return property(null, name, regex);
+        }
+
+        public PropertyRule property(String propDefnNodeName, String name) {
+            return property(propDefnNodeName, name, false);
+        }
+
+        public PropertyRule property(String propDefnNodeName, String name, boolean regex){
             PropertyRule propRule = props.get(name);
             if (propRule == null){
                 Tree propTree = findExisting(name);
                 if (propTree == null){
-                    propTree = getOrCreateChild(propsTree, createPropNodeName(name, regex));
+                    if (propDefnNodeName == null){
+                        propDefnNodeName = createPropNodeName(name, regex);
+                    }
+                    propTree = getOrCreateChild(propsTree, propDefnNodeName);
                 }
                 propRule = new PropertyRule(this, propTree, name, regex);
                 props.put(name, propRule);
@@ -318,6 +329,22 @@ public final class IndexDefinitionBuilde
         public IndexRule enclosingRule(){
             return indexRule;
         }
+
+        public Tree getBuilderTree(){
+            return propTree;
+        }
+
+        public PropertyRule property(String name){
+            return indexRule.property(name, false);
+        }
+
+        public PropertyRule property(String name, boolean regex) {
+            return indexRule.property(null, name, regex);
+        }
+
+        public PropertyRule property(String propDefnNodeName, String name) {
+            return indexRule.property(propDefnNodeName, name, false);
+        }
     }
 
     //~--------------------------------------< Aggregates >

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=1773189&r1=1773188&r2=1773189&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 Dec  8 06:52:40 2016
@@ -22,8 +22,10 @@ package org.apache.jackrabbit.oak.plugin
 import java.util.Iterator;
 
 import org.apache.jackrabbit.oak.api.PropertyState;
+import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.api.Type;
+import org.apache.jackrabbit.oak.core.ImmutableRoot;
 import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
 import org.apache.jackrabbit.oak.plugins.index.PathFilter;
 import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants;
@@ -225,4 +227,16 @@ public class IndexDefinitionBuilderTest
         assertTrue(builder.isReindexRequired());
         assertFalse(state.getBoolean(REINDEX_PROPERTY_NAME));
     }
+
+    @Test
+    public void propRuleCustomName() throws Exception{
+        builder.indexRule("nt:base").property("foo").property("bar");
+        builder.indexRule("nt:base").property("fooProp", "foo2");
+        builder.indexRule("nt:base").property("fooProp", "foo2");
+
+        Root idx = new ImmutableRoot(builder.build());
+        assertTrue(idx.getTree("/indexRules/nt:base/properties/fooProp").exists());
+        assertTrue(idx.getTree("/indexRules/nt:base/properties/bar").exists());
+        assertTrue(idx.getTree("/indexRules/nt:base/properties/foo").exists());
+    }
 }
\ No newline at end of file