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 2015/10/29 23:00:04 UTC

svn commit: r1711371 - in /commons/proper/dbcp/trunk/src: changes/ main/java/org/apache/commons/dbcp2/ test/java/org/apache/commons/dbcp2/

Author: ggregory
Date: Thu Oct 29 22:00:04 2015
New Revision: 1711371

URL: http://svn.apache.org/viewvc?rev=1711371&view=rev
Log:
[DBCP-451] Add constructor DriverManagerConnectionFactory(String).

Modified:
    commons/proper/dbcp/trunk/src/changes/changes.xml
    commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/DriverManagerConnectionFactory.java
    commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/TestDriverManagerConnectionFactory.java
    commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/TesterDriver.java

Modified: commons/proper/dbcp/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/changes/changes.xml?rev=1711371&r1=1711370&r2=1711371&view=diff
==============================================================================
--- commons/proper/dbcp/trunk/src/changes/changes.xml (original)
+++ commons/proper/dbcp/trunk/src/changes/changes.xml Thu Oct 29 22:00:04 2015
@@ -67,6 +67,9 @@ The <action> type attribute can be add,u
       <action dev="ggregory" type="fix" issue="DBCP-449" due-to="Grzegorz D.">
         Cannot use DBCP on Google App Engine.
       </action>
+      <action dev="ggregory" type="add" issue="DBCP-451">
+        Add constructor DriverManagerConnectionFactory(String).
+      </action>
     </release>
     <release version="2.1.1" date="6 Aug 2015" description=
 "This is a patch release, including bug fixes only.">

Modified: commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/DriverManagerConnectionFactory.java
URL: http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/DriverManagerConnectionFactory.java?rev=1711371&r1=1711370&r2=1711371&view=diff
==============================================================================
--- commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/DriverManagerConnectionFactory.java (original)
+++ commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/DriverManagerConnectionFactory.java Thu Oct 29 22:00:04 2015
@@ -46,6 +46,17 @@ public class DriverManagerConnectionFact
      * Constructor for DriverManagerConnectionFactory.
      * @param connectUri a database url of the form
      * <code> jdbc:<em>subprotocol</em>:<em>subname</em></code>
+     * @since 2.1.2
+     */
+    public DriverManagerConnectionFactory(String connectUri) {
+        _connectUri = connectUri;
+        _props = new Properties();
+    }
+
+    /**
+     * Constructor for DriverManagerConnectionFactory.
+     * @param connectUri a database url of the form
+     * <code> jdbc:<em>subprotocol</em>:<em>subname</em></code>
      * @param props a list of arbitrary string tag/value pairs as
      * connection arguments; normally at least a "user" and "password"
      * property should be included.

Modified: commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/TestDriverManagerConnectionFactory.java
URL: http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/TestDriverManagerConnectionFactory.java?rev=1711371&r1=1711370&r2=1711371&view=diff
==============================================================================
--- commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/TestDriverManagerConnectionFactory.java (original)
+++ commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/TestDriverManagerConnectionFactory.java Thu Oct 29 22:00:04 2015
@@ -26,6 +26,8 @@ import javax.sql.DataSource;
 
 import org.apache.commons.pool2.impl.GenericObjectPool;
 import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
@@ -37,6 +39,25 @@ import org.junit.Test;
  */
 public class TestDriverManagerConnectionFactory {
 
+    private static final String KEY_JDBC_DRIVERS = "jdbc.drivers";
+
+    @BeforeClass 
+    public static void beforeClass() {
+        System.setProperty(KEY_JDBC_DRIVERS, "org.apache.commons.dbcp2.TesterDriver");
+    }
+    
+    @AfterClass
+    public static void afterClass() {
+        System.clearProperty(KEY_JDBC_DRIVERS);
+    }
+    
+    @Test
+    public void testDriverManagerInitWithEmptyProperties() throws Exception {
+        final ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(
+                "jdbc:apache:commons:testdriver;user=foo;password=bar");
+        connectionFactory.createConnection();
+    }
+
     @Test
     public void testDriverManagerInitWithProperties() throws Exception {
         testDriverManagerInit(true);
@@ -48,8 +69,6 @@ public class TestDriverManagerConnection
     }
 
     public void testDriverManagerInit(final boolean withProperties) throws Exception {
-        System.setProperty("jdbc.drivers",
-                "org.apache.commons.dbcp2.TesterDriver");
         GenericObjectPoolConfig config = new GenericObjectPoolConfig();
         config.setMaxTotal(10);
         config.setMaxIdle(0);

Modified: commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/TesterDriver.java
URL: http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/TesterDriver.java?rev=1711371&r1=1711370&r2=1711371&view=diff
==============================================================================
--- commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/TesterDriver.java (original)
+++ commons/proper/dbcp/trunk/src/test/java/org/apache/commons/dbcp2/TesterDriver.java Thu Oct 29 22:00:04 2015
@@ -67,7 +67,7 @@ public class TesterDriver implements Dri
 
     @Override
     public boolean acceptsURL(String url) throws SQLException {
-        return CONNECT_STRING.startsWith(url);
+        return url != null && url.startsWith(CONNECT_STRING);
     }
 
     private void assertValidUserPassword(String user, String password) 
@@ -99,6 +99,13 @@ public class TesterDriver implements Dri
             {
                 username = info.getProperty("user");
                 password = info.getProperty("password");
+                if (username == null) {
+                    String[] parts = url.split(";");
+                    username = parts[1];
+                    username = username.split("=")[1];
+                    password = parts[2];
+                    password = password.split("=")[1];
+                }
                 assertValidUserPassword(username, password);
             }
             conn = new TesterConnection(username, password);