[ 
https://issues.apache.org/jira/browse/DBCP-317?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12797078#action_12797078
 ] 

Sebb commented on DBCP-317:
---------------------------

I've been looking into this further.

DelegatingPreparedStatement extends DelegatingStatement  and overrides equals() 
- but defines no extra fields
DelegatingCallableStatement extends DelegatingPreparedStatement  and overrides 
equals() - but defines no extra fields
Yet
PoolableCallableStatement extends DelegatingCallableStatement and has extra 
fields, but does not override equals()

This is quite confusing - why do the Delagating...Statement classes override 
equals when they don't have any extra state?
Indeed Findbugs warns that these equals methods may not be symmetric.

> Findbugs: Class doesn't override equals in superclass
> -----------------------------------------------------
>
>                 Key: DBCP-317
>                 URL: https://issues.apache.org/jira/browse/DBCP-317
>             Project: Commons Dbcp
>          Issue Type: Bug
>            Reporter: Sebb
>            Priority: Minor
>
> Findbugs: Class doesn't override equals in superclass - 8 instances
> "This class extends a class that defines an equals method and adds fields, 
> but doesn't define an equals method itself. Thus, equality on instances of 
> this class will ignore the identity of the subclass and the added fields. Be 
> sure this is what is intended, and that you don't need to override the equals 
> method. Even if you don't need to override the equals method, consider 
> overriding it anyway to document the fact that the equals method for the 
> subclass just return the result of invoking super.equals(o). "
> Classes (superclass) are:
> cpdsadapter.ConnectionImpl doesn't override DelegatingConnection.equals
> datasources.LRUMap doesn't override SequencedHashMap.equals
> managed.ManagedConnection doesn't override DelegatingConnection.equals
> managed.PoolableManagedConnection  doesn't override 
> DelegatingConnection.equals
> PoolableCallableStatement doesn't override DelegatingCallableStatement.equals
> PoolableConnection doesn't override DelegatingConnection.equals
> PoolablePreparedStatement doesn't override DelegatingPreparedStatement.equals
> PoolingConnection doesn't override DelegatingConnection.equals

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to