Package org.apache.commons.io.input

# Class ChecksumInputStream.Builder

java.lang.Object
org.apache.commons.io.build.AbstractSupplier<T,B>
org.apache.commons.io.build.AbstractOriginSupplier<T,B>
org.apache.commons.io.build.AbstractStreamBuilder<ChecksumInputStream,ChecksumInputStream.Builder>
org.apache.commons.io.input.ChecksumInputStream.Builder

All Implemented Interfaces:
  `IOSupplier<ChecksumInputStream>`

Enclosing class:
  ChecksumInputStream

public static class ChecksumInputStream.Builder extends AbstractStreamBuilder<ChecksumInputStream,ChecksumInputStream.Builder>
Builds a new `ChecksumInputStream`.

There is no default `Checksum`; you MUST provide one.

## Using NIO

     ChecksumInputStream s = ChecksumInputStream.builder()
       .setPath(Paths.get("MyFile.xml"))
       .setChecksum(new CRC32())
       .setExpectedChecksumValue(12345)
       .get();

## Using IO

     ChecksumInputStream s = ChecksumInputStream.builder()
       .setFile(new File("MyFile.xml"))
       .setChecksum(new CRC32())
       .setExpectedChecksumValue(12345)
       .get();

## Validating only part of an InputStream

The following validates the first 100 bytes of the given input.

     ChecksumInputStream s = ChecksumInputStream.builder()
       .setPath(Paths.get("MyFile.xml"))
       .setChecksum(new CRC32())
       .setExpectedChecksumValue(12345)
       .setCountThreshold(100)
       .get();

To validate input after the beginning of a stream, build an instance with an InputStream starting where you want to validate.

     InputStream inputStream = ...;
     inputStream.read(...);
     inputStream.skip(...);
     ChecksumInputStream s = ChecksumInputStream.builder()
       .setInputStream(inputStream)
       .setChecksum(new CRC32())
       .setExpectedChecksumValue(12345)
       .setCountThreshold(100)
       .get();

See Also:
  - `get()`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Builder()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `ChecksumInputStream`
  `get()`
  Builds a new `ChecksumInputStream`.
  `ChecksumInputStream.Builder`
  `setChecksum(Checksum checksum)`
  Sets the Checksum.
  `ChecksumInputStream.Builder`
  `setCountThreshold(long countThreshold)`
  Sets the count threshold to limit how much input is consumed to update the `Checksum` before the input stream validates its value.
  `ChecksumInputStream.Builder`
  `setExpectedChecksumValue(long expectedChecksumValue)`
  The expected `Checksum` value once the stream is exhausted or the count threshold is reached.

  ### Methods inherited from class org.apache.commons.io.build.AbstractStreamBuilder

  `getBufferSize, getBufferSizeDefault, getCharSequence, getCharset, getCharsetDefault, getInputStream, getOpenOptions, getOutputStream, getPath, getReader, getWriter, setBufferSize, setBufferSize, setBufferSizeChecker, setBufferSizeDefault, setBufferSizeMax, setCharset, setCharset, setCharsetDefault, setOpenOptions`

  ### Methods inherited from class org.apache.commons.io.build.AbstractOriginSupplier

  `checkOrigin, getOrigin, hasOrigin, newByteArrayOrigin, newCharSequenceOrigin, newFileOrigin, newFileOrigin, newInputStreamOrigin, newOutputStreamOrigin, newPathOrigin, newPathOrigin, newReaderOrigin, newURIOrigin, newWriterOrigin, setByteArray, setCharSequence, setFile, setFile, setInputStream, setOrigin, setOutputStream, setPath, setPath, setReader, setURI, setWriter`

  ### Methods inherited from class org.apache.commons.io.build.AbstractSupplier

  `asThis`

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

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

  ### Methods inherited from interface org.apache.commons.io.function.IOSupplier

  `asSupplier`

- ## Constructor Details

  - ### Builder

    public Builder()

- ## Method Details

  - ### get

    public ChecksumInputStream get() throws IOException
    Builds a new `ChecksumInputStream`.

    You must set input that supports `AbstractStreamBuilder.getInputStream()`, otherwise, this method throws an exception.

    This builder use the following aspects:

    - `AbstractStreamBuilder.getInputStream()`
    - `Checksum`
    - expectedChecksumValue
    - countThreshold
    Returns:
      a new instance.
    Throws:
      `IllegalStateException` - if the `origin` is `null`.
      `UnsupportedOperationException` - if the origin cannot be converted to an `InputStream`.
      `IOException` - if an I/O error occurs.
    See Also:
      - `AbstractStreamBuilder.getInputStream()`

  - ### setChecksum

    public ChecksumInputStream.Builder setChecksum(Checksum checksum)
    Sets the Checksum.
    Parameters:
      `checksum` - the Checksum.
    Returns:
      this.

  - ### setCountThreshold

    public ChecksumInputStream.Builder setCountThreshold(long countThreshold)
    Sets the count threshold to limit how much input is consumed to update the `Checksum` before the input stream validates its value.

    By default, all input updates the `Checksum`.

    Parameters:
      `countThreshold` - the count threshold. A negative number means the threshold is unbound.
    Returns:
      this.

  - ### setExpectedChecksumValue

    public ChecksumInputStream.Builder setExpectedChecksumValue(long expectedChecksumValue)
    The expected `Checksum` value once the stream is exhausted or the count threshold is reached.
    Parameters:
      `expectedChecksumValue` - The expected Checksum value.
    Returns:
      this.