Class 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:
  • 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.