Bugs found by Findbugs
----------------------

                 Key: DBCP-252
                 URL: https://issues.apache.org/jira/browse/DBCP-252
             Project: Commons Dbcp
          Issue Type: Bug
            Reporter: Sebb


ManagedConnection.java has (line 155)
================

    protected class CompletionListener implements TransactionContextListener {
        public void afterCompletion(TransactionContext transactionContext, 
boolean commited) {
            if (transactionContext == transactionContext) {
                transactionComplete();
            }
        }
    }

The transactionContext  parameter is hiding the field transactionContext.
The parameter should be renamed, as at present the comparison will always 
succeed.

PoolingDriver: 
===========
the following fields should be final:
_pools
MAJOR_VERSION
MINOR_VERSION
URL_PREFIX
URL_PREFIX_LEN
In fact the last four should probably be private as well

toString() should not return null

CPDSConnectionFactory
===================
setPool() is synch; getPool() is not. Either make both sync or make _pool 
volatile.
setRollbackAfterValidation is synch, however the field it sets - 
_rollbackAfterValidation - is not read using synch.
Either synch the read operation - or better here - drop the synch, and make the 
field volatile
Same applies to setValidationQuery() and _validationQuery

KeyedCPDSConnectionFactory
========================
setRollbackAfterValidation is synch, however the field it sets - 
_rollbackAfterValidation - is not read using synch.
Either synch the read operation - or better here - drop the synch, and make the 
field volatile
Same applies to setValidationQuery() and _validationQuery

PoolableConnectionFactory
======================
setPool() is synch; getPool() is not. Either make both sync or make _pool 
volatile.



-- 
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