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/11/29 15:15:17 UTC
svn commit: r1546566 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/plugins/observation/
main/java/org/apache/jackrabbit/oak/plugins/observation/filter/
main/java/org/apache/jackrabbit/oak/spi/commit/ main/java/org/apache/...
Author: mduerig
Date: Fri Nov 29 14:15:17 2013
New Revision: 1546566
URL: http://svn.apache.org/r1546566
Log:
OAK-1133: Observation listener PLUS
MoveDetector now sends name of moved node instead of path. This allows simplifying EventIterator and ChangeProcessor since they now don't need to keep track of the path
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/JcrListener.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/ACFilter.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/ConstantFilter.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventGenerator.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventIterator.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventTypeFilter.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/Filters.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/GlobbingPathFilter.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/NodeTypeFilter.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/UuidFilter.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/DefaultMoveValidator.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/MoveDetector.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/MoveValidator.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/state/MoveDetectorTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java?rev=1546566&r1=1546565&r2=1546566&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/ChangeProcessor.java Fri Nov 29 14:15:17 2013
@@ -130,7 +130,7 @@ public class ChangeProcessor implements
ImmutableTree beforeTree = getTree(previousRoot, provider.getPath());
ImmutableTree afterTree = getTree(root, provider.getPath());
EventIterator<Event> events = new EventIterator<Event>(
- beforeTree.getNodeState(), afterTree.getNodeState(), provider.getPath(),
+ beforeTree.getNodeState(), afterTree.getNodeState(),
provider.getFilter(beforeTree, afterTree),
new JcrListener(beforeTree, afterTree, namePathMapper, info));
if (events.hasNext()) {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/JcrListener.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/JcrListener.java?rev=1546566&r1=1546565&r2=1546566&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/JcrListener.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/JcrListener.java Fri Nov 29 14:15:17 2013
@@ -27,7 +27,6 @@ import static javax.jcr.observation.Even
import static javax.jcr.observation.Event.PROPERTY_ADDED;
import static javax.jcr.observation.Event.PROPERTY_REMOVED;
import static org.apache.jackrabbit.oak.api.Type.STRING;
-import static org.apache.jackrabbit.oak.commons.PathUtils.getName;
import static org.apache.jackrabbit.oak.core.AbstractTree.OAK_CHILD_ORDER;
import static org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager.getIdentifier;
@@ -121,8 +120,9 @@ class JcrListener implements IterableLis
}
@Override
- public void nodeMoved(String sourcePath, String destPath, NodeState moved) {
- events.add(createEvent(NODE_MOVED, afterTree.getChild(getName(destPath)),
+ public void nodeMoved(String sourcePath, String name, NodeState moved) {
+ String destPath = PathUtils.concat(afterTree.getPath(), name);
+ events.add(createEvent(NODE_MOVED, afterTree.getChild(name),
ImmutableMap.of(
"srcAbsPath", namePathMapper.getJcrPath(sourcePath),
"destAbsPath", namePathMapper.getJcrPath(destPath))));
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/ACFilter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/ACFilter.java?rev=1546566&r1=1546565&r2=1546566&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/ACFilter.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/ACFilter.java Fri Nov 29 14:15:17 2013
@@ -24,7 +24,6 @@ import static com.google.common.base.Pre
import javax.annotation.Nonnull;
import org.apache.jackrabbit.oak.api.PropertyState;
-import org.apache.jackrabbit.oak.commons.PathUtils;
import org.apache.jackrabbit.oak.core.ImmutableTree;
import org.apache.jackrabbit.oak.plugins.observation.filter.EventGenerator.Filter;
import org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission;
@@ -84,8 +83,8 @@ public class ACFilter implements Filter
}
@Override
- public boolean includeMove(String sourcePath, String destPath, NodeState moved) {
- return treePermission.getChildPermission(PathUtils.getName(destPath), moved).canRead();
+ public boolean includeMove(String sourcePath, String name, NodeState moved) {
+ return treePermission.getChildPermission(name, moved).canRead();
}
@Override
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/ConstantFilter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/ConstantFilter.java?rev=1546566&r1=1546565&r2=1546566&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/ConstantFilter.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/ConstantFilter.java Fri Nov 29 14:15:17 2013
@@ -67,7 +67,7 @@ public class ConstantFilter implements F
}
@Override
- public boolean includeMove(String sourcePath, String destPath, NodeState moved) {
+ public boolean includeMove(String sourcePath, String name, NodeState moved) {
return include;
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventGenerator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventGenerator.java?rev=1546566&r1=1546565&r2=1546566&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventGenerator.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventGenerator.java Fri Nov 29 14:15:17 2013
@@ -92,11 +92,11 @@ public class EventGenerator implements M
/**
* Include a moved node
* @param sourcePath source path of the move operation
- * @param destPath destination path of the move operation
- * @param moved the moved node
+ * @param name name of the moved node
+ * @param moved the moved node
* @return {@code true} if the node should be included
*/
- boolean includeMove(String sourcePath, String destPath, NodeState moved);
+ boolean includeMove(String sourcePath, String name, NodeState moved);
/**
* Factory for creating a filter instance for the given child node
@@ -159,10 +159,10 @@ public class EventGenerator implements M
/**
* Notification for a moved node
* @param sourcePath source of the moved node
- * @param destPath destination of the moved node
- * @param moved moved node
+ * @param name name of the moved node
+ * @param moved moved node
*/
- void nodeMoved(String sourcePath, String destPath, NodeState moved);
+ void nodeMoved(String sourcePath, String name, NodeState moved);
/**
* Factory for creating a filter instance for the given child node
@@ -187,9 +187,9 @@ public class EventGenerator implements M
}
@Override
- public void move(String sourcePath, String destPath, NodeState moved) throws CommitFailedException {
- if (filter.includeMove(sourcePath, destPath, moved)) {
- listener.nodeMoved(sourcePath, destPath, moved);
+ public void move(String name, String sourcePath, NodeState moved) throws CommitFailedException {
+ if (filter.includeMove(sourcePath, name, moved)) {
+ listener.nodeMoved(sourcePath, name, moved);
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventIterator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventIterator.java?rev=1546566&r1=1546565&r2=1546566&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventIterator.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventIterator.java Fri Nov 29 14:15:17 2013
@@ -29,7 +29,6 @@ import java.util.List;
import javax.annotation.Nonnull;
import org.apache.jackrabbit.oak.api.CommitFailedException;
-import org.apache.jackrabbit.oak.commons.PathUtils;
import org.apache.jackrabbit.oak.spi.commit.EditorDiff;
import org.apache.jackrabbit.oak.spi.commit.VisibleEditor;
import org.apache.jackrabbit.oak.spi.state.MoveDetector;
@@ -48,7 +47,6 @@ public class EventIterator<T> extends Ev
private final NodeState before;
private final NodeState after;
- private final String path;
private final Filter filter;
private final IterableListener<T> listener;
@@ -60,7 +58,7 @@ public class EventIterator<T> extends Ev
protected Iterator<T> createValue() {
CommitFailedException e = EditorDiff.process(
new VisibleEditor(
- new MoveDetector(EventIterator.this, path)),
+ new MoveDetector(EventIterator.this)),
before, after);
if (e != null) {
@@ -89,16 +87,14 @@ public class EventIterator<T> extends Ev
*
* @param before before state
* @param after after state
- * @parem path common path to the before and after states
* @param filter filter for filtering changes
* @param listener listener for listening to the filtered changes
*/
public EventIterator(@Nonnull NodeState before, @Nonnull NodeState after,
- @Nonnull String path, @Nonnull Filter filter, @Nonnull IterableListener<T> listener) {
+ @Nonnull Filter filter, @Nonnull IterableListener<T> listener) {
super(filter, listener);
this.before = checkNotNull(before);
this.after = checkNotNull(after);
- this.path = checkNotNull(path);
this.filter = checkNotNull(filter);
this.listener = checkNotNull(listener);
}
@@ -110,7 +106,7 @@ public class EventIterator<T> extends Ev
Filter childFilter = filter.create(name, before, after);
if (childFilter != null) {
childEvents.add(new EventIterator<T>(
- before, after, PathUtils.concat(path, name),
+ before, after,
childFilter,
listener.create(name, before, after)));
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventTypeFilter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventTypeFilter.java?rev=1546566&r1=1546565&r2=1546566&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventTypeFilter.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/EventTypeFilter.java Fri Nov 29 14:15:17 2013
@@ -78,7 +78,7 @@ public class EventTypeFilter implements
}
@Override
- public boolean includeMove(String sourcePath, String destPath, NodeState moved) {
+ public boolean includeMove(String sourcePath, String name, NodeState moved) {
return includeByEvent(Event.NODE_MOVED);
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/Filters.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/Filters.java?rev=1546566&r1=1546565&r2=1546566&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/Filters.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/Filters.java Fri Nov 29 14:15:17 2013
@@ -142,9 +142,9 @@ public final class Filters {
}
@Override
- public boolean includeMove(String sourcePath, String destPath, NodeState moved) {
+ public boolean includeMove(String sourcePath, String name, NodeState moved) {
for (Filter filter : filters) {
- if (filter.includeMove(sourcePath, destPath, moved)) {
+ if (filter.includeMove(sourcePath, name, moved)) {
return true;
}
}
@@ -234,9 +234,9 @@ public final class Filters {
}
@Override
- public boolean includeMove(String sourcePath, String destPath, NodeState moved) {
+ public boolean includeMove(String sourcePath, String name, NodeState moved) {
for (Filter filter : filters) {
- if (!filter.includeMove(sourcePath, destPath, moved)) {
+ if (!filter.includeMove(sourcePath, name, moved)) {
return false;
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/GlobbingPathFilter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/GlobbingPathFilter.java?rev=1546566&r1=1546565&r2=1546566&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/GlobbingPathFilter.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/GlobbingPathFilter.java Fri Nov 29 14:15:17 2013
@@ -22,7 +22,6 @@ package org.apache.jackrabbit.oak.plugin
import static com.google.common.base.Objects.toStringHelper;
import static com.google.common.base.Preconditions.checkNotNull;
import static org.apache.jackrabbit.oak.commons.PathUtils.elements;
-import static org.apache.jackrabbit.oak.commons.PathUtils.getName;
import javax.annotation.Nonnull;
@@ -114,8 +113,8 @@ public class GlobbingPathFilter implemen
}
@Override
- public boolean includeMove(String sourcePath, String destPath, NodeState moved) {
- return includeItem(getName(destPath));
+ public boolean includeMove(String sourcePath, String name, NodeState moved) {
+ return includeItem(name);
}
@Override
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/NodeTypeFilter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/NodeTypeFilter.java?rev=1546566&r1=1546565&r2=1546566&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/NodeTypeFilter.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/NodeTypeFilter.java Fri Nov 29 14:15:17 2013
@@ -107,7 +107,7 @@ public class NodeTypeFilter implements F
}
@Override
- public boolean includeMove(String sourcePath, String destPath, NodeState moved) {
+ public boolean includeMove(String sourcePath, String name, NodeState moved) {
return include.get();
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/UuidFilter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/UuidFilter.java?rev=1546566&r1=1546565&r2=1546566&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/UuidFilter.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/observation/filter/UuidFilter.java Fri Nov 29 14:15:17 2013
@@ -114,7 +114,7 @@ public class UuidFilter implements Filte
}
@Override
- public boolean includeMove(String sourcePath, String destPath, NodeState moved) {
+ public boolean includeMove(String sourcePath, String name, NodeState moved) {
return include.get();
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/DefaultMoveValidator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/DefaultMoveValidator.java?rev=1546566&r1=1546565&r2=1546566&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/DefaultMoveValidator.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/DefaultMoveValidator.java Fri Nov 29 14:15:17 2013
@@ -31,7 +31,7 @@ import org.apache.jackrabbit.oak.spi.sta
*/
public class DefaultMoveValidator extends DefaultValidator implements MoveValidator {
@Override
- public void move(String sourcePath, String destPath, NodeState moved) throws CommitFailedException {
+ public void move(String name, String sourcePath, NodeState moved) throws CommitFailedException {
// do nothing
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/MoveDetector.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/MoveDetector.java?rev=1546566&r1=1546565&r2=1546566&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/MoveDetector.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/MoveDetector.java Fri Nov 29 14:15:17 2013
@@ -20,7 +20,6 @@
package org.apache.jackrabbit.oak.spi.state;
import static org.apache.jackrabbit.oak.api.Type.STRING;
-import static org.apache.jackrabbit.oak.commons.PathUtils.concat;
import org.apache.jackrabbit.oak.api.CommitFailedException;
import org.apache.jackrabbit.oak.api.PropertyState;
@@ -53,15 +52,9 @@ public class MoveDetector implements Val
public static final String SOURCE_PATH = ":source-path";
private final MoveValidator moveValidator;
- private final String path;
-
- public MoveDetector(MoveValidator moveValidator, String path) {
- this.moveValidator = moveValidator;
- this.path = path;
- }
public MoveDetector(MoveValidator moveValidator) {
- this(moveValidator, "/");
+ this.moveValidator = moveValidator;
}
@Override
@@ -94,13 +87,12 @@ public class MoveDetector implements Val
PropertyState sourceProperty = after.getProperty(SOURCE_PATH);
if (sourceProperty != null) {
String sourcePath = sourceProperty.getValue(STRING);
- String destPath = concat(path, name);
- moveValidator.move(sourcePath, destPath, after);
+ moveValidator.move(name, sourcePath, after);
}
MoveValidator childDiff = moveValidator.childNodeAdded(name, after);
return childDiff == null
? null
- : new MoveDetector(childDiff, concat(path, name));
+ : new MoveDetector(childDiff);
}
@Override
@@ -108,7 +100,7 @@ public class MoveDetector implements Val
MoveValidator childDiff = moveValidator.childNodeChanged(name, before, after);
return childDiff == null
? null
- : new MoveDetector(childDiff, concat(path, name));
+ : new MoveDetector(childDiff);
}
@Override
@@ -116,6 +108,6 @@ public class MoveDetector implements Val
MoveValidator childDiff = moveValidator.childNodeDeleted(name, before);
return childDiff == null
? null
- : new MoveDetector(childDiff, concat(path, name));
+ : new MoveDetector(childDiff);
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/MoveValidator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/MoveValidator.java?rev=1546566&r1=1546565&r2=1546566&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/MoveValidator.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/MoveValidator.java Fri Nov 29 14:15:17 2013
@@ -34,11 +34,12 @@ public interface MoveValidator extends V
* Called when a moved node has been detected.
*
* @param sourcePath path of the node before the move
- * @param destPath path of the node after the move
- * @param moved the moved node state
+ * @param name name of the node after the move
+ * @param moved the node state moved here
* @throws CommitFailedException if validation fails.
+ * remove
*/
- void move(String sourcePath, String destPath, NodeState moved) throws CommitFailedException;
+ void move(String name, String sourcePath, NodeState moved) throws CommitFailedException;
@Override
@CheckForNull
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/state/MoveDetectorTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/state/MoveDetectorTest.java?rev=1546566&r1=1546565&r2=1546566&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/state/MoveDetectorTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/state/MoveDetectorTest.java Fri Nov 29 14:15:17 2013
@@ -22,6 +22,8 @@ package org.apache.jackrabbit.oak.spi.st
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import java.util.concurrent.atomic.AtomicReference;
+
import org.apache.jackrabbit.oak.api.CommitFailedException;
import org.apache.jackrabbit.oak.commons.PathUtils;
import org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState;
@@ -150,40 +152,47 @@ public class MoveDetectorTest {
}
private static class FindSingleMove extends DefaultMoveValidator {
+ private final String path;
private final String sourcePath;
private final String destPath;
+ private final AtomicReference<Boolean> found;
- private boolean found;
-
- private FindSingleMove(String sourcePath, String destPath) {
+ private FindSingleMove(String sourcePath, String destPath, String path,
+ AtomicReference<Boolean> found) {
this.sourcePath = sourcePath;
this.destPath = destPath;
+ this.path = path;
+ this.found = found;
+ }
+
+ public FindSingleMove(String sourcePath, String destPath) {
+ this(sourcePath, destPath, "/", new AtomicReference<Boolean>(false));
}
@Override
- public void move(String sourcePath, String destPath, NodeState moved) throws CommitFailedException {
- if (found) {
+ public void move(String name, String sourcePath, NodeState moved) throws CommitFailedException {
+ if (found()) {
throw new CommitFailedException("Test", 0, "There should only be a single move operation");
}
assertEquals(this.sourcePath, sourcePath);
- assertEquals(this.destPath, destPath);
- found = true;
+ assertEquals(this.destPath, PathUtils.concat(path, name));
+ found.set(true);
}
@Override
public MoveValidator childNodeChanged(String name, NodeState before, NodeState after) {
- return this;
+ return new FindSingleMove(sourcePath, destPath, PathUtils.concat(path, name), found);
}
public boolean found() {
- return found;
+ return found.get();
}
}
private static class AssertNoMove extends DefaultMoveValidator {
@Override
- public void move(String sourcePath, String destPath, NodeState moved) throws CommitFailedException {
+ public void move(String name, String sourcePath, NodeState moved) throws CommitFailedException {
throw new CommitFailedException("Test", 0, "There should be no move operation");
}