Package org.apache.tapestry5.services.assets

# Interface StreamableResource

All Known Implementing Classes:
  `CompressedStreamableResource`, `StreamableResourceImpl`

public interface StreamableResource
An object, derived from a `Resource`, that can be streamed (ultimately, to a client web browser). In addition, a StreamableResource may be transformed (by the stack of interceptors around `StreamableResourceSource`: this includes transforming a Resource (example: CoffeeScript to JavaScript compilation), as well as aggregation and compression.

Since:
  5.3

- ## Method Summary

  Modifier and Type
  Method
  Description
  `StreamableResource`
  `addResponseCustomizer(ResponseCustomizer customizer)`
  Returns a new StreamableResource that includes the provided customizer.
  `String`
  `getChecksum()`
  Compute and return the checksum of the content for this asset; the checksum should be computed based on the uncompressed content.
  `CompressionStatus`
  `getCompression()`
  Indicates if the content is compressed, or compressable.
  `ContentType`
  `getContentType()`
  Returns the resource's content type.
  `String`
  `getDescription()`
  Describes the underlying `Resource` (or resources} for this streamable resource; expressly used as part of the object's `toString()`.
  `long`
  `getLastModified()`
  Returns the time the resource was last modified, with accuracy to one second (so as to match the HTTP request/response date headers).
  `ResponseCustomizer`
  `getResponseCustomizer()`
  Returns the customizer, if any, for this resource.
  `int`
  `getSize()`
  The size, in bytes, of the underlying bytestream.
  `InputStream`
  `openStream()`
  Opens the content of the resource as an input stream; the caller is responsible for closing the stream after reading it.
  `void`
  `streamTo(OutputStream os)`
  Streams the resource's content to the provided stream.
  `StreamableResource`
  `withContentType(ContentType newContentType)`
  Returns a new StreamableResource instance with the new content type.

- ## Method Details

  - ### getDescription

    String getDescription()
    Describes the underlying `Resource` (or resources} for this streamable resource; expressly used as part of the object's `toString()`.

  - ### getCompression

    CompressionStatus getCompression()
    Indicates if the content is compressed, or compressable.

  - ### getContentType

    @IncompatibleChange(release="5.4", details="Changed from type String to ContentType") ContentType getContentType()
    Returns the resource's content type.

  - ### getSize

    int getSize()
    The size, in bytes, of the underlying bytestream.

  - ### streamTo

    void streamTo(OutputStream os) throws IOException
    Streams the resource's content to the provided stream. The caller is responsible for flushing or closing the output stream.
    Throws:
      `IOException`

  - ### openStream

    InputStream openStream() throws IOException
    Opens the content of the resource as an input stream; the caller is responsible for closing the stream after reading it.
    Returns:
      stream of the contents of the resource
    Throws:
      `IOException`

  - ### getLastModified

    long getLastModified()
    Returns the time the resource was last modified, with accuracy to one second (so as to match the HTTP request/response date headers).

  - ### getChecksum

    String getChecksum() throws IOException
    Compute and return the checksum of the content for this asset; the checksum should be computed based on the uncompressed content.
    Returns:
      checksum for uncompressed content
    Throws:
      `IOException`
    Since:
      5.4
    See Also:
      - `AssetChecksumGenerator.generateChecksum(StreamableResource)`

  - ### addResponseCustomizer

    StreamableResource addResponseCustomizer(ResponseCustomizer customizer)
    Returns a new StreamableResource that includes the provided customizer. Customizers are invoked in the order they are added.
    Since:
      5.4

  - ### getResponseCustomizer

    ResponseCustomizer getResponseCustomizer()
    Returns the customizer, if any, for this resource. This may represent an aggregate customizer.
    Since:
      5.4

  - ### withContentType

    StreamableResource withContentType(ContentType newContentType)
    Returns a new StreamableResource instance with the new content type.
    Parameters:
      `newContentType` -
    Since:
      5.4