Class PendingUpdateListImpl

java.lang.Object
com.saxonica.ee.update.PendingUpdateListImpl
All Implemented Interfaces:
PendingUpdateList

public class PendingUpdateListImpl extends Object implements PendingUpdateList
Concrete implementation of the Pending Update List
  • Constructor Details

    • PendingUpdateListImpl

      public PendingUpdateListImpl()
      Create a Pending Update List
  • Method Details

    • add

      public void add(PendingUpdateAction action) throws XPathException
      Add an action to the pending update list
      Parameters:
      action - the Pending Update Action to be added to the list
      Throws:
      XPathException - if the pending update action conflicts with an action that is already on the list
    • addPutAction

      public void addPutAction(NodeInfo node, String uri, Expression originator) throws XPathException
      Add a put() action to the pending update list
      Specified by:
      addPutAction in interface PendingUpdateList
      Parameters:
      node - (the first argument of put())
      uri - (the second argument of put())
      originator - the originating put() expression, for diagnostics
      Throws:
      XPathException - in the event of an error, for example two documents with the same URI
    • apply

      public void apply(XPathContext context, int validationMode) throws XPathException
      Apply the pending updates
      Specified by:
      apply in interface PendingUpdateList
      Parameters:
      context - the XPath dynamic evaluation context
      validationMode - the revalidation mode from the static context
      Throws:
      XPathException - if the operation fails
    • getAffectedTrees

      public Set<MutableNodeInfo> getAffectedTrees()
      Get the root nodes of the trees that are affected by updates in the pending update list
      Specified by:
      getAffectedTrees in interface PendingUpdateList
      Returns:
      the root nodes of affected trees, as a Set. Note that this includes all trees that have been updated; this is a superset of the trees that need to be revalidated, but updates that don't require revalidation are sufficiently unusual that we don't trouble with the distinction.