Author: mduerig
Date: Wed Jun 12 07:58:13 2013
New Revision: 1492102
URL: http://svn.apache.org/r1492102
Log:
OAK-864: MicroKernelException when moving a node to its own descendant
fix for Session.move
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/SessionDelegate.java
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/SessionDelegate.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/SessionDelegate.java?rev=1492102&r1=1492101&r2=1492102&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/SessionDelegate.java
(original)
+++
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/SessionDelegate.java
Wed Jun 12 07:58:13 2013
@@ -16,7 +16,10 @@
*/
package org.apache.jackrabbit.oak.jcr.delegate;
+import static com.google.common.base.Preconditions.checkNotNull;
+
import java.io.IOException;
+
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import javax.jcr.AccessDeniedException;
@@ -43,8 +46,6 @@ import org.apache.jackrabbit.oak.spi.sec
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import static com.google.common.base.Preconditions.checkNotNull;
-
/**
* TODO document
*/
@@ -242,7 +243,9 @@ public class SessionDelegate {
try {
Root currentRoot = contentSession.getLatestRoot();
- currentRoot.copy(srcPath, destPath);
+ if (!currentRoot.copy(srcPath, destPath)) {
+ throw new RepositoryException("Cannot copy node at " + srcPath
+ " to " + destPath);
+ }
currentRoot.commit();
} catch (CommitFailedException e) {
throw newRepositoryException(e);
@@ -283,7 +286,9 @@ public class SessionDelegate {
accessManager.checkPermissions(destPath,
Permissions.getString(Permissions.NODE_TYPE_MANAGEMENT));
try {
- moveRoot.move(srcPath, destPath);
+ if (!moveRoot.move(srcPath, destPath)) {
+ throw new RepositoryException("Cannot move node at " + srcPath
+ " to " + destPath);
+ }
if (!transientOp) {
moveRoot.commit();
}