Class NGCCRuntimeEx

  • All Implemented Interfaces:
    PatcherManager, NGCCEventSource, org.xml.sax.ContentHandler

    public class NGCCRuntimeEx
    extends NGCCRuntime
    implements PatcherManager
    NGCCRuntime extended with various utility methods for parsing XML Schema.
    Author:
    Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com)
    • Field Detail

      • currentSchema

        public SchemaImpl currentSchema
        The schema currently being parsed.
      • finalDefault

        public int finalDefault
        The @finalDefault value of the current schema.
      • blockDefault

        public int blockDefault
        The @blockDefault value of the current schema.
      • elementFormDefault

        public boolean elementFormDefault
        The @elementFormDefault value of the current schema. True if local elements are qualified by default.
      • attributeFormDefault

        public boolean attributeFormDefault
        The @attributeFormDefault value of the current schema. True if local attributes are qualified by default.
      • chameleonMode

        public boolean chameleonMode
        True 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.
    • Method Detail

      • checkDoubleDefError

        public void checkDoubleDefError​(XSDeclaration c)
                                 throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • ignorableDuplicateComponent

        public static boolean ignorableDuplicateComponent​(XSDeclaration c)
      • reportError

        public void reportError​(java.lang.String msg,
                                org.xml.sax.Locator loc)
                         throws org.xml.sax.SAXException
        Description copied from interface: PatcherManager
        Reports an error during the parsing.
        Specified by:
        reportError in interface PatcherManager
        loc - location of the error in the source file, or null if it's unavailable.
        Throws:
        org.xml.sax.SAXException
      • reportError

        public void reportError​(java.lang.String msg)
                         throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • includeSchema

        public void includeSchema​(java.lang.String schemaLocation)
                           throws org.xml.sax.SAXException
        Includes the specified schema.
        Throws:
        org.xml.sax.SAXException
      • importSchema

        public void importSchema​(java.lang.String ns,
                                 java.lang.String schemaLocation)
                          throws org.xml.sax.SAXException
        Imports the specified schema.
        Throws:
        org.xml.sax.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​(org.xml.sax.InputSource source,
                                boolean includeMode,
                                java.lang.String expectedNamespace,
                                org.xml.sax.Locator importLocation)
                         throws org.xml.sax.SAXException
        Parses the specified entity.
        Parameters:
        importLocation - The source location of the import/include statement. Used for reporting errors.
        Throws:
        org.xml.sax.SAXException
      • createAnnotationParser

        public AnnotationParser createAnnotationParser()
        Creates a new instance of annotation parser.
      • getAnnotationContextElementName

        public java.lang.String getAnnotationContextElementName()
        Gets the element name that contains the annotation element. This method works correctly only when called by the annotation handler.
      • copyLocator

        public org.xml.sax.Locator copyLocator()
        Creates a copy of the current locator object.
      • getErrorHandler

        public org.xml.sax.ErrorHandler getErrorHandler()
      • onEnterElementConsumed

        public void onEnterElementConsumed​(java.lang.String uri,
                                           java.lang.String localName,
                                           java.lang.String qname,
                                           org.xml.sax.Attributes atts)
                                    throws org.xml.sax.SAXException
        Description copied from class: NGCCRuntime
        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.

        Overrides:
        onEnterElementConsumed in class NGCCRuntime
        Throws:
        org.xml.sax.SAXException
      • onLeaveElementConsumed

        public void onLeaveElementConsumed​(java.lang.String uri,
                                           java.lang.String localName,
                                           java.lang.String qname)
                                    throws org.xml.sax.SAXException
        Overrides:
        onLeaveElementConsumed in class NGCCRuntime
        Throws:
        org.xml.sax.SAXException
      • createValidationContext

        public org.relaxng.datatype.ValidationContext createValidationContext()
        Returns an immutable snapshot of the current context.
      • createXmlString

        public XmlString createXmlString​(java.lang.String value)
      • startPrefixMapping

        public void startPrefixMapping​(java.lang.String prefix,
                                       java.lang.String uri)
                                throws org.xml.sax.SAXException
        Specified by:
        startPrefixMapping in interface org.xml.sax.ContentHandler
        Overrides:
        startPrefixMapping in class NGCCRuntime
        Throws:
        org.xml.sax.SAXException
      • endPrefixMapping

        public void endPrefixMapping​(java.lang.String prefix)
                              throws org.xml.sax.SAXException
        Specified by:
        endPrefixMapping in interface org.xml.sax.ContentHandler
        Overrides:
        endPrefixMapping in class NGCCRuntime
        Throws:
        org.xml.sax.SAXException
      • parseUName

        public UName parseUName​(java.lang.String qname)
                         throws org.xml.sax.SAXException
        Parses UName under the given context.
        Throws:
        org.xml.sax.SAXException
      • parseBoolean

        public boolean parseBoolean​(java.lang.String v)
      • unexpectedX

        protected void unexpectedX​(java.lang.String token)
                            throws org.xml.sax.SAXException
        Overrides:
        unexpectedX in class NGCCRuntime
        Throws:
        org.xml.sax.SAXException