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/09 13:30:13 UTC

svn commit: r1773382 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/spi/lifecycle/OakInitializer.java test/java/org/apache/jackrabbit/oak/OakTest.java

Author: chetanm
Date: Fri Dec  9 13:30:13 2016
New Revision: 1773382

URL: http://svn.apache.org/viewvc?rev=1773382&view=rev
Log:
OAK-5257 - Pass CommitContext as part of CommitInfo in OakInitializer

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/OakInitializer.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/OakTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/OakInitializer.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/OakInitializer.java?rev=1773382&r1=1773381&r2=1773382&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/OakInitializer.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/OakInitializer.java Fri Dec  9 13:30:13 2016
@@ -18,19 +18,28 @@
  */
 package org.apache.jackrabbit.oak.spi.lifecycle;
 
+import java.util.Map;
+
 import javax.annotation.Nonnull;
 
+import com.google.common.collect.ImmutableMap;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
+import org.apache.jackrabbit.oak.core.ResetCommitAttributeHook;
+import org.apache.jackrabbit.oak.core.SimpleCommitContext;
 import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider;
 import org.apache.jackrabbit.oak.plugins.index.IndexUpdateProvider;
+import org.apache.jackrabbit.oak.spi.commit.CommitContext;
 import org.apache.jackrabbit.oak.spi.commit.CommitHook;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
+import org.apache.jackrabbit.oak.spi.commit.CompositeHook;
 import org.apache.jackrabbit.oak.spi.commit.EditorHook;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 
 public final class OakInitializer {
 
+    public static final String SESSION_ID = "OakInitializer";
+
     private OakInitializer() {
     }
 
@@ -40,9 +49,7 @@ public final class OakInitializer {
         try {
             NodeBuilder builder = store.getRoot().builder();
             initializer.initialize(builder);
-            CommitHook hook = new EditorHook(new IndexUpdateProvider(indexEditor));
-            CommitInfo info = new CommitInfo("OakInitializer", null);
-            store.merge(builder, hook, info);
+            store.merge(builder, createHook(indexEditor), createCommitInfo());
         } catch (CommitFailedException e) {
             throw new RuntimeException(e);
         }
@@ -57,11 +64,20 @@ public final class OakInitializer {
             wspInit.initialize(builder, workspaceName);
         }
         try {
-            CommitHook hook = new EditorHook(new IndexUpdateProvider(indexEditor));
-            CommitInfo info = new CommitInfo("OakInitializer", null);
-            store.merge(builder, hook, info);
+            store.merge(builder, createHook(indexEditor), createCommitInfo());
         } catch (CommitFailedException e) {
             throw new RuntimeException(e);
         }
     }
+
+    private static CommitHook createHook(@Nonnull IndexEditorProvider indexEditor) {
+        return new CompositeHook(
+                        ResetCommitAttributeHook.INSTANCE,
+                        new EditorHook(new IndexUpdateProvider(indexEditor)));
+    }
+
+    private static CommitInfo createCommitInfo(){
+        Map<String, Object> infoMap = ImmutableMap.<String, Object>of(CommitContext.NAME, new SimpleCommitContext());
+        return new CommitInfo(SESSION_ID, null, infoMap);
+    }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/OakTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/OakTest.java?rev=1773382&r1=1773381&r2=1773382&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/OakTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/OakTest.java Fri Dec  9 13:30:13 2016
@@ -17,14 +17,17 @@
 package org.apache.jackrabbit.oak;
 
 import java.io.Closeable;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.Executors;
 import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.atomic.AtomicReference;
 
+import javax.annotation.Nonnull;
 import javax.jcr.NoSuchWorkspaceException;
 
+import com.google.common.collect.Lists;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.ContentRepository;
 import org.apache.jackrabbit.oak.api.ContentSession;
@@ -35,8 +38,15 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider;
 import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditorProvider;
 import org.apache.jackrabbit.oak.plugins.index.reference.ReferenceEditorProvider;
+import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
 import org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent;
+import org.apache.jackrabbit.oak.spi.commit.CommitContext;
+import org.apache.jackrabbit.oak.spi.commit.CommitHook;
+import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
+import org.apache.jackrabbit.oak.spi.lifecycle.OakInitializer;
 import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
+import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
+import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.whiteboard.DefaultWhiteboard;
 import org.apache.jackrabbit.oak.spi.whiteboard.Registration;
 import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
@@ -44,9 +54,13 @@ import org.apache.jackrabbit.oak.spi.whi
 import org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardUtils;
 import org.junit.Test;
 
+import static org.hamcrest.Matchers.empty;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.not;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -191,4 +205,32 @@ public class OakTest {
         ((Closeable)repo).close();
     }
 
+    @Test
+    public void commitContextInCommitInfo() throws Exception{
+        CommitInfoCapturingStore store = new CommitInfoCapturingStore();
+        Oak oak = new Oak(store);
+
+        ContentRepository repo = oak.with(new OpenSecurityProvider()).createContentRepository();
+        assertThat(store.infos, is(not(empty())));
+        for (CommitInfo ci : store.infos){
+            assertNotNull(ci.getInfo().get(CommitContext.NAME));
+        }
+        ((Closeable)repo).close();
+    }
+
+    private static class CommitInfoCapturingStore extends MemoryNodeStore {
+        List<CommitInfo> infos = Lists.newArrayList();
+
+        @Override
+        public synchronized NodeState merge(@Nonnull NodeBuilder builder, @Nonnull CommitHook commitHook,
+                                            @Nonnull CommitInfo info) throws CommitFailedException {
+            if (info.getSessionId().equals(OakInitializer.SESSION_ID)) {
+                this.infos.add(info);
+            }
+            return super.merge(builder, commitHook, info);
+        }
+
+
+    }
+
 }
\ No newline at end of file