Class StandardModuleURIResolver

  • All Implemented Interfaces:
    ModuleURIResolver

    public class StandardModuleURIResolver
    extends Object
    implements ModuleURIResolver
    This class is the standard ModuleURIResolver used to implement the "import module" declaration in a Query Prolog. It is used when no user-defined ModuleURIResolver has been specified, or when the user-defined ModuleURIResolver decides to delegate to the standard ModuleURIResolver. It relies on location hints being supplied in the "import module" declaration, and attempts to locate a module by dereferencing the URI given as the location hint. It accepts standard URIs recognized by the Java URL class, including the jar URI scheme; it also accepts classpath URIs as defined in the Spring framework.
    • Constructor Detail

      • StandardModuleURIResolver

        public StandardModuleURIResolver()
        Create a StandardModuleURIResolver. If this constructor is used, a configuration must be supplied in a subsequent call. The constructor is provided to allow instantiation from a Configuration file.
      • StandardModuleURIResolver

        public StandardModuleURIResolver​(Configuration config)
        Create a StandardModuleURIResolver, with a supplied configuration
        Parameters:
        config - the Saxon Configuration object
    • Method Detail

      • setConfiguration

        public void setConfiguration​(Configuration config)
        Set the Configuration that this resolver uses. Has no effect if the configuration has already been supplied by the constructor.
        Parameters:
        config - the Saxon Configuration object
      • resolve

        public StreamSource[] resolve​(String moduleURI,
                                      String baseURI,
                                      String[] locations)
                               throws XPathException
        Resolve a module URI and associated location hints.

        The logic of this is as follows:

        1. First, call the configuration-level ResourceResolver to resolve the module URI as a namespace (via the method resolveModuleURI, which can be overridden in a subclass).
        2. If this returns null and there are no location hints, throw XQST0059.
        3. Otherwise attempt to resolve each of the supplied location hints in turn, using first the configuration-level ResourceResolver and then the fallback DirectResourceResolver, via the method resolveLocationHint, which can be overridden in a subclass. Return an array containing any non-null results; if there are none, throw XQST0059.
        Specified by:
        resolve in interface ModuleURIResolver
        Parameters:
        moduleURI - The module namespace URI of the module to be imported; or null when loading a non-library module.
        baseURI - The base URI of the module containing the "import module" declaration; null if no base URI is known
        locations - The set of URIs specified in the "at" clause of "import module", which serve as location hints for the module
        Returns:
        an array of StreamSource objects each identifying the contents of a module to be imported. Each StreamSource must contain a non-null absolute System ID which will be used as the base URI of the imported module, and either an InputSource or a Reader representing the text of the module.
        Throws:
        XPathException - (error XQST0059) if the module cannot be located
      • resolveModuleURI

        protected StreamSource resolveModuleURI​(String moduleURI,
                                                String baseURI)
        Attempt to resolve the module namespace URI without the help of location hints.
        Parameters:
        moduleURI - the namespace URI of the module being imported
        baseURI - the base URI of the module containing the "import module" declaration
        Returns:
        a StreamSource delivering the contents of the module.
      • resolveLocationHint

        protected StreamSource resolveLocationHint​(String baseURI,
                                                   String locationHint)
                                            throws XPathException
        Resolve a location hint appearing in an "import module" declaration
        Parameters:
        baseURI - the base URI of the "import module" declaration
        locationHint - the location hint, as written
        Returns:
        either a StreamSource representing the content of the module, or null
        Throws:
        XPathException - if the URI is invalid or can't be resolved (but not if the module simply doesn't exist at that location)