Author: scolebourne Date: Wed Oct 11 07:44:17 2006 New Revision: 462818 URL: http://svn.apache.org/viewvc?view=rev&rev=462818 Log: IO-84 - Change int methods from deprecated to exception throwng
Modified: jakarta/commons/proper/io/trunk/RELEASE-NOTES.txt jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/input/CountingInputStream.java jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/output/CountingOutputStream.java Modified: jakarta/commons/proper/io/trunk/RELEASE-NOTES.txt URL: http://svn.apache.org/viewvc/jakarta/commons/proper/io/trunk/RELEASE-NOTES.txt?view=diff&rev=462818&r1=462817&r2=462818 ============================================================================== --- jakarta/commons/proper/io/trunk/RELEASE-NOTES.txt (original) +++ jakarta/commons/proper/io/trunk/RELEASE-NOTES.txt Wed Oct 11 07:44:17 2006 @@ -63,6 +63,11 @@ - Comment about result byte/char count being limited to an int, thus being inacurate for large streams +- CountingInputStream/CountingOutputStream [IO-84] + - methods were declared as int thus the count was innacurate for large streams + - new long based methods getByteCount()/resetByteCount() added + - existing methods changed to throw an exception if the count is greater than an int + Enhancements from 1.2 --------------------- Modified: jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/input/CountingInputStream.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/input/CountingInputStream.java?view=diff&rev=462818&r1=462817&r2=462818 ============================================================================== --- jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/input/CountingInputStream.java (original) +++ jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/input/CountingInputStream.java Wed Oct 11 07:44:17 2006 @@ -110,49 +110,57 @@ /** * The number of bytes that have passed through this stream. * <p> - * <strong>WARNING</strong> This method will return an - * incorrect count for files over 2GB - use - * <code>getByteCount()</code> instead. + * NOTE: From v1.3 this method throws an ArithmeticException if the + * count is greater than can be expressed by an <code>int</code>. + * See [EMAIL PROTECTED] #getByteCount()} for a method using a <code>long</code>. * * @return the number of bytes accumulated - * @deprecated use <code>getByteCount()</code> - see issue IO-84 + * @throws ArithmeticException if the byte count is too large */ - public int getCount() { - return (int) getByteCount(); + public synchronized int getCount() { + long result = getByteCount(); + if (result > Integer.MAX_VALUE) { + throw new ArithmeticException("The byte count " + result + " is too large to be converted to an int"); + } + return (int) result; } /** - * Set the count back to 0. + * Set the byte count back to 0. * <p> - * <strong>WARNING</strong> This method will return an - * incorrect count for files over 2GB - use - * <code>resetByteCount()</code> instead. + * NOTE: From v1.3 this method throws an ArithmeticException if the + * count is greater than can be expressed by an <code>int</code>. + * See [EMAIL PROTECTED] #resetByteCount()} for a method using a <code>long</code>. * - * @return the count previous to resetting. - * @deprecated use <code>resetByteCount()</code> - see issue IO-84 + * @return the count previous to resetting + * @throws ArithmeticException if the byte count is too large */ public synchronized int resetCount() { - return (int) resetByteCount(); + long result = resetByteCount(); + if (result > Integer.MAX_VALUE) { + throw new ArithmeticException("The byte count " + result + " is too large to be converted to an int"); + } + return (int) result; } /** * The number of bytes that have passed through this stream. * <p> - * NOTE: This method is a replacement for <code>getCount()</code> + * NOTE: This method is an alternative for <code>getCount()</code> * and was added because that method returns an integer which will * result in incorrect count for files over 2GB. * * @return the number of bytes accumulated * @since Commons IO 1.3 */ - public long getByteCount() { + public synchronized long getByteCount() { return this.count; } /** * Set the byte count back to 0. * <p> - * NOTE: This method is a replacement for <code>resetCount()</code> + * NOTE: This method is an alternative for <code>resetCount()</code> * and was added because that method returns an integer which will * result in incorrect count for files over 2GB. * Modified: jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/output/CountingOutputStream.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/output/CountingOutputStream.java?view=diff&rev=462818&r1=462817&r2=462818 ============================================================================== --- jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/output/CountingOutputStream.java (original) +++ jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/output/CountingOutputStream.java Wed Oct 11 07:44:17 2006 @@ -88,49 +88,57 @@ /** * The number of bytes that have passed through this stream. * <p> - * <strong>WARNING</strong> This method will return an - * incorrect count for files over 2GB - use - * <code>getByteCount()</code> instead. + * NOTE: From v1.3 this method throws an ArithmeticException if the + * count is greater than can be expressed by an <code>int</code>. + * See [EMAIL PROTECTED] #getByteCount()} for a method using a <code>long</code>. * * @return the number of bytes accumulated - * @deprecated use <code>getByteCount()</code> - see issue IO-84 + * @throws ArithmeticException if the byte count is too large */ - public int getCount() { - return (int) getByteCount(); + public synchronized int getCount() { + long result = getByteCount(); + if (result > Integer.MAX_VALUE) { + throw new ArithmeticException("The byte count " + result + " is too large to be converted to an int"); + } + return (int) result; } /** - * Set the count back to 0. - * <p> - * <strong>WARNING</strong> This method will return an - * incorrect count for files over 2GB - use - * <code>resetByteCount()</code> instead. - * - * @return the count previous to resetting. - * @deprecated use <code>resetByteCount()</code> - see issue IO-84 - */ + * Set the byte count back to 0. + * <p> + * NOTE: From v1.3 this method throws an ArithmeticException if the + * count is greater than can be expressed by an <code>int</code>. + * See [EMAIL PROTECTED] #resetByteCount()} for a method using a <code>long</code>. + * + * @return the count previous to resetting + * @throws ArithmeticException if the byte count is too large + */ public synchronized int resetCount() { - return (int) resetByteCount(); + long result = resetByteCount(); + if (result > Integer.MAX_VALUE) { + throw new ArithmeticException("The byte count " + result + " is too large to be converted to an int"); + } + return (int) result; } /** * The number of bytes that have passed through this stream. * <p> - * NOTE: This method is a replacement for <code>getCount()</code>. + * NOTE: This method is an alternative for <code>getCount()</code>. * It was added because that method returns an integer which will * result in incorrect count for files over 2GB. * * @return the number of bytes accumulated * @since Commons IO 1.3 */ - public long getByteCount() { + public synchronized long getByteCount() { return this.count; } /** * Set the byte count back to 0. * <p> - * NOTE: This method is a replacement for <code>resetCount()</code>. + * NOTE: This method is an alternative for <code>resetCount()</code>. * It was added because that method returns an integer which will * result in incorrect count for files over 2GB. * --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]