[
https://issues.apache.org/jira/browse/IO-546?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16128165#comment-16128165
]
Elijah Zupancic commented on IO-546:
------------------------------------
bq. ClosedOutputStream#flush is not overridden and will silently succeed.
If I am understanding this correctly, when close() is called for the first
time, any methods that are wrapped in the {{ProxyOutputStream}} are no longer
available. This seems pathological. The purpose of this class is to prevent
close() from being called on the underlying stream. If it is called
accidentally, then the underlying stream _should_ still be open and methods
like flush() should be available.
> ClosedOutputStream#flush should throw
> -------------------------------------
>
> Key: IO-546
> URL: https://issues.apache.org/jira/browse/IO-546
> Project: Commons IO
> Issue Type: Improvement
> Components: Streams/Writers
> Reporter: Tomas Celaya
> Priority: Minor
> Attachments: IO-546.patch
>
>
> While debugging an issue involving usage of {{CloseShieldOutputStream}} I
> discovered that {{ClosedOutputStream#flush}} is not overridden and will
> silently succeed. Not sure how much of a breaking change this might be but I
> think it makes more sense for {{ClosedOutputStream#flush}} to throw. This is
> only really meaningful in contexts where multiple streams are being chained
> together and some of the streams before {{CloseShieldOutputStream}} perform
> buffering, but it would make behavior more consistent for these more complex
> use-cases.
> No patches are included because I'm interested in hearing what the opinion
> would be on this issue. I can provide a patch if this seems like desired
> behavior.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)