Class ObjectMap

  • All Implemented Interfaces:
    Callable, FunctionItem, GroundedValue, Item, Sequence

    public class ObjectMap
    extends SystemFunction
    Extension function saxon:object-map(), which converts an external object to a map

    The current implementation physically creates a new map, though there's some optimization if it is known that only one of the entries will be needed. There would be scope for a faster implementation, creating a virtual map backed by the Java object, if this proves to be needed.

    Since:
    9.9
    • Constructor Detail

      • ObjectMap

        public ObjectMap()
    • Method Detail

      • call

        public MapItem call​(XPathContext context,
                            Sequence[] arguments)
                     throws XPathException
        Evaluate this function call at run-time
        Parameters:
        context - The XPath dynamic evaluation context
        arguments - The values of the arguments to the function call. Each argument value (which is in general a sequence) is supplied in the form of an iterator over the items in the sequence. If required, the supplied sequence can be materialized by calling, for example, new SequenceExtent(arguments[i]). If the argument is always a singleton, then the single item may be obtained by calling arguments[i].next(). The implementation is not obliged to read all the items in each SequenceIterator if they are not required to compute the result; but if any SequenceIterator is not read to completion, it is good practice to call its close() method.
        Returns:
        an iterator over the results of the function. If the result is a single item, it can be returned in the form of a SingletonIterator. If the result is an empty sequence, the method should return EmptyIterator.getInstance()
        Throws:
        XPathException - if a dynamic error occurs during evaluation of the function. The Saxon run-time code will add information about the error location.
      • toMap

        public static MapItem toMap​(Configuration config,
                                    ObjectValue<?> value,
                                    java.lang.String required)
        Convert a Java object to a map
        Parameters:
        config - the Saxon Configuration
        value - the (wrapped) Java object to be converted
        required - if non-null, indicates the key of the entry that is required in the map. If this parameter is supplied, then the map will be limited to a single entry with this key, since it is known that the other entries would never be used.
        Returns:
        an XDM map containing entries representing the public instance-level methods available in the object, to the extent that they have unique names.
      • makeMethodMap

        public static java.util.Map<java.lang.String,​FunctionItem> makeMethodMap​(Configuration config,
                                                                                       java.lang.Class<?> javaClass,
                                                                                       java.lang.String required)
        Make a map representing the methods defined in a class. This map is specific to the class, not to a particular instance. The functions present in this map take an extra first argument representing the target instance; the functions returned in the final instance-level map will be partial applications of the functions in the class-level map
        Parameters:
        config - the Saxon configuration
        javaClass - the Java class whose methods are required
        required - if non-null, indicates the key of the entry that is required in the map. If this parameter is supplied, then the map will be limited to a single entry with this key, since it is known that the other entries would never be used
        Returns:
        a map whose entries represent public instance-level methods in the supplied Java class, to the extent that these methods have unique names.