Repository: commons-dbcp
Updated Branches:
  refs/heads/master 7b893aed7 -> 5bac43f7b


[DBCP-519] Add some toString() methods for debugging (never printing
passwords)

Project: http://git-wip-us.apache.org/repos/asf/commons-dbcp/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-dbcp/commit/5bac43f7
Tree: http://git-wip-us.apache.org/repos/asf/commons-dbcp/tree/5bac43f7
Diff: http://git-wip-us.apache.org/repos/asf/commons-dbcp/diff/5bac43f7

Branch: refs/heads/master
Commit: 5bac43f7b775c9c876af614e745f80ccb495f01f
Parents: 7b893ae
Author: Gary Gregory <garydgreg...@gmail.com>
Authored: Thu Aug 16 12:59:41 2018 -0600
Committer: Gary Gregory <garydgreg...@gmail.com>
Committed: Thu Aug 16 12:59:41 2018 -0600

----------------------------------------------------------------------
 src/changes/changes.xml                         |  3 +
 .../dbcp2/cpdsadapter/DriverAdapterCPDS.java    | 40 +++++++++++
 .../dbcp2/cpdsadapter/PooledConnectionImpl.java | 23 +++++++
 .../datasources/CPDSConnectionFactory.java      | 26 +++++++
 .../datasources/InstanceKeyDataSource.java      | 72 ++++++++++++++++++++
 .../datasources/PerUserPoolDataSource.java      | 41 +++++++++++
 .../dbcp2/datasources/SharedPoolDataSource.java |  7 ++
 .../commons/dbcp2/datasources/UserPassKey.java  |  7 +-
 8 files changed, 216 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/5bac43f7/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 27717b1..8d69d58 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -76,6 +76,9 @@ The <action> type attribute can be add,update,fix,remove.
       <action dev="ggregory" type="fix" issue="DBCP-518" due-to="Gary Gregory">
         Allow DBCP to work with old Java 6/JDBC drivers without throwing 
AbstractMethodError.
       </action>
+      <action dev="ggregory" type="add" issue="DBCP-519" due-to="Gary Gregory">
+        Add some toString() methods for debugging (never printing passwords.)
+      </action>
     </release>
     <release version="2.5.0" date="2018-07-15" description="This is a minor 
release, including bug fixes and enhancements.">
       <action dev="ggregory" type="update" issue="DBCP-505" due-to="Gary 
Gregory">

http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/5bac43f7/src/main/java/org/apache/commons/dbcp2/cpdsadapter/DriverAdapterCPDS.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/dbcp2/cpdsadapter/DriverAdapterCPDS.java 
b/src/main/java/org/apache/commons/dbcp2/cpdsadapter/DriverAdapterCPDS.java
index 0844c9b..db97efe 100644
--- a/src/main/java/org/apache/commons/dbcp2/cpdsadapter/DriverAdapterCPDS.java
+++ b/src/main/java/org/apache/commons/dbcp2/cpdsadapter/DriverAdapterCPDS.java
@@ -730,4 +730,44 @@ public class DriverAdapterCPDS implements 
ConnectionPoolDataSource, Referenceabl
             }
         }
     }
+
+    /**
+     * Does not print the userPassword field nor the password in the 
connectionProperties.
+     * 
+     * @since 2.6.0
+     */
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder(super.toString());
+        builder.append("[description=");
+        builder.append(description);
+        builder.append(", url=");
+        builder.append(url);
+        builder.append(", userName=");
+        builder.append(userName);
+        builder.append(", driver=");
+        builder.append(driver);
+        builder.append(", loginTimeout=");
+        builder.append(loginTimeout);
+        builder.append(", poolPreparedStatements=");
+        builder.append(poolPreparedStatements);
+        builder.append(", maxIdle=");
+        builder.append(maxIdle);
+        builder.append(", timeBetweenEvictionRunsMillis=");
+        builder.append(timeBetweenEvictionRunsMillis);
+        builder.append(", numTestsPerEvictionRun=");
+        builder.append(numTestsPerEvictionRun);
+        builder.append(", minEvictableIdleTimeMillis=");
+        builder.append(minEvictableIdleTimeMillis);
+        builder.append(", maxPreparedStatements=");
+        builder.append(maxPreparedStatements);
+        builder.append(", getConnectionCalled=");
+        builder.append(getConnectionCalled);
+        builder.append(", connectionProperties=");
+        builder.append(((Properties) 
connectionProperties.clone()).remove("password"));
+        builder.append(", accessToUnderlyingConnectionAllowed=");
+        builder.append(accessToUnderlyingConnectionAllowed);
+        builder.append("]");
+        return builder.toString();
+    }
 }

