On Jan 4 2011, at 07:03 , Chris Hegarty wrote:
> On 23/12/2010 20:29, Mike Duigou wrote:
>> Feedback is on webrev.02
>> http://cr.openjdk.java.net/~chegar/7000511/webrev.02/webrev/ :
>>
>> * PrintStream
>>
>> - .flush(), close(), most println() methods synchronize on this for their
>> entire implementation. They could just be made synchronized methods.
>
> I think there are pros and cons of doing this, maybe best left to another CR
> which could look into this separately?
Just an observation. Yes, definitely separately, if at all.
>
>> - The javadoc for append(CharSequence,int,int) for the csq==null condition
>> seems misleading as start and end are considered.
>
> I'm not sure what the original intent of this was, but from what I can see
> the javadoc appears to be clear and the implementation looks like it behaves
> correctly.
Rereading it in a new year I'm not as bothered by it. The wording could better
reflect that substitution of the string "null" for csq=null is the only special
handling for csq=null.
- "An invocation ..." could perhaps be improved to:
This method is equivalent to calling append(CharSequence) with the subsequence
of {...@code csq}, or the string "null" if {...@code csq} is {...@code null},
defined by {...@code start} and {...@code end}. <pre>...</pre>
- @param csq : "If <tt>csq</tt> is ..." sentence to read:
A {...@code null} value is equivalent to passing the string "null".
I feel more strongly about the later change than the former (my alternative
wording doesn't seem much better to me).
>
>> * Formatter
>>
>> - The zero params constructor could just call this((Apppendable) null). The
>> advantage is that the StringBuilder is only constructed in one place.
>>
>> - The Formatter(Locale) constructor could just call this(l, (Apppendable)
>> null). Same reason.
>
> Actually, I think it is clearer to have the StringBuilder created as is. It
> makes it more obvious than having to trace through another constructor. But
> it you feel strongly I can make the changes.
Personal preference only. (It's also easy to follow the trail with Netbeans)
>
> -Chris.
>
>>
>>
>> On Dec 14 2010, at 07:07 , Chris Hegarty wrote:
>>
>>> Failing java.io.PrintStream, java.io.PrintWriter, java.util.Scanner, and
>>> java.util.Formatter multi-arg constructors that take a java.io.File or
>>> String filename (as well as one or more additional args) opens a
>>> FileIn/OutputStream to the given File/filename. If one of the other given
>>> args causes the constructor to fail ( null or unsupported charset for
>>> example ) the FileIn/OutputStream is never closed, and the application does
>>> not have a reference to it. You rely on the finalizer to close the stream.
>>>
>>> This is most serious on Windows because you cannot remove a file if there
>>> is an open handle to it.
>>>
>>> I also cleaned up an existing regression test that fails in samevm mode
>>> (partly) because of this. And removed another excluded test from the list
>>> since its bug was fixed some time ago.
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~chegar/7000511/webrev.00/webrev/
>>>
>>> -Chris.
>>