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 2013/02/01 15:50:03 UTC

svn commit: r1441464 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/simple/ oak-core/src/main/java/org/apache/jackrabbit/oak/plugi...

Author: mduerig
Date: Fri Feb  1 14:50:02 2013
New Revision: 1441464

URL: http://svn.apache.org/viewvc?rev=1441464&view=rev
Log:
OAK-536: Implement rebase for branches in Microkernel
Add rebase method to MicroKernel interface. Implementations throw UnsupportedOperationException

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/IndexWrapper.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/simple/SimpleKernelImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/BranchMergeMicroKernel.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/LogWrapper.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/MicroKernelWrapperBase.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/SecurityWrapper.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/TimingWrapper.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/VirtualRepositoryWrapper.java
    jackrabbit/oak/trunk/oak-mk-api/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java
    jackrabbit/oak/trunk/oak-mk-remote/src/main/java/org/apache/jackrabbit/mk/client/Client.java
    jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java
    jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/impl/MongoMicroKernel.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/IndexWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/IndexWrapper.java?rev=1441464&r1=1441463&r2=1441464&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/IndexWrapper.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/IndexWrapper.java Fri Feb  1 14:50:02 2013
@@ -22,6 +22,8 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Set;
 
+import javax.annotation.Nonnull;
+
 import org.apache.jackrabbit.mk.api.MicroKernel;
 import org.apache.jackrabbit.mk.api.MicroKernelException;
 import org.apache.jackrabbit.mk.json.JsopReader;
@@ -115,6 +117,12 @@ public class IndexWrapper extends MicroK
         return mk.getHeadRevision();
     }
 
