Class NGCCRuntime
- All Implemented Interfaces:
NGCCEventSource
,ContentHandler
- Direct Known Subclasses:
NGCCRuntimeEx
- Managing a stack of NGCCHandler objects and switching between them appropriately.
- Keep track of all Attributes.
- manage mapping between namespace URIs and prefixes.
- TODO: provide support for interleaving.
- Version:
- $Id: NGCCRuntime.java,v 1.15 2002/09/29 02:55:48 okajima Exp $
- Author:
- Kohsuke Kawaguchi (kk@kohsuke.org)
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
characters
(char[] ch, int start, int length) void
consumeAttribute
(int index) void
void
endElement
(String uri, String localname, String qname) void
endPrefixMapping
(String prefix) int
getAttributeIndex
(String uri, String localname) Attributes that belong to the current element.Gets the source location of the current event.void
ignorableWhitespace
(char[] ch, int start, int length) void
onEnterElementConsumed
(String uri, String localName, String qname, Attributes atts) Called by the generated handler code when an enter element event is consumed.void
onLeaveElementConsumed
(String uri, String localName, String qname) void
processingInstruction
(String target, String data) void
processList
(String str) void
redirectSubtree
(ContentHandler child, String uri, String local, String qname) This method can be called only from the enterElement handler.int
Replaces an old handler with a new handler, and returns ID of the EventReceiver thread.void
reset()
Cleans up all the data structure so that the object can be reused later.resolveNamespacePrefix
(String prefix) void
sendEnterAttribute
(int threadId, String uri, String local, String qname) void
sendEnterElement
(int threadId, String uri, String local, String qname, Attributes atts) Sends an enter element event to the specified EventReceiver thread.void
sendLeaveAttribute
(int threadId, String uri, String local, String qname) void
sendLeaveElement
(int threadId, String uri, String local, String qname) void
void
setDocumentLocator
(Locator _loc) void
setRootHandler
(NGCCHandler rootHandler) Sets the root handler, which will be used to parse the root element.void
skippedEntity
(String name) void
void
startElement
(String uri, String localname, String qname, Attributes atts) void
startPrefixMapping
(String prefix, String uri) void
void
protected void
unexpectedX
(String token) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.xml.sax.ContentHandler
declaration
-
Constructor Details
-
NGCCRuntime
public NGCCRuntime()
-
-
Method Details
-
setRootHandler
Sets the root handler, which will be used to parse the root element.This method can be called right after the object is created or the reset method is called. You can't replace the root handler while parsing is in progress.
Usually a generated class that corresponds to the <start> pattern will be used as the root handler, but any NGCCHandler can be a root handler.
- Throws:
IllegalStateException
- If this method is called but it doesn't satisfy the pre-condition stated above.
-
reset
public void reset()Cleans up all the data structure so that the object can be reused later. Normally, applications do not need to call this method directly, as the runtime resets itself after the endDocument method. -
setDocumentLocator
- Specified by:
setDocumentLocator
in interfaceContentHandler
-
getLocator
Gets the source location of the current event.One can call this method from RelaxNGCC handlers to access the line number information. Note that to
-
getCurrentAttributes
Attributes that belong to the current element.It's generally not recommended for applications to use this method. RelaxNGCC internally removes processed attributes, so this doesn't correctly reflect all the attributes an element carries.
-
replace
Description copied from interface:NGCCEventSource
Replaces an old handler with a new handler, and returns ID of the EventReceiver thread.- Specified by:
replace
in interfaceNGCCEventSource
-
processList
- Throws:
SAXException
-
startElement
public void startElement(String uri, String localname, String qname, Attributes atts) throws SAXException - Specified by:
startElement
in interfaceContentHandler
- Throws:
SAXException
-
onEnterElementConsumed
public void onEnterElementConsumed(String uri, String localName, String qname, Attributes atts) throws SAXException Called by the generated handler code when an enter element event is consumed.Pushes a new attribute set.
Note that attributes are NOT pushed at the startElement method, because the processing of the enterElement event can trigger other attribute events and etc.
This method will be called from one of handlers when it truely consumes the enterElement event.
- Throws:
SAXException
-
onLeaveElementConsumed
- Throws:
SAXException
-
endElement
- Specified by:
endElement
in interfaceContentHandler
- Throws:
SAXException
-
characters
- Specified by:
characters
in interfaceContentHandler
- Throws:
SAXException
-
ignorableWhitespace
- Specified by:
ignorableWhitespace
in interfaceContentHandler
- Throws:
SAXException
-
getAttributeIndex
-
consumeAttribute
- Throws:
SAXException
-
startPrefixMapping
- Specified by:
startPrefixMapping
in interfaceContentHandler
- Throws:
SAXException
-
endPrefixMapping
- Specified by:
endPrefixMapping
in interfaceContentHandler
- Throws:
SAXException
-
skippedEntity
- Specified by:
skippedEntity
in interfaceContentHandler
- Throws:
SAXException
-
processingInstruction
- Specified by:
processingInstruction
in interfaceContentHandler
- Throws:
SAXException
-
endDocument
- Specified by:
endDocument
in interfaceContentHandler
- Throws:
SAXException
-
startDocument
public void startDocument()- Specified by:
startDocument
in interfaceContentHandler
-
sendEnterAttribute
public void sendEnterAttribute(int threadId, String uri, String local, String qname) throws SAXException - Specified by:
sendEnterAttribute
in interfaceNGCCEventSource
- Throws:
SAXException
-
sendEnterElement
public void sendEnterElement(int threadId, String uri, String local, String qname, Attributes atts) throws SAXException Description copied from interface:NGCCEventSource
Sends an enter element event to the specified EventReceiver thread.- Specified by:
sendEnterElement
in interfaceNGCCEventSource
- Throws:
SAXException
-
sendLeaveAttribute
public void sendLeaveAttribute(int threadId, String uri, String local, String qname) throws SAXException - Specified by:
sendLeaveAttribute
in interfaceNGCCEventSource
- Throws:
SAXException
-
sendLeaveElement
public void sendLeaveElement(int threadId, String uri, String local, String qname) throws SAXException - Specified by:
sendLeaveElement
in interfaceNGCCEventSource
- Throws:
SAXException
-
sendText
- Specified by:
sendText
in interfaceNGCCEventSource
- Throws:
SAXException
-
redirectSubtree
public void redirectSubtree(ContentHandler child, String uri, String local, String qname) throws SAXException This method can be called only from the enterElement handler. The sub-tree rooted at the new element will be redirected to the specified ContentHandler.Currently active NGCCHandler will only receive the leaveElement event of the newly started element.
- Parameters:
uri
- ,local,qname Parameters passed to the enter element event. Used to simulate the startElement event for the new ContentHandler.- Throws:
SAXException
-
resolveNamespacePrefix
-
unexpectedX
- Throws:
SAXException
-
trace
-
traceln
-