Class AbstractRebaseDiff
java.lang.Object
org.apache.jackrabbit.oak.spi.state.AbstractRebaseDiff
- All Implemented Interfaces:
NodeStateDiff
- Direct Known Subclasses:
ConflictAnnotatingRebaseDiff
AbstractRebaseDiff serves as base for rebase implementations.
It implements a NodeStateDiff, which performs the conflict
handling as defined in NodeStore.rebase(NodeBuilder)
on the Oak SPI state level.
Intended use of this class is to re-base a branched version of the node state tree. Given below situation:
+ head (master)
|
| + branch
|/
+ base
|
The current state on the master branch is head and a branch
was created at base. The current state on the branch is
branch. Re-basing branch to the current
head works as follows:
NodeState head = ...
NodeState branch = ...
NodeState base = ...
NodeBuilder builder = new MemoryNodeBuilder(head);
branch.compareAgainstBaseState(base, new MyRebaseDiff(builder));
branch = builder.getNodeState();
The result is:
+ branch
/
+ head (master)
|
Conflicts during rebase cause calls to the various abstracts conflict resolution methods of this class. Concrete subclasses of this class need to implement these methods for handling such conflicts.
-
Method Summary
Modifier and TypeMethodDescriptionbooleanchildNodeAdded(String name, NodeState after) Called for all added child nodes.booleanchildNodeChanged(String name, NodeState before, NodeState after) Called for all child nodes that may contain changes between the before and after states.booleanchildNodeDeleted(String name, NodeState before) Called for all deleted child nodes.booleanpropertyAdded(PropertyState after) Called for all added properties.booleanpropertyChanged(PropertyState before, PropertyState after) Called for all changed properties.booleanpropertyDeleted(PropertyState before) Called for all deleted properties.
-
Method Details
-
propertyAdded
Description copied from interface:NodeStateDiffCalled for all added properties.- Specified by:
propertyAddedin interfaceNodeStateDiff- Parameters:
after- property state after the change- Returns:
trueto continue the comparison,falseto abort. Abort will stop comparing completely, that means sibling nodes and sibling nodes of all parents are not further compared.
-
propertyChanged
Description copied from interface:NodeStateDiffCalled for all changed properties. The names of the given two property states are guaranteed to be the same.- Specified by:
propertyChangedin interfaceNodeStateDiff- Parameters:
before- property state before the changeafter- property state after the change- Returns:
trueto continue the comparison,falseto abort. Abort will stop comparing completely, that means sibling nodes and sibling nodes of all parents are not further compared.
-
propertyDeleted
Description copied from interface:NodeStateDiffCalled for all deleted properties.- Specified by:
propertyDeletedin interfaceNodeStateDiff- Parameters:
before- property state before the change- Returns:
trueto continue the comparison,falseto abort. Abort will stop comparing completely, that means sibling nodes and sibling nodes of all parents are not further compared.
-
childNodeAdded
Description copied from interface:NodeStateDiffCalled for all added child nodes.- Specified by:
childNodeAddedin interfaceNodeStateDiff- Parameters:
name- name of the added child nodeafter- child node state after the change- Returns:
trueto continue the comparison,falseto abort. Abort will stop comparing completely, that means sibling nodes and sibling nodes of all parents are not further compared.
-
childNodeChanged
Description copied from interface:NodeStateDiffCalled for all child nodes that may contain changes between the before and after states. The comparison implementation is expected to make an effort to avoid calling this method on child nodes under which nothing has changed.- Specified by:
childNodeChangedin interfaceNodeStateDiff- Parameters:
name- name of the changed child nodebefore- child node state before the changeafter- child node state after the change- Returns:
trueto continue the comparison,falseto abort. Abort will stop comparing completely, that means sibling nodes and sibling nodes of all parents are not further compared.
-
childNodeDeleted
Description copied from interface:NodeStateDiffCalled for all deleted child nodes.- Specified by:
childNodeDeletedin interfaceNodeStateDiff- Parameters:
name- name of the deleted child nodebefore- child node state before the change- Returns:
trueto continue the comparison,falseto abort. Abort will stop comparing completely, that means sibling nodes and sibling nodes of all parents are not further compared.
-