+    @Nonnull
+    @Override
+    public String rebase(@Nonnull String branchRevisionId, String newBaseRevisionId) {
+        throw new UnsupportedOperationException();
+    }
+
     @Override
     public String commitStream(String rootPath, JsopReader jsonDiff, String revisionId, String message) {
         if (branchRevisions.remove(revisionId)) {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/simple/SimpleKernelImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/simple/SimpleKernelImpl.java?rev=1441464&r1=1441463&r2=1441464&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/simple/SimpleKernelImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/simple/SimpleKernelImpl.java Fri Feb  1 14:50:02 2013
@@ -16,6 +16,13 @@
  */
 package org.apache.jackrabbit.oak.plugins.index.old.mk.simple;
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+
+import javax.annotation.Nonnull;
+
 import org.apache.jackrabbit.mk.api.MicroKernel;
 import org.apache.jackrabbit.mk.api.MicroKernelException;
 import org.apache.jackrabbit.mk.blobs.AbstractBlobStore;
@@ -32,11 +39,6 @@ import org.apache.jackrabbit.oak.commons
 import org.apache.jackrabbit.oak.plugins.index.old.mk.ExceptionFactory;
 import org.apache.jackrabbit.oak.plugins.index.old.mk.wrapper.MicroKernelWrapperBase;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collections;
-
 /*
 
 Node structure:
@@ -612,4 +614,10 @@ public class SimpleKernelImpl extends Mi
         // TODO OAK-45 support
         throw new UnsupportedOperationException();
     }
+
+    @Nonnull
+    @Override
+    public String rebase(@Nonnull String branchRevisionId, String newBaseRevisionId) {
+        throw new UnsupportedOperationException();
+    }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/BranchMergeMicroKernel.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/BranchMergeMicroKernel.java?rev=1441464&r1=1441463&r2=1441464&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/BranchMergeMicroKernel.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/BranchMergeMicroKernel.java Fri Feb  1 14:50:02 2013
@@ -18,6 +18,9 @@ package org.apache.jackrabbit.oak.plugin
 
 import java.io.InputStream;
 import java.util.HashSet;
+
+import javax.annotation.Nonnull;
+
 import org.apache.jackrabbit.mk.api.MicroKernel;
 import org.apache.jackrabbit.mk.api.MicroKernelException;
 
@@ -186,6 +189,12 @@ public class BranchMergeMicroKernel impl
         return getHeadRevision();
     }
 
+    @Nonnull
+    @Override
+    public String rebase(@Nonnull String branchRevisionId, String newBaseRevisionId) {
+        throw new UnsupportedOperationException();
+    }
+
     @Override
     public boolean nodeExists(String path, String revisionId) {
         String branch = getBranchId(revisionId);

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/LogWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/LogWrapper.java?rev=1441464&r1=1441463&r2=1441464&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/LogWrapper.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/LogWrapper.java Fri Feb  1 14:50:02 2013
@@ -19,6 +19,8 @@ package org.apache.jackrabbit.oak.plugin
 import java.io.InputStream;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import javax.annotation.Nonnull;
+
 import org.apache.jackrabbit.mk.api.MicroKernel;
 import org.apache.jackrabbit.mk.json.JsopBuilder;
 import org.apache.jackrabbit.oak.plugins.index.old.mk.ExceptionFactory;
@@ -227,6 +229,12 @@ public class LogWrapper implements Micro
         }
     }
 
+    @Nonnull
+    @Override
+    public String rebase(@Nonnull String branchRevisionId, String newBaseRevisionId) {
+        throw new UnsupportedOperationException();
+    }
+
     private void logMethod(String methodName, Object... args) {
         StringBuilder buff = new StringBuilder("mk");
         buff.append(id).append('.').append(methodName).append('(');

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/MicroKernelWrapperBase.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/MicroKernelWrapperBase.java?rev=1441464&r1=1441463&r2=1441464&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/MicroKernelWrapperBase.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/MicroKernelWrapperBase.java Fri Feb  1 14:50:02 2013
@@ -17,6 +17,9 @@
 package org.apache.jackrabbit.oak.plugins.index.old.mk.wrapper;
 
 import java.io.InputStream;
+
+import javax.annotation.Nonnull;
+
 import org.apache.jackrabbit.mk.api.MicroKernel;
 import org.apache.jackrabbit.mk.api.MicroKernelException;
 import org.apache.jackrabbit.mk.json.JsopReader;
@@ -150,6 +153,12 @@ public abstract class MicroKernelWrapper
             return wrapped.merge(branchRevisionId, message);
         }
 
+        @Nonnull
+        @Override
+        public String rebase(@Nonnull String branchRevisionId, String newBaseRevisionId) {
+            throw new UnsupportedOperationException();
+        }
+
         @Override
         public String diff(String fromRevisionId, String toRevisionId, String path, int depth) {
             return wrapped.diff(fromRevisionId, toRevisionId, path, depth);

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/SecurityWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/SecurityWrapper.java?rev=1441464&r1=1441463&r2=1441464&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/SecurityWrapper.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/SecurityWrapper.java Fri Feb  1 14:50:02 2013
@@ -16,6 +16,10 @@
  */
 package org.apache.jackrabbit.oak.plugins.index.old.mk.wrapper;
 
+import java.io.InputStream;
+
+import javax.annotation.Nonnull;
+
 import org.apache.jackrabbit.mk.api.MicroKernel;
 import org.apache.jackrabbit.mk.json.JsopReader;
 import org.apache.jackrabbit.mk.json.JsopStream;
@@ -27,8 +31,6 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.index.old.mk.simple.NodeImpl;
 import org.apache.jackrabbit.oak.plugins.index.old.mk.simple.NodeMap;
 
-import java.io.InputStream;
-
 /**
  * A microkernel prototype implementation that filters nodes based on simple
  * access rights. Each user has a password, and (optionally) a list of rights,
@@ -360,6 +362,12 @@ public class SecurityWrapper extends Mic
         return mk.merge(branchRevisionId, message);
     }
 
+    @Nonnull
+    @Override
+    public String rebase(@Nonnull String branchRevisionId, String newBaseRevisionId) {
+        throw new UnsupportedOperationException();
+    }
+
     private NodeImpl filterAccess(String path, NodeImpl n) {
         if (!checkRights(path, false)) {
             return null;

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/TimingWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/TimingWrapper.java?rev=1441464&r1=1441463&r2=1441464&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/TimingWrapper.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/TimingWrapper.java Fri Feb  1 14:50:02 2013
@@ -22,6 +22,8 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import javax.annotation.Nonnull;
+
 import org.apache.jackrabbit.mk.api.MicroKernel;
 import org.apache.jackrabbit.mk.json.JsopBuilder;
 import org.apache.jackrabbit.oak.plugins.index.old.mk.ExceptionFactory;
@@ -290,6 +292,12 @@ public class TimingWrapper implements Mi
         }
     }
 
+    @Nonnull
+    @Override
+    public String rebase(@Nonnull String branchRevisionId, String newBaseRevisionId) {
+        throw new UnsupportedOperationException();
+    }
+
     private void logMethod(String methodName, Object... args) {
         StringBuilder buff = new StringBuilder("mk");
         buff.append(id).append('.').append(methodName).append('(');

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/VirtualRepositoryWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/VirtualRepositoryWrapper.java?rev=1441464&r1=1441463&r2=1441464&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/VirtualRepositoryWrapper.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/mk/wrapper/VirtualRepositoryWrapper.java Fri Feb  1 14:50:02 2013
@@ -21,6 +21,8 @@ import java.util.HashMap;
 import java.util.TreeMap;
 import java.util.Map.Entry;
 
+import javax.annotation.Nonnull;
+
 import org.apache.jackrabbit.mk.api.MicroKernel;
 import org.apache.jackrabbit.mk.api.MicroKernelException;
 import org.apache.jackrabbit.mk.json.JsopBuilder;
@@ -344,5 +346,11 @@ public class VirtualRepositoryWrapper ex
         // TODO OAK-45 support
         return mk.merge(branchRevisionId, message);
     }
+
+    @Nonnull
+    @Override
+    public String rebase(@Nonnull String branchRevisionId, String newBaseRevisionId) {
+        throw new UnsupportedOperationException();
+    }
 }
 

Modified: jackrabbit/oak/trunk/oak-mk-api/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk-api/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java?rev=1441464&r1=1441463&r2=1441464&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk-api/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java (original)
+++ jackrabbit/oak/trunk/oak-mk-api/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java Fri Feb  1 14:50:02 2013
@@ -18,6 +18,8 @@ package org.apache.jackrabbit.mk.api;
 
 import java.io.InputStream;
 
+import javax.annotation.Nonnull;
+
 /**
  * The MicroKernel <b>Design Goals and Principles</b>:
  * <ul>
@@ -481,6 +483,63 @@ public interface MicroKernel {
     String /* revisionId */ merge(String branchRevisionId, String message)
             throws MicroKernelException;
 
+    /**
+     * Rebases the specified <i>private</i> branch revision on top of specified new base
+     * revision.
+     * <p/>
+     * A {@code MicroKernelException} is thrown if {@code branchRevisionId} doesn't
+     * exist, if it's not a branch revision, if {@code newBaseRevisionId} doesn't exist,
+     * if it's a branch revision or if another error occurs.
+     * <p/>
+     * If rebasing results in a conflict, conflicting nodes are annotated with a conflict
+     * marker denoting the type of the conflict and the value(s) before the rebase operation.
+     * The conflict marker is an internal node with the name {@code :conflict} and is added
+     * to the node whose properties or child nodes are in conflict.
+     * <p/>
+     * type of conflicts:
+     * <dl>
+     *     <dt>addExistingProperty:</dt>
+     *     <dd>A property has been added that has a different value than a property with the same name
+     *         that has been added in trunk.</dd>
+     *     <dt>deleteDeletedProperty:</dt>
+     *     <dd>A property has been removed while a property of the same name has been removed in trunk.</dd>
+     *     <dt>deleteChangedProperty:</dt>
+     *     <dd>A property has been removed while a property of the same name has been changed in trunk.</dd>
+     *     <dt>changeDeletedProperty:</dt>
+     *     <dd>A property has been changed while a property of the same name has been removed in trunk. </dd>
+     *     <dt>changeChangedProperty:</dt>
+     *     <dd>A property has been changed while a property of the same name has been changed to a
+     *         different value in trunk.</dd>
+     *     <dt>addExistingNode:</dt>
+     *     <dd>A node has been added that is different from a node of them same name that has been added
+     *         to the trunk.</dd>
+     *     <dt>deleteDeletedNode:</dt>
+     *     <dd>A node has been removed while a node of the same name has been removed in trunk.</dd>
+     *     <dt>deleteChangedNode:</dt>
+     *     <dd>A node has been removed while a node of the same name has been changed in trunk.</dd>
+     *     <dt>changeDeletedNode:</dt>
+     *     <dd>A node has been changed while a node of the same name has been removed in trunk.</dd>
+     * </dl>
+     * In this context a node is regarded as changed if a property way added, a property was removed,
+     * a property was set to a different value, a child node was added, a child node was removed or
+     * a child node was changed.
+     * <p/>
+     * On conflict the conflict marker node carries the conflicting value of the branch while the rebased
+     * value in the branch itself will be set to the conflicting value of the trunk. In the case of conflicting
+     * properties, the conflicting value is the property value from the branch. In the case of conflicting
+     * node, the conflicting value is the node from the branch.
+     *
+     * @param branchRevisionId id of private branch revision
+     * @param newBaseRevisionId id of new base revision
+     * @return id of the rebased branch revision
+     * @throws MicroKernelException if {@code branchRevisionId} doesn't exist,
+     *                              if it's not a branch revision, if {@code newBaseRevisionId}
+     *                              doesn't exist, if it's a branch revision, or if another error occurs.
+     */
+    @Nonnull
+    String /*revisionId */ rebase(@Nonnull String branchRevisionId, String newBaseRevisionId)
+        throws MicroKernelException;
+
     //--------------------------------------------------< BLOB READ/WRITE ops >
 
     /**

Modified: jackrabbit/oak/trunk/oak-mk-remote/src/main/java/org/apache/jackrabbit/mk/client/Client.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk-remote/src/main/java/org/apache/jackrabbit/mk/client/Client.java?rev=1441464&r1=1441463&r2=1441464&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk-remote/src/main/java/org/apache/jackrabbit/mk/client/Client.java (original)
+++ jackrabbit/oak/trunk/oak-mk-remote/src/main/java/org/apache/jackrabbit/mk/client/Client.java Fri Feb  1 14:50:02 2013
@@ -23,6 +23,7 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.concurrent.atomic.AtomicBoolean;
 
+import javax.annotation.Nonnull;
 import javax.net.SocketFactory;
 
 import org.apache.jackrabbit.mk.api.MicroKernel;
@@ -299,6 +300,12 @@ public class Client implements MicroKern
         }
     }
 
+    @Nonnull
+    @Override
+    public String rebase(@Nonnull String branchRevisionId, String newBaseRevisionId) {
+        throw new UnsupportedOperationException();
+    }
+
     @Override
     public long getLength(String blobId) throws MicroKernelException {
         Request request = null;

Modified: jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java?rev=1441464&r1=1441463&r2=1441464&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java (original)
+++ jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java Fri Feb  1 14:50:02 2013
@@ -16,15 +16,21 @@
  */
 package org.apache.jackrabbit.mk.core;
 
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.annotation.Nonnull;
+
 import org.apache.jackrabbit.mk.api.MicroKernel;
 import org.apache.jackrabbit.mk.api.MicroKernelException;
+import org.apache.jackrabbit.mk.json.JsonObject;
 import org.apache.jackrabbit.mk.json.JsopBuilder;
 import org.apache.jackrabbit.mk.json.JsopReader;
 import org.apache.jackrabbit.mk.json.JsopTokenizer;
 import org.apache.jackrabbit.mk.model.Commit;
 import org.apache.jackrabbit.mk.model.CommitBuilder;
 import org.apache.jackrabbit.mk.model.Id;
-import org.apache.jackrabbit.mk.json.JsonObject;
 import org.apache.jackrabbit.mk.model.StoredCommit;
 import org.apache.jackrabbit.mk.model.tree.ChildNode;
 import org.apache.jackrabbit.mk.model.tree.DiffBuilder;
@@ -38,10 +44,6 @@ import org.apache.jackrabbit.oak.commons
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  *
  */
@@ -540,6 +542,12 @@ public class MicroKernelImpl implements 
         }
     }
 
