commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Oliver Matz (JIRA)" <j...@apache.org>
Subject [jira] Created: (DBCP-276) DriverAdapterCPDS should allow to specify vendor specific properties
Date Fri, 24 Oct 2008 15:05:44 GMT
DriverAdapterCPDS should allow to specify vendor specific properties
--------------------------------------------------------------------

                 Key: DBCP-276
                 URL: https://issues.apache.org/jira/browse/DBCP-276
             Project: Commons Dbcp
          Issue Type: Improvement
            Reporter: Oliver Matz


Currently, the class DriverAdapterCPDS creates instances of the package-visible class PooledConnectionImpl
by passing a java.sql.Connection created via method 
DriverManager.getConnection(String url, String user, String password).  

However, there is a more general methods that could reasonably replace this, namely:
DriverManager.getConnection(String url, java.util.Properties info). 
One reason to prefer this one is to specify vendor specific properties, in our case CHARSET_CONVERTER_CLASS
for the sybase jdbc driver.

There are three ways out, ordered by increasing convenience:

(1) Make class PooledConnectionImpl and its constructor public, then we can subclass DriverAdapterCPDS
 and override method getPooledConnection(String username, String password) to instantiate
PooledConnectionImpl  with a differently created java.sql.Connection.

(2) In DriverAdapterCPDS, factor out the statement 
        DriverManager.getConnection(getUrl(), username, password),
into a protected, non-final method, say   createConnection(String username, String password).
Then we can subclass DriverAdapterCPDS and override this method appropriately.

(3) Add a member variable DriverAdapterCPDS.mConnectionProps and a method such as DriverAdapterCPDS.setProperties(Properties
props) that adds all properties to mConnectionProps.  In DriverAdapterCPDS, instead of invoking
DriverManager.getConnection(getUrl(), username, password), do:
   mConnectionProps.put("user", username);
   mConnectionProps.put("password", password);
   DriverManager.getConnection(getUrl(), mConnectionProps);

   By the definition of DriverManager.getConnection(String url, String user, String password),
this should be equivalent at least in case both username and password are set.









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


Mime
View raw message