Class StandardModuleURIResolver

java.lang.Object
net.sf.saxon.lib.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 Details

    • 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 Details

    • 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)