Package net.sf.saxon.option.jdom2

## Class JDOM2ObjectModel

- java.lang.Object
- - net.sf.saxon.om.TreeModel
  - - net.sf.saxon.option.jdom2.JDOM2ObjectModel

- All Implemented Interfaces:
    `ExternalObjectModel`

      public class JDOM2ObjectModel
      extends TreeModel
      implements ExternalObjectModel

  This interface must be implemented by any third-party object model that can be wrapped with a wrapper that implements the Saxon Object Model (the NodeInfo interface). This implementation of the interface supports wrapping of JDOM Documents.

- - ### Field Summary

    - ### Fields inherited from class net.sf.saxon.om.TreeModel

      `LINKED_TREE, TINY_TREE, TINY_TREE_CONDENSED`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `JDOM2ObjectModel()` |

  - ### 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 JDOM2ObjectModel` | `getInstance()` |
    `JPConverter` | `getJPConverter​(java.lang.Class sourceClass, Configuration config)` | Get a converter from values in the external object model to XPath values.
    `java.lang.String` | `getName()` | Get a name that identifies the tree model
    `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
    `int` | `getSymbolicValue()` | Get the integer constant used to identify this tree model in some legacy interfaces
    `Builder` | `makeBuilder​(PipelineConfiguration pipe)` | Make a Builder, which can then be used to construct an instance of this tree model from a stream of events
    `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.
    `TreeInfo` | `wrapDocument​(java.lang.Object node, Configuration config)` | Wrap a document node in the external object model in a document wrapper that implements the Saxon DocumentInfo interface
    `NodeInfo` | `wrapNode​(TreeInfo document, java.lang.Object node)` | Wrap a node within the external object model in a node wrapper that implements the Saxon VirtualNode interface (which is an extension of NodeInfo)

    - ### Methods inherited from class net.sf.saxon.om.TreeModel

      `getTreeModel, isMutable, isSchemaAware`

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

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

- - ### Constructor Detail

    - #### JDOM2ObjectModel

          public JDOM2ObjectModel()

  - ### Method Detail

    - #### getInstance

          public static JDOM2ObjectModel getInstance()

    - #### 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.

    - #### makeBuilder

          public Builder makeBuilder​(PipelineConfiguration pipe)

      Description copied from class: `TreeModel`
      Make a Builder, which can then be used to construct an instance of this tree model from a stream of events
      Specified by:
        `makeBuilder` in class `TreeModel`
      Parameters:
        `pipe` - A PipelineConfiguration, which can be constructed using the method `Configuration.makePipelineConfiguration()`.
      Returns:
        a newly created Builder

    - #### getSymbolicValue

          public int getSymbolicValue()

      Description copied from class: `TreeModel`
      Get the integer constant used to identify this tree model in some legacy interfaces
      Overrides:
        `getSymbolicValue` in class `TreeModel`
      Returns:
        an integer constant used to identify the model, for example `Builder.TINY_TREE`

    - #### getName

          public java.lang.String getName()

      Description copied from class: `TreeModel`
      Get a name that identifies the tree model
      Overrides:
        `getName` in class `TreeModel`
      Returns:
        an identifying name for the tree model

    - #### 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

    - #### 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.
      Specified by:
        `getDocumentBuilder` in interface `ExternalObjectModel`
      Parameters:
        `result` - a JAXP result object
      Returns:
        always null

    - #### sendSource

          public 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. Otherwise, return false.
      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

    - #### 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

    - #### wrapDocument

          public TreeInfo wrapDocument​(java.lang.Object node,
                                       Configuration config)

      Wrap a document node in the external object model in a document wrapper that implements the Saxon DocumentInfo interface
      Parameters:
        `node` - a node (any node) in the third party document
        `config` - the Saxon configuration (which among other things provides access to the NamePool)
      Returns:
        the wrapper, which must implement DocumentInfo

    - #### wrapNode

          public NodeInfo wrapNode​(TreeInfo document,
                                   java.lang.Object node)

      Wrap a node within the external object model in a node wrapper that implements the Saxon VirtualNode interface (which is an extension of NodeInfo)
      Parameters:
        `document` - the document wrapper, as a DocumentInfo object
        `node` - the node to be wrapped. This must be a node within the document wrapped by the DocumentInfo provided in the first argument
      Returns:
        the wrapper for the node, as an instance of VirtualNode