Author: chetanm
Date: Thu Sep  8 08:30:17 2016
New Revision: 1759759

URL: http://svn.apache.org/viewvc?rev=1759759&view=rev
Log:
OAK-4713 - Builder class to simplify Lucene Index Definition building

Add support for regex properties

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=1759759&r1=1759758&r2=1759759&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  8 08:30:17 2016
@@ -121,16 +121,20 @@ public final class IndexDefinitionBuilde
         }
 
         public PropertyRule property(String name){
+            return property(name, false);
+        }
+
+        public PropertyRule property(String name, boolean regex){
             PropertyRule propRule = props.get(name);
             if (propRule == null){
-                propRule = new PropertyRule(this, createChild(propsTree, 
createPropNodeName(name)), name);
+                propRule = new PropertyRule(this, createChild(propsTree, 
createPropNodeName(name, regex)), name, regex);
                 props.put(name, propRule);
             }
             return propRule;
         }
 
-        private String createPropNodeName(String name) {
-            name = getSafePropName(name);
+        private String createPropNodeName(String name, boolean regex) {
+            name = regex ? "prop" : getSafePropName(name);
             if (name.isEmpty()){
                 name = "prop";
             }
@@ -150,10 +154,13 @@ public final class IndexDefinitionBuilde
         private final IndexRule indexRule;
         private final Tree propTree;
 
-        private PropertyRule(IndexRule indexRule, Tree propTree, String name) {
+        private PropertyRule(IndexRule indexRule, Tree propTree, String name, 
boolean regex) {
             this.indexRule = indexRule;
             this.propTree = propTree;
             propTree.setProperty(LuceneIndexConstants.PROP_NAME, name);
+            if (regex) {
+                propTree.setProperty(LuceneIndexConstants.PROP_IS_REGEX, true);
+            }
         }
 
         public PropertyRule useInExcerpt(){

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=1759759&r1=1759758&r2=1759759&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  8 08:30:17 2016
@@ -24,6 +24,7 @@ import java.util.Iterator;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.plugins.index.PathFilter;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants;
 import org.apache.jackrabbit.oak.plugins.tree.TreeFactory;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
@@ -114,4 +115,14 @@ public class IndexDefinitionBuilderTest
         assertEquals("nt:unstructured", children.next().getName());
         assertEquals("nt:base", children.next().getName());
     }
+
+    @Test
+    public void regexProperty() throws Exception{
+        builder.indexRule("nt:base")
+                .property(LuceneIndexConstants.REGEX_ALL_PROPS, true);
+
+        NodeState state = builder.build();
+        assertTrue(NodeStateUtils.getNode(state, 
"indexRules/nt:base/properties/prop")
+                .getBoolean(LuceneIndexConstants.PROP_IS_REGEX));
+    }
 }
\ No newline at end of file


Reply via email to