http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/5bac43f7/src/main/java/org/apache/commons/dbcp2/cpdsadapter/PooledConnectionImpl.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/dbcp2/cpdsadapter/PooledConnectionImpl.java 
b/src/main/java/org/apache/commons/dbcp2/cpdsadapter/PooledConnectionImpl.java
index 715c0de..604ad71 100644
--- 
a/src/main/java/org/apache/commons/dbcp2/cpdsadapter/PooledConnectionImpl.java
+++ 
b/src/main/java/org/apache/commons/dbcp2/cpdsadapter/PooledConnectionImpl.java
@@ -647,4 +647,27 @@ class PooledConnectionImpl
     public boolean validateObject(final PStmtKey key, final 
PooledObject<DelegatingPreparedStatement> pooledObject) {
         return true;
     }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder(super.toString());
+        builder.append("[connection=");
+        builder.append(connection);
+        builder.append(", delegatingConnection=");
+        builder.append(delegatingConnection);
+        builder.append(", logicalConnection=");
+        builder.append(logicalConnection);
+        builder.append(", eventListeners=");
+        builder.append(eventListeners);
+        builder.append(", statementEventListeners=");
+        builder.append(statementEventListeners);
+        builder.append(", closed=");
+        builder.append(closed);
+        builder.append(", pStmtPool=");
+        builder.append(pStmtPool);
+        builder.append(", accessToUnderlyingConnectionAllowed=");
+        builder.append(accessToUnderlyingConnectionAllowed);
+        builder.append("]");
+        return builder.toString();
+    }
 }

http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/5bac43f7/src/main/java/org/apache/commons/dbcp2/datasources/CPDSConnectionFactory.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/dbcp2/datasources/CPDSConnectionFactory.java 
b/src/main/java/org/apache/commons/dbcp2/datasources/CPDSConnectionFactory.java
index 20f0c1f..ef6e5f7 100644
--- 
a/src/main/java/org/apache/commons/dbcp2/datasources/CPDSConnectionFactory.java
+++ 
b/src/main/java/org/apache/commons/dbcp2/datasources/CPDSConnectionFactory.java
@@ -20,6 +20,7 @@ import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
@@ -396,4 +397,29 @@ class CPDSConnectionFactory
             }
         }
     }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder(super.toString());
+        builder.append("[cpds=");
+        builder.append(cpds);
+        builder.append(", validationQuery=");
+        builder.append(validationQuery);
+        builder.append(", validationQueryTimeoutSeconds=");
+        builder.append(validationQueryTimeoutSeconds);
+        builder.append(", rollbackAfterValidation=");
+        builder.append(rollbackAfterValidation);
+        builder.append(", pool=");
+        builder.append(pool);
+        builder.append(", userName=");
+        builder.append(userName);
+        builder.append(", maxConnLifetimeMillis=");
+        builder.append(maxConnLifetimeMillis);
+        builder.append(", validatingSet=");
+        builder.append(validatingSet);
+        builder.append(", pcMap=");
+        builder.append(pcMap);
+        builder.append("]");
+        return builder.toString();
+    }
 }

http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/5bac43f7/src/main/java/org/apache/commons/dbcp2/datasources/InstanceKeyDataSource.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/dbcp2/datasources/InstanceKeyDataSource.java 
b/src/main/java/org/apache/commons/dbcp2/datasources/InstanceKeyDataSource.java
index b72a03c..2145995 100644
--- 
a/src/main/java/org/apache/commons/dbcp2/datasources/InstanceKeyDataSource.java
+++ 
b/src/main/java/org/apache/commons/dbcp2/datasources/InstanceKeyDataSource.java
@@ -1053,4 +1053,76 @@ public abstract class InstanceKeyDataSource implements 
DataSource, Referenceable
         }
         return cpds;
     }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder(super.toString());
+        builder.append("[");
+        toStringFields(builder);
+        builder.append("]");
+        return builder.toString();
+    }
+
+    protected void toStringFields(StringBuilder builder) {
+        builder.append("getConnectionCalled=");
+        builder.append(getConnectionCalled);
+        builder.append(", dataSource=");
+        builder.append(dataSource);
+        builder.append(", dataSourceName=");
+        builder.append(dataSourceName);
+        builder.append(", description=");
+        builder.append(description);
+        builder.append(", jndiEnvironment=");
+        builder.append(jndiEnvironment);
+        builder.append(", loginTimeout=");
+        builder.append(loginTimeout);
+        builder.append(", logWriter=");
+        builder.append(logWriter);
+        builder.append(", instanceKey=");
+        builder.append(instanceKey);
+        builder.append(", defaultBlockWhenExhausted=");
+        builder.append(defaultBlockWhenExhausted);
+        builder.append(", defaultEvictionPolicyClassName=");
+        builder.append(defaultEvictionPolicyClassName);
+        builder.append(", defaultLifo=");
+        builder.append(defaultLifo);
+        builder.append(", defaultMaxIdle=");
+        builder.append(defaultMaxIdle);
+        builder.append(", defaultMaxTotal=");
+        builder.append(defaultMaxTotal);
+        builder.append(", defaultMaxWaitMillis=");
+        builder.append(defaultMaxWaitMillis);
+        builder.append(", defaultMinEvictableIdleTimeMillis=");
+        builder.append(defaultMinEvictableIdleTimeMillis);
+        builder.append(", defaultMinIdle=");
+        builder.append(defaultMinIdle);
+        builder.append(", defaultNumTestsPerEvictionRun=");
+        builder.append(defaultNumTestsPerEvictionRun);
+        builder.append(", defaultSoftMinEvictableIdleTimeMillis=");
+        builder.append(defaultSoftMinEvictableIdleTimeMillis);
+        builder.append(", defaultTestOnCreate=");
+        builder.append(defaultTestOnCreate);
+        builder.append(", defaultTestOnBorrow=");
+        builder.append(defaultTestOnBorrow);
+        builder.append(", defaultTestOnReturn=");
+        builder.append(defaultTestOnReturn);
+        builder.append(", defaultTestWhileIdle=");
+        builder.append(defaultTestWhileIdle);
+        builder.append(", defaultTimeBetweenEvictionRunsMillis=");
+        builder.append(defaultTimeBetweenEvictionRunsMillis);
+        builder.append(", validationQuery=");
+        builder.append(validationQuery);
+        builder.append(", validationQueryTimeoutSeconds=");
+        builder.append(validationQueryTimeoutSeconds);
+        builder.append(", rollbackAfterValidation=");
+        builder.append(rollbackAfterValidation);
+        builder.append(", maxConnLifetimeMillis=");
+        builder.append(maxConnLifetimeMillis);
+        builder.append(", defaultAutoCommit=");
+        builder.append(defaultAutoCommit);
+        builder.append(", defaultTransactionIsolation=");
+        builder.append(defaultTransactionIsolation);
+        builder.append(", defaultReadOnly=");
+        builder.append(defaultReadOnly);
+    }
 }

http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/5bac43f7/src/main/java/org/apache/commons/dbcp2/datasources/PerUserPoolDataSource.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/dbcp2/datasources/PerUserPoolDataSource.java 
b/src/main/java/org/apache/commons/dbcp2/datasources/PerUserPoolDataSource.java
index 1087b37..289617b 100644
--- 
a/src/main/java/org/apache/commons/dbcp2/datasources/PerUserPoolDataSource.java
+++ 
b/src/main/java/org/apache/commons/dbcp2/datasources/PerUserPoolDataSource.java
@@ -1173,4 +1173,45 @@ public class PerUserPoolDataSource extends 
InstanceKeyDataSource {
             con.setReadOnly(defaultReadOnly.booleanValue());
         }
     }
+
+    @Override
+    protected void toStringFields(StringBuilder builder) {
+        super.toStringFields(builder);
+        builder.append(", perUserBlockWhenExhausted=");
+        builder.append(perUserBlockWhenExhausted);
+        builder.append(", perUserEvictionPolicyClassName=");
+        builder.append(perUserEvictionPolicyClassName);
+        builder.append(", perUserLifo=");
+        builder.append(perUserLifo);
+        builder.append(", perUserMaxIdle=");
+        builder.append(perUserMaxIdle);
+        builder.append(", perUserMaxTotal=");
+        builder.append(perUserMaxTotal);
+        builder.append(", perUserMaxWaitMillis=");
+        builder.append(perUserMaxWaitMillis);
+        builder.append(", perUserMinEvictableIdleTimeMillis=");
+        builder.append(perUserMinEvictableIdleTimeMillis);
+        builder.append(", perUserMinIdle=");
+        builder.append(perUserMinIdle);
+        builder.append(", perUserNumTestsPerEvictionRun=");
+        builder.append(perUserNumTestsPerEvictionRun);
+        builder.append(", perUserSoftMinEvictableIdleTimeMillis=");
+        builder.append(perUserSoftMinEvictableIdleTimeMillis);
+        builder.append(", perUserTestOnCreate=");
+        builder.append(perUserTestOnCreate);
+        builder.append(", perUserTestOnBorrow=");
+        builder.append(perUserTestOnBorrow);
+        builder.append(", perUserTestOnReturn=");
+        builder.append(perUserTestOnReturn);
+        builder.append(", perUserTestWhileIdle=");
+        builder.append(perUserTestWhileIdle);
+        builder.append(", perUserTimeBetweenEvictionRunsMillis=");
+        builder.append(perUserTimeBetweenEvictionRunsMillis);
+        builder.append(", perUserDefaultAutoCommit=");
+        builder.append(perUserDefaultAutoCommit);
+        builder.append(", perUserDefaultTransactionIsolation=");
+        builder.append(perUserDefaultTransactionIsolation);
+        builder.append(", perUserDefaultReadOnly=");
+        builder.append(perUserDefaultReadOnly);
+    }
 }

http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/5bac43f7/src/main/java/org/apache/commons/dbcp2/datasources/SharedPoolDataSource.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/dbcp2/datasources/SharedPoolDataSource.java 
b/src/main/java/org/apache/commons/dbcp2/datasources/SharedPoolDataSource.java
index 485b43b..76c2617 100644
--- 
a/src/main/java/org/apache/commons/dbcp2/datasources/SharedPoolDataSource.java
+++ 
b/src/main/java/org/apache/commons/dbcp2/datasources/SharedPoolDataSource.java
@@ -235,4 +235,11 @@ public class SharedPoolDataSource extends 
InstanceKeyDataSource {
             throw new IOException("NamingException: " + e);
         }
     }
+
+    @Override
+    protected void toStringFields(StringBuilder builder) {
+        super.toStringFields(builder);
+        builder.append(", maxTotal=");
+        builder.append(maxTotal);
+    }
 }

http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/5bac43f7/src/main/java/org/apache/commons/dbcp2/datasources/UserPassKey.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/dbcp2/datasources/UserPassKey.java 
b/src/main/java/org/apache/commons/dbcp2/datasources/UserPassKey.java
index 48ccb98..094a6ba 100644
--- a/src/main/java/org/apache/commons/dbcp2/datasources/UserPassKey.java
+++ b/src/main/java/org/apache/commons/dbcp2/datasources/UserPassKey.java
@@ -125,9 +125,10 @@ class UserPassKey implements Serializable {
 
     @Override
     public String toString() {
-        final StringBuffer sb = new StringBuffer(50);
-        sb.append("UserPassKey(");
-        sb.append(userName).append(", ").append(userPassword).append(')');
+        final StringBuffer sb = new StringBuffer(super.toString());
+        sb.append("[");
+        sb.append(userName);
+        sb.append(']');
         return sb.toString();
     }
 }

Reply via email to