Package com.saxonica.ee.validate

## Class ConstraintChecker

- java.lang.Object
- - net.sf.saxon.event.SequenceReceiver
  - - com.saxonica.ee.stream.watch.WatchManager
    - - com.saxonica.ee.validate.ConstraintChecker

- All Implemented Interfaces:
    `javax.xml.transform.Result`, `Receiver`, `NamespaceResolver`

      public class ConstraintChecker
      extends WatchManager

  This class handles the checking of Schema-defined unique, key, and keyref constraints. It keeps track of the nesting of elements, and notifies a Watcher class when an element is found that matches a particular Selector.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class com.saxonica.ee.stream.watch.WatchManager

      `WatchManager.GroupingScope`

  - ### Field Summary

    - ### Fields inherited from class com.saxonica.ee.stream.watch.WatchManager

      `activeWatchStack, elementStackTop, watchList`

    - ### Fields inherited from class net.sf.saxon.event.SequenceReceiver

      `pipelineConfiguration, previousAtomic, systemId`

    - ### Fields inherited from interface javax.xml.transform.Result

      `PI_DISABLE_OUTPUT_ESCAPING, PI_ENABLE_OUTPUT_ESCAPING`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ConstraintChecker​(PipelineConfiguration pipe)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected void` | `addPrearrangedWatches()` |
    `ValidationContext` | `getValidationContext()` |
    `void` | `setElementDeclaration​(ElementDecl decl)` | setElementDeclaration is called immediately before the call on startElement.
    `void` | `setPipelineConfiguration​(PipelineConfiguration pipe)` | Set the pipeline configuration
    `void` | `setValidationContext​(ValidationContext vc)` |

    - ### Methods inherited from class com.saxonica.ee.stream.watch.WatchManager

      `addWatch, append, characters, close, comment, endDocument, endElement, endGroupingScope, getCurrentNode, getDepth, getDocumentNode, getMultiAccumulatorWatch, getOutputter, getURIForPrefix, getXPathContext, iteratePrefixes, processingInstruction, removeWatch, restartElement, setOutputter, setUnparsedEntity, setXPathContext, startCapturingGroupingWatches, startDocument, startElement, startGroupingScope, stopCapturingGroupingWatches, usesTypeAnnotations, watchAccumulators`

    - ### Methods inherited from class net.sf.saxon.event.SequenceReceiver

      `append, decompose, flatten, getConfiguration, getErrorCodeForDecomposingFunctionItems, getNamePool, getPipelineConfiguration, getSystemId, handlesAppend, open, setSystemId`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ConstraintChecker

          public ConstraintChecker​(PipelineConfiguration pipe)

  - ### Method Detail

    - #### setValidationContext

          public void setValidationContext​(ValidationContext vc)

    - #### getValidationContext

          public ValidationContext getValidationContext()

    - #### setPipelineConfiguration

          public void setPipelineConfiguration​(PipelineConfiguration pipe)

      Description copied from interface: `Receiver`
      Set the pipeline configuration
      Specified by:
        `setPipelineConfiguration` in interface `Receiver`
      Overrides:
        `setPipelineConfiguration` in class `SequenceReceiver`
      Parameters:
        `pipe` - the pipeline configuration

    - #### setElementDeclaration

          public void setElementDeclaration​(ElementDecl decl)
                                     throws XPathException

      setElementDeclaration is called immediately before the call on startElement. It identifies the element declaration that defines the just-started element, which in turn is used to create a Watch for constraints originating at this element.
      Parameters:
        `decl` - the element declaration
      Throws:
        `XPathException` - if an error occurs

    - #### addPrearrangedWatches

          protected void addPrearrangedWatches()
                                        throws XPathException

      Overrides:
        `addPrearrangedWatches` in class `WatchManager`
      Throws:
        `XPathException`