Class RootXmlReadHandler

java.lang.Object
org.xml.sax.helpers.DefaultHandler
org.pentaho.reporting.libraries.xmlns.parser.RootXmlReadHandler
All Implemented Interfaces:
ContentHandler, DTDHandler, EntityResolver, ErrorHandler
Direct Known Subclasses:
MultiplexRootElementHandler

public class RootXmlReadHandler extends DefaultHandler
A base root SAX handler.
Author:
Peter Becker, Thomas Morgner
  • Constructor Details

    • RootXmlReadHandler

      public RootXmlReadHandler(org.pentaho.reporting.libraries.resourceloader.ResourceManager manager, org.pentaho.reporting.libraries.resourceloader.ResourceKey source, long version)
      Creates a new root-handler using the given versioning information and resource-manager.
      Parameters:
      manager - the resource manager that loaded this xml-file.
      source - the source-key that identifies from where the file was loaded.
      version - the versioning information for the root-file.
    • RootXmlReadHandler

      public RootXmlReadHandler(org.pentaho.reporting.libraries.resourceloader.ResourceManager manager, org.pentaho.reporting.libraries.resourceloader.ResourceKey source, org.pentaho.reporting.libraries.resourceloader.ResourceKey context, long version)
      Creates a new root-handler using the given versioning information and resource-manager.
      Parameters:
      manager - the resource manager that loaded this xml-file.
      source - the source-key that identifies from where the file was loaded.
      context - the key that should be used to resolve relative paths.
      version - the versioning information for the root-file.
  • Method Details

    • getContext

      public org.pentaho.reporting.libraries.resourceloader.ResourceKey getContext()
      Returns the context key. This key may specify a base context for loading resources. (It behaves like the 'base-url' setting of HTML and allows to reference external resources as relative paths without being bound to the original location of the xml file.)
      Returns:
      the context.
    • getResourceManager

      public org.pentaho.reporting.libraries.resourceloader.ResourceManager getResourceManager()
      Returns the resource-manager that is used to load external resources.
      Returns:
      the resource-manager.
    • isFirstCall

      public boolean isFirstCall()
      Checks, whether this is the first call to the handler.
      Returns:
      true, if this is the first call, false otherwise.
    • getSource

      public org.pentaho.reporting.libraries.resourceloader.ResourceKey getSource()
      Returns the source key. This key points to the file or stream that is currently parsed.
      Returns:
      the source key.
    • getDependencyCollector

      public org.pentaho.reporting.libraries.resourceloader.DependencyCollector getDependencyCollector()
      Returns the current dependency collector for this parse-operation. The Collector allows to check compound-keys for changes.
      Returns:
      the dependency collector.
    • getCommentHandler

      public CommentHandler getCommentHandler()
      Returns the comment handler that is used to collect comments.
      Returns:
      the comment handler.
    • getParserConfiguration

      public org.pentaho.reporting.libraries.base.config.DefaultConfiguration getParserConfiguration()
      Returns the parser-configuration. This can be use to configure the parsing process.
      Returns:
      the parser's configuration.
    • setDocumentLocator

      public void setDocumentLocator(Locator locator)
      Receive an object for locating the origin of SAX document events.

      The documentLocator allows the application to determine the end position of any document-related event, even if the parser is not reporting an error. Typically, the application will use this information for reporting its own errors (such as character content that does not match an application's business rules). The information returned by the documentLocator is probably not sufficient for use with a search engine.

      Specified by:
      setDocumentLocator in interface ContentHandler
      Overrides:
      setDocumentLocator in class DefaultHandler
      Parameters:
      locator - the documentLocator.
    • getDocumentLocator

      public Locator getDocumentLocator()
      Returns the current documentLocator.
      Returns:
      the documentLocator.
    • setHelperObject

      public void setHelperObject(String key, Object value)
      Adds an object to the registry.
      Parameters:
      key - the key.
      value - the object.
    • getHelperObject

      public Object getHelperObject(String key)
      Returns an object from the registry.
      Parameters:
      key - the key.
      Returns:
      The object.
    • getHelperObjectNames

      public String[] getHelperObjectNames()
      Returns the array of all currently registered helper-objects. Helper objects are used as simple communication process between the various handler implementations.
      Returns:
      the helper object names.
    • setRootHandler

      protected void setRootHandler(XmlReadHandler handler)
      Sets the root SAX handler.
      Parameters:
      handler - the SAX handler.
    • getRootHandler

      protected XmlReadHandler getRootHandler()
      Returns the root SAX handler.
      Returns:
      the root SAX handler.
    • recurse

      public void recurse(XmlReadHandler handler, String uri, String tagName, Attributes attrs) throws SAXException
      Start a new handler stack and delegate to another handler.
      Parameters:
      handler - the handler.
      uri - the namespace uri of the current tag.
      tagName - the tag name.
      attrs - the attributes.
      Throws:
      SAXException - if there is a problem with the parser.
    • delegate

      public void delegate(XmlReadHandler handler, String uri, String tagName, Attributes attrs) throws SAXException
      Delegate to another handler.
      Parameters:
      handler - the new handler.
      tagName - the tag name.
      uri - the namespace uri of the current tag.
      attrs - the attributes.
      Throws:
      SAXException - if there is a problem with the parser.
    • unwind

      public void unwind(String uri, String tagName) throws SAXException
      Hand control back to the previous handler.
      Parameters:
      tagName - the tagname.
      uri - the namespace uri of the current tag.
      Throws:
      SAXException - if there is a problem with the parser.
    • getCurrentHandler

      protected XmlReadHandler getCurrentHandler()
      Returns the current handler.
      Returns:
      The current handler.
    • startDocument

      public void startDocument() throws SAXException
      Starts processing a document.
      Specified by:
      startDocument in interface ContentHandler
      Overrides:
      startDocument in class DefaultHandler
      Throws:
      SAXException - not in this implementation.
    • startElement

      public final void startElement(String originalUri, String localName, String qName, Attributes attributes) throws SAXException
      Starts processing an element.
      Specified by:
      startElement in interface ContentHandler
      Overrides:
      startElement in class DefaultHandler
      Parameters:
      originalUri - the URI.
      localName - the local name.
      qName - the qName.
      attributes - the attributes.
      Throws:
      SAXException - if there is a parsing problem.
    • wrapAttributes

      protected Attributes wrapAttributes(Attributes attributes)
    • interceptFirstStartElement

      protected void interceptFirstStartElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
      A helper call that allows to override the first call to the startElememt method. This allows the implementation of an multiplexing parser, which requires the information from the root-level elements.
      Parameters:
      uri - the namespace uri of the current tag.
      localName - the unqualified tag-name.
      qName - the qualified tag-name.
      attributes - the attributes of the current element.
      Throws:
      SAXException - if something goes wrong.
    • pushDefaultNamespace

      protected final void pushDefaultNamespace(String nsuri)
      Updates the current default namespace.
      Parameters:
      nsuri - the uri of the current namespace.
    • installRootHandler

      protected void installRootHandler(XmlReadHandler handler, String uri, String localName, Attributes attributes) throws SAXException
      Sets and configures the root handle for the given root-level element.
      Parameters:
      handler - the read handler for the root element.
      uri - the uri of the root elements namespace.
      localName - the local tagname of the root element.
      attributes - the attributes of the root element.
      Throws:
      SAXException - if something goes wrong.
    • characters

      public void characters(char[] ch, int start, int length) throws SAXException
      Process character data.
      Specified by:
      characters in interface ContentHandler
      Overrides:
      characters in class DefaultHandler
      Parameters:
      ch - the character buffer.
      start - the start index.
      length - the length of the character data.
      Throws:
      SAXException - if there is a parsing error.
    • endElement

      public final void endElement(String originalUri, String localName, String qName) throws SAXException
      Finish processing an element.
      Specified by:
      endElement in interface ContentHandler
      Overrides:
      endElement in class DefaultHandler
      Parameters:
      originalUri - the URI.
      localName - the local name.
      qName - the qName.
      Throws:
      SAXException - if there is a parsing error.
    • getResult

      public Object getResult() throws SAXException
      Tries to return the parse-result of the selected root-handler.
      Returns:
      the parse-result.
      Throws:
      SAXException - if an error occurs.
    • getEntityResolver

      public EntityResolver getEntityResolver()
    • isXmlnsUrisNotAvailable

      public boolean isXmlnsUrisNotAvailable()
      Returns, whether the parser resolves namespace-URIs.
      Returns:
      true, if the parser will *NOT* resolve namespaces, false otherwise.
    • setXmlnsUrisNotAvailable

      public void setXmlnsUrisNotAvailable(boolean xmlnsUrisNotAvailable)
      Sets a hint that the parser will not be able to return URIs for XML-Namespaces. You should not see this nowadays, as all the common JAXP-parser implementations seem to work fine with namespaces.
      Parameters:
      xmlnsUrisNotAvailable - a flag indicating that the XML parser has troubles resolving namespaces.