Class PJConverter

java.lang.Object
net.sf.saxon.expr.PJConverter
Direct Known Subclasses:
PJConverter.AnyURIValueToURI, PJConverter.AnyURIValueToURL, PJConverter.Atomic, PJConverter.BooleanValueToBoolean, PJConverter.CalendarValueToCalendar, PJConverter.CalendarValueToDate, PJConverter.CalendarValueToInstant, PJConverter.CalendarValueToLocalDateTime, PJConverter.CalendarValueToOffsetDateTime, PJConverter.CalendarValueToZonedDateTime, PJConverter.ConditionalUnwrapExternalObject, PJConverter.DateValueToLocalDate, PJConverter.General, PJConverter.Identity, PJConverter.IntegerValueToBigInteger, PJConverter.IntegerValueToByte, PJConverter.IntegerValueToChar, PJConverter.IntegerValueToInt, PJConverter.IntegerValueToLong, PJConverter.IntegerValueToShort, PJConverter.NumericValueToBigDecimal, PJConverter.NumericValueToDouble, PJConverter.NumericValueToFloat, PJConverter.QualifiedNameValueToQName, PJConverter.StringItemToChar, PJConverter.StringItemToString, PJConverter.StringItemToUnicodeString, PJConverter.ToArray, PJConverter.ToCollection, PJConverter.ToNull, PJConverter.ToOne, PJConverter.ToOneOrMore, PJConverter.ToSequenceExtent, PJConverter.ToSequenceIterator, PJConverter.ToZeroOrMore, PJConverter.ToZeroOrOne, PJConverter.UnwrapExternalObject

public abstract class PJConverter extends Object
This class together with its embedded subclasses handles conversion from XPath values to Java values
  • Constructor Details

    • PJConverter

      public PJConverter()
  • Method Details

    • getEquivalentSequenceType

      public static SequenceType getEquivalentSequenceType(Class<?> javaClass)
      Get the nearest XPath equivalent to a Java class. A function call will be type-checked against an XPath function signature in which the Java classes are replaced by their nearest equivalent XPath types
      Parameters:
      javaClass - a Java class
      Returns:
      the nearest equivalent XPath SequenceType
    • getParameterizedSequenceType

      public static SequenceType getParameterizedSequenceType(Type javaType)
      Get the nearest XPath equivalent to a Java parameterized type. The only parameterized types we recognize are those like Sequence<StringValue> which correspond exactly to an XPath SequenceType.
      Parameters:
      javaType - a parameterized Java class
      Returns:
      the nearest equivalent XPath SequenceType
    • convert

      public abstract Object convert(Sequence value, Class<?> targetClass, XPathContext context) throws XPathException
      Convert an XPath value to a Java value of a specified class
      Parameters:
      value - the supplied XPath value
      targetClass - the class of the required Java value
      context - the XPath dynamic context
      Returns:
      the corresponding Java value, which is guaranteed to be an instance of the target class (except that an empty sequence is converted to null)
      Throws:
      XPathException - if the conversion is not possible or fails
    • allocate

      public static PJConverter allocate(Configuration config, ItemType itemType, int cardinality, Class<?> targetClass) throws XPathException
      Factory method to instantiate a converter from a given XPath type to a given Java class
      Parameters:
      config - the Saxon Configuration
      itemType - the item type of the XPath value to be converted
      cardinality - the cardinality of the XPath value to be converted
      targetClass - the Java class required for the conversion result
      Returns:
      a suitable converter
      Throws:
      XPathException - if no conversion is possible
    • allocateNodeListCreator

      public static PJConverter allocateNodeListCreator(Configuration config, Object node)
      Static method to get a converter from an XPath sequence of nodes to the representation of a NodeList in an external object model (this is really a special for DOM, which uses NodeList rather than general purpose Java collection classes)
      Parameters:
      config - the Saxon configuration
      node - an object representing a node in an external model
      Returns:
      the Java object representing the external node