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, YMMV. The issue is that implementing hashCode() and equals() where we did not before could have unexpected side-effects for existing applications. Thoughts? Gary