Extensibility mechanisms

When extension function calls map to polymorphic Java methods, the selection of the particular method to invoke is now delayed until after the type analysis of the expression tree has been done. This gives a better chance of identifying the required method from the static types of the supplied arguments.

Extension types (types returned by extension functions that do not relate to any type in the XPath type system) are now analysed when binding Java methods. This also improves the chances of binding polymorphic methods successfully.

The conversion of Java objects to XPath data types when supplied as stylesheet or query parameters now takes account of the declared type (at least to some extent). If the type is declared using a Java class for example j:java.util.Date where the namespace prefix j is bound to http://saxon.sf.net/java-type, then no conversion will take place, only checking that the supplied value is of the correct class. It is then possible to manage all conversions explicitly by calling Java methods on this object (represented as extension functions).