## net.sf.saxon.value
Class ObjectValue

    java.lang.Object
      net.sf.saxon.value.Value
          net.sf.saxon.value.AtomicValue
              net.sf.saxon.value.ObjectValue

All Implemented Interfaces:
  Serializable, Comparable, SequenceIterable, Item, ValueRepresentation

Direct Known Subclasses:
  FirstClassFunction, ValidationErrorValue

    public class ObjectValue

extends AtomicValue

An XPath value that encapsulates a Java object. Such a value can only be obtained by calling an extension function that returns it.

See Also:
  Serialized Form

Field Summary

Fields inherited from class net.sf.saxon.value.Value
`EMPTY_CLASS_ARRAY, INDETERMINATE_ORDERING`

Fields inherited from interface net.sf.saxon.om.ValueRepresentation
`EMPTY_VALUE_ARRAY`

Constructor Summary
`ObjectValue()` Default constructor for use in subclasses
`ObjectValue(Object object)` Constructor
`ObjectValue(Object object, ExternalObjectType type)` Constructor

Method Summary
`AtomicValue` `convertPrimitive(BuiltInAtomicType requiredType, boolean validate, XPathContext context)` Convert to target data type
`Object` `convertToJava(Class target, XPathContext context)` Convert to Java object (for passing to external functions)
`AtomicValue` `copy(AtomicType typeLabel)` Create a copy of this atomic value, with a different type label
`String` `displayTypeName()` Display the type name for use in error messages
`boolean` `effectiveBooleanValue()` Get the effective boolean value of the value
`boolean` `equals(Object other)` Determine if two ObjectValues are equal
`ItemType` `getItemType(TypeHierarchy th)` Determine the data type of the items in the expression, if possible
`Object` `getObject()` Get the encapsulated object
`BuiltInAtomicType` `getPrimitiveType()` Determine the primitive type of the value.
`String` `getStringValue()` Get the value as a String
`int` `hashCode()` Return a hash code to support the equals() function
`void` `setValue(Object value)` Set the value in this object value

Methods inherited from class net.sf.saxon.value.AtomicValue
`checkPermittedContents, convert, convert, getCardinality, getComponent, getLength, getStringValueCS, getTypedValue, getTypeLabel, getXPathComparable, hasBuiltInType, isMultiValued, itemAt, iterate, process, setTypeLabel, toString`

Methods inherited from class net.sf.saxon.value.Value
`asItem, asItem, asIterator, asValue, compareTo, convert, convertJavaObjectToXPath, fromItem, getCanonicalLexicalRepresentation, getIterator, getSchemaComparable, iterate, makeQNameValue, reduce, stringToNumber`

Methods inherited from class java.lang.Object
`getClass, notify, notifyAll, wait, wait, wait`

Constructor Detail

### ObjectValue

    public ObjectValue()

  Default constructor for use in subclasses

### ObjectValue

    public ObjectValue(Object object)

  Constructor

  Parameters:
    `object` - the object to be encapsulated

### ObjectValue

    public ObjectValue(Object object,
                       ExternalObjectType type)

  Constructor

  Parameters:
    `object` - the object to be encapsulated
    `type` - the type of the external object

Method Detail

### setValue

    public void setValue(Object value)

  Set the value in this object value

### copy

    public AtomicValue copy(AtomicType typeLabel)

  Create a copy of this atomic value, with a different type label

  Specified by:
    `copy` in class `AtomicValue`
  Parameters:
    `typeLabel` - the type label of the new copy. The caller is responsible for checking that the value actually conforms to this type.

### getPrimitiveType

    public BuiltInAtomicType getPrimitiveType()

  Determine the primitive type of the value. This delivers the same answer as getItemType().getPrimitiveItemType(). The primitive types are the 19 primitive types of XML Schema, plus xs:integer, xs:dayTimeDuration and xs:yearMonthDuration, and xs:untypedAtomic. For external objects, the result is AnyAtomicType.

  Specified by:
    `getPrimitiveType` in class `AtomicValue`

### getItemType

    public ItemType getItemType(TypeHierarchy th)

  Determine the data type of the items in the expression, if possible

  Overrides:
    `getItemType` in class `AtomicValue`
  Parameters:
    `th` - The TypeHierarchy.
  Returns:
    for the default implementation: AnyItemType (not known)

### displayTypeName

    public String displayTypeName()

  Display the type name for use in error messages

### convertPrimitive

    public AtomicValue convertPrimitive(BuiltInAtomicType requiredType,
                                        boolean validate,
                                        XPathContext context)

  Convert to target data type

  Specified by:
    `convertPrimitive` in class `AtomicValue`
  Parameters:
    `requiredType` - type code of the required atomic type
    `validate` - true if validation is required. If set to false, the caller guarantees that the value is valid for the target data type, and that further validation is therefore not required. Note that a validation failure may be reported even if validation was not requested.
    `context` - The conversion context to be used. This is required at present only when converting to xs:Name or similar types: it determines the NameChecker to be used.
  Returns:
    the result of the conversion, if successful. If unsuccessful, the value returned will be a ValidationErrorValue. The caller must check for this condition. No exception is thrown, instead the exception will be encapsulated within the ValidationErrorValue.

### getStringValue

    public String getStringValue()

  Get the value as a String

  Specified by:
    `getStringValue` in interface `Item`
  Specified by:
    `getStringValue` in interface `ValueRepresentation`
  Specified by:
    `getStringValue` in class `AtomicValue`
  Returns:
    a String representation of the value
  See Also:
    `Item.getStringValueCS()`

### effectiveBooleanValue

    public boolean effectiveBooleanValue()
                                  throws XPathException

  Get the effective boolean value of the value

  Overrides:
    `effectiveBooleanValue` in class `AtomicValue`
  Returns:
    true, unless the value is boolean false, numeric zero, or zero-length string
  Throws:
    `XPathException` - if any dynamic error occurs evaluating the expression

### getObject

    public Object getObject()

  Get the encapsulated object

### equals

    public boolean equals(Object other)

  Determine if two ObjectValues are equal

  Overrides:
    `equals` in class `Value`
  Throws:
    `ClassCastException` - if they are not comparable

### hashCode

    public int hashCode()

  Description copied from class: `Value`
  Return a hash code to support the equals() function

  Overrides:
    `hashCode` in class `Value`

### convertToJava

    public Object convertToJava(Class target,
                                XPathContext context)
                         throws XPathException

  Convert to Java object (for passing to external functions)

  Overrides:
    `convertToJava` in class `Value`
  Throws:
    `XPathException`

Copyright (C) Michael H. Kay. All rights reserved.