Package net.sf.saxon.dom

## Class DOMEnvelope

- java.lang.Object
- - net.sf.saxon.dom.DOMEnvelope

- All Implemented Interfaces:
    `ExternalObjectModel`

      public class DOMEnvelope
      extends java.lang.Object
      implements ExternalObjectModel

  DOMEnvelope is an object model representation in which DOM interfaces are wrapped around Saxon NodeInfo nodes: that is, it implements the DOM on top of a Saxon tree implementation such as the tiny tree or linked tree.

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `DOMEnvelope()` | Public constructor.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Receiver` | `getDocumentBuilder​(javax.xml.transform.Result result)` | Test whether this object model recognizes a particular kind of JAXP Result object, and if it does, return a Receiver that builds an instance of this data model from a sequence of events.
    `java.lang.String` | `getDocumentClassName()` | Get the name of a characteristic class, which, if it can be loaded, indicates that the supporting libraries for this object model implementation are available on the classpath
    `java.lang.String` | `getIdentifyingURI()` | Get the URI of the external object model as used in the JAXP factory interfaces for obtaining an XPath implementation
    `static DOMEnvelope` | `getInstance()` | Get the singular instance (this class is stateless)
    `JPConverter` | `getJPConverter​(java.lang.Class sourceClass, Configuration config)` | Get a converter from values in the external object model to XPath values.
    `PJConverter` | `getNodeListCreator​(java.lang.Object node)` | Get a converter that converts a sequence of XPath nodes to this model's representation of a node list.
    `PJConverter` | `getPJConverter​(java.lang.Class<?> targetClass)` | Get a converter from XPath values to values in the external object model
    `boolean` | `isRecognizedNode​(java.lang.Object object)` | Test whether this object model recognizes a given node as one of its own
    `boolean` | `isRecognizedNodeClass​(java.lang.Class nodeClass)` | Test whether this object model recognizes a given class as representing a node in that object model.
    `boolean` | `sendSource​(javax.xml.transform.Source source, Receiver receiver)` | Test whether this object model recognizes a particular kind of JAXP Source object, and if it does, send the contents of the document to a supplied Receiver, and return true.
    `NodeInfo` | `unravel​(javax.xml.transform.Source source, Configuration config)` | Wrap or unwrap a node using this object model to return the corresponding Saxon node.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### DOMEnvelope

          public DOMEnvelope()

      Public constructor. (Use the singular instance in preference to creating a new one).

  - ### Method Detail

    - #### getInstance

          public static DOMEnvelope getInstance()

      Get the singular instance (this class is stateless)
      Returns:
        the singular instance

    - #### getDocumentClassName

          public java.lang.String getDocumentClassName()

      Get the name of a characteristic class, which, if it can be loaded, indicates that the supporting libraries for this object model implementation are available on the classpath
      Specified by:
        `getDocumentClassName` in interface `ExternalObjectModel`
      Returns:
        by convention (but not necessarily) the class that implements a document node in the relevant external model

    - #### getIdentifyingURI

          public java.lang.String getIdentifyingURI()

      Get the URI of the external object model as used in the JAXP factory interfaces for obtaining an XPath implementation
      Specified by:
        `getIdentifyingURI` in interface `ExternalObjectModel`
      Returns:
        the URI used to identify this object model in the JAXP XPath factory mechanism.

    - #### getPJConverter

          public PJConverter getPJConverter​(java.lang.Class<?> targetClass)

      Description copied from interface: `ExternalObjectModel`
      Get a converter from XPath values to values in the external object model
      Specified by:
        `getPJConverter` in interface `ExternalObjectModel`
      Parameters:
        `targetClass` - the required class of the result of the conversion. If this class represents a node or list of nodes in the external object model, the method should return a converter that takes a native node or sequence of nodes as input and returns a node or sequence of nodes in the external object model representation. Otherwise, it should return null.
      Returns:
        a converter, if the targetClass is recognized as belonging to this object model; otherwise null

    - #### getJPConverter

          public JPConverter getJPConverter​(java.lang.Class sourceClass,
                                            Configuration config)

      Description copied from interface: `ExternalObjectModel`
      Get a converter from values in the external object model to XPath values.
      Specified by:
        `getJPConverter` in interface `ExternalObjectModel`
      Parameters:
        `sourceClass` - the class (static or dynamic) of values to be converted
        `config` - the Saxon Configuration object
      Returns:
        a converter, if the sourceClass is recognized as belonging to this object model; otherwise null

    - #### getNodeListCreator

          public PJConverter getNodeListCreator​(java.lang.Object node)

      Get a converter that converts a sequence of XPath nodes to this model's representation of a node list.
      Specified by:
        `getNodeListCreator` in interface `ExternalObjectModel`
      Parameters:
        `node` - an example of the kind of node used in this model
      Returns:
        if the model does not recognize this node as one of its own, return null. Otherwise return a PJConverter that takes a list of XPath nodes (represented as NodeInfo objects) and returns a collection of nodes in this object model

    - #### isRecognizedNode

          public boolean isRecognizedNode​(java.lang.Object object)

      Test whether this object model recognizes a given node as one of its own
      Parameters:
        `object` - the object to be tested
      Returns:
        true if the supplied object is a node in this object model

    - #### isRecognizedNodeClass

          public boolean isRecognizedNodeClass​(java.lang.Class nodeClass)

      Test whether this object model recognizes a given class as representing a node in that object model. This method will generally be called at compile time.
      Parameters:
        `nodeClass` - A class that possibly represents nodes
      Returns:
        true if the class is used to represent nodes in this object model

    - #### getDocumentBuilder

          public Receiver getDocumentBuilder​(javax.xml.transform.Result result)

      Test whether this object model recognizes a particular kind of JAXP Result object, and if it does, return a Receiver that builds an instance of this data model from a sequence of events. If the Result is not recognised, return null.

      This implementation always returns null: it is not possible to construct an instance of this object model implementation directly as the result of a JAXP transformation.

      Specified by:
        `getDocumentBuilder` in interface `ExternalObjectModel`
      Parameters:
        `result` - a JAXP result object
      Returns:
        always null in this implementation

    - #### sendSource

          public boolean sendSource​(javax.xml.transform.Source source,
                                    Receiver receiver)
                             throws XPathException

      Test whether this object model recognizes a particular kind of JAXP Source object, and if it does, send the contents of the document to a supplied Receiver, and return true. Otherwise, return false.

      This implementation returns true only if the source is a DOMSource whose contained node is a a "NodeOverNodeInfo".

      Specified by:
        `sendSource` in interface `ExternalObjectModel`
      Parameters:
        `source` - a JAXP Source object
        `receiver` - the Receiver that is to receive the data from the Source. The caller is responsible for opening and closing the receiver.
      Returns:
        true if the data from the Source has been sent to the Receiver, false otherwise
      Throws:
        `XPathException` - if any failure occurs

    - #### unravel

          public NodeInfo unravel​(javax.xml.transform.Source source,
                                  Configuration config)

      Wrap or unwrap a node using this object model to return the corresponding Saxon node. If the supplied source does not belong to this object model, return null
      Specified by:
        `unravel` in interface `ExternalObjectModel`
      Parameters:
        `source` - a JAXP Source object
        `config` - the Saxon configuration
      Returns:
        a NodeInfo corresponding to the Source, if this can be constructed; otherwise null