Package org.apache.tapestry5.internal.services.assets

## Class DelegatingSRS

- java.lang.Object
- - org.apache.tapestry5.internal.services.assets.DelegatingSRS

- All Implemented Interfaces:
    `StreamableResourceSource`
  Direct Known Subclasses:
    `CSSURLRewriter`, `JavaScriptStackMinimizeDisabler`, `SRSCachingInterceptor`, `SRSCompressingInterceptor`, `SRSMinimizingInterceptor`, `UTF8ForTextAssets`

      public abstract class DelegatingSRS
      extends Object
      implements StreamableResourceSource

  Base class for `StreamableResourceSource` implementations.
  Since:
    5.4

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected StreamableResourceSource` | `delegate` |

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `DelegatingSRS​(StreamableResourceSource delegate)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    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.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### delegate

          protected final StreamableResourceSource delegate

  - ### Constructor Detail

    - #### DelegatingSRS

          protected DelegatingSRS​(StreamableResourceSource delegate)

  - ### Method Detail

    - #### fileExtensionsForContentType

          public Set<String> fileExtensionsForContentType​(ContentType contentType)

      Description copied from interface: `StreamableResourceSource`
      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.
      Specified by:
        `fileExtensionsForContentType` in interface `StreamableResourceSource`
      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".

    - #### getStreamableResource

          public StreamableResource getStreamableResource​(Resource baseResource,
                                                          StreamableResourceProcessing processing,
                                                          ResourceDependencies dependencies)
                                                   throws IOException

      Description copied from interface: `StreamableResourceSource`
      Converts a Resource (which must be non-null and exist) into a streamable resource, along with some additional optional behaviors.
      Specified by:
        `getStreamableResource` in interface `StreamableResourceSource`
      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