[ 
https://issues.apache.org/jira/browse/OAK-1114?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13826378#comment-13826378
 ] 

Michael Dürig commented on OAK-1114:
------------------------------------

The remaining issue is really an edge case. It is about how {{NodeBuilder}} 
instances should handle the case where a node is moved to a descendant of it 
self. The current contract of the {{moveTo}} method forbids this and mandates 
the method to return {{false}}. However for the {{MemoryNodeBuilder}} we can't 
detect this.

What do people think about adapting the contract of {{NodeBuilder.moveTo}} and 
leave the exact behaviour for such edge cases to the implementation? Oak does 
check for these in higher levels already anyway. 

{code}
    /**
     * Move this child to a new parent with a new name. When the move succeeded 
this
     * builder has been moved to {@code newParent} as child {@code newName}. 
Otherwise neither
     * this builder nor {@code newParent} are modified.
     * <p>
     * The move succeeds if both, this builder and {@code newParent} exist, 
there is no child with
     * {@code newName} at {@code newParent} and {@code newParent} is not in the 
subtree of this
     * builder.
     * <p>
     * The move fails if the this builder or {@code newParent} does not exist 
or if there is
     * already a child {@code newName} at {@code newParent}.
     * In all remaining cases (e.g. moving a builder into its own subtree) the 
behaviour depends
     * on the implementation.
     *
     * @param newParent  builder for the new parent.
     * @param newName  name of this child at the new parent
     * @return  {@code true} on success, {@code false} otherwise
     */
{code}

> Clarify NodeBuilder.moveTo() contract
> -------------------------------------
>
>                 Key: OAK-1114
>                 URL: https://issues.apache.org/jira/browse/OAK-1114
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: core
>            Reporter: Michael Dürig
>            Assignee: Michael Dürig
>             Fix For: 0.12
>
>
> {{NodeBuilder.moveTo()}} currently behaves differently depending on the 
> implementation. We should rectify that, clarify the contract and add 
> respective unit tests. 



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to