Class AbstractResourceCollection

java.lang.Object
net.sf.saxon.resource.AbstractResourceCollection
All Implemented Interfaces:
ResourceCollection
Direct Known Subclasses:
CatalogCollection, DirectoryCollection, ExplicitCollection, JarCollection

public abstract class AbstractResourceCollection extends Object implements ResourceCollection
AbstractCollection is an abstract superclass for the various implementations of ResourceCollection within Saxon. It provides common services such as mapping of file extensions to MIME types, and mapping of MIME types to resource factories.
  • Field Details

  • Constructor Details

    • AbstractResourceCollection

      public AbstractResourceCollection(Configuration config)
      Create a resource collection
      Parameters:
      config - the Saxon configuration
  • Method Details

    • checkNotNull

      public static void checkNotNull(String collectionURI, XPathContext context) throws XPathException
      If the collectionURI is null, report that no default collection exists
      Parameters:
      collectionURI - the collection URI to be tested
      context - XPath evaluation context
      Throws:
      XPathException - if the collectionURI is null
    • getCollectionURI

      public String getCollectionURI()
      Description copied from interface: ResourceCollection
      Get the URI of the collection
      Specified by:
      getCollectionURI in interface ResourceCollection
      Returns:
      The URI as passed to the fn:collection() or fn:uri-collection() function, resolved if it is relative against the static base URI. If the collection() or uri-collection() function was called with no arguments (to get the "default collection") this will be the URI of the default collection registered with the Configuration.
    • isStable

      public boolean isStable(XPathContext context)
      Ask whether the collection is stable. This method should only be called after calling ResourceCollection.getResources(XPathContext) or ResourceCollection.getResourceURIs(XPathContext)
      Specified by:
      isStable in interface ResourceCollection
      Parameters:
      context - the XPath evaluation context.
      Returns:
      true if the collection is defined to be stable, that is, if a subsequent call on collection() with the same URI is guaranteed to return the same result. The method returns true if the query parameter stable=yes is present in the URI, or if the configuration property FeatureKeys.STABLE_COLLECTION_URI is set.
    • registerContentType

      public void registerContentType(String contentType, ResourceFactory factory)
      Associate a media type with a resource factory. Since 9.7.0.6 this registers the content type with the configuration, making the register of content types more accessible to applications.
      Parameters:
      contentType - a media type or MIME type, for example application/xsd+xml
      factory - a ResourceFactory used to parse (or otherwise process) resources of that type
    • optionsFromQueryParameters

      protected ParseOptions optionsFromQueryParameters(URIQueryParameters params, XPathContext context)
      Analyze URI query parameters and convert them to a set of parser options
      Parameters:
      params - the query parameters extracted from the URI
      context - the XPath evaluation context
      Returns:
      a set of options to control document parsing
    • setupErrorHandlingForCollection

      public static ParseOptions setupErrorHandlingForCollection(ParseOptions options, int onError, ErrorReporter oldErrorReporter)
    • getInputDetails

      protected AbstractResourceCollection.InputDetails getInputDetails(String resourceURI) throws XPathException
      Get details of a resource given the resource URI
      Parameters:
      resourceURI - the resource URI
      Returns:
      details of the resource
      Throws:
      XPathException - if the information cannot be obtained
    • guessContentTypeFromName

      protected String guessContentTypeFromName(String resourceURI)
      Attempt to establish the media type of a resource, given the resource URI. This makes use of URLConnection#guessContentTypeFromName, and failing that the mapping from file extensions to media types held in the Saxon Configuration
      Parameters:
      resourceURI - the resource URI
      Returns:
      the media type if it can be gleaned, otherwise null.
    • guessContentTypeFromContent

      protected String guessContentTypeFromContent(InputStream stream)
      Attempt to establish the media type of a resource, given the actual content. This makes use of URLConnection#guessContentTypeFromStream
      Parameters:
      stream - the input stream. This should be positioned at the start; the reading position is not affected by the call.
      Returns:
      the media type if it can be gleaned, otherwise null.
    • makeResource

      public Resource makeResource(XPathContext context, AbstractResourceCollection.InputDetails details) throws XPathException
      Internal method to make a resource for a single entry in the ZIP or JAR file. This involves making decisions about the type of resource. This method can be overridden in a user-defined subclass.
      Parameters:
      context - The Saxon configuration
      details - Details of the input.
      Returns:
      a newly created Resource representing the content of this entry in the ZIP or JAR file
      Throws:
      XPathException
    • makeTypedResource

      public Resource makeTypedResource(XPathContext context, Resource basicResource) throws XPathException
      Given a resource whose type may be unknown, create a Resource of a specific type, for example an XML or JSON resource
      Parameters:
      context - the evaluation context
      basicResource - the resource, whose type may be unknown
      Returns:
      a Resource of a specific type
      Throws:
      XPathException - if a failure occurs (for example an XML or JSON parsing failure)
    • makeResource

      public Resource makeResource(XPathContext context, String resourceURI) throws XPathException
      Default method to make a resource, given a resource URI
      Parameters:
      resourceURI - the resource URI
      Returns:
      the corresponding resource
      Throws:
      XPathException
    • stripWhitespace

      public boolean stripWhitespace(SpaceStrippingRule rules)
      Supply information about the whitespace stripping rules that apply to this collection. This method will only be called when the collection() function is invoked from XSLT.
      Parameters:
      rules - the space-stripping rules that apply to this collection, derived from the xsl:strip-space and xsl:preserve-space declarations in the stylesheet package containing the call to the collection() function.
      Returns:
      true if the collection finder intends to take responsibility for whitespace stripping according to these rules; false if it wishes Saxon itself to post-process any returned XML documents to strip whitespace. Returning true may either indicate that the collection finder will strip whitespace before returning a document, or it may indicate that it does not wish the space stripping rules to be applied. The default (returned by this method if not overridden) is false.