## com.saxonica.validate
Class RefSelectorWatch

    java.lang.Object
      com.saxonica.validate.AbstractWatch
          com.saxonica.validate.SelectorWatch
              com.saxonica.validate.RefSelectorWatch

All Implemented Interfaces:
  Watch

    public class RefSelectorWatch

extends SelectorWatch

This class watches the selector for a keyref constraint

Constructor Summary
`RefSelectorWatch(ConstraintChecker checker, KeyRef constraint)` Create a watch for values that might satisfy a keyref constraint

Method Summary
`void` `close()` The close() method is called immediately before the Watch is destroyed, that is, when the element whose declaration scopes the constraint implemented by this Watch goes out of scope.
`void` `notifyActualKey(Value[] keyValue, int locationId)` Notify a value selected by this KeyRef

Methods inherited from class com.saxonica.validate.SelectorWatch
`addFieldValue, checkRow, displayRow, endSelectedParentNode, getIdentityConstraint, reportValidationError, reportValidationError, startSelectedParentNode`

Methods inherited from class com.saxonica.validate.AbstractWatch
`getAnchorNode, getNamespaceResolver, getPipelineConfiguration, getSelection, notifySelectedLeafNode, open, setAnchorNode, setNamespaceResolver, setPipelineConfiguration, setSelection`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface com.saxonica.stream.watch.Watch
`getAnchorNode, getNamespaceResolver, getPipelineConfiguration, getSelection, notifySelectedLeafNode, open, setAnchorNode, setNamespaceResolver, setPipelineConfiguration, setSelection`

Constructor Detail

### RefSelectorWatch

    public RefSelectorWatch(ConstraintChecker checker,
                            KeyRef constraint)

  Create a watch for values that might satisfy a keyref constraint

  Parameters:
    `checker` - the ConstraintChecker that initiated this watch
    `constraint` - the constraint being checked

Method Detail

### notifyActualKey

    public void notifyActualKey(Value[] keyValue,
                                int locationId)
                         throws ValidationException

  Notify a value selected by this KeyRef

  Parameters:
    `keyValue` - an array holding the components (fields) making up the keyref value
    `locationId` - the location of the node containing the keyref values
  Throws:
    `ValidationException`

### close

    public void close()
               throws ValidationException

  The close() method is called immediately before the Watch is destroyed, that is, when the element whose declaration scopes the constraint implemented by this Watch goes out of scope. This implementation searches the list of all key values encountered looking (a) for key references that reference no corresponding key value (b) for key references that reference more than one corresponding key value (which can happen if the keyref and the key are defined at different levels of hierarchy.

  Specified by:
    `close` in interface `Watch`
  Overrides:
    `close` in class `SelectorWatch`
  Throws:
    `ValidationException`

Copyright (c) 2004-2010 Saxonica Limited. All rights reserved.