Class NGCCRuntimeEx
- All Implemented Interfaces:
PatcherManager,NGCCEventSource,ContentHandler
- Author:
- Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com)
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.sun.xml.xsom.impl.parser.PatcherManager
PatcherManager.Patcher -
Field Summary
FieldsModifier and TypeFieldDescriptionbooleanThe @attributeFormDefault value of the current schema.intThe @blockDefault value of the current schema.booleanTrue if the current schema is in a chameleon mode.The schema currently being parsed.Points to theSchemaDocumentImplthat represents the schema document being parsed.booleanThe @elementFormDefault value of the current schema.intThe @finalDefault value of the current schema.final ParserContextcoordinator.static final String -
Method Summary
Modifier and TypeMethodDescriptionvoidaddErrorChecker(Patch patcher) voidaddPatcher(Patch patcher) voidUtility function for collapsing the namespaces inside qname declarations and 'name' attribute values that should contain the qname valuesCreates a copy of the current locator object.Creates a new instance of annotation parser.Returns an immutable snapshot of the current context.createXmlString(String value) voidendPrefixMapping(String prefix) Gets the element name that contains the annotation element.This method works correctly only when called by the annotation handler.booleanCalled when a new document is being parsed and checks if the document has already been parsed before.static booleanvoidimportSchema(String ns, String schemaLocation) Imports the specified schema.voidincludeSchema(String schemaLocation) Includes the specified schema.voidonEnterElementConsumed(String uri, String localName, String qname, Attributes atts) Called by the generated handler code when an enter element event is consumed.voidonLeaveElementConsumed(String uri, String localName, String qname) booleanvoidparseEntity(InputSource source, boolean includeMode, String expectedNamespace, Locator importLocation) Parses the specified entity.parseUName(String qname) Parses UName under the given context.voidreportError(String msg) voidreportError(String msg, Locator loc) Reports an error during the parsing.voidstartPrefixMapping(String prefix, String uri) protected voidunexpectedX(String token) Methods inherited from class com.sun.xml.xsom.impl.parser.state.NGCCRuntime
characters, consumeAttribute, endDocument, endElement, getAttributeIndex, getCurrentAttributes, getLocator, ignorableWhitespace, processingInstruction, processList, redirectSubtree, replace, reset, resolveNamespacePrefix, sendEnterAttribute, sendEnterElement, sendLeaveAttribute, sendLeaveElement, sendText, setDocumentLocator, setRootHandler, skippedEntity, startDocument, startElement, trace, traceln
-
Field Details
-
parser
coordinator. -
currentSchema
The schema currently being parsed. -
finalDefault
public int finalDefaultThe @finalDefault value of the current schema. -
blockDefault
public int blockDefaultThe @blockDefault value of the current schema. -
elementFormDefault
public boolean elementFormDefaultThe @elementFormDefault value of the current schema. True if local elements are qualified by default. -
attributeFormDefault
public boolean attributeFormDefaultThe @attributeFormDefault value of the current schema. True if local attributes are qualified by default. -
chameleonMode
public boolean chameleonModeTrue if the current schema is in a chameleon mode. This changes the way QNames are interpreted. Life is very miserable with XML Schema, as you see. -
document
Points to theSchemaDocumentImplthat represents the schema document being parsed. -
XMLSchemaNSURI
- See Also:
-
-
Method Details
-
checkDoubleDefError
- Throws:
SAXException
-
ignorableDuplicateComponent
-
addPatcher
- Specified by:
addPatcherin interfacePatcherManager
-
addErrorChecker
- Specified by:
addErrorCheckerin interfacePatcherManager
-
reportError
Description copied from interface:PatcherManagerReports an error during the parsing.- Specified by:
reportErrorin interfacePatcherManagerloc- location of the error in the source file, or null if it's unavailable.- Throws:
SAXException
-
reportError
- Throws:
SAXException
-
includeSchema
Includes the specified schema.- Parameters:
schemaLocation-- Throws:
SAXException
-
importSchema
Imports the specified schema.- Parameters:
ns-schemaLocation-- Throws:
SAXException
-
hasAlreadyBeenRead
public boolean hasAlreadyBeenRead()Called when a new document is being parsed and checks if the document has already been parsed before.Used to avoid recursive inclusion. Note that the same document will be parsed multiple times if they are for different target namespaces.
Document Graph Model
The challenge we are facing here is that you have a graph of documents that reference each other. Each document has an unique URI to identify themselves, and references are done by using those. The graph may contain cycles.
Our goal here is to parse all the documents in the graph, without parsing the same document twice. This method implements this check.
One complication is the chameleon schema; a document can be parsed multiple times if they are under different target namespaces.
Also, note that when you resolve relative URIs in the @schemaLocation, their base URI is *NOT* the URI of the document.
- Returns:
- true if the document has already been processed and thus needs to be skipped.
-
parseEntity
public void parseEntity(InputSource source, boolean includeMode, String expectedNamespace, Locator importLocation) throws SAXException Parses the specified entity.- Parameters:
source-importLocation- The source location of the import/include statement. Used for reporting errors.includeMode-expectedNamespace-- Throws:
SAXException
-
createAnnotationParser
Creates a new instance of annotation parser.- Returns:
- Annotation parser
-
getAnnotationContextElementName
Gets the element name that contains the annotation element.This method works correctly only when called by the annotation handler.- Returns:
- Element name
-
copyLocator
Creates a copy of the current locator object.- Returns:
- Locator copy
-
getErrorHandler
-
onEnterElementConsumed
public void onEnterElementConsumed(String uri, String localName, String qname, Attributes atts) throws SAXException Description copied from class:NGCCRuntimeCalled 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.
- Overrides:
onEnterElementConsumedin classNGCCRuntime- Throws:
SAXException
-
onLeaveElementConsumed
- Overrides:
onLeaveElementConsumedin classNGCCRuntime- Throws:
SAXException
-
createValidationContext
Returns an immutable snapshot of the current context.- Returns:
- Snapshot of current context
-
createXmlString
-
startPrefixMapping
- Specified by:
startPrefixMappingin interfaceContentHandler- Overrides:
startPrefixMappingin classNGCCRuntime- Throws:
SAXException
-
endPrefixMapping
- Specified by:
endPrefixMappingin interfaceContentHandler- Overrides:
endPrefixMappingin classNGCCRuntime- Throws:
SAXException
-
parseUName
Parses UName under the given context.- Parameters:
qname- Attribute name.- Returns:
- New
UNameinstance based on attribute name. - Throws:
SAXException
-
collapse
Utility function for collapsing the namespaces inside qname declarations and 'name' attribute values that should contain the qname values- Parameters:
text- String where whitespaces should be collapsed- Returns:
- String with whitespaces collapsed
-
parseBoolean
-
unexpectedX
- Overrides:
unexpectedXin classNGCCRuntime- Throws:
SAXException
-
parseForeignAttributes
-