From b5be88a94af420502bba013c2a51b893f85ffef7 Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Fri, 7 Feb 2020 20:27:04 -0500 Subject: [PATCH] add FixedSizeInputStream interface and subclasses --- .../util/io/FixedByteArrayInputStream.java | 20 +++++++++++++++++++ .../util/io/FixedSizeInputStream.java | 7 +++++++ .../cobbzilla/util/io/NullInputStream.java | 4 +++- 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/cobbzilla/util/io/FixedByteArrayInputStream.java create mode 100644 src/main/java/org/cobbzilla/util/io/FixedSizeInputStream.java diff --git a/src/main/java/org/cobbzilla/util/io/FixedByteArrayInputStream.java b/src/main/java/org/cobbzilla/util/io/FixedByteArrayInputStream.java new file mode 100644 index 0000000..633468f --- /dev/null +++ b/src/main/java/org/cobbzilla/util/io/FixedByteArrayInputStream.java @@ -0,0 +1,20 @@ +package org.cobbzilla.util.io; + +import lombok.Getter; + +import java.io.ByteArrayInputStream; + +public class FixedByteArrayInputStream extends ByteArrayInputStream implements FixedSizeInputStream { + + @Getter private final int size; + + public FixedByteArrayInputStream(byte[] buf) { + super(buf); + size = buf.length; + } + + public FixedByteArrayInputStream(byte[] buf, int offset, int length) { + super(buf, offset, length); + size = length; + } +} diff --git a/src/main/java/org/cobbzilla/util/io/FixedSizeInputStream.java b/src/main/java/org/cobbzilla/util/io/FixedSizeInputStream.java new file mode 100644 index 0000000..b0d65bf --- /dev/null +++ b/src/main/java/org/cobbzilla/util/io/FixedSizeInputStream.java @@ -0,0 +1,7 @@ +package org.cobbzilla.util.io; + +public interface FixedSizeInputStream { + + long getSize (); + +} diff --git a/src/main/java/org/cobbzilla/util/io/NullInputStream.java b/src/main/java/org/cobbzilla/util/io/NullInputStream.java index bfe5a6f..1557ac1 100644 --- a/src/main/java/org/cobbzilla/util/io/NullInputStream.java +++ b/src/main/java/org/cobbzilla/util/io/NullInputStream.java @@ -2,7 +2,7 @@ package org.cobbzilla.util.io; import java.io.InputStream; -public class NullInputStream extends InputStream { +public class NullInputStream extends InputStream implements FixedSizeInputStream { public static final NullInputStream instance = new NullInputStream(); @@ -10,4 +10,6 @@ public class NullInputStream extends InputStream { @Override public int read(byte[] b) { return -1; } @Override public int read(byte[] b, int off, int len) { return -1; } + @Override public long getSize() { return 0; } + }