You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2021/06/06 16:31:09 UTC
[commons-dbcp] branch master updated: Internal package private
CPDSConnectionFactory class stores its user name as a char[] as it already
does the password.
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-dbcp.git
The following commit(s) were added to refs/heads/master by this push:
new 7da0703 Internal package private CPDSConnectionFactory class stores its user name as a char[] as it already does the password.
7da0703 is described below
commit 7da0703a04e58335638da4a943e56bdec2a4d10a
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Jun 6 12:31:05 2021 -0400
Internal package private CPDSConnectionFactory class stores its user
name as a
char[] as it already does the password.
---
.../commons/dbcp2/datasources/CPDSConnectionFactory.java | 10 +++++-----
.../org/apache/commons/dbcp2/datasources/CharArray.java | 2 +-
.../dbcp2/datasources/KeyedCPDSConnectionFactory.java | 12 ++++++------
.../commons/dbcp2/datasources/PooledConnectionAndInfo.java | 13 +++++++++----
.../org/apache/commons/dbcp2/datasources/UserPassKey.java | 4 ++++
.../dbcp2/datasources/TestInstanceKeyDataSource.java | 2 +-
6 files changed, 26 insertions(+), 17 deletions(-)
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 e2fc3e6..ddb1eb4 100644
--- a/src/main/java/org/apache/commons/dbcp2/datasources/CPDSConnectionFactory.java
+++ b/src/main/java/org/apache/commons/dbcp2/datasources/CPDSConnectionFactory.java
@@ -52,7 +52,7 @@ class CPDSConnectionFactory
private final int validationQueryTimeoutSeconds;
private final boolean rollbackAfterValidation;
private ObjectPool<PooledConnectionAndInfo> pool;
- private final String userName;
+ private char[] userName;
private char[] userPassword;
private Duration maxConnLifetime = Duration.ofMillis(-1);
@@ -91,7 +91,7 @@ class CPDSConnectionFactory
this.cpds = cpds;
this.validationQuery = validationQuery;
this.validationQueryTimeoutSeconds = validationQueryTimeoutSeconds;
- this.userName = userName;
+ this.userName = Utils.toCharArray(userName);
this.userPassword = userPassword;
this.rollbackAfterValidation = rollbackAfterValidation;
}
@@ -116,9 +116,9 @@ class CPDSConnectionFactory
*/
public CPDSConnectionFactory(final ConnectionPoolDataSource cpds, final String validationQuery,
final int validationQueryTimeoutSeconds, final boolean rollbackAfterValidation, final String userName,
- final String userPassword) {
+ final String userPassword) {
this(cpds, validationQuery, validationQueryTimeoutSeconds, rollbackAfterValidation, userName,
- Utils.toCharArray(userPassword));
+ Utils.toCharArray(userPassword));
}
/**
@@ -156,7 +156,7 @@ class CPDSConnectionFactory
if (userName == null) {
pc = cpds.getPooledConnection();
} else {
- pc = cpds.getPooledConnection(userName, Utils.toString(userPassword));
+ pc = cpds.getPooledConnection(Utils.toString(userName), Utils.toString(userPassword));
}
if (pc == null) {
diff --git a/src/main/java/org/apache/commons/dbcp2/datasources/CharArray.java b/src/main/java/org/apache/commons/dbcp2/datasources/CharArray.java
index e0334ef..2bea59a 100644
--- a/src/main/java/org/apache/commons/dbcp2/datasources/CharArray.java
+++ b/src/main/java/org/apache/commons/dbcp2/datasources/CharArray.java
@@ -24,7 +24,7 @@ import org.apache.commons.dbcp2.Utils;
/**
* A {@code char} array wrapper that does not reveal its contents inadvertently through toString(). In contrast to, for
* example, AtomicReference which toString()'s its contents.
- *
+ *
* May contain null.
*
* @since 2.9.0
diff --git a/src/main/java/org/apache/commons/dbcp2/datasources/KeyedCPDSConnectionFactory.java b/src/main/java/org/apache/commons/dbcp2/datasources/KeyedCPDSConnectionFactory.java
index f57b82b..e8c9297 100644
--- a/src/main/java/org/apache/commons/dbcp2/datasources/KeyedCPDSConnectionFactory.java
+++ b/src/main/java/org/apache/commons/dbcp2/datasources/KeyedCPDSConnectionFactory.java
@@ -105,17 +105,17 @@ class KeyedCPDSConnectionFactory implements KeyedPooledObjectFactory<UserPassKey
/**
* Creates a new {@code PooledConnectionAndInfo} from the given {@code UserPassKey}.
*
- * @param upkey
+ * @param userPassKey
* {@code UserPassKey} containing user credentials
* @throws SQLException
* if the connection could not be created.
* @see org.apache.commons.pool2.KeyedPooledObjectFactory#makeObject(java.lang.Object)
*/
@Override
- public synchronized PooledObject<PooledConnectionAndInfo> makeObject(final UserPassKey upkey) throws Exception {
+ public synchronized PooledObject<PooledConnectionAndInfo> makeObject(final UserPassKey userPassKey) throws Exception {
PooledConnection pooledConnection = null;
- final String userName = upkey.getUserName();
- final String password = upkey.getPassword();
+ final String userName = userPassKey.getUserName();
+ final String password = userPassKey.getPassword();
if (userName == null) {
pooledConnection = cpds.getPooledConnection();
} else {
@@ -129,7 +129,7 @@ class KeyedCPDSConnectionFactory implements KeyedPooledObjectFactory<UserPassKey
// should we add this object as a listener or the pool.
// consider the validateObject method in decision
pooledConnection.addConnectionEventListener(this);
- final PooledConnectionAndInfo pci = new PooledConnectionAndInfo(pooledConnection, userName, upkey.getPasswordCharArray());
+ final PooledConnectionAndInfo pci = new PooledConnectionAndInfo(pooledConnection, userPassKey);
pcMap.put(pooledConnection, pci);
return new DefaultPooledObject<>(pci);
@@ -152,7 +152,7 @@ class KeyedCPDSConnectionFactory implements KeyedPooledObjectFactory<UserPassKey
* @param key
* ignored
* @param pooledObject
- * wrapped {@link PooledConnectionAndInfo} containing the connection to validate
+ * wrapped {@code PooledConnectionAndInfo} containing the connection to validate
* @return true if validation succeeds
*/
@Override
diff --git a/src/main/java/org/apache/commons/dbcp2/datasources/PooledConnectionAndInfo.java b/src/main/java/org/apache/commons/dbcp2/datasources/PooledConnectionAndInfo.java
index 620eedb..af0b38e 100644
--- a/src/main/java/org/apache/commons/dbcp2/datasources/PooledConnectionAndInfo.java
+++ b/src/main/java/org/apache/commons/dbcp2/datasources/PooledConnectionAndInfo.java
@@ -28,6 +28,7 @@ import javax.sql.PooledConnection;
final class PooledConnectionAndInfo {
private final PooledConnection pooledConnection;
+
private final UserPassKey userPassKey;
/**
@@ -35,9 +36,13 @@ final class PooledConnectionAndInfo {
*
* @since 2.4.0
*/
- PooledConnectionAndInfo(final PooledConnection pc, final String userName, final char[] userPassword) {
- this.pooledConnection = pc;
- this.userPassKey = new UserPassKey(userName, userPassword);
+ PooledConnectionAndInfo(final PooledConnection pooledConnection, final char[] userName, final char[] userPassword) {
+ this(pooledConnection, new UserPassKey(userName, userPassword));
+ }
+
+ PooledConnectionAndInfo(final PooledConnection pooledConnection, final UserPassKey userPassKey) {
+ this.pooledConnection = pooledConnection;
+ this.userPassKey = userPassKey;
}
/**
@@ -63,7 +68,7 @@ final class PooledConnectionAndInfo {
*
* @return value of userName.
*/
- String getUsername() {
+ String getUserName() {
return userPassKey.getUserName();
}
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 4d2f28b..ac06184 100644
--- a/src/main/java/org/apache/commons/dbcp2/datasources/UserPassKey.java
+++ b/src/main/java/org/apache/commons/dbcp2/datasources/UserPassKey.java
@@ -53,6 +53,10 @@ class UserPassKey implements Serializable {
this(new CharArray(userName), CharArray.NULL);
}
+ UserPassKey(final char[] userName, final char[] password) {
+ this(new CharArray(userName), new CharArray(password));
+ }
+
UserPassKey(final String userName, final char[] password) {
this(new CharArray(userName), new CharArray(password));
}
diff --git a/src/test/java/org/apache/commons/dbcp2/datasources/TestInstanceKeyDataSource.java b/src/test/java/org/apache/commons/dbcp2/datasources/TestInstanceKeyDataSource.java
index d8d3250..950a1a6 100644
--- a/src/test/java/org/apache/commons/dbcp2/datasources/TestInstanceKeyDataSource.java
+++ b/src/test/java/org/apache/commons/dbcp2/datasources/TestInstanceKeyDataSource.java
@@ -302,7 +302,7 @@ public class TestInstanceKeyDataSource {
pcds.setUrl(URL);
spds.setConnectionPoolDataSource(pcds);
final PooledConnectionAndInfo info = spds.getPooledConnectionAndInfo(null, null);
- assertNull(info.getUsername());
+ assertNull(info.getUserName());
assertNull(info.getPassword());
final Connection conn = spds.getConnection();
assertNotNull(conn);