May I suggest one PR per class so we can avoid a giant PR to review?

Gary
On Thu, Aug 1, 2019, 11:57 Rob Spoor <apa...@icemanx.nl> wrote:

> I guess that the full list is not necessary, but I've been working on a
> project where I could have used the following:
>
> * TaggedReader: to distinguish between IOExceptions from reading and
> other IOExceptions.
> * TeeReader: a piece of code needs a Reader but I also need the contents
> that have already been read. A TeeReader combined with a
> StringBuilderWriter would be perfect.
> * AppendableWriter: most of the code works with the more generic
> Appendable, but it sometimes needs to delegate to a library that only
> works with Writer.
>
> In addition, I think that the CloseShield classes are definitely a good
> addition, especially CloseShieldWriter. Like CloseShieldInputStream,
> it's great for supporting wrapping Writer implementations that need to
> be closed. These then need the Closed classes, to keep the
> implementation similar to those of ClosedInputStream and
> ClosedOutputStream.
>
> So let's shorten the list to the following:
> * CloseShieldReader: I've seen too many libraries that close Readers
> passed to them (even Jackson does this by default!).
> * ClosedReader: needed by CloseShieldReader.
> * TaggedReader: to support distinguishing between IOExceptions from
> reading and others.
> * TeeReader: to support my read + copy to StringBuilder problem.
> * AppendableWriter: to support my bridge problem.
> * CloseShieldWriter: see ClosedShieldWriter
> * ClosedWriter: needed by CloseShieldWriter.
>
> Maybe we can add TaggedWriter and TeeWriter for completeness sake.
>
>
> If nobody disagrees with these 7 or 9 classes (from the original list of
> 22), I can start working on a pull request. I'll also include the
> IOUtils.writer method, using Objects.requireNonNull (I copied the
> explicit null check from IOUtils.buffer).
>
>
> Rob
>
>
> On 01/08/2019 14:10, Gary Gregory wrote:
> > Hi Rob,
> >
> > I imagine that the classes you mention might be missing based on the
> YAGNI
> > principle. I offer that you consider real use cases before plunging into
> > implementation. We do not want to bloat this component just for the sake
> of
> > completeness.
> >
> > Don't forget to get as close as possible to 100% code coverage with unit
> > tests for new code in your PRs ;-)
> >
> > Gary
> >
> > On Thu, Aug 1, 2019 at 6:39 AM Rob Spoor <apa...@icemanx.nl> wrote:
> >
> >> Hi,
> >>
> >> I noticed that a lot of InputStream / OutputStream implementations do
> >> not have a matching Reader / Writer implementation. Some would really be
> >> useful.
> >>
> >> I've made an overview of classes that could be added:
> >> * AutoCloseReader
> >> * BrokenReader
> >> * CloseShieldReader
> >> * ClosedReader
> >> * CountingReader
> >> * DemuxReader
> >> * InfiniteCircularReader
> >> * ObservableReader
> >> * TaggedReader
> >> * TeeReader
> >> * UnixLineEndingReader
> >> * WindowsLineEndingReader
> >>
> >> * AppendableWriter
> >> * BrokenWriter
> >> * CloseShieldWriter
> >> * ClosedWriter
> >> * CountingWriter
> >> * DeferredFileWriter
> >> * DemuxWriter
> >> * TaggedWriter
> >> * TeeWriter
> >> * ThresholdingWriter
> >>
> >>
> >> I am willing to write the following (based on the InputStream
> >> implementations), if needed. I have signed the ICLA, have a JIRA account
> >> (username Spoor) and a GitHub account (username robtimus):
> >>
> >> * AutoCloseReader
> >> * BrokenReader
> >> * CloseShieldReader
> >> * ClosedReader
> >> * CountingReader
> >> * TaggedReader
> >> * TeeReader
> >>
> >> * AppendableWriter
> >> * BrokenWriter
> >> * CloseShieldWriter
> >> * ClosedWriter
> >> * CountingWriter
> >> * TaggedWriter
> >> * TeeWriter
> >>
> >>
> >> In addition, if AppendableWriter is added, I think there should be a
> >> method added to IOUtils, to prevent having to create an AppendableWriter
> >> for an object that's already a Writer:
> >>
> >>       public static Writer writer(final Appendable appendable) {
> >>           if (appendable == null) {
> >>               throw new NullPointerException();
> >>           }
> >>           return appendable instanceof Writer ?
> >>                   (Writer) appendable : new
> AppendableWriter(appendable);
> >>       }
> >>
> >>
> >> Kind regards,
> >>
> >> Rob
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> >> For additional commands, e-mail: dev-h...@commons.apache.org
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>

Reply via email to