pre-RFR (s): 8049847: Enhance PrintWriter line.separator handling

Alan Bateman Alan.Bateman at oracle.com
Sun Jan 4 10:06:02 UTC 2015


On 02/01/2015 15:38, Claes Redestad wrote:
> Hi,
>
>  this is a proposal to resolve concerns that 
> PrintWriter/BufferedWriter behave
> inconsistently with j.u.Formatter when setting the line.separator 
> property to override
> system-appropriate line breaks.
>
>  Instead of providing a set of new constructors, I propose to simply 
> add a new default
> method j.l.Appendable#lineSeparator, which by default delegates to 
> System.lineSeparator().
> This allows classes such as PrintWriter/BufferedWriter to provide 
> overrides which
> communicate to j.u.Formatter their intended behavior.
In the bug report then I assume the inconsistency only arises because 
the test case attempts to change the line separator in the main method, 
which is too late. It should work if set on the command-line but this of 
course sets it system-wide.

Your proposal to add a lineSeperator() method to Appendable would allow 
for customization but I'm not sure that it's the right place (as 
Appendable is a very general interface and would require every 
Appendable implementation that writes lines to be updated to make use of 
the new method).

An alternative to consider is adding the notion of lines to 
java.io.Writer and update it to define newLine() and lineSeperator() 
methods (i.e. move the BufferWriter::newLine method up to Writer). It's 
a bit of extra work to update BufferedWriter's spec, adjust a few things 
in PrintWriter/PrintStream, and special-case Writers in Formatter but 
something to consider.

-Alan



More information about the core-libs-dev mailing list