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:39 UTC

svn commit: r1569760 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/core/ main/java/org/apache/jackrabbit/oak/spi/commit/ main/java/org/apache/jackrabbit/oak/spi/lifecycle/ test/java/org/apache/jackrabbit/oak/spi/commit/

Author: mduerig
Date: Wed Feb 19 14:34:39 2014
New Revision: 1569760

URL: http://svn.apache.org/r1569760
Log:
OAK-1438: Generalise Root.commit(String) to Root.commit(Map)
Add info Map to CommitInfo and pass it down from Root.commit(Map)

Modified:
    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/spi/commit/CommitInfo.java
    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/spi/commit/BackgroundObserverTest.java

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=1569760&r1=1569759&r2=1569760&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:39 2014
@@ -229,10 +229,8 @@ abstract class AbstractRoot implements R
     public void commit(Map<String, Object> info) throws CommitFailedException {
         checkLive();
         ContentSession session = getContentSession();
-        Object path = info.get(COMMIT_PATH);
         CommitInfo commitInfo = new CommitInfo(
-                session.toString(), session.getAuthInfo().getUserID(), (String) info.get("message"),
-                path instanceof String ? (String) path : "/");
+                session.toString(), session.getAuthInfo().getUserID(), info);
         store.merge(builder, getCommitHook(), commitInfo);
         secureBuilder.baseChanged();
         modCount = 0;

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CommitInfo.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CommitInfo.java?rev=1569760&r1=1569759&r2=1569760&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CommitInfo.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/CommitInfo.java Wed Feb 19 14:34:39 2014
@@ -21,11 +21,15 @@ package org.apache.jackrabbit.oak.spi.co
 import static com.google.common.base.Objects.toStringHelper;
 import static com.google.common.base.Preconditions.checkNotNull;
 
+import java.util.Map;
+
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import com.google.common.base.Objects;
+import com.google.common.collect.ImmutableMap;
+import org.apache.jackrabbit.oak.api.Root;
 
 /**
  * Commit info instances associate some meta data with a commit.
@@ -39,24 +43,21 @@ public final class CommitInfo {
      * metadata is known (or needed) about a commit.
      */
     public static final CommitInfo EMPTY =
-            new CommitInfo(OAK_UNKNOWN, OAK_UNKNOWN, null);
+            new CommitInfo(OAK_UNKNOWN, OAK_UNKNOWN, "/");
 
     private final String sessionId;
 
     private final String userId;
 
-    private final String message;
-
     private final long date = System.currentTimeMillis();
 
-    private final String path;
+    private final Map<String, Object> info;
 
     /**
      * Creates a commit info for the given session and user.
      *
      * @param sessionId session identifier
      * @param userId The user id.
-     * @param message message attached to this commit, or {@code null}
      */
     public CommitInfo(
             @Nonnull String sessionId, @Nullable String userId,
@@ -67,10 +68,23 @@ public final class CommitInfo {
     public CommitInfo(
             @Nonnull String sessionId, @Nullable String userId,
             @Nullable String message, @Nonnull String path) {
+        this(sessionId, userId, ImmutableMap.<String, Object>of(
+                Root.COMMIT_PATH, checkNotNull(path),
+                "message", String.valueOf(message)
+        ));
+    }
+
+    /**
+     * Creates a commit info for the given session and user and info map.
+     *
+     * @param sessionId session identifier
+     * @param userId The user id.
+     * @param info info map
+     */
+    public CommitInfo(@Nonnull String sessionId, @Nullable String userId, Map<String, Object> info) {
         this.sessionId = checkNotNull(sessionId);
         this.userId = (userId == null) ? OAK_UNKNOWN : userId;
-        this.message = message;
-        this.path = checkNotNull(path);
+        this.info = checkNotNull(info);
     }
 
     /**
@@ -94,7 +108,8 @@ public final class CommitInfo {
      */
     @CheckForNull
     public String getMessage() {
-        return message;
+        Object message = info.get("message");
+        return message instanceof String ? (String) message : null;
     }
 
     /**
@@ -116,7 +131,16 @@ public final class CommitInfo {
      * @return base path of this commit
      */
     public String getPath() {
-        return path;
+        Object path = info.get(Root.COMMIT_PATH);
+        return path instanceof String ? (String) path : "/";
+    }
+
+    /**
+     * Return the info map
+     * @return  info map
+     */
+    public Map<String, Object> getInfo() {
+        return info;
     }
 
     //------------------------------------------------------------< Object >--
@@ -129,9 +153,8 @@ public final class CommitInfo {
             CommitInfo that = (CommitInfo) object;
             return sessionId.equals(that.sessionId)
                     && userId.equals(that.userId)
-                    && Objects.equal(this.message, that.message)
                     && this.date == that.date
-                    && path.equals(that.path);
+                    && info.equals(that.info);
         } else {
             return false;
         }
@@ -139,7 +162,7 @@ public final class CommitInfo {
 
     @Override
     public int hashCode() {
-        return Objects.hashCode(sessionId, userId, message, date, path);
+        return Objects.hashCode(sessionId, userId, date, info);
     }
 
     @Override
@@ -147,9 +170,8 @@ public final class CommitInfo {
         return toStringHelper(this).omitNullValues()
                 .add("sessionId", sessionId)
                 .add("userId", userId)
-                .add("userData", message)
                 .add("date", date)
-                .add("path", path)
+                .add("info", info)
                 .toString();
     }
 

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=1569760&r1=1569759&r2=1569760&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 Wed Feb 19 14:34:39 2014
@@ -42,7 +42,7 @@ public final class OakInitializer {
             NodeBuilder builder = store.getRoot().builder();
             initializer.initialize(builder);
             CommitHook hook = new EditorHook(new IndexUpdateProvider(indexEditor));
-            CommitInfo info = new CommitInfo("OakInitializer", null, null);
+            CommitInfo info = new CommitInfo("OakInitializer", null, (String)null);
             store.merge(builder, hook, info);
         } catch (CommitFailedException e) {
             throw new RuntimeException(e);
@@ -61,7 +61,7 @@ public final class OakInitializer {
         }
         try {
             CommitHook hook = new EditorHook(new IndexUpdateProvider(indexEditor));
-            CommitInfo info = new CommitInfo("OakInitializer", null, null);
+            CommitInfo info = new CommitInfo("OakInitializer", null, (String)null);
             store.merge(builder, hook, info);
         } catch (CommitFailedException e) {
             throw new RuntimeException(e);

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/commit/BackgroundObserverTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/commit/BackgroundObserverTest.java?rev=1569760&r1=1569759&r2=1569760&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/commit/BackgroundObserverTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/commit/BackgroundObserverTest.java Wed Feb 19 14:34:39 2014
@@ -42,7 +42,7 @@ import org.junit.Test;
 
 public class BackgroundObserverTest {
     private static final CommitInfo COMMIT_INFO =
-            new CommitInfo("no-session", null, null);
+            new CommitInfo("no-session", null, (String)null);
 
     private final List<List<Runnable>> assertionLists = Lists.newArrayList();
     private CountDownLatch doneCounter;