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 al...@apache.org on 2012/08/28 16:56:54 UTC

svn commit: r1378157 - /jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/query/IndexManagerTest.java

Author: alexparvulescu
Date: Tue Aug 28 14:56:53 2012
New Revision: 1378157

URL: http://svn.apache.org/viewvc?rev=1378157&view=rev
Log:
OAK-269 Query: IndexManager to manage existing indexes

Modified:
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/query/IndexManagerTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/query/IndexManagerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/query/IndexManagerTest.java?rev=1378157&r1=1378156&r2=1378157&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/query/IndexManagerTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/query/IndexManagerTest.java Tue Aug 28 14:56:53 2012
@@ -21,6 +21,7 @@ import static org.junit.Assert.assertNot
 import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
+import java.util.Arrays;
 
 import org.apache.jackrabbit.mk.api.MicroKernel;
 import org.apache.jackrabbit.mk.core.MicroKernelImpl;
@@ -33,6 +34,7 @@ import org.apache.jackrabbit.oak.api.Roo
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.core.ContentRepositoryImpl;
 import org.apache.jackrabbit.oak.core.DefaultConflictHandler;
+import org.apache.jackrabbit.oak.kernel.KernelNodeStore;
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
@@ -44,6 +46,7 @@ public class IndexManagerTest extends Ab
     protected ContentSession session;
     private CoreValueFactory vf;
     private final MicroKernel mk = new MicroKernelImpl();
+
     private Root root;
 
     @Override
@@ -68,12 +71,11 @@ public class IndexManagerTest extends Ab
         root.getTree("/").addChild("test").addChild(indexdef);
         root.commit(DefaultConflictHandler.OURS);
 
-        IndexManager im = new IndexManagerImpl("/test/" + indexdef, session, mk);
-        // setup index factory
-        im.registerIndexFactory(new TestIndexFactory());
-        im.init();
+        NodeState ns = new KernelNodeStore(mk).getRoot();
 
-        assertTrue(im.getIndexes().isEmpty());
+        IndexManager im = new IndexManagerImpl("/test/" + indexdef, mk,
+                new TestIndexFactory());
+        assertTrue(im.getIndexDefinitions(ns).isEmpty());
     }
 
     @Test
@@ -89,13 +91,13 @@ public class IndexManagerTest extends Ab
         def.setProperty("other", vf.createValue("other-value"));
         root.commit(DefaultConflictHandler.OURS);
 
-        IndexManager im = new IndexManagerImpl("/test/" + indexdef, session, mk);
-        // setup index factory
-        im.registerIndexFactory(new TestIndexFactory());
-        im.init();
+        NodeState ns = new KernelNodeStore(mk).getRoot();
+
+        IndexManager im = new IndexManagerImpl("/test/" + indexdef, mk,
+                new TestIndexFactory());
 
-        assertEquals(1, im.getIndexes().size());
-        IndexDefinition id = im.getIndexes().iterator().next();
+        assertEquals(1, im.getIndexDefinitions(ns).size());
+        IndexDefinition id = im.getIndexDefinitions(ns).iterator().next();
 
         assertEquals("a", id.getName());
         assertEquals("custom", id.getType());
@@ -114,29 +116,44 @@ public class IndexManagerTest extends Ab
         Tree def1 = test.addChild("a");
         def1.setProperty("type2", vf.createValue("custom"));
         root.commit(DefaultConflictHandler.OURS);
+        NodeState ns = new KernelNodeStore(mk).getRoot();
 
-        IndexManager im = new IndexManagerImpl("/test/" + indexdef, session, mk);
-        // setup index factory
-        im.registerIndexFactory(new TestIndexFactory());
-        im.init();
+        IndexManager im = new IndexManagerImpl("/test/" + indexdef, mk,
+                new TestIndexFactory());
 
-        assertTrue(im.getIndexes().isEmpty());
+        assertTrue(im.getIndexDefinitions(ns).isEmpty());
     }
 
     @Test
-    public void testUnknownDef() throws Exception {
+    public void testObservation() throws Exception {
+
         // setup index definitions
         String indexdef = "indexdefs" + System.currentTimeMillis();
-        Tree test = root.getTree("/").addChild("test").addChild(indexdef);
 
-        Tree def1 = test.addChild("a");
-        def1.setProperty("type", vf.createValue("custom"));
+        Tree test = root.getTree("/").addChild("test").addChild(indexdef);
         root.commit(DefaultConflictHandler.OURS);
+        NodeState ns = new KernelNodeStore(mk).getRoot();
+
+        IndexManager im = new IndexManagerImpl("/test/" + indexdef, mk,
+                new TestIndexFactory());
+        assertEquals(0, im.getIndexDefinitions(ns).size());
 
-        IndexManager im = new IndexManagerImpl("/test/" + indexdef, session, mk);
-        im.init();
+        // bug OAK-283
+        test = root.getTree("/test/" + indexdef);
 
-        assertTrue(im.getIndexes().isEmpty());
+        // add index def after the index manager has been init
+        Tree def = test.addChild("a");
+        def.setProperty("type", vf.createValue("custom"));
+        def.setProperty("other", vf.createValue("other-value"));
+        root.commit(DefaultConflictHandler.OURS);
+        ns = new KernelNodeStore(mk).getRoot();
+
+        assertEquals(1, im.getIndexDefinitions(ns).size());
+        IndexDefinition id = im.getIndexDefinitions(ns).iterator().next();
+        assertEquals("a", id.getName());
+        assertEquals("custom", id.getType());
+        assertNotNull(id.getProperties());
+        assertEquals("other-value", id.getProperties().get("other"));
     }
 
     /**
@@ -147,8 +164,8 @@ public class IndexManagerTest extends Ab
     private static class TestIndexFactory implements IndexFactory {
 
         @Override
-        public Index createIndex(IndexDefinition indexDefinition) {
-            return new TestIndex();
+        public Index getIndex(IndexDefinition indexDefinition) {
+            return new TestIndex(indexDefinition);
         }
 
         @Override
@@ -159,10 +176,27 @@ public class IndexManagerTest extends Ab
         @Override
         public void init(MicroKernel mk) {
         }
+
+        @Override
+        public String toString() {
+            return "TestIndexFactory [getTypes()="
+                    + Arrays.toString(getTypes()) + "]";
+        }
+
+        @Override
+        public void close() throws IOException {
+        }
+
     }
 
     private static class TestIndex implements Index {
 
+        private final IndexDefinition indexDefinition;
+
+        public TestIndex(IndexDefinition indexDefinition) {
+            this.indexDefinition = indexDefinition;
+        }
+
         @Override
         public NodeState editCommit(NodeStore store, NodeState before,
                 NodeState after) throws CommitFailedException {
@@ -171,8 +205,7 @@ public class IndexManagerTest extends Ab
 
         @Override
         public IndexDefinition getDefinition() {
-            return new IndexDefinitionImpl("test", "custom", "/test", false,
-                    null);
+            return indexDefinition;
         }
 
         @Override