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]

Reply via email to