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

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `java.util.Set<java.lang.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 Detail

    - #### fileExtensionsForContentType

          java.util.Set<java.lang.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 java.io.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:
        `java.io.IOException` - if the resource does not exist or a URL for the content is not available