You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ma...@apache.org on 2014/02/07 13:26:29 UTC
svn commit: r1565630 - in
/commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2:
BasicDataSource.java Utils.java
Author: markt
Date: Fri Feb 7 12:26:29 2014
New Revision: 1565630
URL: http://svn.apache.org/r1565630
Log:
Start work on DBCP-177
Enable getConnection() to work under a security manager
Modified:
commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java
commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/Utils.java
Modified: commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java
URL: http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java?rev=1565630&r1=1565629&r2=1565630&view=diff
==============================================================================
--- commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java (original)
+++ commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java Fri Feb 7 12:26:29 2014
@@ -27,6 +27,9 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.Collections;
import java.util.logging.Logger;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
@@ -1341,7 +1344,21 @@ public class BasicDataSource
*/
@Override
public Connection getConnection() throws SQLException {
- return createDataSource().getConnection();
+ if (Utils.IS_SECURITY_ENABLED) {
+ PrivilegedExceptionAction<Connection> action = new PaGetConnection();
+ try {
+ return AccessController.doPrivileged(action);
+ } catch (PrivilegedActionException e) {
+ Throwable cause = e.getCause();
+ if (cause instanceof SQLException) {
+ throw (SQLException) cause;
+ } else {
+ throw new SQLException(e);
+ }
+ }
+ } else {
+ return createDataSource().getConnection();
+ }
}
@@ -2197,4 +2214,12 @@ public class BasicDataSource
protected ObjectName getRegisteredJmxName() {
return registeredJmxName;
}
+
+ private class PaGetConnection implements PrivilegedExceptionAction<Connection> {
+
+ @Override
+ public Connection run() throws SQLException {
+ return createDataSource().getConnection();
+ }
+ }
}
Modified: commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/Utils.java
URL: http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/Utils.java?rev=1565630&r1=1565629&r2=1565630&view=diff
==============================================================================
--- commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/Utils.java (original)
+++ commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/Utils.java Fri Feb 7 12:26:29 2014
@@ -32,6 +32,10 @@ public class Utils {
private static final ResourceBundle messages = ResourceBundle.getBundle(
Utils.class.getPackage().getName() + ".LocalStrings");
+ public static final boolean IS_SECURITY_ENABLED =
+ (System.getSecurityManager() != null);
+
+
private Utils() {
// not instantiable
}