Interface Releasable

All Known Implementing Classes:
AwsChunkedEncodingInputStream, AwsChunkedInputStream, AwsCompressionInputStream, AwsSignedChunkedEncodingInputStream, AwsUnsignedChunkedEncodingInputStream, BytesReadTrackingInputStream, Crc32ChecksumCalculatingInputStream, Crc32ChecksumValidatingInputStream, ReleasableInputStream, ResettableInputStream, ResponseInputStream, SdkDigestInputStream, SdkFilterInputStream, SdkInputStream

public interface Releasable
Used for releasing a resource.

For example, the creation of a ResettableInputStream would entail physically opening a file. If the opened file is meant to be closed only (in a finally block) by the very same code block that created it, then it is necessary that the release method must not be called while the execution is made in other stack frames. In such case, as other stack frames may inadvertently or indirectly call the close method of the stream, the creator of the stream would need to explicitly disable the accidental closing via ResettableInputStream#disableClose(), so that the release method becomes the only way to truly close the opened file.

  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Releases the allocated resource.
    static void
    release(Closeable is, org.slf4j.Logger log)
    Releases the given Closeable especially if it was an instance of Releasable.
  • Method Details

    • release

      void release()
      Releases the allocated resource. This method should not be called except by the caller who allocated the resource at the very top of the call stack. This allows, typically, a Closeable resource to be not unintentionally released owing to the calling of the Closeable.close() methods by implementation deep down in the call stack.

      For example, the creation of a ResettableInputStream would entail physically opening a file. If the opened file is meant to be closed only (in a finally block) by the very same code block that created it, then it is necessary that the release method must not be called while the execution is made in other stack frames. In such case, as other stack frames may inadvertently or indirectly call the close method of the stream, the creator of the stream would need to explicitly disable the accidental closing via ResettableInputStream#disableClose(), so that the release method becomes the only way to truly close the opened file.

    • release

      static void release(Closeable is, org.slf4j.Logger log)
      Releases the given Closeable especially if it was an instance of Releasable.

      For example, the creation of a ResettableInputStream would entail physically opening a file. If the opened file is meant to be closed only (in a finally block) by the very same code block that created it, then it is necessary that the release method must not be called while the execution is made in other stack frames. In such case, as other stack frames may inadvertently or indirectly call the close method of the stream, the creator of the stream would need to explicitly disable the accidental closing via ResettableInputStream#disableClose(), so that the release method becomes the only way to truly close the opened file.