net.sf.saxon.pull

Class PullPushTee

Implemented Interfaces:
PullProvider

public class PullPushTee
extends PullFilter

PullPushTee is a pass-through filter class that links one PullProvider to another PullProvider in a pipeline, copying all events that are read into a push pipeline, supplied in the form of a Receiver.

This class can be used to insert a schema validator into a pull pipeline, since Saxon's schema validation is push-based. It could also be used to insert a serializer into the pipeline, allowing the XML document being "pulled" to be displayed for diagnostic purposes.

Field Summary

Fields inherited from class net.sf.saxon.pull.PullFilter

currentEvent

Fields inherited from interface net.sf.saxon.pull.PullProvider

ATOMIC_VALUE, ATTRIBUTE, COMMENT, END_DOCUMENT, END_ELEMENT, END_OF_INPUT, NAMESPACE, PROCESSING_INSTRUCTION, START_DOCUMENT, START_ELEMENT, START_OF_INPUT, TEXT

Constructor Summary

PullPushTee(PullProvider base, Receiver branch)
Create a PullPushTee

Method Summary

Receiver
getReceiver()
Get the Receiver to which events are being tee'd.
int
next()
Get the next event.

Methods inherited from class net.sf.saxon.pull.PullFilter

close, current, getAtomicValue, getAttributes, getFingerprint, getNameCode, getNamePool, getNamespaceDeclarations, getPipelineConfiguration, getSourceLocator, getStringValue, getTypeAnnotation, getUnderlyingProvider, getUnparsedEntities, next, setPipelineConfiguration, skipToMatchingEnd

Constructor Details

PullPushTee

public PullPushTee(PullProvider base,
                   Receiver branch)
            throws XPathException
Create a PullPushTee
Parameters:
base - the PullProvider to which requests are to be passed
branch - the Receiver to which all events are to be copied, as "push" events

Method Details

getReceiver

public Receiver getReceiver()
Get the Receiver to which events are being tee'd.
Returns:
the Receiver

next

public int next()
            throws XPathException
Get the next event. This implementation gets the next event from the underlying PullProvider, copies it to the branch Receiver, and then returns the event to the caller.
Specified by:
next in interface PullProvider
Overrides:
next in interface PullFilter
Returns:
an integer code indicating the type of event. The code PullProvider.END_OF_INPUT is returned at the end of the sequence.