Repository: commons-dbcp Updated Branches: refs/heads/master b0bb65029 -> 624cdb14f
[DBCP-486] DriverAdapterCPDS.setUser(null) and setPassword(null) throw NullPointerExceptions when connection properties are set. Project: http://git-wip-us.apache.org/repos/asf/commons-dbcp/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-dbcp/commit/624cdb14 Tree: http://git-wip-us.apache.org/repos/asf/commons-dbcp/tree/624cdb14 Diff: http://git-wip-us.apache.org/repos/asf/commons-dbcp/diff/624cdb14 Branch: refs/heads/master Commit: 624cdb14f819ec4ce5a5c02df0293f317cf9737a Parents: b0bb650 Author: Gary Gregory <garydgreg...@gmail.com> Authored: Wed Apr 18 14:25:57 2018 -0600 Committer: Gary Gregory <garydgreg...@gmail.com> Committed: Wed Apr 18 14:25:57 2018 -0600 ---------------------------------------------------------------------- src/changes/changes.xml | 3 ++ .../dbcp2/cpdsadapter/DriverAdapterCPDS.java | 38 +++++++++++++------- .../cpdsadapter/TestDriverAdapterCPDS.java | 18 ++++++++++ 3 files changed, 47 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/624cdb14/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 60aaa3f..8f69ffb 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -67,6 +67,9 @@ The <action> type attribute can be add,update,fix,remove. <action dev="ggregory" type="update" issue="DBCP-483"> Make constant public: org.apache.commons.dbcp2.PoolingDriver.URL_PREFIX. </action> + <action dev="ggregory" type="update" issue="DBCP-486" due-to="Gary Gregory"> + DriverAdapterCPDS.setUser(null) and setPassword(null) throw NullPointerExceptions when connection properties are set. + </action> </release> <release version="2.2.0" date="2017-12-DD" description="This is a minor release, including bug fixes and enhancements."> <action dev="ggregory" type="fix" issue="DBCP-481" due-to="Gary Gregory"> http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/624cdb14/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 8553e4a..bf7d960 100644 --- a/src/main/java/org/apache/commons/dbcp2/cpdsadapter/DriverAdapterCPDS.java +++ b/src/main/java/org/apache/commons/dbcp2/cpdsadapter/DriverAdapterCPDS.java @@ -94,6 +94,12 @@ public class DriverAdapterCPDS implements ConnectionPoolDataSource, Referenceable, Serializable, ObjectFactory { + private static final String KEY_USER = "user"; + + + private static final String KEY_PASSWORD = "password"; + + private static final long serialVersionUID = -4820523787212147844L; @@ -171,8 +177,8 @@ public class DriverAdapterCPDS // exception upon first invocation. try { if (connectionProperties != null) { - connectionProperties.put("user", username); - connectionProperties.put("password", pass); + connectionProperties.put(KEY_USER, username); + connectionProperties.put(KEY_PASSWORD, pass); pci = new PooledConnectionImpl(DriverManager.getConnection( getUrl(), connectionProperties)); } else { @@ -245,8 +251,8 @@ public class DriverAdapterCPDS ref.add(new StringRefAddr("driver", getDriver())); ref.add(new StringRefAddr("loginTimeout", String.valueOf(getLoginTimeout()))); - ref.add(new StringRefAddr("password", getPassword())); - ref.add(new StringRefAddr("user", getUser())); + ref.add(new StringRefAddr(KEY_PASSWORD, getPassword())); + ref.add(new StringRefAddr(KEY_USER, getUser())); ref.add(new StringRefAddr("url", getUrl())); ref.add(new StringRefAddr("poolPreparedStatements", @@ -295,11 +301,11 @@ public class DriverAdapterCPDS if (ra != null && ra.getContent() != null) { setUrl(ra.getContent().toString()); } - ra = ref.get("user"); + ra = ref.get(KEY_USER); if (ra != null && ra.getContent() != null) { setUser(ra.getContent().toString()); } - ra = ref.get("password"); + ra = ref.get(KEY_PASSWORD); if (ra != null && ra.getContent() != null) { setPassword(ra.getContent().toString()); } @@ -389,11 +395,11 @@ public class DriverAdapterCPDS public void setConnectionProperties(final Properties props) { assertInitializationAllowed(); connectionProperties = props; - if (connectionProperties.containsKey("user")) { - setUser(connectionProperties.getProperty("user")); + if (connectionProperties.containsKey(KEY_USER)) { + setUser(connectionProperties.getProperty(KEY_USER)); } - if (connectionProperties.containsKey("password")) { - setPassword(connectionProperties.getProperty("password")); + if (connectionProperties.containsKey(KEY_PASSWORD)) { + setPassword(connectionProperties.getProperty(KEY_PASSWORD)); } } @@ -437,7 +443,11 @@ public class DriverAdapterCPDS assertInitializationAllowed(); this.password = v; if (connectionProperties != null) { - connectionProperties.setProperty("password", v); + if (v == null) { + connectionProperties.remove(KEY_PASSWORD); + } else { + connectionProperties.setProperty(KEY_PASSWORD, v); + } } } @@ -476,7 +486,11 @@ public class DriverAdapterCPDS assertInitializationAllowed(); this.user = v; if (connectionProperties != null) { - connectionProperties.setProperty("user", v); + if (v == null) { + connectionProperties.remove(KEY_USER); + } else { + connectionProperties.setProperty(KEY_USER, v); + } } } http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/624cdb14/src/test/java/org/apache/commons/dbcp2/cpdsadapter/TestDriverAdapterCPDS.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/dbcp2/cpdsadapter/TestDriverAdapterCPDS.java b/src/test/java/org/apache/commons/dbcp2/cpdsadapter/TestDriverAdapterCPDS.java index 8d84fd8..52e6729 100644 --- a/src/test/java/org/apache/commons/dbcp2/cpdsadapter/TestDriverAdapterCPDS.java +++ b/src/test/java/org/apache/commons/dbcp2/cpdsadapter/TestDriverAdapterCPDS.java @@ -171,6 +171,15 @@ public class TestDriverAdapterCPDS { } @Test + public void testSetUserNullWithConnectionProperties() throws Exception { + pcds.setConnectionProperties(new Properties()); + pcds.setUser("Alice"); + assertEquals("Alice", pcds.getUser()); + pcds.setUser(null); + assertEquals(null, pcds.getUser()); + } + + @Test public void testSetPasswordNull() throws Exception { pcds.setPassword("Secret"); assertEquals("Secret", pcds.getPassword()); @@ -178,6 +187,15 @@ public class TestDriverAdapterCPDS { assertEquals(null, pcds.getPassword()); } + @Test + public void testSetPasswordNullWithConnectionProperties() throws Exception { + pcds.setConnectionProperties(new Properties()); + pcds.setPassword("Secret"); + assertEquals("Secret", pcds.getPassword()); + pcds.setPassword(null); + assertEquals(null, pcds.getPassword()); + } + /** * JIRA: DBCP-442 */