A {@code MoveDetector} is a validator that can detect certain move operationsand reports these to the wrapped {@link MoveValidator} by calling{@link MoveValidator#move(String,String,NodeState)}. That method is called additional to {@link MoveValidator#childNodeAdded(String,NodeState)} for the destination of the moveoperation and {@link MoveValidator#childNodeDeleted(String,NodeState)} for the source ofthe move operation.
Detection of move operations relies on the presence of the {@link #SOURCE_PATH} property.New nodes with this property set have been moved from the path indicated by the value of the property to its current location.
Limitations:
Moving a moved node only reports one move from the original source to the final target.
Moving a transiently added node is not reported as a move operation but as an add operation on the move target.
Removing a moved node is not reported as a move operation but as a remove operation from the source of the move.
Moving a child node of a transiently moved node is not reported from the original source node, not from the intermediate one.
Moving a node back and forth to its original location is not reported at all.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.