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.