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 md...@apache.org on 2014/02/19 15:34:18 UTC

svn commit: r1569759 - in /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak: api/Root.java core/AbstractRoot.java core/ImmutableRoot.java

Author: mduerig
Date: Wed Feb 19 14:34:17 2014
New Revision: 1569759

URL: http://svn.apache.org/r1569759
Log:
OAK-1438: Generalise Root.commit(String) to Root.commit(Map)
Introduce info argument of type Map in Root.commit

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Root.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Root.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Root.java?rev=1569759&r1=1569758&r2=1569759&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Root.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/api/Root.java Wed Feb 19 14:34:17 2014
@@ -20,6 +20,7 @@ package org.apache.jackrabbit.oak.api;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Map;
 
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
@@ -41,6 +42,7 @@ import javax.annotation.Nullable;
  * @see Tree Existence and iterability of trees
  */
 public interface Root {
+    String COMMIT_PATH = "path";
 
     /**
      * Move the child located at {@code sourcePath} to a child at {@code destPath}.
@@ -86,6 +88,8 @@ public interface Root {
      */
     void refresh();
 
+    void commit(Map<String, Object> info) throws CommitFailedException;
+
     /**
      * Atomically persists all changes made to the tree attached to this root
      * at the given {@code path}. An implementations may throw a

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java?rev=1569759&r1=1569758&r2=1569759&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java Wed Feb 19 14:34:17 2014
@@ -18,14 +18,23 @@
  */
 package org.apache.jackrabbit.oak.core;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.collect.Lists.newArrayList;
+import static org.apache.jackrabbit.oak.commons.PathUtils.getName;
+import static org.apache.jackrabbit.oak.commons.PathUtils.getParentPath;
+import static org.apache.jackrabbit.oak.commons.PathUtils.isAncestor;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.security.auth.Subject;
 
+import com.google.common.collect.Maps;
 import org.apache.jackrabbit.oak.api.Blob;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.ContentSession;
@@ -54,12 +63,6 @@ import org.apache.jackrabbit.oak.spi.sta
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.Lists.newArrayList;
-import static org.apache.jackrabbit.oak.commons.PathUtils.getName;
-import static org.apache.jackrabbit.oak.commons.PathUtils.getParentPath;
-import static org.apache.jackrabbit.oak.commons.PathUtils.isAncestor;
-
 abstract class AbstractRoot implements Root {
 
     /**
@@ -106,7 +109,7 @@ abstract class AbstractRoot implements R
      * may no longer be detected as changes in the commit hook due to way the
      * diff is compiled.
      */
-    private MoveTracker moveTracker = new MoveTracker();
+    private final MoveTracker moveTracker = new MoveTracker();
 
     /**
      * Number of {@link #updated} occurred.
@@ -223,19 +226,14 @@ abstract class AbstractRoot implements R
     }
 
     @Override
-    public void commit() throws CommitFailedException {
-        commit(null, "/");
-    }
-
-    @Override
-    public void commit(@Nullable String message, @Nonnull String path)
-            throws CommitFailedException {
+    public void commit(Map<String, Object> info) throws CommitFailedException {
         checkLive();
         ContentSession session = getContentSession();
-        CommitInfo info = new CommitInfo(
-                session.toString(), session.getAuthInfo().getUserID(),
-                message, path);
-        store.merge(builder, getCommitHook(), info);
+        Object path = info.get(COMMIT_PATH);
+        CommitInfo commitInfo = new CommitInfo(
+                session.toString(), session.getAuthInfo().getUserID(), (String) info.get("message"),
+                path instanceof String ? (String) path : "/");
+        store.merge(builder, getCommitHook(), commitInfo);
         secureBuilder.baseChanged();
         modCount = 0;
         if (permissionProvider.hasValue()) {
@@ -244,6 +242,20 @@ abstract class AbstractRoot implements R
         moveTracker.clear();
     }
 
+    @Override
+    public void commit(@Nullable String message, @Nullable String path)
+            throws CommitFailedException {
+        Map<String, Object> info = Maps.newHashMap();
+        info.put("message", message);
+        info.put(COMMIT_PATH, path);
+        commit(info);
+    }
+
+    @Override
+    public void commit() throws CommitFailedException {
+        commit(null, null);
+    }
+
     /**
      * Combine the globally defined commit hook(s) and the hooks and validators defined by the
      * various security related configurations.

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java?rev=1569759&r1=1569758&r2=1569759&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java Wed Feb 19 14:34:17 2014
@@ -18,7 +18,12 @@
  */
 package org.apache.jackrabbit.oak.core;
 
+import static com.google.common.base.Preconditions.checkArgument;
+import static org.apache.jackrabbit.oak.commons.PathUtils.elements;
+
 import java.io.InputStream;
+import java.util.Map;
+
 import javax.annotation.Nonnull;
 
 import org.apache.jackrabbit.oak.api.Blob;
@@ -32,9 +37,6 @@ import org.apache.jackrabbit.oak.query.E
 import org.apache.jackrabbit.oak.query.QueryEngineImpl;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 
-import static com.google.common.base.Preconditions.checkArgument;
-import static org.apache.jackrabbit.oak.commons.PathUtils.elements;
-
 /**
  * Simple implementation of the Root interface that only supports simple read
  * operations based on the {@code NodeState} (or {@code ImmutableTree})
@@ -93,8 +95,8 @@ public final class ImmutableRoot impleme
     }
 
     @Override
-    public void commit() {
-        commit(null, null);
+    public void commit(Map<String, Object> info) {
+        throw new UnsupportedOperationException();
     }
 
     @Override
@@ -103,6 +105,11 @@ public final class ImmutableRoot impleme
     }
 
     @Override
+    public void commit() {
+        commit(null, null);
+    }
+
+    @Override
     public boolean hasPendingChanges() {
         return false;
     }