[ 
https://issues.apache.org/jira/browse/JDO-735?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15637513#comment-15637513
 ] 

Craig L Russell commented on JDO-735:
-------------------------------------

There are several competing interests here:

1. Dissuade programmers from using close(). They should use closeAll() instead. 
With autocomplete in their Java IDE, when they start to type clos they should 
get javadoc which should say "don't use this method; use closeAll instead".

2. If programmers accidentally use close() they should have to catch Exception, 
which is the only method in JDO that throws Exception. So we need to either 
*not* declare close() in the interfaces or declare close() with the throws 
Exception clause.

3. If we declare void close() throws Exception and say its semantics are 
identical to closeAll(), users might think "If semantics are identical, why 
does close() throw Exception and closeAll() does not"?

The best solution seems to be:

Declare (override) void close() throws Exception in the Query and Extent 
interfaces. Provide javadoc that says "don't use this method. It is intended 
for use by try-with-resources. Use closeAll() instead."


> Make PersistenceManager and Query support AutoCloseable (JDK1.7+)
> -----------------------------------------------------------------
>
>                 Key: JDO-735
>                 URL: https://issues.apache.org/jira/browse/JDO-735
>             Project: JDO
>          Issue Type: New Feature
>          Components: api, specification, tck
>            Reporter: Andy Jefferson
>            Assignee: Michael Bouschen
>             Fix For: JDO 3.2
>
>         Attachments: CloseWithActiveTxRollsBack.java
>
>
> So then it can be used with JDK1.7+ try-with-resources, as per 
> http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to