Author: markt Date: Tue Dec 3 23:40:32 2013 New Revision: 1547646 URL: http://svn.apache.org/r1547646 Log: Fix the PoolingDriver related generics warnings
Modified: commons/proper/dbcp/trunk/doc/PoolingDriverExample.java commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/PoolingDriver.java commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp2/TestPoolingDriver.java Modified: commons/proper/dbcp/trunk/doc/PoolingDriverExample.java URL: http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/doc/PoolingDriverExample.java?rev=1547646&r1=1547645&r2=1547646&view=diff ============================================================================== --- commons/proper/dbcp/trunk/doc/PoolingDriverExample.java (original) +++ commons/proper/dbcp/trunk/doc/PoolingDriverExample.java Tue Dec 3 23:40:32 2013 @@ -5,9 +5,9 @@ * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -30,6 +30,7 @@ import java.sql.SQLException; import org.apache.commons.pool2.ObjectPool; import org.apache.commons.pool2.impl.GenericObjectPool; import org.apache.commons.dbcp2.ConnectionFactory; +import org.apache.commons.dbcp2.PoolableConnection; import org.apache.commons.dbcp2.PoolingDriver; import org.apache.commons.dbcp2.PoolableConnectionFactory; import org.apache.commons.dbcp2.DriverManagerConnectionFactory; @@ -171,8 +172,8 @@ public class PoolingDriverExample { // We'll use a GenericObjectPool instance, although // any ObjectPool implementation will suffice. // - ObjectPool connectionPool = - new GenericObjectPool(poolableConnectionFactory); + ObjectPool<PoolableConnection> connectionPool = + new GenericObjectPool<>(poolableConnectionFactory); // // Finally, we create the PoolingDriver itself... @@ -193,8 +194,8 @@ public class PoolingDriverExample { public static void printDriverStats() throws Exception { PoolingDriver driver = (PoolingDriver) DriverManager.getDriver("jdbc:apache:commons:dbcp:"); - ObjectPool connectionPool = driver.getConnectionPool("example"); - + ObjectPool<? extends Connection> connectionPool = driver.getConnectionPool("example"); + System.out.println("NumActive: " + connectionPool.getNumActive()); System.out.println("NumIdle: " + connectionPool.getNumIdle()); } Modified: commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/PoolingDriver.java URL: http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/PoolingDriver.java?rev=1547646&r1=1547645&r2=1547646&view=diff ============================================================================== --- commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/PoolingDriver.java (original) +++ commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/PoolingDriver.java Tue Dec 3 23:40:32 2013 @@ -50,7 +50,7 @@ public class PoolingDriver implements Dr } /** The map of registered pools. */ - protected static final HashMap<String,ObjectPool<Connection>> _pools = + protected static final HashMap<String,ObjectPool<? extends Connection>> _pools = new HashMap<>(); /** Controls access to the underlying connection */ @@ -66,8 +66,8 @@ public class PoolingDriver implements Dr protected PoolingDriver(boolean accessToUnderlyingConnectionAllowed) { this.accessToUnderlyingConnectionAllowed = accessToUnderlyingConnectionAllowed; } - - + + /** * Returns the value of the accessToUnderlyingConnectionAllowed property. * @@ -77,9 +77,9 @@ public class PoolingDriver implements Dr return accessToUnderlyingConnectionAllowed; } - public synchronized ObjectPool<Connection> getConnectionPool(String name) + public synchronized ObjectPool<? extends Connection> getConnectionPool(String name) throws SQLException { - ObjectPool<Connection> pool = _pools.get(name); + ObjectPool<? extends Connection> pool = _pools.get(name); if (null == pool) { throw new SQLException("Pool not registered."); } @@ -87,12 +87,12 @@ public class PoolingDriver implements Dr } public synchronized void registerPool(String name, - ObjectPool<Connection> pool) { + ObjectPool<? extends Connection> pool) { _pools.put(name,pool); } public synchronized void closePool(String name) throws SQLException { - ObjectPool<Connection> pool = _pools.get(name); + ObjectPool<? extends Connection> pool = _pools.get(name); if (pool != null) { _pools.remove(name); try { @@ -121,17 +121,17 @@ public class PoolingDriver implements Dr @Override public Connection connect(String url, Properties info) throws SQLException { if(acceptsURL(url)) { - ObjectPool<Connection> pool = + ObjectPool<? extends Connection> pool = getConnectionPool(url.substring(URL_PREFIX_LEN)); if(null == pool) { throw new SQLException("No pool found for " + url + "."); } else { try { Connection conn = pool.borrowObject(); - if (conn != null) { - conn = new PoolGuardConnectionWrapper(pool, conn); + if (conn == null) { + return null; } - return conn; + return new PoolGuardConnectionWrapper(pool, conn); } catch(SQLException e) { throw e; } catch(NoSuchElementException e) { @@ -164,7 +164,8 @@ public class PoolingDriver implements Dr public void invalidateConnection(Connection conn) throws SQLException { if (conn instanceof PoolGuardConnectionWrapper) { // normal case PoolGuardConnectionWrapper pgconn = (PoolGuardConnectionWrapper) conn; - ObjectPool<Connection> pool = pgconn.pool; + @SuppressWarnings("unchecked") + ObjectPool<Connection> pool = (ObjectPool<Connection>) pgconn.pool; try { pool.invalidateObject(pgconn.getDelegateInternal()); } @@ -208,11 +209,11 @@ public class PoolingDriver implements Dr * PoolGuardConnectionWrapper is a Connection wrapper that makes sure a * closed connection cannot be used anymore. */ - private class PoolGuardConnectionWrapper extends DelegatingConnection { + private class PoolGuardConnectionWrapper extends DelegatingConnection<Connection> { - private final ObjectPool<Connection> pool; + private final ObjectPool<? extends Connection> pool; - PoolGuardConnectionWrapper(ObjectPool<Connection> pool, + PoolGuardConnectionWrapper(ObjectPool<? extends Connection> pool, Connection delegate) { super(delegate); this.pool = pool; Modified: commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp2/TestPoolingDriver.java URL: http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp2/TestPoolingDriver.java?rev=1547646&r1=1547645&r2=1547646&view=diff ============================================================================== --- commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp2/TestPoolingDriver.java (original) +++ commons/proper/dbcp/trunk/src/test/org/apache/commons/dbcp2/TestPoolingDriver.java Tue Dec 3 23:40:32 2013 @@ -76,7 +76,7 @@ public class TestPoolingDriver extends T poolConfig.setNumTestsPerEvictionRun(5); poolConfig.setMinEvictableIdleTimeMillis(5000L); - GenericObjectPool pool = new GenericObjectPool(pcf, poolConfig); + GenericObjectPool<PoolableConnection> pool = new GenericObjectPool<>(pcf, poolConfig); pcf.setPool(pool); assertNotNull(pcf); @@ -107,7 +107,7 @@ public class TestPoolingDriver extends T new PoolableConnectionFactory(connectionFactory); pcf.setDefaultReadOnly(false); pcf.setDefaultAutoCommit(true); - GenericObjectPool connectionPool = new GenericObjectPool(pcf); + GenericObjectPool<PoolableConnection> connectionPool = new GenericObjectPool<>(pcf); PoolingDriver driver2 = new PoolingDriver(); driver2.registerPool("example",connectionPool); } @@ -147,8 +147,8 @@ public class TestPoolingDriver extends T new PoolableConnectionFactory(connectionFactory); poolableConnectionFactory.setDefaultReadOnly(false); poolableConnectionFactory.setDefaultAutoCommit(true); - ObjectPool connectionPool = - new GenericObjectPool(poolableConnectionFactory,config); + ObjectPool<PoolableConnection> connectionPool = + new GenericObjectPool<>(poolableConnectionFactory,config); poolableConnectionFactory.setPool(connectionPool); assertNotNull(poolableConnectionFactory); PoolingDriver driver2 = new PoolingDriver();