📄 testjdbcdatasource.java
字号:
package com.ecyrd.jspwiki;import java.io.File;import java.io.FileInputStream;import java.io.PrintWriter;import java.net.URL;import java.net.URLClassLoader;import java.security.AccessController;import java.security.PrivilegedAction;import java.sql.Connection;import java.sql.Driver;import java.sql.SQLException;import java.util.Properties;import javax.sql.DataSource;/** * Mock JDBC DataSource class that manages JDBC connections to a database whose * driver class, JDBC JAR location and connection details are specified in an * arbitrary propreties file. Gemerally, we pass on any exceptions encountered * as unchecked, since it means that the test case that references this class is * failing somehow. * @author Andrew R. Jaquith */public class TestJDBCDataSource implements DataSource{ private static Driver m_driver; protected static final String PROPERTY_DRIVER_CLASS = "jdbc.driver.class"; protected static final String PROPERTY_DRIVER_JAR = "jdbc.driver.jar"; protected static final String PROPERTY_DRIVER_URL = "jdbc.driver.url"; protected static final String PROPERTY_USER_ID = "jdbc.user.id"; protected static final String PROPERTY_USER_PASSWORD = "jdbc.user.password"; protected String m_jdbcPassword = null; protected String m_jdbcURL = null; protected String m_jdbcUser = null; protected int m_timeout = 0; protected PrintWriter m_writer = null; /** * Constructs a new instance of this class, using a supplied properties * File as the source for JDBC driver properties. * @param file the properties file containing JDBC properties * @throws Exception */ public TestJDBCDataSource( File file ) throws Exception { super(); initializeJDBC( file ); } /** * Returns a JDBC connection using the specified username and password. * @return the database connection * @see javax.sql.DataSource#getConnection() */ public Connection getConnection() throws SQLException { return getConnection( m_jdbcUser, m_jdbcPassword ); } /** * Returns a JDBC connection to the database. * @return the database connection * @see javax.sql.DataSource#getConnection(java.lang.String, * java.lang.String) */ public Connection getConnection( String username, String password ) throws SQLException { Properties connProperties = new Properties(); connProperties.put( "user", m_jdbcUser ); connProperties.put( "password", m_jdbcPassword ); Connection connection = m_driver.connect( m_jdbcURL, connProperties ); return connection; } /** * Returns the login timeout for the data source. * @return the login timeout, in seconds * @see javax.sql.DataSource#getLoginTimeout() */ public int getLoginTimeout() throws SQLException { return m_timeout; } /** * Returns the log writer for the data source. * @return the log writer * @see javax.sql.DataSource#getLogWriter() */ public PrintWriter getLogWriter() throws SQLException { return m_writer; } /** * Sets the login timeout for the data source. Doesn't do anything, really. * @param seconds the login timeout, in seconds * @see javax.sql.DataSource#setLoginTimeout(int) */ public void setLoginTimeout( int seconds ) throws SQLException { this.m_timeout = seconds; } /** * Sets the log writer for the data source. Isn't used for anything, really. * @param out the log writer * @see javax.sql.DataSource#setLogWriter(java.io.PrintWriter) */ public void setLogWriter( PrintWriter out ) throws SQLException { this.m_writer = out; } /** * Initialization method that reads a File, and attempts to locate and load * the JDBC driver from properties specified therein. * @param file the file containing the JDBC properties * @throws SQLException */ protected void initializeJDBC( File file ) throws Exception { // Load the properties JDBC properties file Properties properties; properties = new Properties(); FileInputStream is = new FileInputStream( file ); properties.load( is ); is.close(); m_jdbcURL = properties.getProperty( PROPERTY_DRIVER_URL ); m_jdbcUser = properties.getProperty( PROPERTY_USER_ID ); m_jdbcPassword = properties.getProperty( PROPERTY_USER_PASSWORD ); // Identifiy the class and JAR we need to load String clazz = properties.getProperty( PROPERTY_DRIVER_CLASS ); String driverFile = properties.getProperty( PROPERTY_DRIVER_JAR ); // Construct an URL for loading the file final URL driverURL = new URL( "file:" + driverFile ); // Load the driver using the sytem class loader final ClassLoader parent = ClassLoader.getSystemClassLoader(); URLClassLoader loader = AccessController.doPrivileged( new PrivilegedAction<URLClassLoader>() { public URLClassLoader run() { return new URLClassLoader( new URL[] { driverURL }, parent ); } }); Class driverClass = loader.loadClass( clazz ); // Cache the driver m_driver = (Driver) driverClass.newInstance(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -