dirkv       2004/02/29 12:18:25

  Modified:    dbcp/src/java/org/apache/commons/dbcp BasicDataSource.java
                        PoolableConnectionFactory.java
  Log:
  Bugzilla Bug 27320: DBCP 1.1 incompatible with Informix (driver doesn't support 
setReadOnly(...))
  - Allow 3 values for the defaultReadOnly parameter: true, false and notset.
  When the parameter isn't set then the Connection.setReadOnly method will not be 
called on activate.
  
  Revision  Changes    Path
  1.35      +7 -5      
jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/BasicDataSource.java
  
  Index: BasicDataSource.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/BasicDataSource.java,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- BasicDataSource.java      28 Feb 2004 11:48:04 -0000      1.34
  +++ BasicDataSource.java      29 Feb 2004 20:18:25 -0000      1.35
  @@ -62,17 +62,19 @@
       /**
        * The default read-only state of connections created by this pool.
        */
  -    protected boolean defaultReadOnly = false;
  +    protected Boolean defaultReadOnly = null;
   
       public synchronized boolean getDefaultReadOnly() {
  -        return this.defaultReadOnly;
  +        if (this.defaultReadOnly != null) {
  +            return this.defaultReadOnly.booleanValue();
  +        }
  +        return false;
       }
   
       public synchronized void setDefaultReadOnly(boolean defaultReadOnly) {
  -        this.defaultReadOnly = defaultReadOnly;
  +        this.defaultReadOnly = Boolean.valueOf(defaultReadOnly);
           this.restartNeeded = true;
       }
  -
   
       /**
        * The default TransactionIsolation state of connections created by this pool.
  
  
  
  1.20      +45 -8     
jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/PoolableConnectionFactory.java
  
  Index: PoolableConnectionFactory.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/dbcp/src/java/org/apache/commons/dbcp/PoolableConnectionFactory.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- PoolableConnectionFactory.java    28 Feb 2004 12:18:17 -0000      1.19
  +++ PoolableConnectionFactory.java    29 Feb 2004 20:18:25 -0000      1.20
  @@ -48,7 +48,7 @@
           _pool.setFactory(this);
           _stmtPoolFactory = stmtPoolFactory;
           _validationQuery = validationQuery;
  -        _defaultReadOnly = defaultReadOnly;
  +        _defaultReadOnly = Boolean.valueOf(defaultReadOnly);
           _defaultAutoCommit = defaultAutoCommit;
       }
   
  @@ -68,7 +68,7 @@
           _pool.setFactory(this);
           _stmtPoolFactory = stmtPoolFactory;
           _validationQuery = validationQuery;
  -        _defaultReadOnly = defaultReadOnly;
  +        _defaultReadOnly = Boolean.valueOf(defaultReadOnly);
           _defaultAutoCommit = defaultAutoCommit;
           _defaultTransactionIsolation = defaultTransactionIsolation;
       }
  @@ -99,7 +99,7 @@
           _pool.setFactory(this);
           _stmtPoolFactory = stmtPoolFactory;
           _validationQuery = validationQuery;
  -        _defaultReadOnly = defaultReadOnly;
  +        _defaultReadOnly = Boolean.valueOf(defaultReadOnly);
           _defaultAutoCommit = defaultAutoCommit;
       }
   
  @@ -131,7 +131,7 @@
           _pool.setFactory(this);
           _stmtPoolFactory = stmtPoolFactory;
           _validationQuery = validationQuery;
  -        _defaultReadOnly = defaultReadOnly;
  +        _defaultReadOnly = Boolean.valueOf(defaultReadOnly);
           _defaultAutoCommit = defaultAutoCommit;
           _defaultTransactionIsolation = defaultTransactionIsolation;
       }
  @@ -166,6 +166,41 @@
           _pool.setFactory(this);
           _stmtPoolFactory = stmtPoolFactory;
           _validationQuery = validationQuery;
  +        _defaultReadOnly = Boolean.valueOf(defaultReadOnly);
  +        _defaultAutoCommit = defaultAutoCommit;
  +        _defaultTransactionIsolation = defaultTransactionIsolation;
  +        _defaultCatalog = defaultCatalog;
  +    }
  +
  +    /**
  +     * Create a new <tt>PoolableConnectionFactory</tt>.
  +     * @param connFactory the [EMAIL PROTECTED] ConnectionFactory} from which to 
obtain base [EMAIL PROTECTED] Connection}s
  +     * @param pool the [EMAIL PROTECTED] ObjectPool} in which to pool those [EMAIL 
PROTECTED] Connection}s
  +     * @param stmtPoolFactory the [EMAIL PROTECTED] KeyedObjectPoolFactory} to use 
to create [EMAIL PROTECTED] KeyedObjectPool}s for pooling [EMAIL PROTECTED] 
java.sql.PreparedStatement}s, or <tt>null</tt> to disable [EMAIL PROTECTED] 
java.sql.PreparedStatement} pooling
  +     * @param validationQuery a query to use to [EMAIL PROTECTED] #validateObject 
validate} [EMAIL PROTECTED] Connection}s.  Should return at least one row. May be 
<tt>null</tt>
  +     * @param defaultReadOnly the default "read only" setting for borrowed [EMAIL 
PROTECTED] Connection}s
  +     * @param defaultAutoCommit the default "auto commit" setting for returned 
[EMAIL PROTECTED] Connection}s
  +     * @param defaultTransactionIsolation the default "Transaction Isolation" 
setting for returned [EMAIL PROTECTED] Connection}s
  +     * @param defaultCatalog the default "catalog" setting for returned [EMAIL 
PROTECTED] Connection}s
  +     * @param config the AbandonedConfig if tracing SQL objects
  +     */
  +    public PoolableConnectionFactory(
  +        ConnectionFactory connFactory,
  +        ObjectPool pool,
  +        KeyedObjectPoolFactory stmtPoolFactory,
  +        String validationQuery,
  +        Boolean defaultReadOnly,
  +        boolean defaultAutoCommit,
  +        int defaultTransactionIsolation,
  +        String defaultCatalog,
  +        AbandonedConfig config) {
  +            
  +        _connFactory = connFactory;
  +        _pool = pool;
  +        _config = config;
  +        _pool.setFactory(this);
  +        _stmtPoolFactory = stmtPoolFactory;
  +        _validationQuery = validationQuery;
           _defaultReadOnly = defaultReadOnly;
           _defaultAutoCommit = defaultAutoCommit;
           _defaultTransactionIsolation = defaultTransactionIsolation;
  @@ -224,7 +259,7 @@
        * @param defaultReadOnly the default "read only" setting for borrowed [EMAIL 
PROTECTED] Connection}s
        */
       public void setDefaultReadOnly(boolean defaultReadOnly) {
  -        _defaultReadOnly = defaultReadOnly;
  +        _defaultReadOnly = Boolean.valueOf(defaultReadOnly);
       }
   
       /**
  @@ -334,7 +369,9 @@
               if (_defaultTransactionIsolation != UNKNOWN_TRANSACTIONISOLATION) {
                   conn.setTransactionIsolation(_defaultTransactionIsolation);
               }
  -            conn.setReadOnly(_defaultReadOnly);
  +            if (_defaultReadOnly != null) {
  +                conn.setReadOnly(_defaultReadOnly.booleanValue());
  +            }
               if (_defaultCatalog != null) {
                   conn.setCatalog(_defaultCatalog);
               }
  @@ -345,7 +382,7 @@
       protected String _validationQuery = null;
       protected ObjectPool _pool = null;
       protected KeyedObjectPoolFactory _stmtPoolFactory = null;
  -    protected boolean _defaultReadOnly = false;
  +    protected Boolean _defaultReadOnly = null;
       protected boolean _defaultAutoCommit = true;
       protected int _defaultTransactionIsolation = UNKNOWN_TRANSACTIONISOLATION;
       protected String _defaultCatalog;
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to