?? connectionwrapper.java
字號(hào):
/*
Copyright (C) 2002 MySQL AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package com.mysql.jdbc.jdbc2.optional;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Savepoint;
import java.sql.Statement;
/**
* This class serves as a wrapper for the org.gjt.mm.mysql.jdbc2.Connection
* class. It is returned to the application server which may wrap it again
* and then return it to the application client in response to
* dataSource.getConnection().
*
* <p>
* All method invocations are forwarded to org.gjt.mm.mysql.jdbc2.Connection
* unless the close method was previously called, in which case a sqlException
* is thrown. The close method performs a 'logical close' on the connection.
* </p>
*
* <p>
* All sqlExceptions thrown by the physical connection are intercepted and sent
* to connectionEvent listeners before being thrown to client.
* </p>
*
* @author Todd Wolff todd.wolff_at_prodigy.net
*
* @see org.gjt.mm.mysql.jdbc2.Connection
* @see org.gjt.mm.mysql.jdbc2.optional.MysqlPooledConnection
*/
class ConnectionWrapper extends WrapperBase implements Connection {
private Connection mc = null;
private MysqlPooledConnection mpc = null;
private String invalidHandleStr = "Logical handle no longer valid";
private boolean closed;
/**
* Construct a new LogicalHandle and set instance variables
*
* @param mysqlPooledConnection reference to object that instantiated this
* object
* @param mysqlConnection physical connection to db
*
* @throws SQLException if an error occurs.
*/
public ConnectionWrapper(MysqlPooledConnection mysqlPooledConnection,
Connection mysqlConnection) throws SQLException {
this.mpc = mysqlPooledConnection;
this.mc = mysqlConnection;
this.closed = false;
this.pooledConnection = this.mpc;
}
/**
* Passes call to method on physical connection instance. Notifies
* listeners of any caught exceptions before re-throwing to client.
*
* @see java.sql.Connection#setAutoCommit
*/
public void setAutoCommit(boolean autoCommit) throws SQLException {
if (closed) {
throw new SQLException(invalidHandleStr);
} else {
try {
mc.setAutoCommit(autoCommit);
} catch (SQLException sqlException) {
checkAndFireConnectionError(sqlException);
}
}
}
/**
* Passes call to method on physical connection instance. Notifies
* listeners of any caught exceptions before re-throwing to client.
*
* @see java.sql.Connection#getAutoCommit()
*/
public boolean getAutoCommit() throws SQLException {
if (closed) {
throw new SQLException(invalidHandleStr);
} else {
try {
return mc.getAutoCommit();
} catch (SQLException sqlException) {
checkAndFireConnectionError(sqlException);
}
}
return false; // we don't reach this code, compiler can't tell
}
/**
* Passes call to method on physical connection instance. Notifies
* listeners of any caught exceptions before re-throwing to client.
*
* @see java.sql.Connection#setCatalog()
*/
public void setCatalog(String catalog) throws SQLException {
if (closed) {
throw new SQLException(invalidHandleStr);
} else {
try {
mc.setCatalog(catalog);
} catch (SQLException sqlException) {
checkAndFireConnectionError(sqlException);
}
}
}
/**
* Passes call to method on physical connection instance. Notifies
* listeners of any caught exceptions before re-throwing to client.
*
* @return the current catalog
*
* @throws SQLException if an error occurs
*/
public String getCatalog() throws SQLException {
if (closed) {
throw new SQLException(invalidHandleStr);
} else {
try {
return mc.getCatalog();
} catch (SQLException sqlException) {
checkAndFireConnectionError(sqlException);
}
}
return null; // we don't reach this code, compiler can't tell
}
/**
* Passes call to method on physical connection instance. Notifies
* listeners of any caught exceptions before re-throwing to client.
*
* @see java.sql.Connection#isClosed()
*/
public boolean isClosed() throws SQLException {
return (closed || mc.isClosed());
}
/**
* @see Connection#setHoldability(int)
*/
public void setHoldability(int arg0) throws SQLException {
if (closed) {
throw new SQLException(invalidHandleStr);
} else {
try {
mc.setHoldability(arg0);
} catch (SQLException sqlException) {
checkAndFireConnectionError(sqlException);
}
}
}
/**
* @see Connection#getHoldability()
*/
public int getHoldability() throws SQLException {
if (closed) {
throw new SQLException(invalidHandleStr);
} else {
try {
return mc.getHoldability();
} catch (SQLException sqlException) {
checkAndFireConnectionError(sqlException);
}
}
return Statement.CLOSE_CURRENT_RESULT; // we don't reach this code, compiler can't tell
}
/**
* Allows clients to determine how long this connection has been idle.
*
* @return how long the connection has been idle.
*/
public long getIdleFor() {
return ((com.mysql.jdbc.Connection) mc).getIdleFor();
}
/**
* Passes call to method on physical connection instance. Notifies
* listeners of any caught exceptions before re-throwing to client.
*
* @return a metadata instance
*
* @throws SQLException if an error occurs
*/
public java.sql.DatabaseMetaData getMetaData() throws SQLException {
if (closed) {
throw new SQLException(invalidHandleStr);
} else {
try {
return mc.getMetaData();
} catch (SQLException sqlException) {
checkAndFireConnectionError(sqlException);
}
}
return null; // we don't reach this code, compiler can't tell
}
/**
* Passes call to method on physical connection instance. Notifies
* listeners of any caught exceptions before re-throwing to client.
*
* @see java.sql.Connection#setReadOnly()
*/
public void setReadOnly(boolean readOnly) throws SQLException {
if (closed) {
throw new SQLException(invalidHandleStr);
} else {
try {
mc.setReadOnly(readOnly);
} catch (SQLException sqlException) {
checkAndFireConnectionError(sqlException);
}
}
}
/**
* Passes call to method on physical connection instance. Notifies
* listeners of any caught exceptions before re-throwing to client.
*
* @see java.sql.Connection#isReadOnly()
*/
public boolean isReadOnly() throws SQLException {
if (closed) {
throw new SQLException(invalidHandleStr);
} else {
try {
return mc.isReadOnly();
} catch (SQLException sqlException) {
checkAndFireConnectionError(sqlException);
}
}
return false; // we don't reach this code, compiler can't tell
}
/**
* @see Connection#setSavepoint()
*/
public java.sql.Savepoint setSavepoint() throws SQLException {
if (closed) {
throw new SQLException(invalidHandleStr);
} else {
try {
return mc.setSavepoint();
} catch (SQLException sqlException) {
checkAndFireConnectionError(sqlException);
}
}
return null; // we don't reach this code, compiler can't tell
}
/**
* @see Connection#setSavepoint(String)
*/
public java.sql.Savepoint setSavepoint(String arg0)
throws SQLException {
if (closed) {
throw new SQLException(invalidHandleStr);
} else {
try {
return mc.setSavepoint(arg0);
} catch (SQLException sqlException) {
checkAndFireConnectionError(sqlException);
}
}
return null; // we don't reach this code, compiler can't tell
}
/**
* Passes call to method on physical connection instance. Notifies
* listeners of any caught exceptions before re-throwing to client.
*
* @see java.sql.Connection#setTransactionIsolation()
*/
public void setTransactionIsolation(int level) throws SQLException {
if (closed) {
throw new SQLException(invalidHandleStr);
} else {
try {
mc.setTransactionIsolation(level);
} catch (SQLException sqlException) {
checkAndFireConnectionError(sqlException);
}
}
}
/**
* Passes call to method on physical connection instance. Notifies
* listeners of any caught exceptions before re-throwing to client.
*
* @see java.sql.Connection#getTransactionIsolation()
*/
public int getTransactionIsolation() throws SQLException {
if (closed) {
throw new SQLException(invalidHandleStr);
} else {
try {
return mc.getTransactionIsolation();
} catch (SQLException sqlException) {
checkAndFireConnectionError(sqlException);
}
}
return TRANSACTION_REPEATABLE_READ; // we don't reach this code, compiler can't tell
}
/**
* Passes call to method on physical connection instance. Notifies
* listeners of any caught exceptions before re-throwing to client.
*
* @see java.sql.Connection#setTypeMap()
*/
public void setTypeMap(java.util.Map map) throws SQLException {
if (closed) {
throw new SQLException(invalidHandleStr);
} else {
try {
mc.setTypeMap(map);
} catch (SQLException sqlException) {
checkAndFireConnectionError(sqlException);
}
}
}
/**
* Passes call to method on physical connection instance. Notifies
* listeners of any caught exceptions before re-throwing to client.
*
* @see java.sql.Connection#getTypeMap()
*/
public java.util.Map getTypeMap() throws SQLException {
if (closed) {
throw new SQLException(invalidHandleStr);
} else {
try {
return mc.getTypeMap();
} catch (SQLException sqlException) {
checkAndFireConnectionError(sqlException);
}
}
return null; // we don't reach this code, compiler can't tell
}
/**
* Passes call to method on physical connection instance. Notifies
* listeners of any caught exceptions before re-throwing to client.
*
* @see java.sql.Connection#getWarnings
*/
public java.sql.SQLWarning getWarnings() throws SQLException {
if (closed) {
throw new SQLException(invalidHandleStr);
} else {
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -