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.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract void
addExistingNode
(NodeBuilder builder, String name, NodeState before, NodeState after) Called when the nodeafter
was added on the branch but the node exists already in the trunk.protected abstract void
addExistingProperty
(NodeBuilder builder, PropertyState before, PropertyState after) Called when the propertyafter
was added on the branch but the property exists already in the trunk.protected abstract void
changeChangedProperty
(NodeBuilder builder, PropertyState before, PropertyState after) Called when the propertyafter
was changed on the branch but was already changed tobefore
in the trunk.protected abstract void
changeDeletedNode
(NodeBuilder builder, String name, NodeState after, NodeState base) Called when the nodeafter
was changed on the branch but was deleted already in the trunk.protected abstract void
changeDeletedProperty
(NodeBuilder builder, PropertyState after, PropertyState base) Called when the propertyafter
was changed on the branch but was deleted already in the trunk.boolean
childNodeAdded
(String name, NodeState after) Called for all added child nodes.boolean
childNodeChanged
(String name, NodeState before, NodeState after) Called for all child nodes that may contain changes between the before and after states.boolean
childNodeDeleted
(String name, NodeState before) Called for all deleted child nodes.protected abstract AbstractRebaseDiff
createDiff
(NodeBuilder builder, String name) Factory method for creating a rebase handler for the named child of the passed parent builder.protected abstract void
deleteChangedNode
(NodeBuilder builder, String name, NodeState before) Called when the nodebefore
was deleted in the branch but was already changed in the trunk.protected abstract void
deleteChangedProperty
(NodeBuilder builder, PropertyState before) Called when the propertybefore
was deleted in the branch but was already changed in the trunk.protected abstract void
deleteDeletedNode
(NodeBuilder builder, String name, NodeState before) Called when the nodebefore
was deleted in the branch but was already deleted in the trunk.protected abstract void
deleteDeletedProperty
(NodeBuilder builder, PropertyState before) Called when the propertybefore
was deleted in the branch but was already deleted in the trunk.boolean
propertyAdded
(PropertyState after) Called for all added properties.boolean
propertyChanged
(PropertyState before, PropertyState after) Called for all changed properties.boolean
propertyDeleted
(PropertyState before) Called for all deleted properties.
-
Constructor Details
-
AbstractRebaseDiff
-
-
Method Details
-
createDiff
Factory method for creating a rebase handler for the named child of the passed parent builder.- Parameters:
builder
- parent buildername
- name of the child for which to return a rebase handler- Returns:
- rebase handler for child
name
inbuilder
-
addExistingProperty
protected abstract void addExistingProperty(NodeBuilder builder, PropertyState before, PropertyState after) Called when the propertyafter
was added on the branch but the property exists already in the trunk.- Parameters:
builder
- parent builderbefore
- existing propertyafter
- added property
-
changeDeletedProperty
protected abstract void changeDeletedProperty(NodeBuilder builder, PropertyState after, PropertyState base) Called when the propertyafter
was changed on the branch but was deleted already in the trunk.- Parameters:
builder
- parent builderafter
- changed propertybase
- base property
-
changeChangedProperty
protected abstract void changeChangedProperty(NodeBuilder builder, PropertyState before, PropertyState after) Called when the propertyafter
was changed on the branch but was already changed tobefore
in the trunk.- Parameters:
builder
- parent propertybefore
- changed property in branchafter
- changed property in trunk
-
deleteDeletedProperty
Called when the propertybefore
was deleted in the branch but was already deleted in the trunk.- Parameters:
builder
- parent builderbefore
- deleted property
-
deleteChangedProperty
Called when the propertybefore
was deleted in the branch but was already changed in the trunk.- Parameters:
builder
- parent builderbefore
- deleted property
-
addExistingNode
protected abstract void addExistingNode(NodeBuilder builder, String name, NodeState before, NodeState after) Called when the nodeafter
was added on the branch but the node exists already in the trunk.- Parameters:
builder
- parent buildername
- name of the added nodebefore
- existing nodeafter
- added added
-
changeDeletedNode
protected abstract void changeDeletedNode(NodeBuilder builder, String name, NodeState after, NodeState base) Called when the nodeafter
was changed on the branch but was deleted already in the trunk.- Parameters:
builder
- parent buildername
- name of the changed nodeafter
- changed nodebase
- base node
-
deleteDeletedNode
Called when the nodebefore
was deleted in the branch but was already deleted in the trunk.- Parameters:
builder
- parent builderbefore
- deleted node
-
deleteChangedNode
Called when the nodebefore
was deleted in the branch but was already changed in the trunk.- Parameters:
builder
- parent builderbefore
- deleted node
-
propertyAdded
Description copied from interface:NodeStateDiff
Called for all added properties.- Specified by:
propertyAdded
in interfaceNodeStateDiff
- Parameters:
after
- property state after the change- Returns:
true
to continue the comparison,false
to 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:NodeStateDiff
Called for all changed properties. The names of the given two property states are guaranteed to be the same.- Specified by:
propertyChanged
in interfaceNodeStateDiff
- Parameters:
before
- property state before the changeafter
- property state after the change- Returns:
true
to continue the comparison,false
to 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:NodeStateDiff
Called for all deleted properties.- Specified by:
propertyDeleted
in interfaceNodeStateDiff
- Parameters:
before
- property state before the change- Returns:
true
to continue the comparison,false
to 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:NodeStateDiff
Called for all added child nodes.- Specified by:
childNodeAdded
in interfaceNodeStateDiff
- Parameters:
name
- name of the added child nodeafter
- child node state after the change- Returns:
true
to continue the comparison,false
to 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:NodeStateDiff
Called 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:
childNodeChanged
in interfaceNodeStateDiff
- Parameters:
name
- name of the changed child nodebefore
- child node state before the changeafter
- child node state after the change- Returns:
true
to continue the comparison,false
to 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:NodeStateDiff
Called for all deleted child nodes.- Specified by:
childNodeDeleted
in interfaceNodeStateDiff
- Parameters:
name
- name of the deleted child nodebefore
- child node state before the change- Returns:
true
to continue the comparison,false
to abort. Abort will stop comparing completely, that means sibling nodes and sibling nodes of all parents are not further compared.
-