[
https://issues.apache.org/jira/browse/DBUTILS-97?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13429334#comment-13429334
]
William R. Speirs commented on DBUTILS-97:
------------------------------------------
I'm not sure if we want to set rs to null in the finally. Wouldn't this be more
of a use-once object? Couldn't there be threading issues if the same instance
of AbstractResultSetHandler were used more than once with different result
sets? (I'm not sure how that would happen, but...)
> Add an AbstractResultSetHandler implementation in order to reduce redundant
> 'resultSet' variable invocation
> -----------------------------------------------------------------------------------------------------------
>
> Key: DBUTILS-97
> URL: https://issues.apache.org/jira/browse/DBUTILS-97
> Project: Commons DbUtils
> Issue Type: New Feature
> Affects Versions: 1.6
> Reporter: Simone Tripodi
> Assignee: Simone Tripodi
> Fix For: 1.6
>
> Attachments: DBUTILS-97.patch
>
>
> According to the DRY principle (Don't Repeat Yourself), repeating
> {{resultSet}} variable inside the {{ResultSetHandler#handle(ResultSet)}} over
> and over for each iteration can get a little tedious.
> It would be helpful adding a support class, named
> {{AbstractResultSetHandler}}, which implicitly gives users access to
> {{ResultSet}}'s methods. _For example_, we could extend
> {{AbstractResultSetHandler}} and rewrite the mapping below:
> {code}
> new ResultSetHandler<Collection<Map<String, Object>>> {
> @Override
> public Collection<Map<String, Object>> handle(ResultSet rs) throws
> SQLException {
> Collection<Map<String, Object>> result = new LinkedList<Map<String,
> Object>>();
> while (rs.next()) {
> Map<String, Object> current = new HashMap<String, Object>();
> for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
> current.put(rs.getMetaData().getColumnName(i),
> rs.getObject(i));
> }
> result.add(current);
> }
> return result;
> }
> }
> {code}
> as:
> {code}
> new AbstractResultSetHandler<Collection<Map<String, Object>>> {
> @Override
> protected Collection<Map<String, Object>> handle() throws SQLException {
> Collection<Map<String, Object>> result = new LinkedList<Map<String,
> Object>>();
> while (next()) {
> Map<String, Object> current = new HashMap<String, Object>();
> for (int i = 1; i <= getMetaData().getColumnCount(); i++) {
> current.put(getMetaData().getColumnName(i), getObject(i));
> }
> result.add(current);
> }
> return result;
> }
> }
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira