com.icl.saxon.trace

Class SaxonEventMulticaster

Implemented Interfaces:
EventListener, TraceListener

public class SaxonEventMulticaster
extends java.lang.Object
implements TraceListener

A class which implements efficient and thread-safe multi-cast event dispatching for the TraceListener evants. Grabbed from java.awt.AWTEventMulticaster

Field Summary

protected EventListener
a
protected EventListener
b

Constructor Summary

SaxonEventMulticaster(EventListener a, EventListener b)
Creates an event multicaster instance which chains listener-a with listener-b.

Method Summary

static TraceListener
add(TraceListener a, TraceListener b)
Adds trace-listener-a with trace-listener-b and returns the resulting multicast listener.
protected static EventListener
addInternal(EventListener a, EventListener b)
Returns the resulting multicast listener from adding listener-a and listener-b together.
void
close()
Called at end
void
enter(NodeInfo element, Context context)
Called when an element of the stylesheet gets processed
void
enterSource(NodeHandler handler, Context context)
Called when a node of the source tree gets processed
void
leave(NodeInfo element, Context context)
Called after an element of the stylesheet got processed
void
leaveSource(NodeHandler handler, Context context)
Called after a node of the source tree got processed
void
open()
Called at start
protected EventListener
remove(EventListener oldl)
Removes a listener from this multicaster and returns the resulting multicast listener.
static TraceListener
remove(TraceListener l, TraceListener oldl)
Removes the old trace-listener from trace-listener-l and returns the resulting multicast listener.
protected static EventListener
removeInternal(EventListener l, EventListener oldl)
Returns the resulting multicast listener after removing the old listener from listener-l.
void
toplevel(NodeInfo element)
Called for all top level elements

Field Details

a

protected final EventListener a

b

protected final EventListener b

Constructor Details

SaxonEventMulticaster

protected SaxonEventMulticaster(EventListener a,
                                EventListener b)
Creates an event multicaster instance which chains listener-a with listener-b.
Parameters:
a - listener-a
b - listener-b

Method Details

add

public static TraceListener add(TraceListener a,
                                TraceListener b)
Adds trace-listener-a with trace-listener-b and returns the resulting multicast listener.
Parameters:
a - trace-listener-a
b - trace-listener-b

addInternal

protected static EventListener addInternal(EventListener a,
                                           EventListener b)
Returns the resulting multicast listener from adding listener-a and listener-b together. If listener-a is null, it returns listener-b; If listener-b is null, it returns listener-a If neither are null, then it creates and returns a new EventMulticaster instance which chains a with b.
Parameters:
a - event listener-a
b - event listener-b

close

public void close()
Called at end
Specified by:
close in interface TraceListener

enter

public void enter(NodeInfo element,
                  Context context)
Called when an element of the stylesheet gets processed
Specified by:
enter in interface TraceListener

enterSource

public void enterSource(NodeHandler handler,
                        Context context)
Called when a node of the source tree gets processed
Specified by:
enterSource in interface TraceListener

leave

public void leave(NodeInfo element,
                  Context context)
Called after an element of the stylesheet got processed
Specified by:
leave in interface TraceListener

leaveSource

public void leaveSource(NodeHandler handler,
                        Context context)
Called after a node of the source tree got processed
Specified by:
leaveSource in interface TraceListener

open

public void open()
Called at start
Specified by:
open in interface TraceListener

remove

protected EventListener remove(EventListener oldl)
Removes a listener from this multicaster and returns the resulting multicast listener.
Parameters:
oldl - the listener to be removed

remove

public static TraceListener remove(TraceListener l,
                                   TraceListener oldl)
Removes the old trace-listener from trace-listener-l and returns the resulting multicast listener.
Parameters:
l - trace-listener-l
oldl - the trace-listener being removed

removeInternal

protected static EventListener removeInternal(EventListener l,
                                              EventListener oldl)
Returns the resulting multicast listener after removing the old listener from listener-l. If listener-l equals the old listener OR listener-l is null, returns null. Else if listener-l is an instance of SaxonEventMulticaster, then it removes the old listener from it. Else, returns listener l.
Parameters:
l - the listener being removed from
oldl - the listener being removed

toplevel

public void toplevel(NodeInfo element)
Called for all top level elements
Specified by:
toplevel in interface TraceListener