home *** CD-ROM | disk | FTP | other *** search
- package java.sql;
-
- import java.io.PrintStream;
- import java.io.PrintWriter;
- import java.security.AccessController;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Properties;
- import java.util.Vector;
- import sun.security.action.GetPropertyAction;
-
- public class DriverManager {
- static final SQLPermission SET_LOG_PERMISSION = new SQLPermission("setLog");
- private static Vector drivers = new Vector();
- private static int loginTimeout = 0;
- private static PrintWriter logWriter = null;
- private static PrintStream logStream = null;
- private static boolean initialized = false;
-
- public static PrintWriter getLogWriter() {
- return logWriter;
- }
-
- public static synchronized void setLogWriter(PrintWriter var0) {
- SecurityManager var1 = System.getSecurityManager();
- if (var1 != null) {
- var1.checkPermission(SET_LOG_PERMISSION);
- }
-
- logStream = null;
- logWriter = var0;
- }
-
- public static synchronized Connection getConnection(String var0, Properties var1) throws SQLException {
- ClassLoader var2 = getCallerClassLoader();
- return getConnection(var0, var1, var2);
- }
-
- public static synchronized Connection getConnection(String var0, String var1, String var2) throws SQLException {
- Properties var3 = new Properties();
- ClassLoader var4 = getCallerClassLoader();
- if (var1 != null) {
- ((Hashtable)var3).put("user", var1);
- }
-
- if (var2 != null) {
- ((Hashtable)var3).put("password", var2);
- }
-
- return getConnection(var0, var3, var4);
- }
-
- public static synchronized Connection getConnection(String var0) throws SQLException {
- Properties var1 = new Properties();
- ClassLoader var2 = getCallerClassLoader();
- return getConnection(var0, var1, var2);
- }
-
- public static synchronized Driver getDriver(String var0) throws SQLException {
- println("DriverManager.getDriver(\"" + var0 + "\")");
- if (!initialized) {
- initialize();
- }
-
- ClassLoader var1 = getCallerClassLoader();
-
- for(int var2 = 0; var2 < drivers.size(); ++var2) {
- DriverInfo var3 = (DriverInfo)drivers.elementAt(var2);
- if (getCallerClass(var1, var3.driverClassName) != var3.driverClass) {
- println(" skipping: " + var3);
- } else {
- try {
- println(" trying " + var3);
- if (var3.driver.acceptsURL(var0)) {
- println("getDriver returning " + var3);
- return var3.driver;
- }
- } catch (SQLException var5) {
- }
- }
- }
-
- println("getDriver: no suitable driver");
- throw new SQLException("No suitable driver", "08001");
- }
-
- public static synchronized void registerDriver(Driver var0) throws SQLException {
- if (!initialized) {
- initialize();
- }
-
- DriverInfo var1 = new DriverInfo();
- var1.driver = var0;
- var1.driverClass = var0.getClass();
- var1.driverClassName = var1.driverClass.getName();
- drivers.addElement(var1);
- println("registerDriver: " + var1);
- }
-
- public static synchronized void deregisterDriver(Driver var0) throws SQLException {
- ClassLoader var1 = getCallerClassLoader();
- println("DriverManager.deregisterDriver: " + var0);
- DriverInfo var3 = null;
-
- int var2;
- for(var2 = 0; var2 < drivers.size(); ++var2) {
- var3 = (DriverInfo)drivers.elementAt(var2);
- if (var3.driver == var0) {
- break;
- }
- }
-
- if (var2 >= drivers.size()) {
- println(" couldn't find driver to unload");
- } else if (getCallerClass(var1, var3.driverClassName) != var3.driverClass) {
- throw new SecurityException();
- } else {
- drivers.removeElementAt(var2);
- }
- }
-
- public static synchronized Enumeration getDrivers() {
- Vector var0 = new Vector();
- if (!initialized) {
- initialize();
- }
-
- ClassLoader var1 = getCallerClassLoader();
-
- for(int var2 = 0; var2 < drivers.size(); ++var2) {
- DriverInfo var3 = (DriverInfo)drivers.elementAt(var2);
- if (getCallerClass(var1, var3.driverClassName) != var3.driverClass) {
- println(" skipping: " + var3);
- } else {
- var0.addElement(var3.driver);
- }
- }
-
- return var0.elements();
- }
-
- public static void setLoginTimeout(int var0) {
- loginTimeout = var0;
- }
-
- public static int getLoginTimeout() {
- return loginTimeout;
- }
-
- public static synchronized void setLogStream(PrintStream var0) {
- SecurityManager var1 = System.getSecurityManager();
- if (var1 != null) {
- var1.checkPermission(SET_LOG_PERMISSION);
- }
-
- logStream = var0;
- if (var0 != null) {
- logWriter = new PrintWriter(var0);
- } else {
- logWriter = null;
- }
-
- }
-
- public static PrintStream getLogStream() {
- return logStream;
- }
-
- public static synchronized void println(String var0) {
- if (logWriter != null) {
- logWriter.println(var0);
- logWriter.flush();
- }
-
- }
-
- private static Class getCallerClass(ClassLoader var0, String var1) {
- Object var2 = null;
-
- try {
- var5 = Class.forName(var1, true, var0);
- } catch (Exception var4) {
- var5 = null;
- }
-
- return var5;
- }
-
- private static void loadInitialDrivers() {
- String var0;
- try {
- var0 = (String)AccessController.doPrivileged(new GetPropertyAction("jdbc.drivers"));
- } catch (Exception var5) {
- var0 = null;
- }
-
- println("DriverManager.initialize: jdbc.drivers = " + var0);
- if (var0 != null) {
- while(var0.length() != 0) {
- int var1 = var0.indexOf(58);
- String var2;
- if (var1 < 0) {
- var2 = var0;
- var0 = "";
- } else {
- var2 = var0.substring(0, var1);
- var0 = var0.substring(var1 + 1);
- }
-
- if (var2.length() != 0) {
- try {
- println("DriverManager.Initialize: loading " + var2);
- Class.forName(var2, true, ClassLoader.getSystemClassLoader());
- } catch (Exception var4) {
- println("DriverManager.Initialize: load failed: " + var4);
- }
- }
- }
-
- }
- }
-
- private static synchronized Connection getConnection(String var0, Properties var1, ClassLoader var2) throws SQLException {
- if (var0 == null) {
- throw new SQLException("The url cannot be null", "08001");
- } else {
- println("DriverManager.getConnection(\"" + var0 + "\")");
- if (!initialized) {
- initialize();
- }
-
- SQLException var3 = null;
-
- for(int var4 = 0; var4 < drivers.size(); ++var4) {
- DriverInfo var5 = (DriverInfo)drivers.elementAt(var4);
- if (getCallerClass(var2, var5.driverClassName) != var5.driverClass) {
- println(" skipping: " + var5);
- } else {
- try {
- println(" trying " + var5);
- Connection var6 = var5.driver.connect(var0, var1);
- if (var6 != null) {
- println("getConnection returning " + var5);
- return var6;
- }
- } catch (SQLException var7) {
- if (var3 == null) {
- var3 = var7;
- }
- }
- }
- }
-
- if (var3 != null) {
- println("getConnection failed: " + var3);
- throw var3;
- } else {
- println("getConnection: no suitable driver");
- throw new SQLException("No suitable driver", "08001");
- }
- }
- }
-
- static void initialize() {
- if (!initialized) {
- initialized = true;
- loadInitialDrivers();
- println("JDBC DriverManager initialized");
- }
- }
-
- private DriverManager() {
- }
-
- private static native ClassLoader getCallerClassLoader();
- }
-