+    @Nonnull
+    @Override
+    public String rebase(@Nonnull String branchRevisionId, String newBaseRevisionId) {
+        throw new UnsupportedOperationException();
+    }
+
     public long getLength(String blobId) throws MicroKernelException {
         if (rep == null) {
             throw new IllegalStateException("this instance has already been disposed");

Modified: jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/impl/MongoMicroKernel.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/impl/MongoMicroKernel.java?rev=1441464&r1=1441463&r2=1441464&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/impl/MongoMicroKernel.java (original)
+++ jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/impl/MongoMicroKernel.java Fri Feb  1 14:50:02 2013
@@ -19,6 +19,8 @@ package org.apache.jackrabbit.mongomk.im
 import java.io.InputStream;
 import java.util.UUID;
 
+import javax.annotation.Nonnull;
+
 import org.apache.jackrabbit.mk.api.MicroKernel;
 import org.apache.jackrabbit.mk.api.MicroKernelException;
 import org.apache.jackrabbit.mk.blobs.BlobStore;
@@ -215,6 +217,12 @@ public class MongoMicroKernel implements
         }
     }
 
+    @Nonnull
+    @Override
+    public String rebase(@Nonnull String branchRevisionId, String newBaseRevisionId) {
+        throw new UnsupportedOperationException();
+    }
+
     @Override
     public boolean nodeExists(String path, String revisionId) throws MicroKernelException {
         try {