enhance with-open to be extensible with a new close multimethod

Description

Discussion: http://groups.google.com/group/clojure/browse_thread/thread/8e4e56f6fc65cc8e/618a893a5b2a5410

Currently, with-open calls .close when it's finished. I'd like it to have a (defmulti close type) so it's behavior is extensible. A standard method could be defined for java.io.Closeable and a :default method with no type hint. I've come across a few cases where some external library defines what is essentially a close method but names it shutdown or disable, etc., and adding my own "defmethod close" would be much easier than rewriting with-open. This would also allow people to eliminate reflection for classes like sql Connection that were created before Closeable.

Environment

None

Activity

Show:
import
August 24, 2010, 10:30 AM

Comment made by: importer

mikehinchey said: Note, I only defined methods for :default (reflection of .close) and Closeable, not sql or the numerous other classes in java that should be Closeable but are not. Maybe clojure.contrib.sql and other such libraries should define related close methods.

import
August 24, 2010, 10:30 AM

Comment made by: importer

mikehinchey said: [[file:ca27R6Ojur3PQ0eJe5afGb]]: fix adds close method and tests

import
August 24, 2010, 10:30 AM
Tassilo Horn
December 23, 2011, 12:50 PM

Probably better implemented using a protocol. See http://dev.clojure.org/jira/browse/CLJ-308

Alex Miller
February 23, 2017, 9:13 PM

Superseded by CLJ-308

Declined

Assignee

Unassigned

Reporter

import

Labels

Approval

None

Patch

None

Priority

Major