Gary Gregory <garydgreg...@gmail.com> schrieb am Mi., 21. Sep. 2016 um
18:57 Uhr:

> My git config --global core.autocrlf is already true... could the file in
> Git have been stored with Windows EOLs?
>

Don't know. Looks like Kristian has fixed it via .gitattributes.


>
> Gary
>
>
>
> On Wed, Sep 21, 2016 at 2:05 AM, Benedikt Ritter <brit...@apache.org>
> wrote:
>
> > Hi Gary,
> >
> > is you line ending set up correct? See
> > https://help.github.com/articles/dealing-with-line-endings/
> >
> > Can you please revert the commit and then commit only the stuff you
> wanted
> > to change?
> >
> > Thank you!
> > Benedikt
> >
> > Gary Gregory <garydgreg...@gmail.com> schrieb am Di., 20. Sep. 2016 um
> > 17:01 Uhr:
> >
> > > This annoying :-( it must be an EOL thing.
> > >
> > > Gary
> > >
> > > On Sep 20, 2016 7:18 AM, "Matt Sicker" <boa...@gmail.com> wrote:
> > >
> > > > Did the line ending change?
> > > >
> > > > On 20 September 2016 at 01:59, Benedikt Ritter <brit...@apache.org>
> > > wrote:
> > > >
> > > > > Hello Gary,
> > > > >
> > > > > why has the whole file changed?
> > > > >
> > > > > Regards,
> > > > > Benedikt
> > > > >
> > > > > <ggreg...@apache.org> schrieb am Di., 20. Sep. 2016 um 07:40 Uhr:
> > > > >
> > > > > > Repository: commons-io
> > > > > > Updated Branches:
> > > > > >   refs/heads/master 9ba9b49af -> 822bd135f
> > > > > >
> > > > > >
> > > > > > Remove redundant type arguments.
> > > > > >
> > > > > > Project: http://git-wip-us.apache.org/repos/asf/commons-io/repo
> > > > > > Commit:
> http://git-wip-us.apache.org/repos/asf/commons-io/commit/
> > > > > 822bd135
> > > > > > Tree:
> > > http://git-wip-us.apache.org/repos/asf/commons-io/tree/822bd135
> > > > > > Diff:
> > > http://git-wip-us.apache.org/repos/asf/commons-io/diff/822bd135
> > > > > >
> > > > > > Branch: refs/heads/master
> > > > > > Commit: 822bd135f3a54b8fbeb23c313535b13c18198c3a
> > > > > > Parents: 9ba9b49
> > > > > > Author: Gary Gregory <ggreg...@apache.org>
> > > > > > Authored: Mon Sep 19 22:40:29 2016 -0700
> > > > > > Committer: Gary Gregory <ggreg...@apache.org>
> > > > > > Committed: Mon Sep 19 22:40:29 2016 -0700
> > > > > >
> > > > > >
> > > ----------------------------------------------------------------------
> > > > > >  .../commons/io/input/ObservableInputStream.java | 476
> > > > > +++++++++----------
> > > > > >  1 file changed, 238 insertions(+), 238 deletions(-)
> > > > > >
> > > ----------------------------------------------------------------------
> > > > > >
> > > > > >
> > > > > >
> > > > > > http://git-wip-us.apache.org/repos/asf/commons-io/blob/
> > > > > 822bd135/src/main/java/org/apache/commons/io/input/
> > > > > ObservableInputStream.java
> > > > > >
> > > ----------------------------------------------------------------------
> > > > > > diff --git
> > > > > >
> > > a/src/main/java/org/apache/commons/io/input/ObservableInputStream.java
> > > > > >
> > > b/src/main/java/org/apache/commons/io/input/ObservableInputStream.java
> > > > > > index 7d13472..c580ba4 100644
> > > > > > --- a/src/main/java/org/apache/commons/io/input/
> > > > > ObservableInputStream.java
> > > > > > +++ b/src/main/java/org/apache/commons/io/input/
> > > > > ObservableInputStream.java
> > > > > > @@ -1,238 +1,238 @@
> > > > > > -/*
> > > > > > - * Licensed to the Apache Software Foundation (ASF) under one or
> > > more
> > > > > > - * contributor license agreements.  See the NOTICE file
> > distributed
> > > > with
> > > > > > - * this work for additional information regarding copyright
> > > ownership.
> > > > > > - * The ASF licenses this file to You under the Apache License,
> > > Version
> > > > > 2.0
> > > > > > - * (the "License"); you may not use this file except in
> compliance
> > > > with
> > > > > > - * the License.  You may obtain a copy of the License at
> > > > > > - *
> > > > > > - *      http://www.apache.org/licenses/LICENSE-2.0
> > > > > > - *
> > > > > > - * Unless required by applicable law or agreed to in writing,
> > > software
> > > > > > - * distributed under the License is distributed on an "AS IS"
> > BASIS,
> > > > > > - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
> or
> > > > > > implied.
> > > > > > - * See the License for the specific language governing
> permissions
> > > and
> > > > > > - * limitations under the License.
> > > > > > - */
> > > > > > -package org.apache.commons.io.input;
> > > > > > -
> > > > > > -import java.io.IOException;
> > > > > > -import java.io.InputStream;
> > > > > > -import java.security.MessageDigest;
> > > > > > -import java.util.ArrayList;
> > > > > > -import java.util.List;
> > > > > > -
> > > > > > -
> > > > > > -/**
> > > > > > - * The {@link ObservableInputStream} allows, that an InputStream
> > may
> > > > be
> > > > > > consumed
> > > > > > - * by other receivers, apart from the thread, which is reading
> it.
> > > > > > - * The other consumers are implemented as instances of {@link
> > > > > Observer}. A
> > > > > > - * typical application may be the generation of a {@link
> > > > MessageDigest}
> > > > > > on the
> > > > > > - * fly.
> > > > > > - * {@code Note}: The {@link ObservableInputStream} is
> <em>not</em>
> > > > > thread
> > > > > > safe,
> > > > > > - * as instances of InputStream usually aren't.
> > > > > > - * If you must access the stream from multiple threads, then
> > > > > > synchronization, locking,
> > > > > > - * or a similar means must be used.
> > > > > > - * @see MessageDigestCalculatingInputStream
> > > > > > - */
> > > > > > -public class ObservableInputStream extends ProxyInputStream {
> > > > > > -    public static abstract class Observer {
> > > > > > -        /** Called to indicate, that {@link InputStream#read()}
> > has
> > > > been
> > > > > > invoked
> > > > > > -         * on the {@link ObservableInputStream}, and will
> return a
> > > > > value.
> > > > > > -         * @param pByte The value, which is being returned. This
> > > will
> > > > > > never be -1 (EOF),
> > > > > > -         *    because, in that case, {link #finished()} will be
> > > > invoked
> > > > > > instead.
> > > > > > -         */
> > > > > > -        void data(int pByte) throws IOException {}
> > > > > > -        /** Called to indicate, that {@link
> > > InputStream#read(byte[])},
> > > > > or
> > > > > > -         * {@link InputStream#read(byte[], int, int)} have been
> > > > called,
> > > > > > and are about to
> > > > > > -         * invoke data.
> > > > > > -         * @param pBuffer The byte array, which has been passed
> to
> > > the
> > > > > > read call, and where
> > > > > > -         *   data has been stored.
> > > > > > -         * @param pOffset The offset within the byte array,
> where
> > > data
> > > > > > has been stored.
> > > > > > -         * @param pLength The number of bytes, which have been
> > > stored
> > > > in
> > > > > > the byte array.
> > > > > > -         */
> > > > > > -        void data(byte[] pBuffer, int pOffset, int pLength)
> throws
> > > > > > IOException {}
> > > > > > -        /** Called to indicate, that EOF has been seen on the
> > > > underlying
> > > > > > stream.
> > > > > > -         * This method may be called multiple times, if the
> reader
> > > > keeps
> > > > > > invoking
> > > > > > -         * either of the read methods, and they will
> consequently
> > > keep
> > > > > > returning
> > > > > > -         * EOF.
> > > > > > -         */
> > > > > > -        void finished() throws IOException {}
> > > > > > -        /** Called to indicate, that the {@link
> > > ObservableInputStream}
> > > > > > has been closed.
> > > > > > -         */
> > > > > > -        void closed() throws IOException {}
> > > > > > -        /**
> > > > > > -         * Called to indicate, that an error occurred on the
> > > > underlying
> > > > > > stream.
> > > > > > -         */
> > > > > > -        void error(IOException pException) throws IOException {
> > > throw
> > > > > > pException; }
> > > > > > -    }
> > > > > > -
> > > > > > -    private final List<Observer> observers = new
> > > > ArrayList<Observer>();
> > > > > > -
> > > > > > -    public ObservableInputStream(InputStream pProxy) {
> > > > > > -        super(pProxy);
> > > > > > -    }
> > > > > > -
> > > > > > -    public void add(Observer pObserver) {
> > > > > > -        observers.add(pObserver);
> > > > > > -    }
> > > > > > -
> > > > > > -    public void remove(Observer pObserver) {
> > > > > > -        observers.remove(pObserver);
> > > > > > -    }
> > > > > > -
> > > > > > -    public void removeAllObservers() {
> > > > > > -        observers.clear();
> > > > > > -    }
> > > > > > -
> > > > > > -    @Override
> > > > > > -    public int read() throws IOException {
> > > > > > -        int result = 0;
> > > > > > -        IOException ioe = null;
> > > > > > -        try {
> > > > > > -            result = super.read();
> > > > > > -        } catch (IOException pException) {
> > > > > > -            ioe = pException;
> > > > > > -        }
> > > > > > -        if (ioe != null) {
> > > > > > -            noteError(ioe);
> > > > > > -        } else if (result == -1) {
> > > > > > -            noteFinished();
> > > > > > -        } else {
> > > > > > -            noteDataByte(result);
> > > > > > -        }
> > > > > > -        return result;
> > > > > > -    }
> > > > > > -
> > > > > > -    @Override
> > > > > > -    public int read(byte[] pBuffer) throws IOException {
> > > > > > -        int result = 0;
> > > > > > -        IOException ioe = null;
> > > > > > -        try {
> > > > > > -            result = super.read(pBuffer);
> > > > > > -        } catch (IOException pException) {
> > > > > > -            ioe = pException;
> > > > > > -        }
> > > > > > -        if (ioe != null) {
> > > > > > -            noteError(ioe);
> > > > > > -        } else if (result == -1) {
> > > > > > -            noteFinished();
> > > > > > -        } else if (result > 0) {
> > > > > > -            noteDataBytes(pBuffer, 0, result);
> > > > > > -        }
> > > > > > -        return result;
> > > > > > -    }
> > > > > > -
> > > > > > -    @Override
> > > > > > -    public int read(byte[] pBuffer, int pOffset, int pLength)
> > throws
> > > > > > IOException {
> > > > > > -        int result = 0;
> > > > > > -        IOException ioe = null;
> > > > > > -        try {
> > > > > > -            result = super.read(pBuffer, pOffset, pLength);
> > > > > > -        } catch (IOException pException) {
> > > > > > -            ioe = pException;
> > > > > > -        }
> > > > > > -        if (ioe != null) {
> > > > > > -            noteError(ioe);
> > > > > > -        } else if (result == -1) {
> > > > > > -            noteFinished();
> > > > > > -        } else if (result > 0) {
> > > > > > -            noteDataBytes(pBuffer, pOffset, result);
> > > > > > -        }
> > > > > > -        return result;
> > > > > > -    }
> > > > > > -
> > > > > > -    /** Notifies the observers by invoking {@link
> > > > > > Observer#data(byte[],int,int)}
> > > > > > -     * with the given arguments.
> > > > > > -     * @param pBuffer Passed to the observers.
> > > > > > -     * @param pOffset Passed to the observers.
> > > > > > -     * @param pLength Passed to the observers.
> > > > > > -     * @throws IOException Some observer has thrown an
> exception,
> > > > which
> > > > > > is being
> > > > > > -     *   passed down.
> > > > > > -     */
> > > > > > -    protected void noteDataBytes(byte[] pBuffer, int pOffset,
> int
> > > > > > pLength) throws IOException {
> > > > > > -        for (Observer observer : getObservers()) {
> > > > > > -            observer.data(pBuffer, pOffset, pLength);
> > > > > > -        }
> > > > > > -    }
> > > > > > -
> > > > > > -    /** Notifies the observers by invoking {@link
> > > > Observer#finished()}.
> > > > > > -     * @throws IOException Some observer has thrown an
> exception,
> > > > which
> > > > > > is being
> > > > > > -     *   passed down.
> > > > > > -     */
> > > > > > -    protected void noteFinished() throws IOException {
> > > > > > -        for (Observer observer : getObservers()) {
> > > > > > -            observer.finished();
> > > > > > -        }
> > > > > > -    }
> > > > > > -
> > > > > > -    /** Notifies the observers by invoking {@link
> > > Observer#data(int)}
> > > > > > -     * with the given arguments.
> > > > > > -     * @param pDataByte Passed to the observers.
> > > > > > -     * @throws IOException Some observer has thrown an
> exception,
> > > > which
> > > > > > is being
> > > > > > -     *   passed down.
> > > > > > -     */
> > > > > > -    protected void noteDataByte(int pDataByte) throws
> IOException
> > {
> > > > > > -        for (Observer observer : getObservers()) {
> > > > > > -            observer.data(pDataByte);
> > > > > > -        }
> > > > > > -    }
> > > > > > -
> > > > > > -    /** Notifies the observers by invoking {@link
> > > > > > Observer#error(IOException)}
> > > > > > -     * with the given argument.
> > > > > > -     * @param pException Passed to the observers.
> > > > > > -     * @throws IOException Some observer has thrown an
> exception,
> > > > which
> > > > > > is being
> > > > > > -     *   passed down. This may be the same exception, which has
> > been
> > > > > > passed as an
> > > > > > -     *   argument.
> > > > > > -     */
> > > > > > -    protected void noteError(IOException pException) throws
> > > > IOException
> > > > > {
> > > > > > -        for (Observer observer : getObservers()) {
> > > > > > -            observer.error(pException);
> > > > > > -        }
> > > > > > -    }
> > > > > > -
> > > > > > -    /** Notifies the observers by invoking {@link
> > > > Observer#finished()}.
> > > > > > -     * @throws IOException Some observer has thrown an
> exception,
> > > > which
> > > > > > is being
> > > > > > -     *   passed down.
> > > > > > -     */
> > > > > > -    protected void noteClosed() throws IOException {
> > > > > > -        for (Observer observer : getObservers()) {
> > > > > > -            observer.closed();
> > > > > > -        }
> > > > > > -    }
> > > > > > -
> > > > > > -    protected List<Observer> getObservers() {
> > > > > > -        return observers;
> > > > > > -    }
> > > > > > -
> > > > > > -    @Override
> > > > > > -    public void close() throws IOException {
> > > > > > -        IOException ioe = null;
> > > > > > -        try {
> > > > > > -            super.close();
> > > > > > -        } catch (IOException e) {
> > > > > > -            ioe = e;
> > > > > > -        }
> > > > > > -        if (ioe == null) {
> > > > > > -            noteClosed();
> > > > > > -        } else {
> > > > > > -            noteError(ioe);
> > > > > > -        }
> > > > > > -    }
> > > > > > -
> > > > > > -    /** Reads all data from the underlying {@link InputStream},
> > > while
> > > > > > notifying the
> > > > > > -     * observers.
> > > > > > -     * @throws IOException The underlying {@link InputStream},
> or
> > > > either
> > > > > > of the
> > > > > > -     *   observers has thrown an exception.
> > > > > > -     */
> > > > > > -    public void consume() throws IOException {
> > > > > > -        final byte[] buffer = new byte[8192];
> > > > > > -        for (;;) {
> > > > > > -            final int res = read(buffer);
> > > > > > -            if (res == -1) {
> > > > > > -                return;
> > > > > > -            }
> > > > > > -        }
> > > > > > -    }
> > > > > > -
> > > > > > -}
> > > > > > +/*
> > > > > > + * Licensed to the Apache Software Foundation (ASF) under one or
> > > more
> > > > > > + * contributor license agreements.  See the NOTICE file
> > distributed
> > > > with
> > > > > > + * this work for additional information regarding copyright
> > > ownership.
> > > > > > + * The ASF licenses this file to You under the Apache License,
> > > Version
> > > > > 2.0
> > > > > > + * (the "License"); you may not use this file except in
> compliance
> > > > with
> > > > > > + * the License.  You may obtain a copy of the License at
> > > > > > + *
> > > > > > + *      http://www.apache.org/licenses/LICENSE-2.0
> > > > > > + *
> > > > > > + * Unless required by applicable law or agreed to in writing,
> > > software
> > > > > > + * distributed under the License is distributed on an "AS IS"
> > BASIS,
> > > > > > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
> or
> > > > > > implied.
> > > > > > + * See the License for the specific language governing
> permissions
> > > and
> > > > > > + * limitations under the License.
> > > > > > + */
> > > > > > +package org.apache.commons.io.input;
> > > > > > +
> > > > > > +import java.io.IOException;
> > > > > > +import java.io.InputStream;
> > > > > > +import java.security.MessageDigest;
> > > > > > +import java.util.ArrayList;
> > > > > > +import java.util.List;
> > > > > > +
> > > > > > +
> > > > > > +/**
> > > > > > + * The {@link ObservableInputStream} allows, that an InputStream
> > may
> > > > be
> > > > > > consumed
> > > > > > + * by other receivers, apart from the thread, which is reading
> it.
> > > > > > + * The other consumers are implemented as instances of {@link
> > > > > Observer}. A
> > > > > > + * typical application may be the generation of a {@link
> > > > MessageDigest}
> > > > > > on the
> > > > > > + * fly.
> > > > > > + * {@code Note}: The {@link ObservableInputStream} is
> <em>not</em>
> > > > > thread
> > > > > > safe,
> > > > > > + * as instances of InputStream usually aren't.
> > > > > > + * If you must access the stream from multiple threads, then
> > > > > > synchronization, locking,
> > > > > > + * or a similar means must be used.
> > > > > > + * @see MessageDigestCalculatingInputStream
> > > > > > + */
> > > > > > +public class ObservableInputStream extends ProxyInputStream {
> > > > > > +    public static abstract class Observer {
> > > > > > +        /** Called to indicate, that {@link InputStream#read()}
> > has
> > > > been
> > > > > > invoked
> > > > > > +         * on the {@link ObservableInputStream}, and will
> return a
> > > > > value.
> > > > > > +         * @param pByte The value, which is being returned. This
> > > will
> > > > > > never be -1 (EOF),
> > > > > > +         *    because, in that case, {link #finished()} will be
> > > > invoked
> > > > > > instead.
> > > > > > +         */
> > > > > > +        void data(int pByte) throws IOException {}
> > > > > > +        /** Called to indicate, that {@link
> > > InputStream#read(byte[])},
> > > > > or
> > > > > > +         * {@link InputStream#read(byte[], int, int)} have been
> > > > called,
> > > > > > and are about to
> > > > > > +         * invoke data.
> > > > > > +         * @param pBuffer The byte array, which has been passed
> to
> > > the
> > > > > > read call, and where
> > > > > > +         *   data has been stored.
> > > > > > +         * @param pOffset The offset within the byte array,
> where
> > > data
> > > > > > has been stored.
> > > > > > +         * @param pLength The number of bytes, which have been
> > > stored
> > > > in
> > > > > > the byte array.
> > > > > > +         */
> > > > > > +        void data(byte[] pBuffer, int pOffset, int pLength)
> throws
> > > > > > IOException {}
> > > > > > +        /** Called to indicate, that EOF has been seen on the
> > > > underlying
> > > > > > stream.
> > > > > > +         * This method may be called multiple times, if the
> reader
> > > > keeps
> > > > > > invoking
> > > > > > +         * either of the read methods, and they will
> consequently
> > > keep
> > > > > > returning
> > > > > > +         * EOF.
> > > > > > +         */
> > > > > > +        void finished() throws IOException {}
> > > > > > +        /** Called to indicate, that the {@link
> > > ObservableInputStream}
> > > > > > has been closed.
> > > > > > +         */
> > > > > > +        void closed() throws IOException {}
> > > > > > +        /**
> > > > > > +         * Called to indicate, that an error occurred on the
> > > > underlying
> > > > > > stream.
> > > > > > +         */
> > > > > > +        void error(IOException pException) throws IOException {
> > > throw
> > > > > > pException; }
> > > > > > +    }
> > > > > > +
> > > > > > +    private final List<Observer> observers = new ArrayList<>();
> > > > > > +
> > > > > > +    public ObservableInputStream(InputStream pProxy) {
> > > > > > +        super(pProxy);
> > > > > > +    }
> > > > > > +
> > > > > > +    public void add(Observer pObserver) {
> > > > > > +        observers.add(pObserver);
> > > > > > +    }
> > > > > > +
> > > > > > +    public void remove(Observer pObserver) {
> > > > > > +        observers.remove(pObserver);
> > > > > > +    }
> > > > > > +
> > > > > > +    public void removeAllObservers() {
> > > > > > +        observers.clear();
> > > > > > +    }
> > > > > > +
> > > > > > +    @Override
> > > > > > +    public int read() throws IOException {
> > > > > > +        int result = 0;
> > > > > > +        IOException ioe = null;
> > > > > > +        try {
> > > > > > +            result = super.read();
> > > > > > +        } catch (IOException pException) {
> > > > > > +            ioe = pException;
> > > > > > +        }
> > > > > > +        if (ioe != null) {
> > > > > > +            noteError(ioe);
> > > > > > +        } else if (result == -1) {
> > > > > > +            noteFinished();
> > > > > > +        } else {
> > > > > > +            noteDataByte(result);
> > > > > > +        }
> > > > > > +        return result;
> > > > > > +    }
> > > > > > +
> > > > > > +    @Override
> > > > > > +    public int read(byte[] pBuffer) throws IOException {
> > > > > > +        int result = 0;
> > > > > > +        IOException ioe = null;
> > > > > > +        try {
> > > > > > +            result = super.read(pBuffer);
> > > > > > +        } catch (IOException pException) {
> > > > > > +            ioe = pException;
> > > > > > +        }
> > > > > > +        if (ioe != null) {
> > > > > > +            noteError(ioe);
> > > > > > +        } else if (result == -1) {
> > > > > > +            noteFinished();
> > > > > > +        } else if (result > 0) {
> > > > > > +            noteDataBytes(pBuffer, 0, result);
> > > > > > +        }
> > > > > > +        return result;
> > > > > > +    }
> > > > > > +
> > > > > > +    @Override
> > > > > > +    public int read(byte[] pBuffer, int pOffset, int pLength)
> > throws
> > > > > > IOException {
> > > > > > +        int result = 0;
> > > > > > +        IOException ioe = null;
> > > > > > +        try {
> > > > > > +            result = super.read(pBuffer, pOffset, pLength);
> > > > > > +        } catch (IOException pException) {
> > > > > > +            ioe = pException;
> > > > > > +        }
> > > > > > +        if (ioe != null) {
> > > > > > +            noteError(ioe);
> > > > > > +        } else if (result == -1) {
> > > > > > +            noteFinished();
> > > > > > +        } else if (result > 0) {
> > > > > > +            noteDataBytes(pBuffer, pOffset, result);
> > > > > > +        }
> > > > > > +        return result;
> > > > > > +    }
> > > > > > +
> > > > > > +    /** Notifies the observers by invoking {@link
> > > > > > Observer#data(byte[],int,int)}
> > > > > > +     * with the given arguments.
> > > > > > +     * @param pBuffer Passed to the observers.
> > > > > > +     * @param pOffset Passed to the observers.
> > > > > > +     * @param pLength Passed to the observers.
> > > > > > +     * @throws IOException Some observer has thrown an
> exception,
> > > > which
> > > > > > is being
> > > > > > +     *   passed down.
> > > > > > +     */
> > > > > > +    protected void noteDataBytes(byte[] pBuffer, int pOffset,
> int
> > > > > > pLength) throws IOException {
> > > > > > +        for (Observer observer : getObservers()) {
> > > > > > +            observer.data(pBuffer, pOffset, pLength);
> > > > > > +        }
> > > > > > +    }
> > > > > > +
> > > > > > +    /** Notifies the observers by invoking {@link
> > > > Observer#finished()}.
> > > > > > +     * @throws IOException Some observer has thrown an
> exception,
> > > > which
> > > > > > is being
> > > > > > +     *   passed down.
> > > > > > +     */
> > > > > > +    protected void noteFinished() throws IOException {
> > > > > > +        for (Observer observer : getObservers()) {
> > > > > > +            observer.finished();
> > > > > > +        }
> > > > > > +    }
> > > > > > +
> > > > > > +    /** Notifies the observers by invoking {@link
> > > Observer#data(int)}
> > > > > > +     * with the given arguments.
> > > > > > +     * @param pDataByte Passed to the observers.
> > > > > > +     * @throws IOException Some observer has thrown an
> exception,
> > > > which
> > > > > > is being
> > > > > > +     *   passed down.
> > > > > > +     */
> > > > > > +    protected void noteDataByte(int pDataByte) throws
> IOException
> > {
> > > > > > +        for (Observer observer : getObservers()) {
> > > > > > +            observer.data(pDataByte);
> > > > > > +        }
> > > > > > +    }
> > > > > > +
> > > > > > +    /** Notifies the observers by invoking {@link
> > > > > > Observer#error(IOException)}
> > > > > > +     * with the given argument.
> > > > > > +     * @param pException Passed to the observers.
> > > > > > +     * @throws IOException Some observer has thrown an
> exception,
> > > > which
> > > > > > is being
> > > > > > +     *   passed down. This may be the same exception, which has
> > been
> > > > > > passed as an
> > > > > > +     *   argument.
> > > > > > +     */
> > > > > > +    protected void noteError(IOException pException) throws
> > > > IOException
> > > > > {
> > > > > > +        for (Observer observer : getObservers()) {
> > > > > > +            observer.error(pException);
> > > > > > +        }
> > > > > > +    }
> > > > > > +
> > > > > > +    /** Notifies the observers by invoking {@link
> > > > Observer#finished()}.
> > > > > > +     * @throws IOException Some observer has thrown an
> exception,
> > > > which
> > > > > > is being
> > > > > > +     *   passed down.
> > > > > > +     */
> > > > > > +    protected void noteClosed() throws IOException {
> > > > > > +        for (Observer observer : getObservers()) {
> > > > > > +            observer.closed();
> > > > > > +        }
> > > > > > +    }
> > > > > > +
> > > > > > +    protected List<Observer> getObservers() {
> > > > > > +        return observers;
> > > > > > +    }
> > > > > > +
> > > > > > +    @Override
> > > > > > +    public void close() throws IOException {
> > > > > > +        IOException ioe = null;
> > > > > > +        try {
> > > > > > +            super.close();
> > > > > > +        } catch (IOException e) {
> > > > > > +            ioe = e;
> > > > > > +        }
> > > > > > +        if (ioe == null) {
> > > > > > +            noteClosed();
> > > > > > +        } else {
> > > > > > +            noteError(ioe);
> > > > > > +        }
> > > > > > +    }
> > > > > > +
> > > > > > +    /** Reads all data from the underlying {@link InputStream},
> > > while
> > > > > > notifying the
> > > > > > +     * observers.
> > > > > > +     * @throws IOException The underlying {@link InputStream},
> or
> > > > either
> > > > > > of the
> > > > > > +     *   observers has thrown an exception.
> > > > > > +     */
> > > > > > +    public void consume() throws IOException {
> > > > > > +        final byte[] buffer = new byte[8192];
> > > > > > +        for (;;) {
> > > > > > +            final int res = read(buffer);
> > > > > > +            if (res == -1) {
> > > > > > +                return;
> > > > > > +            }
> > > > > > +        }
> > > > > > +    }
> > > > > > +
> > > > > > +}
> > > > > >
> > > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Matt Sicker <boa...@gmail.com>
> > > >
> > >
> >
>
>
>
> --
> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
> Java Persistence with Hibernate, Second Edition
> <http://www.manning.com/bauer3/>
> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> Spring Batch in Action <http://www.manning.com/templier/>
> Blog: http://garygregory.wordpress.com
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory
>

Reply via email to