You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by Emmanuel Bourg <eb...@apache.org> on 2012/03/08 00:47:41 UTC

Re: svn commit: r1298215 - in /commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv: CharBuffer.java ExtendedBufferedReader.java UnicodeUnescapeReader.java

I think I never understood the purpose of @Override on the JDK methods. 
I thought @Override was mainly useful to prevent a method renamed in a 
super class to leave non renamed methods in the subclasses. But for 
methods like toString() or read() this is never going to happen. So in 
this case I think @Override adds unnecessary noise.

Emmanuel Bourg



Le 08/03/2012 00:34, sebb@apache.org a écrit :
> Author: sebb
> Date: Wed Mar  7 23:34:39 2012
> New Revision: 1298215
>
> URL: http://svn.apache.org/viewvc?rev=1298215&view=rev
> Log:
> @Override + Javadoc
>
> Modified:
>      commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/CharBuffer.java
>      commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java
>      commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java
>
> Modified: commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/CharBuffer.java
> URL: http://svn.apache.org/viewvc/commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/CharBuffer.java?rev=1298215&r1=1298214&r2=1298215&view=diff
> ==============================================================================
> --- commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/CharBuffer.java (original)
> +++ commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/CharBuffer.java Wed Mar  7 23:34:39 2012
> @@ -184,8 +184,9 @@ class CharBuffer {
>        * Converts the contents of the buffer into a StringBuffer.
>        * This method involves copying the new data once!
>        *
> -     * @return
> +     * @return the contents of the character buffer as a String
>        */
> +    @Override
>       public String toString() {
>           return new String(c, 0, length);
>       }
>
> Modified: commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java
> URL: http://svn.apache.org/viewvc/commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java?rev=1298215&r1=1298214&r2=1298215&view=diff
> ==============================================================================
> --- commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java (original)
> +++ commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java Wed Mar  7 23:34:39 2012
> @@ -65,6 +65,7 @@ class ExtendedBufferedReader extends Buf
>        *
>        * @return the next char or END_OF_STREAM if end of stream has been reached.
>        */
> +    @Override
>       public int read() throws IOException {
>           // initialize the lookahead
>           if (lookaheadChar == UNDEFINED) {
> @@ -103,6 +104,7 @@ class ExtendedBufferedReader extends Buf
>        *
>        * @return nof chars actually read or END_OF_STREAM
>        */
> +    @Override
>       public int read(char[] buf, int off, int len) throws IOException {
>           // do not claim if len == 0
>           if (len == 0) {
> @@ -145,6 +147,7 @@ class ExtendedBufferedReader extends Buf
>        *         including any line-termination characters, or null
>        *         if the end of the stream has been reached
>        */
> +    @Override
>       public String readLine() throws IOException {
>
>           if (lookaheadChar == UNDEFINED) {
> @@ -186,6 +189,7 @@ class ExtendedBufferedReader extends Buf
>       /**
>        * Unsupported
>        */
> +    @Override
>       public long skip(long n) throws IllegalArgumentException, IOException {
>           throw new UnsupportedOperationException("CSV has no reason to implement this");
>       }
> @@ -216,8 +220,10 @@ class ExtendedBufferedReader extends Buf
>       }
>
>       /**
> -     * Unsupported
> +     * Unsupported.
> +     * @throws UnsupportedOperationException if invoked
>        */
> +    @Override
>       public boolean markSupported() {
>           throw new UnsupportedOperationException("CSV has no reason to implement this");
>       }
>
> Modified: commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java
> URL: http://svn.apache.org/viewvc/commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java?rev=1298215&r1=1298214&r2=1298215&view=diff
> ==============================================================================
> --- commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java (original)
> +++ commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java Wed Mar  7 23:34:39 2012
> @@ -38,6 +38,7 @@ class UnicodeUnescapeReader extends Read
>           this.reader = new PushbackReader(reader, sequence.length);
>       }
>
> +    @Override
>       public int read(char[] cbuf, int off, int len) throws IOException {
>           int count = 0;
>           for (int i = 0; i<  len; i++) {
> @@ -75,6 +76,7 @@ class UnicodeUnescapeReader extends Read
>           return ('0'<= c&&  c<= '9') || ('a'<= c&&  c<= 'f') || ('A'<= c&&  c<= 'F');
>       }
>
> +    @Override
>       public void close() throws IOException {
>           if (reader != null) {
>               reader.close();
>
>



Re: svn commit: r1298215 - in /commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv: CharBuffer.java ExtendedBufferedReader.java UnicodeUnescapeReader.java

Posted by James Carman <ja...@carmanconsulting.com>.
It's not just about renames.  If you put the @Override annotation,
you're telling the compiler that you think you're overriding
something.  If that method isn't there (you fat-fingered the name or
something), you'll get an error.

On Wed, Mar 7, 2012 at 6:47 PM, Emmanuel Bourg <eb...@apache.org> wrote:
> I think I never understood the purpose of @Override on the JDK methods. I
> thought @Override was mainly useful to prevent a method renamed in a super
> class to leave non renamed methods in the subclasses. But for methods like
> toString() or read() this is never going to happen. So in this case I think
> @Override adds unnecessary noise.
>
> Emmanuel Bourg
>
>
>
> Le 08/03/2012 00:34, sebb@apache.org a écrit :
>>
>> Author: sebb
>> Date: Wed Mar  7 23:34:39 2012
>> New Revision: 1298215
>>
>> URL: http://svn.apache.org/viewvc?rev=1298215&view=rev
>> Log:
>> @Override + Javadoc
>>
>> Modified:
>>
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/CharBuffer.java
>>
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java
>>
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java
>>
>> Modified:
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/CharBuffer.java
>> URL:
>> http://svn.apache.org/viewvc/commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/CharBuffer.java?rev=1298215&r1=1298214&r2=1298215&view=diff
>>
>> ==============================================================================
>> ---
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/CharBuffer.java
>> (original)
>> +++
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/CharBuffer.java
>> Wed Mar  7 23:34:39 2012
>> @@ -184,8 +184,9 @@ class CharBuffer {
>>       * Converts the contents of the buffer into a StringBuffer.
>>       * This method involves copying the new data once!
>>       *
>> -     * @return
>> +     * @return the contents of the character buffer as a String
>>       */
>> +    @Override
>>      public String toString() {
>>          return new String(c, 0, length);
>>      }
>>
>> Modified:
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java
>> URL:
>> http://svn.apache.org/viewvc/commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java?rev=1298215&r1=1298214&r2=1298215&view=diff
>>
>> ==============================================================================
>> ---
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java
>> (original)
>> +++
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java
>> Wed Mar  7 23:34:39 2012
>> @@ -65,6 +65,7 @@ class ExtendedBufferedReader extends Buf
>>       *
>>       * @return the next char or END_OF_STREAM if end of stream has been
>> reached.
>>       */
>> +    @Override
>>      public int read() throws IOException {
>>          // initialize the lookahead
>>          if (lookaheadChar == UNDEFINED) {
>> @@ -103,6 +104,7 @@ class ExtendedBufferedReader extends Buf
>>       *
>>       * @return nof chars actually read or END_OF_STREAM
>>       */
>> +    @Override
>>      public int read(char[] buf, int off, int len) throws IOException {
>>          // do not claim if len == 0
>>          if (len == 0) {
>> @@ -145,6 +147,7 @@ class ExtendedBufferedReader extends Buf
>>       *         including any line-termination characters, or null
>>       *         if the end of the stream has been reached
>>       */
>> +    @Override
>>      public String readLine() throws IOException {
>>
>>          if (lookaheadChar == UNDEFINED) {
>> @@ -186,6 +189,7 @@ class ExtendedBufferedReader extends Buf
>>      /**
>>       * Unsupported
>>       */
>> +    @Override
>>      public long skip(long n) throws IllegalArgumentException, IOException
>> {
>>          throw new UnsupportedOperationException("CSV has no reason to
>> implement this");
>>      }
>> @@ -216,8 +220,10 @@ class ExtendedBufferedReader extends Buf
>>      }
>>
>>      /**
>> -     * Unsupported
>> +     * Unsupported.
>> +     * @throws UnsupportedOperationException if invoked
>>       */
>> +    @Override
>>      public boolean markSupported() {
>>          throw new UnsupportedOperationException("CSV has no reason to
>> implement this");
>>      }
>>
>> Modified:
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java
>> URL:
>> http://svn.apache.org/viewvc/commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java?rev=1298215&r1=1298214&r2=1298215&view=diff
>>
>> ==============================================================================
>> ---
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java
>> (original)
>> +++
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java
>> Wed Mar  7 23:34:39 2012
>> @@ -38,6 +38,7 @@ class UnicodeUnescapeReader extends Read
>>          this.reader = new PushbackReader(reader, sequence.length);
>>      }
>>
>> +    @Override
>>      public int read(char[] cbuf, int off, int len) throws IOException {
>>          int count = 0;
>>          for (int i = 0; i<  len; i++) {
>> @@ -75,6 +76,7 @@ class UnicodeUnescapeReader extends Read
>>          return ('0'<= c&&  c<= '9') || ('a'<= c&&  c<= 'f') || ('A'<= c&&
>>  c<= 'F');
>>      }
>>
>> +    @Override
>>      public void close() throws IOException {
>>          if (reader != null) {
>>              reader.close();
>>
>>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Re: svn commit: r1298215 - in /commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv: CharBuffer.java ExtendedBufferedReader.java UnicodeUnescapeReader.java

Posted by sebb <se...@gmail.com>.
On 8 March 2012 01:03, Emmanuel Bourg <eb...@apache.org> wrote:
> Le 08/03/2012 01:46, sebb a écrit :
>
>
>> If not added then compilers complain.
>
>
> Which one? I have never seen this. Do you add -Xlint:all to your settings?

No.

Certainly Eclipse complains.

>
>
>> The point of @Override is to document that you intended to override
>> the super-class method.
>> So if the name is misspelt, that will be detected.
>
>
> Have you ever seen a misspelt toString() method? Since I started programming
> in Java I haven't.

No, but less common names can easily be misspelt.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Re: svn commit: r1298215 - in /commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv: CharBuffer.java ExtendedBufferedReader.java UnicodeUnescapeReader.java

Posted by "Honton, Charles" <Ch...@intuit.com>.
I've found the @Override annotation useful to detect when you didn't
intend to override a method.  For example, using Eclipse warnings, I found
a finalize() method.  This method was explicitly called from another
class.  I'm pretty sure the original author did not intend the garbage
collector to call this finalize method.

I've also run across  "boolean equals(T)" method implementations where I'm
sure the authors intent was to override the "boolean equals(Object)"
method.

Chas


On 3/8/12 10:39 AM, "sebb" <se...@gmail.com> wrote:

>On 8 March 2012 08:04, Emmanuel Bourg <eb...@apache.org> wrote:
>> Le 08/03/2012 02:21, Konstantin Kolinko a écrit :
>>
>>
>>> Google shows ~1500 hits for "toStrng".
>>
>>
>> More precisely 377 hits for "toStrng" + Java, versus 21,000,000 hits for
>> toString, which is about 0.001%.
>>
>> So @Override is useless 99.999% of the time in this case.
>
>That's not a valid conclusion, because it does not take into account
>whether @Override is present or not.
>Besides, toString is extremely well known as a method name.
>
>==
>
>The point is, @Override is useful as documentation of the intention of
>the coder.
>
>You may not find it useful for your own code - so don't use it in your
>own code.
>
>However, ASF code is developed by many different people over a long
>period of time, and having this annotation helps communicate the
>intention of the coder to subsequent maintainers.
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
>For additional commands, e-mail: dev-help@commons.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Re: svn commit: r1298215 - in /commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv: CharBuffer.java ExtendedBufferedReader.java UnicodeUnescapeReader.java

Posted by sebb <se...@gmail.com>.
On 8 March 2012 08:04, Emmanuel Bourg <eb...@apache.org> wrote:
> Le 08/03/2012 02:21, Konstantin Kolinko a écrit :
>
>
>> Google shows ~1500 hits for "toStrng".
>
>
> More precisely 377 hits for "toStrng" + Java, versus 21,000,000 hits for
> toString, which is about 0.001%.
>
> So @Override is useless 99.999% of the time in this case.

That's not a valid conclusion, because it does not take into account
whether @Override is present or not.
Besides, toString is extremely well known as a method name.

==

The point is, @Override is useful as documentation of the intention of
the coder.

You may not find it useful for your own code - so don't use it in your own code.

However, ASF code is developed by many different people over a long
period of time, and having this annotation helps communicate the
intention of the coder to subsequent maintainers.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Re: svn commit: r1298215 - in /commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv: CharBuffer.java ExtendedBufferedReader.java UnicodeUnescapeReader.java

Posted by Emmanuel Bourg <eb...@apache.org>.
Le 08/03/2012 02:21, Konstantin Kolinko a écrit :

> Google shows ~1500 hits for "toStrng".

More precisely 377 hits for "toStrng" + Java, versus 21,000,000 hits for 
toString, which is about 0.001%.

So @Override is useless 99.999% of the time in this case.

Emmanuel Bourg


Re: svn commit: r1298215 - in /commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv: CharBuffer.java ExtendedBufferedReader.java UnicodeUnescapeReader.java

Posted by Konstantin Kolinko <kn...@gmail.com>.
2012/3/8 Emmanuel Bourg <eb...@apache.org>:
> Le 08/03/2012 01:46, sebb a écrit :
>
>
>> The point of @Override is to document that you intended to override
>> the super-class method.
>> So if the name is misspelt, that will be detected.
>
>
> Have you ever seen a misspelt toString() method? Since I started programming
> in Java I haven't.

Google shows ~1500 hits for "toStrng".

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Re: svn commit: r1298215 - in /commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv: CharBuffer.java ExtendedBufferedReader.java UnicodeUnescapeReader.java

Posted by Emmanuel Bourg <eb...@apache.org>.
Le 08/03/2012 01:46, sebb a écrit :

> If not added then compilers complain.

Which one? I have never seen this. Do you add -Xlint:all to your settings?


> The point of @Override is to document that you intended to override
> the super-class method.
> So if the name is misspelt, that will be detected.

Have you ever seen a misspelt toString() method? Since I started 
programming in Java I haven't.


Emmanuel Bourg


Re: svn commit: r1298215 - in /commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv: CharBuffer.java ExtendedBufferedReader.java UnicodeUnescapeReader.java

Posted by sebb <se...@gmail.com>.
On 7 March 2012 23:47, Emmanuel Bourg <eb...@apache.org> wrote:
> I think I never understood the purpose of @Override on the JDK methods. I
> thought @Override was mainly useful to prevent a method renamed in a super
> class to leave non renamed methods in the subclasses. But for methods like
> toString() or read() this is never going to happen. So in this case I think
> @Override adds unnecessary noise.

If not added then compilers complain.

The point of @Override is to document that you intended to override
the super-class method.
So if the name is misspelt, that will be detected.

All other Commons components (and all other Java projects I contribute
to) use @Override.

> Emmanuel Bourg
>
>
>
> Le 08/03/2012 00:34, sebb@apache.org a écrit :
>>
>> Author: sebb
>> Date: Wed Mar  7 23:34:39 2012
>> New Revision: 1298215
>>
>> URL: http://svn.apache.org/viewvc?rev=1298215&view=rev
>> Log:
>> @Override + Javadoc
>>
>> Modified:
>>
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/CharBuffer.java
>>
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java
>>
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java
>>
>> Modified:
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/CharBuffer.java
>> URL:
>> http://svn.apache.org/viewvc/commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/CharBuffer.java?rev=1298215&r1=1298214&r2=1298215&view=diff
>>
>> ==============================================================================
>> ---
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/CharBuffer.java
>> (original)
>> +++
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/CharBuffer.java
>> Wed Mar  7 23:34:39 2012
>> @@ -184,8 +184,9 @@ class CharBuffer {
>>       * Converts the contents of the buffer into a StringBuffer.
>>       * This method involves copying the new data once!
>>       *
>> -     * @return
>> +     * @return the contents of the character buffer as a String
>>       */
>> +    @Override
>>      public String toString() {
>>          return new String(c, 0, length);
>>      }
>>
>> Modified:
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java
>> URL:
>> http://svn.apache.org/viewvc/commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java?rev=1298215&r1=1298214&r2=1298215&view=diff
>>
>> ==============================================================================
>> ---
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java
>> (original)
>> +++
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/ExtendedBufferedReader.java
>> Wed Mar  7 23:34:39 2012
>> @@ -65,6 +65,7 @@ class ExtendedBufferedReader extends Buf
>>       *
>>       * @return the next char or END_OF_STREAM if end of stream has been
>> reached.
>>       */
>> +    @Override
>>      public int read() throws IOException {
>>          // initialize the lookahead
>>          if (lookaheadChar == UNDEFINED) {
>> @@ -103,6 +104,7 @@ class ExtendedBufferedReader extends Buf
>>       *
>>       * @return nof chars actually read or END_OF_STREAM
>>       */
>> +    @Override
>>      public int read(char[] buf, int off, int len) throws IOException {
>>          // do not claim if len == 0
>>          if (len == 0) {
>> @@ -145,6 +147,7 @@ class ExtendedBufferedReader extends Buf
>>       *         including any line-termination characters, or null
>>       *         if the end of the stream has been reached
>>       */
>> +    @Override
>>      public String readLine() throws IOException {
>>
>>          if (lookaheadChar == UNDEFINED) {
>> @@ -186,6 +189,7 @@ class ExtendedBufferedReader extends Buf
>>      /**
>>       * Unsupported
>>       */
>> +    @Override
>>      public long skip(long n) throws IllegalArgumentException, IOException
>> {
>>          throw new UnsupportedOperationException("CSV has no reason to
>> implement this");
>>      }
>> @@ -216,8 +220,10 @@ class ExtendedBufferedReader extends Buf
>>      }
>>
>>      /**
>> -     * Unsupported
>> +     * Unsupported.
>> +     * @throws UnsupportedOperationException if invoked
>>       */
>> +    @Override
>>      public boolean markSupported() {
>>          throw new UnsupportedOperationException("CSV has no reason to
>> implement this");
>>      }
>>
>> Modified:
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java
>> URL:
>> http://svn.apache.org/viewvc/commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java?rev=1298215&r1=1298214&r2=1298215&view=diff
>>
>> ==============================================================================
>> ---
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java
>> (original)
>> +++
>> commons/sandbox/csv/trunk/src/main/java/org/apache/commons/csv/UnicodeUnescapeReader.java
>> Wed Mar  7 23:34:39 2012
>> @@ -38,6 +38,7 @@ class UnicodeUnescapeReader extends Read
>>          this.reader = new PushbackReader(reader, sequence.length);
>>      }
>>
>> +    @Override
>>      public int read(char[] cbuf, int off, int len) throws IOException {
>>          int count = 0;
>>          for (int i = 0; i<  len; i++) {
>> @@ -75,6 +76,7 @@ class UnicodeUnescapeReader extends Read
>>          return ('0'<= c&&  c<= '9') || ('a'<= c&&  c<= 'f') || ('A'<= c&&
>>  c<= 'F');
>>
>>      }
>>
>> +    @Override
>>      public void close() throws IOException {
>>          if (reader != null) {
>>              reader.close();
>>
>>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org