From bbc8f69c1cf64060ae1c4f8754ce0461a329783a Mon Sep 17 00:00:00 2001 From: Jukka Zitting Date: Tue, 4 Feb 2014 14:15:05 -0500 Subject: [PATCH] OAK-1387: Pass CommitInfo to commit hooks, editors and validators Pass the CommitInfo object to commit hooks and editor/validator providers --- .../main/java/org/apache/jackrabbit/oak/Oak.java | 4 ++- .../apache/jackrabbit/oak/core/AbstractRoot.java | 4 ++- .../oak/kernel/KernelNodeStoreBranch.java | 2 +- .../jackrabbit/oak/kernel/NodeStoreKernel.java | 12 +++++-- .../oak/plugins/backup/FileStoreRestore.java | 3 +- .../oak/plugins/commit/ConflictHook.java | 5 ++- .../plugins/commit/ConflictValidatorProvider.java | 4 ++- .../oak/plugins/index/AsyncIndexUpdate.java | 11 +++--- .../oak/plugins/index/IndexUpdateProvider.java | 4 ++- .../oak/plugins/memory/MemoryNodeStore.java | 7 ++-- .../oak/plugins/name/NameValidatorProvider.java | 4 ++- .../oak/plugins/name/NamespaceEditorProvider.java | 6 ++-- .../oak/plugins/nodetype/TypeEditorProvider.java | 5 +-- .../oak/plugins/segment/SegmentNodeStore.java | 10 +++--- .../oak/plugins/version/VersionEditorProvider.java | 6 ++-- .../oak/plugins/version/VersionablePathHook.java | 7 +++- .../AccessControlValidatorProvider.java | 4 ++- .../authorization/permission/PermissionHook.java | 5 ++- .../PermissionStoreValidatorProvider.java | 4 ++- .../permission/PermissionValidatorProvider.java | 5 ++- .../oak/security/privilege/JcrAllCommitHook.java | 5 ++- .../privilege/PrivilegeValidatorProvider.java | 4 ++- .../oak/security/user/UserValidatorProvider.java | 4 ++- .../jackrabbit/oak/spi/commit/CommitHook.java | 3 +- .../jackrabbit/oak/spi/commit/CommitInfo.java | 7 ++++ .../oak/spi/commit/CompositeEditorProvider.java | 9 ++--- .../jackrabbit/oak/spi/commit/CompositeHook.java | 5 +-- .../jackrabbit/oak/spi/commit/EditorHook.java | 8 +++-- .../jackrabbit/oak/spi/commit/EditorProvider.java | 4 ++- .../jackrabbit/oak/spi/commit/EmptyHook.java | 3 +- .../oak/spi/commit/ValidatorProvider.java | 8 +++-- .../oak/spi/lifecycle/OakInitializer.java | 7 ++-- .../oak/spi/state/AbstractNodeStoreBranch.java | 24 +++++++------ .../apache/jackrabbit/oak/spi/state/NodeStore.java | 5 ++- .../jackrabbit/oak/spi/state/NodeStoreBranch.java | 5 ++- .../spi/whiteboard/WhiteboardEditorProvider.java | 8 +++-- .../oak/kernel/KernelNodeBuilderTest.java | 7 ++-- .../jackrabbit/oak/kernel/KernelNodeStateTest.java | 5 +-- .../oak/kernel/KernelNodeStoreCacheTest.java | 5 +-- .../oak/kernel/LargeKernelNodeStateTest.java | 3 +- .../jackrabbit/oak/kernel/NodeStoreTest.java | 41 ++++++++++++---------- .../oak/plugins/backup/FileStoreBackupTest.java | 5 +-- .../oak/plugins/document/BlobReferenceTest.java | 3 +- .../plugins/document/DocumentNodeStoreTest.java | 12 ++++--- .../oak/plugins/document/ManyChildNodesTest.java | 3 +- .../oak/plugins/document/MergeRetryTest.java | 16 ++++----- .../document/mongo/CacheInvalidationIT.java | 10 +++--- .../oak/plugins/index/AsyncIndexUpdateTest.java | 8 +++-- .../oak/plugins/index/IndexUpdateTest.java | 9 ++--- .../plugins/index/nodetype/NodeTypeIndexTest.java | 4 ++- .../plugins/index/property/PropertyIndexTest.java | 22 ++++++------ .../oak/plugins/nodetype/TypeEditorTest.java | 7 ++-- .../oak/plugins/segment/CheckpointTest.java | 5 +-- .../oak/plugins/segment/ExternalBlobTest.java | 5 +-- .../oak/plugins/segment/JournalTest.java | 9 ++--- .../jackrabbit/oak/plugins/segment/MergeTest.java | 16 +++++---- .../jackrabbit/oak/jcr/version/HiddenNodeTest.java | 3 +- .../oak/plugins/index/lucene/LuceneIndexTest.java | 7 ++-- .../plugins/index/solr/index/SolrIndexHookIT.java | 7 ++-- .../jackrabbit/oak/upgrade/RepositoryUpgrade.java | 3 +- .../oak/upgrade/security/GroupEditorProvider.java | 5 ++- 61 files changed, 274 insertions(+), 167 deletions(-) diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java index ad04782..76d4ea2 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java @@ -60,6 +60,7 @@ import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider; import org.apache.jackrabbit.oak.plugins.index.IndexUpdateProvider; import org.apache.jackrabbit.oak.spi.commit.BackgroundObserver; import org.apache.jackrabbit.oak.spi.commit.CommitHook; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.CompositeEditorProvider; import org.apache.jackrabbit.oak.spi.commit.CompositeHook; import org.apache.jackrabbit.oak.spi.commit.ConflictHandler; @@ -389,7 +390,8 @@ public class Oak { return with(new EditorProvider() { @Override @Nonnull public Editor getRootEditor( - NodeState before, NodeState after, NodeBuilder builder) { + NodeState before, NodeState after, + NodeBuilder builder, CommitInfo info) { return editor; } }); diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java index 968e9a9..3cabfa4 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java @@ -290,7 +290,9 @@ public abstract class AbstractRoot implements Root { if (path != null) { hooks.add(new EditorHook(new EditorProvider() { @Override - public Editor getRootEditor(NodeState before, NodeState after, NodeBuilder builder) { + public Editor getRootEditor( + NodeState before, NodeState after, + NodeBuilder builder, CommitInfo info) { return new ItemSaveValidator(path); } })); diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreBranch.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreBranch.java index 4c5fc9f..84ac432 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreBranch.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/KernelNodeStoreBranch.java @@ -135,7 +135,7 @@ public class KernelNodeStoreBranch extends @Nonnull @Override - public NodeState merge(@Nonnull CommitHook hook, @Nullable CommitInfo info) + public NodeState merge(@Nonnull CommitHook hook, @Nonnull CommitInfo info) throws CommitFailedException { mergeLock.lock(); try { diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/NodeStoreKernel.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/NodeStoreKernel.java index 7b7a6b8..c913d55 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/NodeStoreKernel.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/kernel/NodeStoreKernel.java @@ -39,6 +39,7 @@ import com.google.common.hash.HashCode; import com.google.common.hash.Hasher; import com.google.common.hash.Hashing; import com.google.common.io.ByteStreams; + import org.apache.jackrabbit.mk.api.MicroKernel; import org.apache.jackrabbit.mk.api.MicroKernelException; import org.apache.jackrabbit.mk.json.JsopBuilder; @@ -50,6 +51,7 @@ import org.apache.jackrabbit.oak.api.Type; import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.plugins.memory.AbstractBlob; import org.apache.jackrabbit.oak.spi.commit.CommitHook; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.DefaultValidator; import org.apache.jackrabbit.oak.spi.commit.EditorHook; import org.apache.jackrabbit.oak.spi.commit.Validator; @@ -67,7 +69,7 @@ public class NodeStoreKernel implements MicroKernel { new EditorHook(new ValidatorProvider() { @Override protected Validator getRootValidator( - NodeState before, NodeState after) { + NodeState before, NodeState after, CommitInfo info) { return new DefaultValidator() { @Override public Validator childNodeAdded( @@ -464,7 +466,9 @@ public class NodeStoreKernel implements MicroKernel { revision = new Revision(revision, builder.getNodeState(), message); } else { try { - NodeState newRoot = store.merge(builder, CONFLICT_HOOK, null); + CommitInfo info = + new CommitInfo(CommitInfo.OAK_UNKNOWN, null, message); + NodeState newRoot = store.merge(builder, CONFLICT_HOOK, info); if (!newRoot.equals(head.root)) { revision = new Revision(head, newRoot, message); head = revision; @@ -499,8 +503,10 @@ public class NodeStoreKernel implements MicroKernel { } try { + CommitInfo info = + new CommitInfo(CommitInfo.OAK_UNKNOWN, null, message); NodeState newRoot = - store.merge(revision.branch, CONFLICT_HOOK, null); + store.merge(revision.branch, CONFLICT_HOOK, info); if (!newRoot.equals(head.root)) { head = new Revision(head, newRoot, message); revisions.put(head.id, head); diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java index c12881a..191060e 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java @@ -25,6 +25,7 @@ import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.plugins.segment.Journal; import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState; import org.apache.jackrabbit.oak.plugins.segment.file.FileStore; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EmptyHook; import org.apache.jackrabbit.oak.spi.state.ApplyDiff; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; @@ -68,7 +69,7 @@ public class FileStoreRestore { NodeState after = store.getRoot(); NodeBuilder builder = after.builder(); source.compareAgainstBaseState(after, new ApplyDiff(builder)); - store.merge(builder, EmptyHook.INSTANCE, null); + store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); log.debug("Restore finished in {} ms.", System.currentTimeMillis() - s); } diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/ConflictHook.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/ConflictHook.java index bbfbd72..9b59051 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/ConflictHook.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/ConflictHook.java @@ -20,6 +20,7 @@ import javax.annotation.Nonnull; import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.spi.commit.CommitHook; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.ConflictHandler; import org.apache.jackrabbit.oak.spi.state.NodeState; @@ -46,7 +47,9 @@ public class ConflictHook implements CommitHook { @Nonnull @Override - public NodeState processCommit(NodeState before, NodeState after) throws CommitFailedException { + public NodeState processCommit( + NodeState before, NodeState after, CommitInfo info) + throws CommitFailedException { return MergingNodeStateDiff.merge(before, after, conflictHandler); } } diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/ConflictValidatorProvider.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/ConflictValidatorProvider.java index 1a03428..af92e67 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/ConflictValidatorProvider.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/commit/ConflictValidatorProvider.java @@ -20,6 +20,7 @@ import org.apache.felix.scr.annotations.Component; import org.apache.felix.scr.annotations.Service; import org.apache.jackrabbit.oak.api.Tree; import org.apache.jackrabbit.oak.core.ImmutableTree; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EditorProvider; import org.apache.jackrabbit.oak.spi.commit.Validator; import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider; @@ -33,7 +34,8 @@ import org.apache.jackrabbit.oak.spi.state.NodeState; public class ConflictValidatorProvider extends ValidatorProvider { @Override - public Validator getRootValidator(NodeState before, NodeState after) { + public Validator getRootValidator( + NodeState before, NodeState after, CommitInfo info) { Tree rootAfter = new ImmutableTree(after); return new ConflictValidator(rootAfter); } diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java index ca27c0e..30da44b 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdate.java @@ -22,7 +22,6 @@ import static com.google.common.base.Preconditions.checkNotNull; import static org.apache.jackrabbit.oak.api.Type.STRING; import static org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.MISSING_NODE; import static org.apache.jackrabbit.oak.api.jmx.IndexStatsMBean.STATUS_DONE; -import static org.apache.jackrabbit.oak.api.jmx.IndexStatsMBean.STATUS_INIT; import static org.apache.jackrabbit.oak.api.jmx.IndexStatsMBean.STATUS_RUNNING; import java.util.Calendar; @@ -38,6 +37,7 @@ import org.apache.jackrabbit.oak.api.Type; import org.apache.jackrabbit.oak.api.jmx.IndexStatsMBean; import org.apache.jackrabbit.oak.plugins.value.Conversions; import org.apache.jackrabbit.oak.spi.commit.CommitHook; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EditorDiff; import org.apache.jackrabbit.oak.spi.commit.EmptyHook; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; @@ -147,8 +147,9 @@ public class AsyncIndexUpdate implements Runnable { try { store.merge(builder, new CommitHook() { @Override @Nonnull - public NodeState processCommit(NodeState before, - NodeState after) throws CommitFailedException { + public NodeState processCommit( + NodeState before, NodeState after, CommitInfo info) + throws CommitFailedException { // check for concurrent updates by this async task PropertyState stateAfterRebase = before .getChildNode(ASYNC).getProperty(name); @@ -159,7 +160,7 @@ public class AsyncIndexUpdate implements Runnable { throw CONCURRENT_UPDATE; } } - }, null); + }, CommitInfo.EMPTY); } catch (CommitFailedException e) { if (e != CONCURRENT_UPDATE) { exception = e; @@ -184,7 +185,7 @@ public class AsyncIndexUpdate implements Runnable { AsyncIndexStats stats) throws CommitFailedException { NodeBuilder builder = store.getRoot().builder(); preAsyncRunStatus(builder, stats); - store.merge(builder, EmptyHook.INSTANCE, null); + store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); } private static boolean isAlreadyRunning(NodeStore store) { diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateProvider.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateProvider.java index bea7c4d..48940d3 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateProvider.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateProvider.java @@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.plugins.index; import javax.annotation.CheckForNull; import javax.annotation.Nonnull; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.Editor; import org.apache.jackrabbit.oak.spi.commit.EditorProvider; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; @@ -50,7 +51,8 @@ public class IndexUpdateProvider implements EditorProvider { @Override @CheckForNull public Editor getRootEditor( - NodeState before, NodeState after, NodeBuilder builder) { + NodeState before, NodeState after, + NodeBuilder builder, CommitInfo info) { return new IndexUpdate(provider, async, after, builder, NOOP_CALLBACK); } diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeStore.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeStore.java index 5fe19d0..697d422 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeStore.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/memory/MemoryNodeStore.java @@ -21,6 +21,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; import static com.google.common.collect.Maps.newHashMap; import static org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.EMPTY_NODE; +import static org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.squeeze; import java.io.IOException; import java.io.InputStream; @@ -207,11 +208,13 @@ public class MemoryNodeStore implements NodeStore { @Override public NodeState merge( - @Nonnull CommitHook hook, @Nullable CommitInfo info) + @Nonnull CommitHook hook, @Nonnull CommitInfo info) throws CommitFailedException { + checkNotNull(hook); + checkNotNull(info); // TODO: rebase(); checkNotMerged(); - NodeState merged = ModifiedNodeState.squeeze(checkNotNull(hook).processCommit(base, root)); + NodeState merged = squeeze(hook.processCommit(base, root, info)); store.root.set(merged); root = null; // Mark as merged return merged; diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorProvider.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorProvider.java index e4ed504..2d82d6f 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorProvider.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorProvider.java @@ -18,6 +18,7 @@ package org.apache.jackrabbit.oak.plugins.name; import org.apache.felix.scr.annotations.Component; import org.apache.felix.scr.annotations.Service; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EditorProvider; import org.apache.jackrabbit.oak.spi.commit.Validator; import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider; @@ -39,7 +40,8 @@ import static org.apache.jackrabbit.oak.plugins.name.NamespaceConstants.REP_PREF public class NameValidatorProvider extends ValidatorProvider { @Override - public Validator getRootValidator(NodeState before, NodeState after) { + public Validator getRootValidator( + NodeState before, NodeState after, CommitInfo info) { return new NameValidator(newHashSet(after .getChildNode(JCR_SYSTEM) .getChildNode(REP_NAMESPACES) diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NamespaceEditorProvider.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NamespaceEditorProvider.java index 28a189c..b783d9a 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NamespaceEditorProvider.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NamespaceEditorProvider.java @@ -22,6 +22,7 @@ import static org.apache.jackrabbit.oak.plugins.name.NamespaceConstants.REP_NAME import org.apache.felix.scr.annotations.Component; import org.apache.felix.scr.annotations.Service; import org.apache.jackrabbit.oak.api.CommitFailedException; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.Editor; import org.apache.jackrabbit.oak.spi.commit.EditorProvider; import org.apache.jackrabbit.oak.spi.commit.SubtreeEditor; @@ -38,8 +39,9 @@ import org.apache.jackrabbit.oak.spi.state.NodeState; public class NamespaceEditorProvider implements EditorProvider { @Override - public Editor getRootEditor(NodeState before, NodeState after, - NodeBuilder builder) throws CommitFailedException { + public Editor getRootEditor( + NodeState before, NodeState after, NodeBuilder builder, + CommitInfo info) throws CommitFailedException { return new SubtreeEditor(new NamespaceEditor(before, builder), JCR_SYSTEM, REP_NAMESPACES); } diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditorProvider.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditorProvider.java index d8cf5c8..e8833fe 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditorProvider.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditorProvider.java @@ -29,6 +29,7 @@ import java.util.Set; import org.apache.felix.scr.annotations.Component; import org.apache.felix.scr.annotations.Service; import org.apache.jackrabbit.oak.api.CommitFailedException; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.Editor; import org.apache.jackrabbit.oak.spi.commit.EditorDiff; import org.apache.jackrabbit.oak.spi.commit.EditorProvider; @@ -42,8 +43,8 @@ public class TypeEditorProvider implements EditorProvider { @Override public Editor getRootEditor( - NodeState before, NodeState after, NodeBuilder builder) - throws CommitFailedException { + NodeState before, NodeState after, NodeBuilder builder, + CommitInfo info) throws CommitFailedException { NodeState beforeTypes = before.getChildNode(JCR_SYSTEM).getChildNode(JCR_NODE_TYPES); NodeState afterTypes = diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java index bda8d9c..e0aef4f 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeStore.java @@ -251,13 +251,13 @@ public class SegmentNodeStore implements NodeStore, Observable { private final CommitInfo info; Commit(@Nonnull SegmentNodeBuilder builder, - @Nonnull CommitHook hook, @Nullable CommitInfo info) { + @Nonnull CommitHook hook, @Nonnull CommitInfo info) { checkNotNull(builder); this.before = builder.getBaseState(); this.after = builder.getNodeState(); this.hook = checkNotNull(hook); - this.info = info; + this.info = checkNotNull(info); } private boolean setHead(SegmentNodeBuilder builder) { @@ -280,7 +280,8 @@ public class SegmentNodeStore implements NodeStore, Observable { SegmentNodeBuilder builder = state.builder(); if (fastEquals(before, state.getChildNode(ROOT))) { // use a shortcut when there are no external changes - builder.setChildNode(ROOT, hook.processCommit(before, after)); + builder.setChildNode( + ROOT, hook.processCommit(before, after, info)); } else { // there were some external changes, so do the full rebase ConflictAnnotatingRebaseDiff diff = @@ -289,7 +290,8 @@ public class SegmentNodeStore implements NodeStore, Observable { // apply commit hooks on the rebased changes builder.setChildNode(ROOT, hook.processCommit( builder.getBaseState().getChildNode(ROOT), - builder.getNodeState().getChildNode(ROOT))); + builder.getNodeState().getChildNode(ROOT), + info)); } return builder; } diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionEditorProvider.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionEditorProvider.java index a8134e6..2c5bf76 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionEditorProvider.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionEditorProvider.java @@ -21,6 +21,7 @@ import static org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants.JCR_V import org.apache.felix.scr.annotations.Component; import org.apache.felix.scr.annotations.Service; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.CompositeEditor; import org.apache.jackrabbit.oak.spi.commit.Editor; import org.apache.jackrabbit.oak.spi.commit.EditorProvider; @@ -33,8 +34,9 @@ import org.apache.jackrabbit.oak.spi.state.NodeState; public class VersionEditorProvider implements EditorProvider { @Override - public Editor getRootEditor(NodeState before, NodeState after, - NodeBuilder builder) { + public Editor getRootEditor( + NodeState before, NodeState after, + NodeBuilder builder, CommitInfo info) { if (!builder.hasChildNode(JCR_SYSTEM)) { return null; } diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionablePathHook.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionablePathHook.java index 3883fba..8479b1f 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionablePathHook.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/VersionablePathHook.java @@ -18,9 +18,11 @@ package org.apache.jackrabbit.oak.plugins.version; import java.util.ArrayList; import java.util.List; + import javax.annotation.Nonnull; import com.google.common.collect.ImmutableSet; + import org.apache.jackrabbit.JcrConstants; import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.api.PropertyState; @@ -30,6 +32,7 @@ import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.core.ImmutableTree; import org.apache.jackrabbit.oak.plugins.nodetype.NodeTypeConstants; import org.apache.jackrabbit.oak.spi.commit.CommitHook; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.state.DefaultNodeStateDiff; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; import org.apache.jackrabbit.oak.spi.state.NodeState; @@ -52,7 +55,9 @@ public class VersionablePathHook implements CommitHook { @Nonnull @Override - public NodeState processCommit(final NodeState before, NodeState after) throws CommitFailedException { + public NodeState processCommit( + NodeState before, NodeState after, CommitInfo info) + throws CommitFailedException { NodeBuilder rootBuilder = after.builder(); NodeBuilder vsRoot = rootBuilder.child(NodeTypeConstants.JCR_SYSTEM).child(NodeTypeConstants.JCR_VERSIONSTORAGE); ReadWriteVersionManager vMgr = new ReadWriteVersionManager(vsRoot, rootBuilder); diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidatorProvider.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidatorProvider.java index 29ffed1..3830e0c 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidatorProvider.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/accesscontrol/AccessControlValidatorProvider.java @@ -23,6 +23,7 @@ import org.apache.jackrabbit.oak.api.Root; import org.apache.jackrabbit.oak.core.ImmutableRoot; import org.apache.jackrabbit.oak.core.ImmutableTree; import org.apache.jackrabbit.oak.namepath.NamePathMapper; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.Validator; import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider; import org.apache.jackrabbit.oak.spi.security.SecurityProvider; @@ -49,7 +50,8 @@ public class AccessControlValidatorProvider extends ValidatorProvider { //--------------------------------------------------< ValidatorProvider >--- @Nonnull @Override - public Validator getRootValidator(NodeState before, NodeState after) { + public Validator getRootValidator( + NodeState before, NodeState after, CommitInfo info) { ImmutableTree rootAfter = new ImmutableTree(after); RestrictionProvider restrictionProvider = getConfig(AuthorizationConfiguration.class).getRestrictionProvider(); diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java index 0a727a3..105ea90 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionHook.java @@ -34,6 +34,7 @@ import org.apache.jackrabbit.oak.api.Type; import org.apache.jackrabbit.oak.core.ImmutableRoot; import org.apache.jackrabbit.oak.core.ImmutableTree; import org.apache.jackrabbit.oak.plugins.nodetype.TypePredicate; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.PostValidationHook; import org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol.AccessControlConstants; import org.apache.jackrabbit.oak.spi.security.authorization.permission.PermissionConstants; @@ -105,7 +106,9 @@ public class PermissionHook implements PostValidationHook, AccessControlConstant @Nonnull @Override - public NodeState processCommit(final NodeState before, NodeState after) throws CommitFailedException { + public NodeState processCommit( + NodeState before, NodeState after, CommitInfo info) + throws CommitFailedException { NodeBuilder rootAfter = after.builder(); permissionRoot = getPermissionRoot(rootAfter); diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreValidatorProvider.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreValidatorProvider.java index a322704..848684c 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreValidatorProvider.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionStoreValidatorProvider.java @@ -18,6 +18,7 @@ package org.apache.jackrabbit.oak.security.authorization.permission; import javax.annotation.Nonnull; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.FailingValidator; import org.apache.jackrabbit.oak.spi.commit.SubtreeValidator; import org.apache.jackrabbit.oak.spi.commit.Validator; @@ -34,7 +35,8 @@ public class PermissionStoreValidatorProvider extends ValidatorProvider implemen @Nonnull @Override - public Validator getRootValidator(NodeState before, NodeState after) { + public Validator getRootValidator( + NodeState before, NodeState after, CommitInfo info) { FailingValidator validator = new FailingValidator( "Constraint", 41, "Attempt to modify permission store."); return new SubtreeValidator(validator, JCR_SYSTEM, REP_PERMISSION_STORE); diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java index 48ea7f0..192bb69 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/PermissionValidatorProvider.java @@ -18,12 +18,14 @@ package org.apache.jackrabbit.oak.security.authorization.permission; import java.security.Principal; import java.util.Set; + import javax.annotation.Nonnull; import org.apache.jackrabbit.oak.core.ImmutableRoot; import org.apache.jackrabbit.oak.core.ImmutableTree; import org.apache.jackrabbit.oak.core.TreeTypeProvider; import org.apache.jackrabbit.oak.core.TreeTypeProviderImpl; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.MoveTracker; import org.apache.jackrabbit.oak.spi.commit.Validator; import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider; @@ -70,7 +72,8 @@ public class PermissionValidatorProvider extends ValidatorProvider { //--------------------------------------------------< ValidatorProvider >--- @Nonnull @Override - public Validator getRootValidator(NodeState before, NodeState after) { + public Validator getRootValidator( + NodeState before, NodeState after, CommitInfo info) { TreeTypeProvider tp = new TreeTypeProviderImpl(getAccessControlContext()); PermissionProvider pp = acConfig.getPermissionProvider(new ImmutableRoot(before), workspaceName, principals); diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/JcrAllCommitHook.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/JcrAllCommitHook.java index 30717c2..ac138f0 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/JcrAllCommitHook.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/JcrAllCommitHook.java @@ -21,6 +21,7 @@ import javax.annotation.Nonnull; import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Type; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.PostValidationHook; import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeBits; import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants; @@ -38,7 +39,9 @@ class JcrAllCommitHook implements PostValidationHook, PrivilegeConstants { @Nonnull @Override - public NodeState processCommit(NodeState before, NodeState after) throws CommitFailedException { + public NodeState processCommit( + NodeState before, NodeState after, CommitInfo info) + throws CommitFailedException { NodeBuilder builder = after.builder(); after.compareAgainstBaseState(before, new PrivilegeDiff(null, null, builder)); return builder.getNodeState(); diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeValidatorProvider.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeValidatorProvider.java index f88f9e7..e9f627a 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeValidatorProvider.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/privilege/PrivilegeValidatorProvider.java @@ -20,6 +20,7 @@ import javax.annotation.Nonnull; import org.apache.jackrabbit.oak.api.Root; import org.apache.jackrabbit.oak.core.ImmutableRoot; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.SubtreeValidator; import org.apache.jackrabbit.oak.spi.commit.Validator; import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider; @@ -37,7 +38,8 @@ class PrivilegeValidatorProvider extends ValidatorProvider { @Nonnull @Override - public Validator getRootValidator(NodeState before, NodeState after) { + public Validator getRootValidator( + NodeState before, NodeState after, CommitInfo info) { return new SubtreeValidator(new PrivilegeValidator(createRoot(before), createRoot(after)), JCR_SYSTEM, REP_PRIVILEGES); } diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserValidatorProvider.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserValidatorProvider.java index 73aec14..94cd0a8 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserValidatorProvider.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserValidatorProvider.java @@ -20,6 +20,7 @@ import javax.annotation.Nonnull; import org.apache.jackrabbit.oak.core.ImmutableRoot; import org.apache.jackrabbit.oak.core.ImmutableTree; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.Validator; import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider; import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters; @@ -43,7 +44,8 @@ class UserValidatorProvider extends ValidatorProvider { //--------------------------------------------------< ValidatorProvider >--- @Nonnull @Override - public Validator getRootValidator(NodeState before, NodeState after) { + public Validator getRootValidator( + NodeState before, NodeState after, CommitInfo info) { membershipProvider = new MembershipProvider(new ImmutableRoot(after), config); return new UserValidator(new ImmutableTree(before), new ImmutableTree(after), this); } diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CommitHook.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CommitHook.java index ba4d321..7b55d16 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CommitHook.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CommitHook.java @@ -45,11 +45,12 @@ public interface CommitHook { * * @param before content tree before the commit * @param after content tree prepared for the commit + * @param info metadata associated with this commit * @return content tree to be committed * @throws CommitFailedException if the commit should be rejected */ @Nonnull - NodeState processCommit(NodeState before, NodeState after) + NodeState processCommit(NodeState before, NodeState after, CommitInfo info) throws CommitFailedException; } diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CommitInfo.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CommitInfo.java index 2d7c762..58cf52a 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CommitInfo.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CommitInfo.java @@ -34,6 +34,13 @@ public final class CommitInfo { public static final String OAK_UNKNOWN = "oak:unknown"; + /** + * Empty commit information object. Used as a dummy object when no + * metadata is known (or needed) about a commit. + */ + public static final CommitInfo EMPTY = + new CommitInfo(OAK_UNKNOWN, OAK_UNKNOWN, null); + private final String sessionId; private final String userId; diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CompositeEditorProvider.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CompositeEditorProvider.java index 0fd18fb..527043e 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CompositeEditorProvider.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CompositeEditorProvider.java @@ -40,7 +40,8 @@ public class CompositeEditorProvider implements EditorProvider { new EditorProvider() { @Override @CheckForNull public Editor getRootEditor( - NodeState before, NodeState after, NodeBuilder builder) { + NodeState before, NodeState after, + NodeBuilder builder, CommitInfo info) { return null; } }; @@ -72,11 +73,11 @@ public class CompositeEditorProvider implements EditorProvider { @Override @CheckForNull public Editor getRootEditor( - NodeState before, NodeState after, NodeBuilder builder) - throws CommitFailedException { + NodeState before, NodeState after, NodeBuilder builder, + CommitInfo info) throws CommitFailedException { List list = Lists.newArrayListWithCapacity(providers.size()); for (EditorProvider provider : providers) { - Editor editor = provider.getRootEditor(before, after, builder); + Editor editor = provider.getRootEditor(before, after, builder, info); if (editor != null) { list.add(editor); } diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CompositeHook.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CompositeHook.java index 81f1056..485121c 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CompositeHook.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CompositeHook.java @@ -52,11 +52,12 @@ public class CompositeHook implements CommitHook { } @Override - public NodeState processCommit(NodeState before, NodeState after) + public NodeState processCommit( + NodeState before, NodeState after, CommitInfo info) throws CommitFailedException { NodeState newState = after; for (CommitHook hook : hooks) { - newState = hook.processCommit(before, newState); + newState = hook.processCommit(before, newState, info); } return newState; } diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/EditorHook.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/EditorHook.java index 00f9ca8..e341ddd 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/EditorHook.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/EditorHook.java @@ -43,12 +43,14 @@ public class EditorHook implements CommitHook { @Override @Nonnull public NodeState processCommit( - @Nonnull NodeState before, @Nonnull NodeState after) - throws CommitFailedException { + @Nonnull NodeState before, @Nonnull NodeState after, + @Nonnull CommitInfo info) throws CommitFailedException { checkNotNull(before); checkNotNull(after); + checkNotNull(info); + NodeBuilder builder = after.builder(); - Editor editor = provider.getRootEditor(before, after, builder); + Editor editor = provider.getRootEditor(before, after, builder, info); CommitFailedException exception = EditorDiff.process(editor, before, after); if (exception == null) { diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/EditorProvider.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/EditorProvider.java index bcc2d63..54b8dc5 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/EditorProvider.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/EditorProvider.java @@ -46,11 +46,13 @@ public interface EditorProvider { * @param before original root state * @param after modified root state * @param builder node builder based on the after state + * @param info metadata associated with this commit * @return editor for processing the changes, or {@code null} * @throws CommitFailedException if processing failed */ @CheckForNull - Editor getRootEditor(NodeState before, NodeState after, NodeBuilder builder) + Editor getRootEditor( + NodeState before, NodeState after, NodeBuilder builder, CommitInfo info) throws CommitFailedException; } diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/EmptyHook.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/EmptyHook.java index 6bf59d2..4690280 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/EmptyHook.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/EmptyHook.java @@ -42,7 +42,8 @@ public class EmptyHook implements CommitHook { public static final CommitHook INSTANCE = new EmptyHook(); @Override - public NodeState processCommit(NodeState before, NodeState after) + public NodeState processCommit( + NodeState before, NodeState after, CommitInfo info) throws CommitFailedException { return after; } diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/ValidatorProvider.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/ValidatorProvider.java index 9da118d..5900a33 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/ValidatorProvider.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/ValidatorProvider.java @@ -36,18 +36,20 @@ public abstract class ValidatorProvider implements EditorProvider { * * @param before original root state * @param after modified root state + * @param info metadata about this commit * @return validator for checking the modifications */ @Nonnull protected abstract Validator getRootValidator( - NodeState before, NodeState after); + NodeState before, NodeState after, CommitInfo info); //----------------------------------------------------< EditorProvider >-- @Override @Nonnull public final Editor getRootEditor( - NodeState before, NodeState after, NodeBuilder builder) { - return getRootValidator(before, after); + NodeState before, NodeState after, + NodeBuilder builder, CommitInfo info) { + return getRootValidator(before, after, info); } } diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/OakInitializer.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/OakInitializer.java index 96db415..fa964f5 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/OakInitializer.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/lifecycle/OakInitializer.java @@ -24,6 +24,7 @@ import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider; import org.apache.jackrabbit.oak.plugins.index.IndexUpdateProvider; import org.apache.jackrabbit.oak.spi.commit.CommitHook; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EditorHook; import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; @@ -41,7 +42,8 @@ public final class OakInitializer { NodeBuilder builder = store.getRoot().builder(); initializer.initialize(builder); CommitHook hook = new EditorHook(new IndexUpdateProvider(indexEditor)); - store.merge(builder, hook, null); + CommitInfo info = new CommitInfo("OakInitializer", null, null); + store.merge(builder, hook, info); } catch (CommitFailedException e) { throw new RuntimeException(e); } @@ -59,7 +61,8 @@ public final class OakInitializer { } try { CommitHook hook = new EditorHook(new IndexUpdateProvider(indexEditor)); - store.merge(builder, hook, null); + CommitInfo info = new CommitInfo("OakInitializer", null, null); + store.merge(builder, hook, info); } catch (CommitFailedException e) { throw new RuntimeException(e); } diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeStoreBranch.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeStoreBranch.java index 537fdc2..3a89a18 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeStoreBranch.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeStoreBranch.java @@ -28,7 +28,6 @@ import static org.apache.jackrabbit.oak.commons.PathUtils.getName; import static org.apache.jackrabbit.oak.commons.PathUtils.getParentPath; import javax.annotation.Nonnull; -import javax.annotation.Nullable; import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.commons.PathUtils; @@ -259,7 +258,7 @@ public abstract class AbstractNodeStoreBranch it = s.getReferencedBlobsIterator(); while (it.hasNext()) { Blob b = it.next(); diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java index 3581075..270cb81 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java @@ -28,6 +28,7 @@ import javax.annotation.Nonnull; import org.apache.jackrabbit.oak.kernel.KernelNodeState; import org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore; import org.apache.jackrabbit.oak.plugins.document.util.TimingDocumentStoreWrapper; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EmptyHook; import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; @@ -62,7 +63,7 @@ public class DocumentNodeStoreTest { NodeBuilder builder = store2.getRoot().builder(); builder.child("node2"); - store2.merge(builder, EmptyHook.INSTANCE, null); + store2.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); // force update of _lastRevs store2.runBackgroundOperations(); @@ -71,7 +72,8 @@ public class DocumentNodeStoreTest { builder = store1.getRoot().builder(); builder.child("node1"); - NodeState root = store1.merge(builder, EmptyHook.INSTANCE, null); + NodeState root = + store1.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); semaphore.acquireUninterruptibly(); Thread t = new Thread(new Runnable() { @@ -114,12 +116,12 @@ public class DocumentNodeStoreTest { children.add(name); builder.child(name); } - store.merge(builder, EmptyHook.INSTANCE, null); + store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); builder = store.getRoot().builder(); String name = new ArrayList(children).get( KernelNodeState.MAX_CHILD_NODE_NAMES / 2); builder.child(name).remove(); - store.merge(builder, EmptyHook.INSTANCE, null); + store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); int numEntries = Iterables.size(store.getRoot().getChildNodeEntries()); assertEquals(max - 1, numEntries); store.dispose(); @@ -145,7 +147,7 @@ public class DocumentNodeStoreTest { for (int i = 0; i < 10; i++) { root.child("node-" + i); } - store.merge(root, EmptyHook.INSTANCE, null); + store.merge(root, EmptyHook.INSTANCE, CommitInfo.EMPTY); counter.set(0); // the following should just make one call to DocumentStore.query() for (ChildNodeEntry e : store.getRoot().getChildNodeEntries()) { diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ManyChildNodesTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ManyChildNodesTest.java index dc9a816..b7df289 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ManyChildNodesTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ManyChildNodesTest.java @@ -22,6 +22,7 @@ import java.util.Map; import javax.annotation.Nonnull; import org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EmptyHook; import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; @@ -48,7 +49,7 @@ public class ManyChildNodesTest { for (int i = 0; i < DocumentNodeState.MAX_FETCH_SIZE * 2; i++) { builder.child("c-" + i); } - ns.merge(builder, EmptyHook.INSTANCE, null); + ns.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); store.queries.clear(); // must fetch in batches for (ChildNodeEntry entry : ns.getRoot().getChildNodeEntries()) { diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MergeRetryTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MergeRetryTest.java index 62314e6..c4b189d 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MergeRetryTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/MergeRetryTest.java @@ -24,6 +24,7 @@ import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.kernel.KernelNodeStore; import org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore; import org.apache.jackrabbit.oak.spi.commit.CommitHook; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.DefaultEditor; import org.apache.jackrabbit.oak.spi.commit.Editor; import org.apache.jackrabbit.oak.spi.commit.EditorHook; @@ -43,10 +44,9 @@ public class MergeRetryTest { private static final CommitHook HOOK = new EditorHook(new EditorProvider() { @CheckForNull @Override - public Editor getRootEditor(NodeState before, - NodeState after, - final NodeBuilder builder) - throws CommitFailedException { + public Editor getRootEditor( + NodeState before, NodeState after, final NodeBuilder builder, + CommitInfo info) throws CommitFailedException { return new DefaultEditor() { @Override public void enter(NodeState before, NodeState after) @@ -80,8 +80,8 @@ public class MergeRetryTest { NodeBuilder builder2 = ns2.getRoot().builder(); builder2.child("qux"); - ns1.merge(builder1, HOOK, null); - ns2.merge(builder2, HOOK, null); + ns1.merge(builder1, HOOK, CommitInfo.EMPTY); + ns2.merge(builder2, HOOK, CommitInfo.EMPTY); } finally { mk1.dispose(); mk2.dispose(); @@ -109,8 +109,8 @@ public class MergeRetryTest { NodeBuilder builder2 = ns2.getRoot().builder(); createTree(builder2.child("qux"), 2); - ns1.merge(builder1, HOOK, null); - ns2.merge(builder2, HOOK, null); + ns1.merge(builder1, HOOK, CommitInfo.EMPTY); + ns2.merge(builder2, HOOK, CommitInfo.EMPTY); } finally { mk1.dispose(); mk2.dispose(); diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/CacheInvalidationIT.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/CacheInvalidationIT.java index d2333e3..2482b15 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/CacheInvalidationIT.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/CacheInvalidationIT.java @@ -20,6 +20,7 @@ package org.apache.jackrabbit.oak.plugins.document.mongo; import com.google.common.collect.Iterables; + import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.plugins.document.AbstractMongoConnectionTest; @@ -29,6 +30,7 @@ import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore; import org.apache.jackrabbit.oak.plugins.document.MongoUtils; import org.apache.jackrabbit.oak.plugins.document.util.MongoConnection; import org.apache.jackrabbit.oak.plugins.document.util.Utils; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EmptyHook; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; import org.apache.jackrabbit.oak.spi.state.NodeState; @@ -72,7 +74,7 @@ public class CacheInvalidationIT extends AbstractMongoConnectionTest { final int totalPaths = paths.length + 1; //1 extra for root NodeBuilder root = getRoot(c1).builder(); createTree(root,paths); - c1.merge(root, EmptyHook.INSTANCE, null); + c1.merge(root, EmptyHook.INSTANCE, CommitInfo.EMPTY); assertEquals(totalPaths, Iterables.size(ds(c1).getCacheEntries())); @@ -86,7 +88,7 @@ public class CacheInvalidationIT extends AbstractMongoConnectionTest { NodeBuilder b2 = getRoot(c2).builder(); builder(b2,"/a/d").setProperty("foo", "bar"); - c2.merge(b2, EmptyHook.INSTANCE, null); + c2.merge(b2, EmptyHook.INSTANCE, CommitInfo.EMPTY); //Push pending changes at /a c2.runBackgroundOperations(); @@ -106,7 +108,7 @@ public class CacheInvalidationIT extends AbstractMongoConnectionTest { NodeBuilder b2 = getRoot(c2).builder(); builder(b2,"/a/c").setProperty("foo", "bar"); - c2.merge(b2, EmptyHook.INSTANCE, null); + c2.merge(b2, EmptyHook.INSTANCE, CommitInfo.EMPTY); //Push pending changes at /a c2.runBackgroundOperations(); @@ -137,7 +139,7 @@ public class CacheInvalidationIT extends AbstractMongoConnectionTest { NodeBuilder b2 = getRoot(c2).builder(); builder(b2,"/a/c").setProperty("foo", "bar"); - c2.merge(b2, EmptyHook.INSTANCE, null); + c2.merge(b2, EmptyHook.INSTANCE, CommitInfo.EMPTY); //Push pending changes at /a c2.runBackgroundOperations(); diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdateTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdateTest.java index 93d773e..7829f68 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdateTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/AsyncIndexUpdateTest.java @@ -28,9 +28,11 @@ import java.util.Set; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; + import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditorProvider; import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexLookup; import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EmptyHook; import org.apache.jackrabbit.oak.spi.query.PropertyValues; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; @@ -78,7 +80,7 @@ public class AsyncIndexUpdateTest { builder.child("testRoot").setProperty("foo", "abc"); // merge it back in - store.merge(builder, EmptyHook.INSTANCE, null); + store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); AsyncIndexUpdate async = new AsyncIndexUpdate("async", store, provider); async.run(); @@ -121,7 +123,7 @@ public class AsyncIndexUpdateTest { builder.child("testSecond").setProperty("bar", "ghi"); // merge it back in - store.merge(builder, EmptyHook.INSTANCE, null); + store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); AsyncIndexUpdate async = new AsyncIndexUpdate("async", store, provider); async.run(); @@ -173,7 +175,7 @@ public class AsyncIndexUpdateTest { .setProperty("foo", "xyz"); // merge it back in - store.merge(builder, EmptyHook.INSTANCE, null); + store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); AsyncIndexUpdate async = new AsyncIndexUpdate("async", store, provider); async.run(); diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateTest.java index cf5870a..e7212e1 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexUpdateTest.java @@ -37,6 +37,7 @@ import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditorProvi import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexLookup; import org.apache.jackrabbit.oak.query.ast.SelectorImpl; import org.apache.jackrabbit.oak.query.index.FilterImpl; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EditorHook; import org.apache.jackrabbit.oak.spi.query.Filter; import org.apache.jackrabbit.oak.spi.query.PropertyValues; @@ -83,7 +84,7 @@ public class IndexUpdateTest { NodeState after = builder.getNodeState(); - NodeState indexed = HOOK.processCommit(before, after); + NodeState indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY); // first check that the index content nodes exist checkPathExists(indexed, INDEX_DEFINITIONS_NAME, "rootIndex", @@ -119,7 +120,7 @@ public class IndexUpdateTest { NodeState after = builder.getNodeState(); - NodeState indexed = HOOK.processCommit(before, after); + NodeState indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY); // first check that the index content nodes exist NodeState ns = checkPathExists(indexed, INDEX_DEFINITIONS_NAME, @@ -155,7 +156,7 @@ public class IndexUpdateTest { .setProperty(REINDEX_PROPERTY_NAME, true); NodeState after = builder.getNodeState(); - NodeState indexed = HOOK.processCommit(before, after); + NodeState indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY); // first check that the index content nodes exist NodeState ns = checkPathExists(indexed, INDEX_DEFINITIONS_NAME, @@ -185,7 +186,7 @@ public class IndexUpdateTest { ImmutableSet.of("foo"), null); NodeState after = builder.getNodeState(); - NodeState indexed = HOOK.processCommit(before, after); + NodeState indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY); // check that the index content nodes exist checkPathExists(indexed, INDEX_DEFINITIONS_NAME, "existing", diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/nodetype/NodeTypeIndexTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/nodetype/NodeTypeIndexTest.java index 1973cc0..61eb7d7 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/nodetype/NodeTypeIndexTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/nodetype/NodeTypeIndexTest.java @@ -27,6 +27,7 @@ import java.util.Arrays; import java.util.Set; import com.google.common.collect.Sets; + import org.apache.jackrabbit.JcrConstants; import org.apache.jackrabbit.mk.api.MicroKernel; import org.apache.jackrabbit.mk.core.MicroKernelImpl; @@ -40,6 +41,7 @@ import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditorProvi import org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent; import org.apache.jackrabbit.oak.query.ast.SelectorImpl; import org.apache.jackrabbit.oak.query.index.FilterImpl; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EditorHook; import org.apache.jackrabbit.oak.spi.lifecycle.OakInitializer; import org.apache.jackrabbit.oak.spi.query.Cursor; @@ -78,7 +80,7 @@ public class NodeTypeIndexTest { addFile(root, "file-1"); store.merge(root, new EditorHook(new IndexUpdateProvider( - new PropertyIndexEditorProvider())), null); + new PropertyIndexEditorProvider())), CommitInfo.EMPTY); NodeState rootState = store.getRoot(); NodeTypeIndex index = new NodeTypeIndex(); diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexTest.java index 280242f..f15fa98 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexTest.java @@ -40,12 +40,12 @@ import org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState; import org.apache.jackrabbit.oak.query.ast.SelectorImpl; import org.apache.jackrabbit.oak.query.index.FilterImpl; import org.apache.jackrabbit.oak.query.index.TraversingIndex; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EditorHook; import org.apache.jackrabbit.oak.spi.query.Filter; import org.apache.jackrabbit.oak.spi.query.PropertyValues; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; import org.apache.jackrabbit.oak.spi.state.NodeState; -import org.junit.Ignore; import org.junit.Test; import com.google.common.collect.ImmutableSet; @@ -77,7 +77,7 @@ public class PropertyIndexTest { } NodeState after = builder.getNodeState(); - NodeState indexed = HOOK.processCommit(before, after); + NodeState indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY); FilterImpl f = createFilter(indexed, NT_BASE); @@ -138,7 +138,7 @@ public class PropertyIndexTest { c.setProperty("foo", "azerty"); } NodeState after = builder.getNodeState(); - NodeState indexed = HOOK.processCommit(before, after); + NodeState indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY); FilterImpl f = createFilter(indexed, NT_BASE); @@ -172,7 +172,7 @@ public class PropertyIndexTest { } NodeState after = builder.getNodeState(); - NodeState indexed = HOOK.processCommit(before, after); + NodeState indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY); FilterImpl f = createFilter(indexed, NT_BASE); @@ -220,7 +220,7 @@ public class PropertyIndexTest { NodeState after = builder.getNodeState(); // Add an index - NodeState indexed = HOOK.processCommit(before, after); + NodeState indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY); FilterImpl f = createFilter(indexed, NT_BASE); @@ -268,7 +268,7 @@ public class PropertyIndexTest { .setProperty("foo", Arrays.asList("abc", "def"), Type.STRINGS); NodeState after = builder.getNodeState(); - NodeState indexed = HOOK.processCommit(before, after); + NodeState indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY); FilterImpl f = createFilter(indexed, NT_UNSTRUCTURED); @@ -324,7 +324,7 @@ public class PropertyIndexTest { NodeState after = builder.getNodeState(); // Add an index - NodeState indexed = HOOK.processCommit(before, after); + NodeState indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY); FilterImpl f = createFilter(after, NT_UNSTRUCTURED); @@ -357,7 +357,7 @@ public class PropertyIndexTest { Type.STRINGS); NodeState after = builder.getNodeState(); - HOOK.processCommit(before, after); // should throw + HOOK.processCommit(before, after, CommitInfo.EMPTY); // should throw } @Test @@ -376,7 +376,7 @@ public class PropertyIndexTest { .setProperty("foo", "abc"); NodeState after = builder.getNodeState(); - HOOK.processCommit(before, after); // should not throw + HOOK.processCommit(before, after, CommitInfo.EMPTY); // should not throw } @Test(expected = CommitFailedException.class) @@ -395,7 +395,7 @@ public class PropertyIndexTest { .setProperty("foo", "abc"); NodeState after = builder.getNodeState(); - HOOK.processCommit(before, after); // should throw + HOOK.processCommit(before, after, CommitInfo.EMPTY); // should throw } @Test @@ -415,7 +415,7 @@ public class PropertyIndexTest { builder.getChildNode("b").remove(); NodeState after = builder.getNodeState(); - HOOK.processCommit(before, after); // should not throw + HOOK.processCommit(before, after, CommitInfo.EMPTY); // should not throw } } diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditorTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditorTest.java index 9583c5d..7541200 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditorTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/nodetype/TypeEditorTest.java @@ -24,6 +24,7 @@ import static org.easymock.EasyMock.replay; import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.plugins.memory.PropertyStates; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EditorHook; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; import org.apache.jackrabbit.oak.spi.state.NodeState; @@ -44,17 +45,17 @@ public class TypeEditorTest { NodeState before = builder.getNodeState(); builder.child(":hidden"); NodeState after = builder.getNodeState(); - hook.processCommit(before, after); + hook.processCommit(before, after, CommitInfo.EMPTY); before = after; builder.child(":hidden").setProperty("prop", "value"); after = builder.getNodeState(); - hook.processCommit(before, after); + hook.processCommit(before, after, CommitInfo.EMPTY); before = after; builder.getChildNode(":hidden").remove(); after = builder.getNodeState(); - hook.processCommit(before, after); + hook.processCommit(before, after, CommitInfo.EMPTY); } @Test diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CheckpointTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CheckpointTest.java index b1d05d3..3815f3f 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CheckpointTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CheckpointTest.java @@ -24,6 +24,7 @@ import java.util.concurrent.TimeUnit; import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.plugins.segment.memory.MemoryStore; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EmptyHook; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; import org.apache.jackrabbit.oak.spi.state.NodeState; @@ -63,14 +64,14 @@ public class CheckpointTest { throws CommitFailedException { NodeBuilder builder = store.getRoot().builder(); builder.child(name); - store.merge(builder, EmptyHook.INSTANCE, null); + store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); } private static void rmTestNode(NodeStore store, String name) throws CommitFailedException { NodeBuilder builder = store.getRoot().builder(); builder.child(name).remove(); - store.merge(builder, EmptyHook.INSTANCE, null); + store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); } } diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/ExternalBlobTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/ExternalBlobTest.java index f63283d..fcdd924 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/ExternalBlobTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/ExternalBlobTest.java @@ -24,6 +24,7 @@ import org.apache.jackrabbit.oak.api.Type; import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore; import org.apache.jackrabbit.oak.plugins.segment.SegmentStore; import org.apache.jackrabbit.oak.plugins.segment.file.FileStore; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EmptyHook; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; import org.apache.jackrabbit.oak.spi.state.NodeState; @@ -50,13 +51,13 @@ public class ExternalBlobTest { if (!state.exists()) { NodeBuilder builder = nodeStore.getRoot().builder(); builder.child("hello"); - nodeStore.merge(builder, EmptyHook.INSTANCE, null); + nodeStore.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); } Blob blob = getFileBlob(); NodeBuilder builder = nodeStore.getRoot().builder(); builder.getChildNode("hello").setProperty("world", blob); - nodeStore.merge(builder, EmptyHook.INSTANCE, null); + nodeStore.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); state = nodeStore.getRoot().getChildNode("hello"); blob = state.getProperty("world").getValue(Type.BINARY); diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/JournalTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/JournalTest.java index f85b6b1..d0628df 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/JournalTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/JournalTest.java @@ -21,6 +21,7 @@ import static org.junit.Assert.assertEquals; import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.api.Type; import org.apache.jackrabbit.oak.plugins.segment.memory.MemoryStore; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EmptyHook; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; import org.apache.jackrabbit.oak.spi.state.NodeState; @@ -46,7 +47,7 @@ public class JournalTest { builder.setProperty("foo", "bar"); NodeState newState = builder.getNodeState(); - root.merge(builder, EmptyHook.INSTANCE, null); + root.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); assertEquals(newState, root.getRoot()); assertEquals(oldState, left.getRoot()); @@ -73,7 +74,7 @@ public class JournalTest { builder.setProperty("foo", "bar"); NodeState newState = builder.getNodeState(); - left.merge(builder, EmptyHook.INSTANCE, null); + left.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); assertEquals(oldState, root.getRoot()); assertEquals(newState, left.getRoot()); @@ -100,7 +101,7 @@ public class JournalTest { leftBuilder.setProperty("foo", "bar"); NodeState leftState = leftBuilder.getNodeState(); - left.merge(leftBuilder, EmptyHook.INSTANCE, null); + left.merge(leftBuilder, EmptyHook.INSTANCE, CommitInfo.EMPTY); assertEquals(oldState, root.getRoot()); assertEquals(leftState, left.getRoot()); @@ -114,7 +115,7 @@ public class JournalTest { NodeBuilder rightBuilder = oldState.builder(); rightBuilder.setProperty("bar", "foo"); - right.merge(rightBuilder, EmptyHook.INSTANCE, null); + right.merge(rightBuilder, EmptyHook.INSTANCE, CommitInfo.EMPTY); store.getJournal("right").merge(); NodeState newState = root.getRoot(); diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/MergeTest.java b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/MergeTest.java index 18d16d1..eae7169 100644 --- a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/MergeTest.java +++ b/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/MergeTest.java @@ -28,6 +28,7 @@ import javax.annotation.Nonnull; import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.plugins.segment.memory.MemoryStore; import org.apache.jackrabbit.oak.spi.commit.CommitHook; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EmptyHook; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; import org.apache.jackrabbit.oak.spi.state.NodeState; @@ -45,14 +46,14 @@ public class MergeTest { NodeBuilder a = store.getRoot().builder(); a.setProperty("foo", "abc"); - store.merge(a, EmptyHook.INSTANCE, null); + store.merge(a, EmptyHook.INSTANCE, CommitInfo.EMPTY); assertTrue(store.getRoot().hasProperty("foo")); assertFalse(store.getRoot().hasProperty("bar")); NodeBuilder b = store.getRoot().builder(); b.setProperty("bar", "xyz"); - store.merge(b, EmptyHook.INSTANCE, null); + store.merge(b, EmptyHook.INSTANCE, CommitInfo.EMPTY); assertTrue(store.getRoot().hasProperty("foo")); assertTrue(store.getRoot().hasProperty("bar")); @@ -71,12 +72,12 @@ public class MergeTest { assertFalse(store.getRoot().hasProperty("foo")); assertFalse(store.getRoot().hasProperty("bar")); - store.merge(a, EmptyHook.INSTANCE, null); + store.merge(a, EmptyHook.INSTANCE, CommitInfo.EMPTY); assertTrue(store.getRoot().hasProperty("foo")); assertFalse(store.getRoot().hasProperty("bar")); - store.merge(b, EmptyHook.INSTANCE, null); + store.merge(b, EmptyHook.INSTANCE, CommitInfo.EMPTY); assertTrue(store.getRoot().hasProperty("foo")); assertTrue(store.getRoot().hasProperty("bar")); @@ -95,7 +96,7 @@ public class MergeTest { try { NodeBuilder a = store.getRoot().builder(); a.setProperty("foo", "abc" + i); - store.merge(a, EmptyHook.INSTANCE, null); + store.merge(a, EmptyHook.INSTANCE, CommitInfo.EMPTY); semaphore.release(); } catch (CommitFailedException e) { fail(); @@ -116,7 +117,8 @@ public class MergeTest { store.setMaximumBackoff(100); store.merge(b, new CommitHook() { @Override @Nonnull - public NodeState processCommit(NodeState before, NodeState after) { + public NodeState processCommit( + NodeState before, NodeState after, CommitInfo info) { try { Thread.sleep(100); } catch (InterruptedException e) { @@ -124,7 +126,7 @@ public class MergeTest { } return after; } - }, null); + }, CommitInfo.EMPTY); assertTrue(store.getRoot().hasProperty("foo")); assertTrue(store.getRoot().hasProperty("bar")); diff --git a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/version/HiddenNodeTest.java b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/version/HiddenNodeTest.java index 4823e87..99c0079 100644 --- a/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/version/HiddenNodeTest.java +++ b/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/version/HiddenNodeTest.java @@ -27,6 +27,7 @@ import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.jcr.Jcr; import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore; import org.apache.jackrabbit.oak.plugins.segment.memory.MemoryStore; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EmptyHook; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; import org.apache.jackrabbit.oak.spi.state.NodeState; @@ -74,7 +75,7 @@ public class HiddenNodeTest { NodeBuilder builder = store.getRoot().builder(); builder.child("test").child(":hidden").setProperty("property", "value"); - store.merge(builder, EmptyHook.INSTANCE, null); + store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); session.refresh(false); Version v1 = vMgr.checkpoint("/test"); diff --git a/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexTest.java b/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexTest.java index 56757bc..1c89ea8 100644 --- a/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexTest.java +++ b/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexTest.java @@ -33,6 +33,7 @@ import org.apache.jackrabbit.oak.plugins.index.IndexUpdateProvider; import org.apache.jackrabbit.oak.query.ast.Operator; import org.apache.jackrabbit.oak.query.ast.SelectorImpl; import org.apache.jackrabbit.oak.query.index.FilterImpl; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.EditorHook; import org.apache.jackrabbit.oak.spi.query.Cursor; import org.apache.jackrabbit.oak.spi.query.Filter; @@ -67,7 +68,7 @@ public class LuceneIndexTest { builder.setProperty("foo", "bar"); NodeState after = builder.getNodeState(); - NodeState indexed = HOOK.processCommit(before, after); + NodeState indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY); QueryIndex queryIndex = new LuceneIndex(analyzer, null); FilterImpl filter = createFilter(NT_BASE); @@ -93,7 +94,7 @@ public class LuceneIndexTest { NodeState after = builder.getNodeState(); - NodeState indexed = HOOK.processCommit(before, after); + NodeState indexed = HOOK.processCommit(before, after, CommitInfo.EMPTY); QueryIndex queryIndex = new LuceneIndex(analyzer, null); FilterImpl filter = createFilter(NT_BASE); @@ -125,7 +126,7 @@ public class LuceneIndexTest { NodeState after = builder.getNodeState(); - NodeState indexed = HOOK.processCommit(before, after); + NodeState indexed = HOOK.processCommit(before, after,CommitInfo.EMPTY); QueryIndex queryIndex = new LuceneIndex(analyzer, null); FilterImpl filter = createFilter(NT_BASE); diff --git a/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexHookIT.java b/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexHookIT.java index 3e05c25..735338b 100644 --- a/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexHookIT.java +++ b/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexHookIT.java @@ -30,6 +30,7 @@ import org.apache.jackrabbit.oak.plugins.index.solr.SolrBaseTest; import org.apache.jackrabbit.oak.plugins.index.solr.query.SolrQueryIndex; import org.apache.jackrabbit.oak.query.ast.Operator; import org.apache.jackrabbit.oak.query.index.FilterImpl; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.query.Cursor; import org.apache.jackrabbit.oak.spi.query.Filter; import org.apache.jackrabbit.oak.spi.query.IndexRow; @@ -54,7 +55,7 @@ public class SolrIndexHookIT extends SolrBaseTest { builder.child("newnode").setProperty("prop", "val"); NodeState after = builder.getNodeState(); - NodeState indexed = hook.processCommit(before, after); + NodeState indexed = hook.processCommit(before, after, CommitInfo.EMPTY); QueryIndex queryIndex = new SolrQueryIndex("solr", server, configuration); FilterImpl filter = new FilterImpl(null, null); @@ -83,7 +84,7 @@ public class SolrIndexHookIT extends SolrBaseTest { builder.setProperty("foo", "bar"); NodeState after = builder.getNodeState(); - NodeState indexed = hook.processCommit(before, after); + NodeState indexed = hook.processCommit(before, after, CommitInfo.EMPTY); QueryIndex queryIndex = new SolrQueryIndex("solr", server, configuration); FilterImpl filter = new FilterImpl(null, null); @@ -117,7 +118,7 @@ public class SolrIndexHookIT extends SolrBaseTest { NodeState after = builder.getNodeState(); - NodeState indexed = hook.processCommit(before, after); + NodeState indexed = hook.processCommit(before, after, CommitInfo.EMPTY); QueryIndex queryIndex = new SolrQueryIndex("solr", server, configuration); FilterImpl filter = new FilterImpl(null, null); diff --git a/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java b/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java index b1823de..f74a7db 100644 --- a/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java +++ b/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java @@ -49,6 +49,7 @@ import org.apache.jackrabbit.oak.plugins.name.Namespaces; import org.apache.jackrabbit.oak.plugins.nodetype.TypeEditorProvider; import org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent; import org.apache.jackrabbit.oak.spi.commit.CommitHook; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.CompositeEditorProvider; import org.apache.jackrabbit.oak.spi.commit.CompositeHook; import org.apache.jackrabbit.oak.spi.commit.EditorHook; @@ -299,7 +300,7 @@ public class RepositoryUpgrade { new IndexUpdateProvider(new CompositeIndexEditorProvider( new ReferenceEditorProvider(), new PropertyIndexEditorProvider()))))); - target.merge(builder, hook, null); + target.merge(builder, hook, CommitInfo.EMPTY); } catch (Exception e) { throw new RepositoryException("Failed to copy content", e); } diff --git a/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/security/GroupEditorProvider.java b/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/security/GroupEditorProvider.java index 6650406..4294c77 100644 --- a/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/security/GroupEditorProvider.java +++ b/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/security/GroupEditorProvider.java @@ -16,6 +16,7 @@ */ package org.apache.jackrabbit.oak.upgrade.security; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; import org.apache.jackrabbit.oak.spi.commit.Editor; import org.apache.jackrabbit.oak.spi.commit.EditorProvider; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; @@ -26,7 +27,9 @@ import org.apache.jackrabbit.oak.spi.state.NodeState; public class GroupEditorProvider implements EditorProvider { @Override - public Editor getRootEditor(NodeState before, NodeState after, NodeBuilder builder) { + public Editor getRootEditor( + NodeState before, NodeState after, + NodeBuilder builder, CommitInfo info) { return new GroupEditor(builder); } } \ No newline at end of file -- 1.8.3.msysgit.0