commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Phil Steitz (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (DBCP-358) Equals implementations in DelegatingXxx classes are not symmetric
Date Thu, 28 Apr 2011 22:16:06 GMT

     [ https://issues.apache.org/jira/browse/DBCP-358?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Phil Steitz updated DBCP-358:
-----------------------------

    Description: 
For reasons unclear to me, DelegatingConnection, DelegatingStatement, PoolGuardConnectionWrappers
and other DBCP classes implement equals so that the wrapping class is considered equal to
its innermost delegate JDBC object.  This makes equals asymmetric when applied to a wrapper
and its wrapped JDBC object - wrapper.equals(delegate) returns true, but delegate.equals(wrapper)
will in general return false.

I am pretty sure that DBCP itself does not rely on this bugged behavior, so I am inclined
to fix it, making equals an equivalence relation on wrapper instances, with two considered
equal iff their innermost delegates are equal.  I can't imagine use cases where the bugged
behavior is required.  Can anyone else?

  was:
For reasons unclear to me, DelegatingConnection, DelegatingStatement, PoolGuardConnectionWrappers
and other DBCP classes implement equals so that the wrapping class is considered equal to
its innermost delegate JDBC object.  This makes equals asymmetric when applied to a wrapper
and its wrapped JDBC object - equals(wrapper, delegate) returns true, but equals(delegate,
wrapper) will in general return false.

I am pretty sure that DBCP itself does not rely on this bugged behavior, so I am inclined
to fix it, making equals an equivalence relation on wrapper instances, with two considered
equal iff their innermost delegates are equal.  I can't imagine use cases where the bugged
behavior is required.  Can anyone else?


> Equals implementations in DelegatingXxx classes are not symmetric
> -----------------------------------------------------------------
>
>                 Key: DBCP-358
>                 URL: https://issues.apache.org/jira/browse/DBCP-358
>             Project: Commons Dbcp
>          Issue Type: Bug
>    Affects Versions: 1.2, 1.2.2, 1.3, 1.4
>            Reporter: Phil Steitz
>             Fix For: 1.3.1, 1.4.1
>
>
> For reasons unclear to me, DelegatingConnection, DelegatingStatement, PoolGuardConnectionWrappers
and other DBCP classes implement equals so that the wrapping class is considered equal to
its innermost delegate JDBC object.  This makes equals asymmetric when applied to a wrapper
and its wrapped JDBC object - wrapper.equals(delegate) returns true, but delegate.equals(wrapper)
will in general return false.
> I am pretty sure that DBCP itself does not rely on this bugged behavior, so I am inclined
to fix it, making equals an equivalence relation on wrapper instances, with two considered
equal iff their innermost delegates are equal.  I can't imagine use cases where the bugged
behavior is required.  Can anyone else?

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message