⇒ Index (Frames) |  ⇒ Index (No Frames) |  ⇒ Package |  ⇒ Package Tree |  ⇒ Full Tree 
gnu.xml.pipeline

Class TeeConsumer

java.lang.Object
|
+--gnu.xml.pipeline.TeeConsumer

All Implemented Interfaces:
EventConsumer, ContentHandler, DTDHandler, DeclHandler, LexicalHandler


public final class TeeConsumer
extends java.lang.Object
implements EventConsumer, ContentHandler, DTDHandler, LexicalHandler, DeclHandler

Fans its events out to two other consumers, a "tee" filter stage in an event pipeline. Networks can be assembled with multiple output points.

Error handling should be simple if you remember that exceptions you throw will cancel later stages in that callback's pipeline, and generally the producer will stop if it sees such an exception. You may want to protect your pipeline against such backflows, making a kind of reverse filter (or valve?) so that certain exceptions thrown by your pipeline will caught and handled before the producer sees them. Just use a "try/catch" block, rememebering that really important cleanup tasks should be in "finally" clauses.

That issue isn't unique to "tee" consumers, but tee consumers have the additional twist that exceptions thrown by the first consumer will cause the second consumer not to see the callback (except for the endDocument callback, which signals state cleanup).

Author:
David Brownell

Constructor Summary

TeeConsumer(EventConsumer car, EventConsumer cdr)

Constructs a consumer which sends all its events to the first consumer, and then the second one.

Method Summary

void

attributeDecl(java.lang.String eName, java.lang.String aName, java.lang.String type, java.lang.String mode, java.lang.String value)

void

characters(char ch[] , int start, int length)

void

comment(char ch[] , int start, int length)

void

elementDecl(java.lang.String name, java.lang.String model)

void

endCDATA()

void

endDocument()

void

endDTD()

void

endElement(java.lang.String uri, java.lang.String localName, java.lang.String qName)

void

endEntity(java.lang.String name)

void

endPrefixMapping(java.lang.String prefix)

void

externalEntityDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId)

ContentHandler

getContentHandler()

Returns the content handler being used.

DTDHandler

getDTDHandler()

Returns the dtd handler being used.

EventConsumer

getFirst()

Returns the first pipeline to get event calls.

java.lang.Object

getProperty(java.lang.String id)

Returns the declaration or lexical handler being used.

EventConsumer

getRest()

Returns the second pipeline to get event calls.

void

ignorableWhitespace(char ch[] , int start, int length)

void

internalEntityDecl(java.lang.String name, java.lang.String value)

void

notationDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId)

void

processingInstruction(java.lang.String target, java.lang.String data)

void

setDocumentLocator(Locator locator)

void

setErrorHandler(ErrorHandler handler)

Provides the error handler to both subsequent nodes of this filter stage.

void

skippedEntity(java.lang.String name)

void

startCDATA()

void

startDocument()

void

startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId)

void

startElement(java.lang.String uri, java.lang.String localName, java.lang.String qName, Attributes atts)

void

startEntity(java.lang.String name)

void

startPrefixMapping(java.lang.String prefix, java.lang.String uri)

void

unparsedEntityDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId, java.lang.String notationName)

Constructor Details

TeeConsumer

public TeeConsumer(EventConsumer car, EventConsumer cdr)

Constructs a consumer which sends all its events to the first consumer, and then the second one. If the first consumer throws an exception, the second one will not see the event which caused that exception to be reported.

Parameters:
car - The first consumer to get the events
cdr - The second consumer to get the events

Method Details

attributeDecl

public void attributeDecl(java.lang.String eName, java.lang.String aName, java.lang.String type, java.lang.String mode, java.lang.String value)

Parameters:
eName
aName
type
mode
value

characters

public void characters(char ch[] , int start, int length)

Parameters:
start
length

comment

public void comment(char ch[] , int start, int length)

Parameters:
start
length

elementDecl

public void elementDecl(java.lang.String name, java.lang.String model)

Parameters:
name
model

endCDATA

public void endCDATA()


endDocument

public void endDocument()


endDTD

public void endDTD()


endElement

public void endElement(java.lang.String uri, java.lang.String localName, java.lang.String qName)

Parameters:
uri
localName
qName

endEntity

public void endEntity(java.lang.String name)

Parameters:
name

endPrefixMapping

public void endPrefixMapping(java.lang.String prefix)

Parameters:
prefix

externalEntityDecl

public void externalEntityDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId)

Parameters:
name
publicId
systemId

getContentHandler

public final ContentHandler getContentHandler()

Returns the content handler being used.


getDTDHandler

public final DTDHandler getDTDHandler()

Returns the dtd handler being used.


getFirst

public EventConsumer getFirst()

Returns the first pipeline to get event calls.


getProperty

public final Object getProperty(java.lang.String id)

Returns the declaration or lexical handler being used.

Parameters:
id

getRest

public EventConsumer getRest()

Returns the second pipeline to get event calls.


ignorableWhitespace

public void ignorableWhitespace(char ch[] , int start, int length)

Parameters:
start
length

internalEntityDecl

public void internalEntityDecl(java.lang.String name, java.lang.String value)

Parameters:
name
value

notationDecl

public void notationDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId)

Parameters:
name
publicId
systemId

processingInstruction

public void processingInstruction(java.lang.String target, java.lang.String data)

Parameters:
target
data

setDocumentLocator

public void setDocumentLocator(Locator locator)

Parameters:
locator

setErrorHandler

public void setErrorHandler(ErrorHandler handler)

Provides the error handler to both subsequent nodes of this filter stage.

Parameters:
handler

skippedEntity

public void skippedEntity(java.lang.String name)

Parameters:
name

startCDATA

public void startCDATA()


startDocument

public void startDocument()


startDTD

public void startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId)

Parameters:
name
publicId
systemId

startElement

public void startElement(java.lang.String uri, java.lang.String localName, java.lang.String qName, Attributes atts)

Parameters:
uri
localName
qName
atts

startEntity

public void startEntity(java.lang.String name)

Parameters:
name

startPrefixMapping

public void startPrefixMapping(java.lang.String prefix, java.lang.String uri)

Parameters:
prefix
uri

unparsedEntityDecl

public void unparsedEntityDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId, java.lang.String notationName)

Parameters:
name
publicId
systemId
notationName