[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-2d-dev
Subject:    [OpenJDK 2D-Dev] FileCacheImageOutputStream.close() is not idempotent
From:       joe.darcy () oracle ! com (Joe Darcy)
Date:       2012-06-19 19:11:27
Message-ID: 4FE0CEDF.3060709 () oracle ! com
[Download RAW message or body]

On 6/14/2012 10:37 AM, Phil Race wrote:
> On 6/14/2012 10:09 AM, Martin Desruisseaux wrote:
>> Le 14/06/12 18:59, Phil Race a ?crit :
>>> Perhaps the real issue is that the interface Closeable should not 
>>> have made
>>> claims about what all the existing close methods it was added to do 
>>> in all cases.
>>> FileInputStream.close() made no such claim.
>>
>> AutoCloseable makes no such claim, but Closeable does. If the intend 
>> was to support ARM without complying with the idempotent criterion, 
>> then ImageInputStream should have extended AutoCloseable rather than 
>> Closeable...
>
> The list of classes implementing each of these looks to be the same 
> and I'm not sure if there
> was careful consideration. But its a very long list and I've not 
> examined it closely.
> I just assume that it would not make sense for either of these to add 
> requirements beyond
> what FileInputStream.close() already did. But its too late to undo 
> this in any case.

Mea culpa; when I retrofitted Closeable/AutoCloseable to this batch of 
classes, since the close methods are not idempoent, the *Image*Stream 
types should have been marked AutoCloseable rather than Closeable, a 
policy recommended elsewhere:

     "Project Coin: Bringing it to a Close(able)"
     https://blogs.oracle.com/darcy/entry/project_coin_bring_close

Since JDK 7 has already shipped, changing the implemented interface from 
Closeable to AutoCloseble would be a binary incompatible change and 
those strongly recommended against.  If possible, I think the best way 
to address this problem would be to make the methods idempotent.

-Joe



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic