net.sf.saxon.type

## Class ExternalObjectType

- java.lang.Object
- - net.sf.saxon.type.ExternalObjectType

- All Implemented Interfaces:
    Serializable, ItemType

      public class ExternalObjectType
      extends Object
      implements ItemType

  This class represents the type of an external Java object returned by an extension function, or supplied as an external variable/parameter.
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static ExternalObjectType` | `EXTERNAL_OBJECT_TYPE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ExternalObjectType(Class javaClass)` Create an external object type.
    `ExternalObjectType(Class javaClass, Configuration config)` Create an external object type.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `equals(Object obj)` Test whether two ExternalObjectType objects represent the same type
    `AtomicType` | `getAtomizedItemType()` Get the item type of the atomic values that will be produced when an item of this type is atomized
    `double` | `getDefaultPriority()` Determine the default priority of this item type when used on its own as a Pattern
    `String` | `getDescription()`
    `String` | `getDisplayName()`
    `Class` | `getJavaClass()` Get the Java class to which this external object type corresponds
    `String` | `getName()` Get the local name of this type.
    `ItemType` | `getPrimitiveItemType()` Get the primitive item type corresponding to this item type.
    `int` | `getPrimitiveType()` Get the primitive type corresponding to this item type.
    `int` | `getRelationship(ExternalObjectType other)` Get the relationship of this external object type to another external object type
    `ItemType` | `getSuperType(TypeHierarchy th)` Get the type from which this item type is derived by restriction.
    `String` | `getTargetNamespace()` Get the target namespace of this type.
    `StructuredQName` | `getTypeName()` Get the name of this type as a StructuredQName, unless the type is anonymous, in which case return null
    `int` | `hashCode()` Returns a hash code value for the object.
    `boolean` | `isAtomicType()` Test whether this item type is an atomic type
    `boolean` | `isAtomizable()` Ask whether values of this type are atomizable
    `boolean` | `isExternalType()` Return true if this is an external object type, that is, a Saxon-defined type for external Java or .NET objects
    `boolean` | `isPlainType()` Ask whether this is a plain type (a type whose instances are always atomic values)
    `boolean` | `matches(Item item, XPathContext context)` Test whether a given item conforms to this type
    `boolean` | `matchesItem(Item item, boolean allowURIPromotion, Configuration config)` Test whether a given item conforms to this type
    `String` | `toString()`
    `void` | `visitNamedSchemaComponents(SchemaComponentVisitor visitor)` Visit all the schema components used in this ItemType definition

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

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### EXTERNAL_OBJECT_TYPE

          public static ExternalObjectType EXTERNAL_OBJECT_TYPE

  - ### Constructor Detail

    - #### ExternalObjectType

          public ExternalObjectType(Class javaClass)

      Create an external object type.
      Parameters:
        `javaClass` - the Java class to which this type corresponds

    - #### ExternalObjectType

          public ExternalObjectType(Class javaClass,
                            Configuration config)

      Create an external object type.
      Parameters:
        `javaClass` - the Java class to which this type corresponds
        `config` - the Saxon configuration. This argument is no longer used (since 9.5).

  - ### Method Detail

    - #### getName

          public String getName()

      Get the local name of this type.
      Returns:
        the fully qualified name of the Java class.

    - #### getTargetNamespace

          public String getTargetNamespace()

      Get the target namespace of this type. The is always NamespaceConstant.JAVA_TYPE.
      Returns:
        the target namespace of this type definition.

    - #### isExternalType

          public boolean isExternalType()

      Return true if this is an external object type, that is, a Saxon-defined type for external Java or .NET objects
      Returns:
        true (always)

    - #### getTypeName

          public StructuredQName getTypeName()

      Get the name of this type as a StructuredQName, unless the type is anonymous, in which case return null
      Returns:
        the name of the atomic type, or null if the type is anonymous.

    - #### isPlainType

          public boolean isPlainType()

      Ask whether this is a plain type (a type whose instances are always atomic values)
      Specified by:
        `isPlainType` in interface `ItemType`
      Returns:
        true

    - #### getPrimitiveItemType

          public ItemType getPrimitiveItemType()

      Get the primitive item type corresponding to this item type.
      Specified by:
        `getPrimitiveItemType` in interface `ItemType`
      Returns:
        EXTERNAL_OBJECT_TYPE, the ExternalObjectType that encapsulates the Java type Object.class.

    - #### getPrimitiveType

          public int getPrimitiveType()

      Get the primitive type corresponding to this item type. For item(), this is Type.ITEM. For node(), it is Type.NODE. For specific node kinds, it is the value representing the node kind, for example Type.ELEMENT. For anyAtomicValue it is Type.ATOMIC. For numeric it is Type.NUMBER. For other atomic types it is the primitive type as defined in XML Schema, except that INTEGER is considered to be a primitive type.
      Specified by:
        `getPrimitiveType` in interface `ItemType`
      Returns:
        the integer fingerprint of the corresponding primitive type

    - #### getAtomizedItemType

          public AtomicType getAtomizedItemType()

      Get the item type of the atomic values that will be produced when an item of this type is atomized
      Specified by:
        `getAtomizedItemType` in interface `ItemType`
      Returns:
        BuiltInAtomicType.STRING, because atomization returns the result of toString()

    - #### isAtomizable

          public boolean isAtomizable()

      Ask whether values of this type are atomizable
      Specified by:
        `isAtomizable` in interface `ItemType`
      Returns:
        true, because (since Saxon 9.5) atomization will always return the result of toString()

    - #### getRelationship

          public int getRelationship(ExternalObjectType other)

      Get the relationship of this external object type to another external object type
      Parameters:
        `other` - the other external object type
      Returns:
        the relationship of this external object type to another external object type, as one of the constants in class `TypeHierarchy`, for example `TypeHierarchy.SUBSUMES`

    - #### getDescription

          public String getDescription()

    - #### isAtomicType

          public boolean isAtomicType()

      Test whether this item type is an atomic type
      Specified by:
        `isAtomicType` in interface `ItemType`
      Returns:
        false, this is not considered to be an atomic type

    - #### getJavaClass

          public Class getJavaClass()

      Get the Java class to which this external object type corresponds
      Returns:
        the corresponding Java class

    - #### matches

          public boolean matches(Item item,
                        XPathContext context)

      Test whether a given item conforms to this type
      Specified by:
        `matches` in interface `ItemType`
      Parameters:
        `item` - The item to be tested
        `context` - the XPath dynamic evaluation context
      Returns:
        true if the item is an instance of this type; false otherwise

    - #### matchesItem

          public boolean matchesItem(Item item,
                            boolean allowURIPromotion,
                            Configuration config)

      Test whether a given item conforms to this type
      Specified by:
        `matchesItem` in interface `ItemType`
      Parameters:
        `item` - The item to be tested
        `allowURIPromotion` - ignored for this overloading of the method
        `config` - ignored for this overloading of the method
      Returns:
        true if the item is an instance of this type; false otherwise

    - #### getSuperType

          public ItemType getSuperType(TypeHierarchy th)

      Description copied from interface: `ItemType`
      Get the type from which this item type is derived by restriction. This is the supertype in the XPath type heirarchy, as distinct from the Schema base type: this means that the supertype of xs:boolean is xs:anyAtomicType, whose supertype is item() (rather than xs:anySimpleType).

      In fact the concept of "supertype" is not really well-defined, because the types form a lattice rather than a hierarchy. The only real requirement on this function is that it returns a type that strictly subsumes this type, ideally as narrowly as possible.

      Specified by:
        `getSuperType` in interface `ItemType`
      Parameters:
        `th` - the type hierarchy cache
      Returns:
        the supertype, or null if this type is item()

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### getDisplayName

          public String getDisplayName()

    - #### getDefaultPriority

          public double getDefaultPriority()

      Determine the default priority of this item type when used on its own as a Pattern
      Specified by:
        `getDefaultPriority` in interface `ItemType`
      Returns:
        the default priority

    - #### visitNamedSchemaComponents

          public void visitNamedSchemaComponents(SchemaComponentVisitor visitor)
                                          throws XPathException

      Visit all the schema components used in this ItemType definition
      Specified by:
        `visitNamedSchemaComponents` in interface `ItemType`
      Parameters:
        `visitor` - the visitor class to be called when each component is visited
      Throws:
        `XPathException` - if an error occurs

    - #### hashCode

          public int hashCode()

      Returns a hash code value for the object.
      Overrides:
        `hashCode` in class `Object`

    - #### equals

          public boolean equals(Object obj)

      Test whether two ExternalObjectType objects represent the same type
      Overrides:
        `equals` in class `Object`
      Parameters:
        `obj` - the other ExternalObjectType
      Returns:
        true if the two objects represent the same type

Copyright (c) 2004-2013 Saxonica Limited. All rights reserved.