[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[DBCP] DelegatingConnection, hashCode(), and equals()

Hi All:

I just ran into a case where different instances of subclasses
of DelegatingConnection like PoolGuardConnectionWrapper and ConnectionImpl
are used as keys in a Map (Map<java.sql.Connection, Foo>)

The problem is that when you borrow a Connection out of a pool, you get a
new PoolGuardConnectionWrapper, so that the Map in the eventual call site
grows and grows because the intention is that the Map key should be the
same when you borrow the same underlying Connection later.

If DelegatingConnection implemented hashCode() and equals() to account for
some or all of its instance variables, then one could use
DelegatingConnection instances as keys in a Map with the behavior I expect,

The issue is that implementing hashCode() and equals() where we did not
before could have unexpected side-effects for existing applications.