Thanks Rob, I should be able to review these over the weekend.

Gary
On Fri, Aug 2, 2019, 08:48 Rob Spoor <apa...@icemanx.nl> wrote:

> The PRs are done, and they build successfully (apart from Java 13 and
> ea, but master has the same problem).
>
> I had to duplicate ClosedReader and ClosedWriter because of unit tests,
> and also had to include BrokenReader and BrokenWriter because of unit
> tests.
>
> Rob
>
>
> On 01/08/2019 18:24, Rob Spoor wrote:
> > Sure :)
> >
> > On 01/08/2019 18:03, Gary Gregory wrote:
> >> 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
>
>

Reply via email to