[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