This strategy unconditionally replaces the "top-level" properties of a node with its direct update but replaces the children of the node with the children of the its indirect update.
This strategy unconditionally replaces the "top-level" properties of a node with its direct update but replaces the children of the node with the children of the its indirect update.
Loosely speaking, this strategy causes unselect
to only pull back updates to the name
, prefix
,
scope
, and attributes
of a conflicted element. Updates to the children
property of such an element
are silently ignored. Instead, the element's children are determined by whatever updates occurred
to the descendant nodes in zipper.
If a node has been multiplied via a flatMap
operation or the like, then the strategy will be uniformly applied to
all of the resulting nodes. If it has been completely elided, then it will be elided in the result as well.
See also the RequireLocal
strategy, which behaves similarly except
that it throws an error if it detects changes to a conflicted element's children
property.
This strategy unconditionally replaces the original
node with its indirectUpdate
.
This strategy unconditionally replaces the original
node with its indirectUpdate
. Direct updates
are ignored.
In other words, if a zipper contains both a node and one of its descendants, then updates to the node are unconditionally ignored and the result of the merge will be based solely on its descendants.
This strategy unconditionally replaces the original
node with its directUpdate
.
This strategy unconditionally replaces the original
node with its directUpdate
. It is essentially
the opposite of AlwaysPreferChildren
.
This strategy is mainly listed for the sake of completeness. In practice, it is preferable to use
a selection operator such as \\!
which prevents conflicting children from entering the zipper in
the first place.
A strategy that prefers later updates to earlier ones.
A strategy that prefers later updates to earlier ones.
The strategy is similar to AlwaysLocal
in that the top-level properties of the
original node are unconditionally replaced by their direct updates. The difference is in the treatment of the children;
They are taken from either the indirect update or the direct update depending on which one
was more recent and on whether the children of each update differ from the children of the original node.
The intent of the strategy is to approximate the notion of preferring the most recent update in case of conflict.
If a node has been multiplied via a flatMap
operation or the like, then the strategy will be uniformly applied to
all of the resulting nodes. If it has been completely elided, then it will be elided in the result as well.
A strategy that simply throws an exception if it is ever invoked.
A strategy that simply throws an exception if it is ever invoked. In other words, the strategy prevents unselection in Zippers that contain conflicts.
This strategy is similar to AlwaysLocal
except that it throws an
error if it detects a change to a conflicted element's children
property (as opposed
to ignoring the change, as AlwaysLocal
would).
This strategy is similar to AlwaysLocal
except that it throws an
error if it detects a change to a conflicted element's children
property (as opposed
to ignoring the change, as AlwaysLocal
would).
The price of this added safety check is that the strategy makes a Group equality check and thus is
potentially less performant than AlwaysLocal
.
Returns a com.codecommit.antixml.ZipperMergeStrategy obtained by uniformly applying the specified function to each
directUpdate
node in the merge context and concatenating the results.
Returns a com.codecommit.antixml.ZipperMergeStrategy obtained by uniformly applying the specified function to each
directUpdate
node in the merge context and concatenating the results. The function takes the merge context,
a directUpdate node and its associated update time as arguments and returns a sequence of replacement nodes.