Package org.apache.tapestry5.services.assets

# Interface StreamableResourceSource

All Known Implementing Classes:
  `CSSURLRewriter`, `DelegatingSRS`, `JavaScriptStackMinimizeDisabler`, `SRSCachingInterceptor`, `SRSCompressedCachingInterceptor`, `SRSCompressingInterceptor`, `SRSMinimizingInterceptor`, `StreamableResourceSourceImpl`, `UTF8ForTextAssets`

@UsesMappedConfiguration(ResourceTransformer.class) public interface StreamableResourceSource
Converts `Resource`s into `StreamableResource`s, and may be responsible for transforming resources based on file extension. Contributions map a file extension (such as "coffee") to a transformer for that file extension. Service decorators added to this service may provide additional processing (compression, minimization, and caching).

Since:
  5.3

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Set<String>`
  `fileExtensionsForContentType(ContentType contentType)`
  Given a desired content type, identify which file extensions can be mapped to that extension based on contributed `ResourceTransformer`s that can produce the content type based for a file with that extension.
  `StreamableResource`
  `getStreamableResource(Resource baseResource, StreamableResourceProcessing processing, ResourceDependencies dependencies)`
  Converts a Resource (which must be non-null and exist) into a streamable resource, along with some additional optional behaviors.

- ## Method Details

  - ### fileExtensionsForContentType

    Set<String> fileExtensionsForContentType(ContentType contentType)
    Given a desired content type, identify which file extensions can be mapped to that extension based on contributed `ResourceTransformer`s that can produce the content type based for a file with that extension.
    Parameters:
      `contentType` - to search for (just a MIME type, such as "text/javascript")
    Returns:
      set of file extension, possibly empty, in no particular order. These are the bare extensions, e.g., "js", "coffee".
    Since:
      5.4

  - ### getStreamableResource

    StreamableResource getStreamableResource(Resource baseResource, StreamableResourceProcessing processing, ResourceDependencies dependencies) throws IOException
    Converts a Resource (which must be non-null and exist) into a streamable resource, along with some additional optional behaviors.
    Parameters:
      `baseResource` - the resource to convert
      `processing` - defines additional processing after the resource has been read and possibly transformed
      `dependencies` - Passed to any `ResourceTransformer` to track additional dependencies of the base resource
    Returns:
      the contents of the Resource, possibly transformed, in a streamable format.
    Throws:
      `IOException` - if the resource does not exist or a URL for the content is not available