class DispatchHandler extends java.lang.Object implements ElementHandler
DispatchHandler
implements the ElementHandler
interface and provides a means to register multiple
ElementHandler
instances to be used by an event based
processor. This is a special ElementHandler
in that it's
onStart and onEnd implementation methods are called for every
element encountered during the parse. It then delegates to other
ElementHandler
instances registered with it to process the
elements encountered.
Modifier and Type | Field and Description |
---|---|
private boolean |
atRoot
Whether the parser is at the root element or not
|
private ElementHandler |
defaultHandler
ElementHandler to use by default for element paths with no
handlers registered |
private java.util.HashMap<java.lang.String,ElementHandler> |
handlers
HashMap maintains the mapping between element paths and
handlers |
private java.util.ArrayList<ElementHandler> |
handlerStack
maintains a stack of previously encountered handlers
|
private java.lang.String |
path
The current path in the XML tree (i.e.
|
private java.util.ArrayList<java.lang.String> |
pathStack
maintains a stack of previously encountered paths
|
Constructor and Description |
---|
DispatchHandler() |
Modifier and Type | Method and Description |
---|---|
void |
addHandler(java.lang.String handlerPath,
ElementHandler handler)
Adds the
ElementHandler to be called when the specified
path is encounted. |
boolean |
containsHandler(java.lang.String handlerPath)
DOCUMENT ME!
|
int |
getActiveHandlerCount()
Returns the number of
ElementHandler objects that are waiting for
their elements closing tag. |
ElementHandler |
getHandler(java.lang.String handlerPath)
Get the registered
ElementHandler for the specified path. |
java.lang.String |
getPath()
DOCUMENT ME!
|
void |
onEnd(ElementPath elementPath)
Called by an event based processor when an elements closing tag is
encountered.
|
void |
onStart(ElementPath elementPath)
Called by an event based processor when an elements openning tag is
encountered.
|
ElementHandler |
removeHandler(java.lang.String handlerPath)
Removes the
ElementHandler from the event based processor,
for the specified path. |
void |
resetHandlers()
Used to remove all the Element Handlers and return things back to the way
they were when object was created.
|
void |
setDefaultHandler(ElementHandler handler)
When multiple
ElementHandler instances have been
registered, this will set a default ElementHandler to be
called for any path which does NOT have a handler registered. |
private boolean atRoot
private java.lang.String path
private java.util.ArrayList<java.lang.String> pathStack
private java.util.ArrayList<ElementHandler> handlerStack
private java.util.HashMap<java.lang.String,ElementHandler> handlers
HashMap
maintains the mapping between element paths and
handlersprivate ElementHandler defaultHandler
ElementHandler
to use by default for element paths with no
handlers registeredpublic void addHandler(java.lang.String handlerPath, ElementHandler handler)
ElementHandler
to be called when the specified
path is encounted.handlerPath
- is the path to be handledhandler
- is the ElementHandler
to be called by the event
based processor.public ElementHandler removeHandler(java.lang.String handlerPath)
ElementHandler
from the event based processor,
for the specified path.handlerPath
- is the path to remove the ElementHandler
for.public boolean containsHandler(java.lang.String handlerPath)
handlerPath
- DOCUMENT ME!ElementHandler
is registered for the
specified path.public ElementHandler getHandler(java.lang.String handlerPath)
ElementHandler
for the specified path.handlerPath
- XML path to get the handler forpublic int getActiveHandlerCount()
ElementHandler
objects that are waiting for
their elements closing tag.public void setDefaultHandler(ElementHandler handler)
ElementHandler
instances have been
registered, this will set a default ElementHandler
to be
called for any path which does NOT have a handler registered.handler
- is the ElementHandler
to be called by the event
based processor.public void resetHandlers()
public java.lang.String getPath()
public void onStart(ElementPath elementPath)
ElementHandler
onStart
in interface ElementHandler
elementPath
- is the current ElementPath
to processpublic void onEnd(ElementPath elementPath)
ElementHandler
onEnd
in interface ElementHandler
elementPath
- is the current ElementPath
to process