Package org.dom4j.io

Class XMPPPacketReader

java.lang.Object
org.dom4j.io.XMPPPacketReader

public class XMPPPacketReader extends Object

XMPPPacketReader is a Reader of DOM4J documents that uses the fast XML Pull Parser 3.x. It is very fast for use in SOAP style environments.

Author:
Pelle Braendgaard, James Strachan
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final Collection<String>
    Stream of various endpoints (eg: s2s, c2s) use different default namespaces.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
    XMPPPacketReader(org.dom4j.DocumentFactory factory)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addHandler(String path, org.dom4j.ElementHandler handler)
    Adds the ElementHandler to be called when the specified path is encounted.
    protected Reader
    Factory method to create a Reader from the given InputStream.
    protected org.dom4j.io.DispatchHandler
     
    org.dom4j.DocumentFactory
     
    long
    Returns the last time a full Document was read or a heartbeat was received.
    static Set<org.dom4j.Namespace>
    getPrefixedNamespacesOnCurrentElement(org.xmlpull.v1.XmlPullParser xpp)
    Retrieves a collection of namespaces declared in the current element that the parser is on, that are not defined in IGNORED_NAMESPACE_ON_STANZA, is not "http://etherx.jabber.org/streams" and that are not the default namespace (the namespaces returned all have a defined prefix).
    org.xmlpull.v1.XmlPullParserFactory
     
     
    org.dom4j.Document
     
    org.dom4j.Document
     
    org.dom4j.Document
    read(char[] text)
    Reads a Document from the given array of characters
    org.dom4j.Document
    read(File file)
    Reads a Document from the given File
    org.dom4j.Document
    Reads a Document from the given stream
    org.dom4j.Document
    read(InputStream in, String systemID)
    Reads a Document from the given stream
    org.dom4j.Document
    read(Reader reader)
    Reads a Document from the given Reader
    org.dom4j.Document
    read(Reader reader, String systemID)
    Reads a Document from the given Reader
    org.dom4j.Document
    read(String systemID)
    Reads a Document from the given URL or filename.
    org.dom4j.Document
    read(String charSet, InputStream in)
    Reads a Document from the given stream
    org.dom4j.Document
    read(URL url)
    Reads a Document from the given URL
    void
    Removes the ElementHandler from the event based processor, for the specified path.
    void
    setDefaultHandler(org.dom4j.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.
    protected void
    setDispatchHandler(org.dom4j.io.DispatchHandler dispatchHandler)
     
    void
    setDocumentFactory(org.dom4j.DocumentFactory factory)
    This sets the DocumentFactory used to create new documents.
    void
    setXPPFactory(org.xmlpull.v1.XmlPullParserFactory xppFactory)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • IGNORED_NAMESPACE_ON_STANZA

      public static final Collection<String> IGNORED_NAMESPACE_ON_STANZA
      Stream of various endpoints (eg: s2s, c2s) use different default namespaces. To be able to use a stanza that's parsed on one type of endpoint in the context of another endpoint, we explicitly ignore these namespaced. This allows us to forward, for instance, a stanza received via C2S (which has the "jabber:client" default namespace) on a S2S stream (which has the "jabber:server" default namespace).
      See Also:
  • Constructor Details

    • XMPPPacketReader

      public XMPPPacketReader()
    • XMPPPacketReader

      public XMPPPacketReader(org.dom4j.DocumentFactory factory)
  • Method Details

    • getPrefixedNamespacesOnCurrentElement

      @Nonnull public static Set<org.dom4j.Namespace> getPrefixedNamespacesOnCurrentElement(org.xmlpull.v1.XmlPullParser xpp) throws org.xmlpull.v1.XmlPullParserException
      Retrieves a collection of namespaces declared in the current element that the parser is on, that are not defined in IGNORED_NAMESPACE_ON_STANZA, is not "http://etherx.jabber.org/streams" and that are not the default namespace (the namespaces returned all have a defined prefix).
      Parameters:
      xpp - the parser
      Returns:
      A collection of namespaces
      Throws:
      org.xmlpull.v1.XmlPullParserException - On any problem thrown by the XML parser.
    • read

      public org.dom4j.Document read(File file) throws org.dom4j.DocumentException, IOException, org.xmlpull.v1.XmlPullParserException

      Reads a Document from the given File

      Parameters:
      file - is the File to read from.
      Returns:
      the newly created Document instance
      Throws:
      org.dom4j.DocumentException - if an error occurs during parsing.
      IOException - if an error occurs during reading
      org.xmlpull.v1.XmlPullParserException - if an error occurs creating a pull parser
    • read

      public org.dom4j.Document read(URL url) throws org.dom4j.DocumentException, IOException, org.xmlpull.v1.XmlPullParserException

      Reads a Document from the given URL

      Parameters:
      url - URL to read from.
      Returns:
      the newly created Document instance
      Throws:
      org.dom4j.DocumentException - if an error occurs during parsing.
      IOException - if an error occurs during reading
      org.xmlpull.v1.XmlPullParserException - if an error occurs creating a pull parser
    • read

      public org.dom4j.Document read(String systemID) throws org.dom4j.DocumentException, IOException, org.xmlpull.v1.XmlPullParserException

      Reads a Document from the given URL or filename.

      If the systemID contains a ':' character then it is assumed to be a URL otherwise its assumed to be a file name. If you want finer grained control over this mechansim then please explicitly pass in either a URL or a File instance instead of a String to denote the source of the document.

      Parameters:
      systemID - is a URL for a document or a file name.
      Returns:
      the newly created Document instance
      Throws:
      org.dom4j.DocumentException - if an error occurs during parsing.
      IOException - if an error occurs during reading
      org.xmlpull.v1.XmlPullParserException - if an error occurs creating a pull parser
    • read

      public org.dom4j.Document read(InputStream in) throws org.dom4j.DocumentException, IOException, org.xmlpull.v1.XmlPullParserException

      Reads a Document from the given stream

      Parameters:
      in - InputStream to read from.
      Returns:
      the newly created Document instance
      Throws:
      org.dom4j.DocumentException - if an error occurs during parsing.
      IOException - if an error occurs during reading
      org.xmlpull.v1.XmlPullParserException - if an error occurs creating a pull parser
    • read

      public org.dom4j.Document read(String charSet, InputStream in) throws org.dom4j.DocumentException, IOException, org.xmlpull.v1.XmlPullParserException

      Reads a Document from the given stream

      Parameters:
      charSet - the charSet that the input is encoded in
      in - InputStream to read from.
      Returns:
      the newly created Document instance
      Throws:
      org.dom4j.DocumentException - if an error occurs during parsing.
      IOException - if an error occurs during reading
      org.xmlpull.v1.XmlPullParserException - if an error occurs creating a pull parser
    • read

      public org.dom4j.Document read(Reader reader) throws org.dom4j.DocumentException, IOException, org.xmlpull.v1.XmlPullParserException

      Reads a Document from the given Reader

      Parameters:
      reader - is the reader for the input
      Returns:
      the newly created Document instance
      Throws:
      org.dom4j.DocumentException - if an error occurs during parsing.
      IOException - if an error occurs during reading
      org.xmlpull.v1.XmlPullParserException - if an error occurs creating a pull parser
    • read

      public org.dom4j.Document read(char[] text) throws org.dom4j.DocumentException, IOException, org.xmlpull.v1.XmlPullParserException

      Reads a Document from the given array of characters

      Parameters:
      text - is the text to parse
      Returns:
      the newly created Document instance
      Throws:
      org.dom4j.DocumentException - if an error occurs during parsing.
      IOException - if an error occurs during reading
      org.xmlpull.v1.XmlPullParserException - if an error occurs creating a pull parser
    • read

      public org.dom4j.Document read(InputStream in, String systemID) throws org.dom4j.DocumentException, IOException, org.xmlpull.v1.XmlPullParserException

      Reads a Document from the given stream

      Parameters:
      in - InputStream to read from.
      systemID - is the URI for the input
      Returns:
      the newly created Document instance
      Throws:
      org.dom4j.DocumentException - if an error occurs during parsing.
      IOException - if an error occurs during reading
      org.xmlpull.v1.XmlPullParserException - if an error occurs creating a pull parser
    • read

      public org.dom4j.Document read(Reader reader, String systemID) throws org.dom4j.DocumentException, IOException, org.xmlpull.v1.XmlPullParserException

      Reads a Document from the given Reader

      Parameters:
      reader - is the reader for the input
      systemID - is the URI for the input
      Returns:
      the newly created Document instance
      Throws:
      org.dom4j.DocumentException - if an error occurs during parsing.
      IOException - if an error occurs during reading
      org.xmlpull.v1.XmlPullParserException - if an error occurs creating a pull parser
    • getXPPParser

      public MXParser getXPPParser() throws org.xmlpull.v1.XmlPullParserException
      Throws:
      org.xmlpull.v1.XmlPullParserException
    • getXPPFactory

      public org.xmlpull.v1.XmlPullParserFactory getXPPFactory() throws org.xmlpull.v1.XmlPullParserException
      Throws:
      org.xmlpull.v1.XmlPullParserException
    • setXPPFactory

      public void setXPPFactory(org.xmlpull.v1.XmlPullParserFactory xppFactory)
    • getDocumentFactory

      public org.dom4j.DocumentFactory getDocumentFactory()
      Returns:
      the DocumentFactory used to create document objects
    • setDocumentFactory

      public void setDocumentFactory(org.dom4j.DocumentFactory factory)

      This sets the DocumentFactory used to create new documents. This method allows the building of custom DOM4J tree objects to be implemented easily using a custom derivation of DocumentFactory

      Parameters:
      factory - DocumentFactory used to create DOM4J objects
    • addHandler

      public void addHandler(String path, org.dom4j.ElementHandler handler)
      Adds the ElementHandler to be called when the specified path is encounted.
      Parameters:
      path - is the path to be handled
      handler - is the ElementHandler to be called by the event based processor.
    • removeHandler

      public void removeHandler(String path)
      Removes the ElementHandler from the event based processor, for the specified path.
      Parameters:
      path - is the path to remove the ElementHandler for.
    • setDefaultHandler

      public void setDefaultHandler(org.dom4j.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.
      Parameters:
      handler - is the ElementHandler to be called by the event based processor.
    • getLastActive

      public long getLastActive()
      Returns the last time a full Document was read or a heartbeat was received. Hearbeats are represented as whitespaces or \n received while a Document is not being parsed.
      Returns:
      the time in milliseconds when the last document or heartbeat was received.
    • parseDocument

      public org.dom4j.Document parseDocument(String xml) throws org.dom4j.DocumentException
      Throws:
      org.dom4j.DocumentException
    • parseDocument

      public org.dom4j.Document parseDocument() throws org.dom4j.DocumentException, IOException, org.xmlpull.v1.XmlPullParserException
      Throws:
      org.dom4j.DocumentException
      IOException
      org.xmlpull.v1.XmlPullParserException
    • getDispatchHandler

      protected org.dom4j.io.DispatchHandler getDispatchHandler()
    • setDispatchHandler

      protected void setDispatchHandler(org.dom4j.io.DispatchHandler dispatchHandler)
    • createReader

      protected Reader createReader(InputStream in) throws IOException
      Factory method to create a Reader from the given InputStream.
      Parameters:
      in - the input stream
      Returns:
      the reader
      Throws:
      IOException - never