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.
>> 

Reply via email to