java.lang.Object
org.broadleafcommerce.common.extensibility.context.merge.handlers.BaseHandler
org.broadleafcommerce.common.extensibility.context.merge.handlers.NodeReplaceInsert
All Implemented Interfaces:
Comparable<Object>, MergeHandler
Direct Known Subclasses:
LiberalNodeReplaceInsert, MetadataOverrideNodeReplaceInsert, NodeReplace, NonEmptyNodeReplaceInsert

public class NodeReplaceInsert extends BaseHandler
This handler is responsible for replacing nodes in the source document with the same nodes from the patch document. Note, additional nodes from the patch document that are not present in the source document are simply appended to the source document.
Author:
jfischer
  • Constructor Details

    • NodeReplaceInsert

      public NodeReplaceInsert()
  • Method Details

    • merge

      public Node[] merge(List<Node> nodeList1, List<Node> nodeList2, List<Node> exhaustedNodes)
      Description copied from interface: MergeHandler
      Perform the merge using the supplied list of nodes from the source and patch documents, respectively. Also, a list of nodes that have already been merged is provided and may be used by the implementation when necessary.
      Parameters:
      nodeList1 - list of nodes to be merged from the source document
      nodeList2 - list of nodes to be merged form the patch document
      exhaustedNodes - already merged nodes
      Returns:
      list of merged nodes
    • exhaustedNodesContains

      protected boolean exhaustedNodesContains(List<Node> exhaustedNodes, Node node)
    • checkNode

      protected boolean checkNode(List<Node> usedNodes, Node[] primaryNodes, Node node)
    • exactNodeExists

      protected boolean exactNodeExists(Node[] primaryNodes, Node testNode, List<Node> usedNodes)
    • replaceNode

      protected boolean replaceNode(Node[] primaryNodes, Node testNode, String attribute, List<Node> usedNodes)
    • replaceCeilingEntityNode

      protected boolean replaceCeilingEntityNode(Node[] primaryNodes, Node testNode, List<Node> usedNodes)
      special "replace" method for metatataOverride items having the "ceilingEntity" attribute specified. Instead of just overwriting a previously specified item, successive overrideItems with the same ceilingEntity are "merged" into the previous one; the resulting node contains the logical union of both old and new children
      Parameters:
      primaryNodes -
      testNode -
      usedNodes -
      Returns: