You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by rh...@apache.org on 2006/04/12 15:47:04 UTC
svn commit: r393460 - in
/db/derby/code/trunk/java/engine/org/apache/derby/jdbc:
EmbedXAConnection.java EmbedXAConnection40.java XAStatementControl.java
Author: rhillegas
Date: Wed Apr 12 06:47:03 2006
New Revision: 393460
URL: http://svn.apache.org/viewcvs?rev=393460&view=rev
Log:
Commit Anurag's patch derby-1163_3.diff from DERBY-1163: adjustments to graph of connection classes.
Modified:
db/derby/code/trunk/java/engine/org/apache/derby/jdbc/EmbedXAConnection.java
db/derby/code/trunk/java/engine/org/apache/derby/jdbc/EmbedXAConnection40.java
db/derby/code/trunk/java/engine/org/apache/derby/jdbc/XAStatementControl.java
Modified: db/derby/code/trunk/java/engine/org/apache/derby/jdbc/EmbedXAConnection.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/jdbc/EmbedXAConnection.java?rev=393460&r1=393459&r2=393460&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/jdbc/EmbedXAConnection.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/jdbc/EmbedXAConnection.java Wed Apr 12 06:47:03 2006
@@ -39,7 +39,7 @@
/**
*/
-final class EmbedXAConnection extends EmbedPooledConnection
+class EmbedXAConnection extends EmbedPooledConnection
implements XAConnection
{
Modified: db/derby/code/trunk/java/engine/org/apache/derby/jdbc/EmbedXAConnection40.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/jdbc/EmbedXAConnection40.java?rev=393460&r1=393459&r2=393460&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/jdbc/EmbedXAConnection40.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/jdbc/EmbedXAConnection40.java Wed Apr 12 06:47:03 2006
@@ -20,221 +20,65 @@
package org.apache.derby.jdbc;
-import java.sql.CallableStatement;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
import java.sql.SQLException;
-import java.sql.Statement;
+import javax.sql.StatementEventListener;
import javax.sql.XAConnection;
-import javax.transaction.xa.XAResource;
-import org.apache.derby.iapi.jdbc.EngineConnection;
import org.apache.derby.iapi.jdbc.ResourceAdapter;
-import org.apache.derby.iapi.reference.JDBC30Translation;
-import org.apache.derby.iapi.reference.SQLState;
-import org.apache.derby.impl.jdbc.Util;
/**
* This class implements jdbc4.0 methods of XAConnection
- * It inherits these methods from EmbedPooledConnection40
*/
-final class EmbedXAConnection40 extends EmbedPooledConnection40
+final class EmbedXAConnection40 extends EmbedXAConnection
implements XAConnection {
- private EmbedXAResource xaRes;
/**
- * Creates a new instance of EmbedXAConnection40. Initializes XAResource for
- * the connection
- * @param ds
- * @param ra
- * @param user
- * @param password
- * @param requestPassword
- */
- EmbedXAConnection40(EmbeddedDataSource40 ds, ResourceAdapter ra,
- String user, String password,
- boolean requestPassword) throws SQLException {
- super(ds, user, password, requestPassword);
- xaRes = new EmbedXAResource(this, ra);
- }
-
- /**
- * Retrieves an <code>XAResource</code> object that
- * the transaction manager will use
- * to manage this <code>XAConnection</code> object's participation in a
- * distributed transaction.
- *
- * @return the <code>XAResource</code> object
- * @exception SQLException if a database access error occurs
- */
- public final synchronized XAResource getXAResource() throws SQLException {
- checkActive ();
- return xaRes;
- }
-
- /**
- * Allow control over setting auto commit mode.
- * @param autoCommit
- */
- public void checkAutoCommit(boolean autoCommit) throws SQLException {
- if (autoCommit && (xaRes.getCurrentXid() != null))
- throw Util.generateCsSQLException(SQLState.CANNOT_AUTOCOMMIT_XA);
-
- super.checkAutoCommit(autoCommit);
+ * Creates EmbedXAConnection40.
+ * @param ds
+ * @param ra
+ * @param user
+ * @param password
+ * @param requestPassword
+ */
+ EmbedXAConnection40 (EmbeddedDataSource ds, ResourceAdapter ra,
+ String user, String password,
+ boolean requestPassword) throws SQLException {
+ super(ds, ra, user, password, requestPassword);
+ }
+ /**
+ * Removes the specified <code>StatementEventListener</code> from the list of
+ * components that will be notified when the driver detects that a
+ * <code>PreparedStatement</code> has been closed or is invalid.
+ * <p>
+ *
+ * @param listener the component which implements the
+ * <code>StatementEventListener</code> interface that was previously
+ * registered with this <code>PooledConnection</code> object
+ * <p>
+ * @since 1.6
+ */
+ public void removeStatementEventListener(StatementEventListener listener) {
+ throw new UnsupportedOperationException (
+ "addStatementEventListener(StatementEventListener listener)");
}
/**
- * Are held cursors allowed. If the connection is attached to
- * a global transaction then downgrade the result set holdabilty
- * to CLOSE_CURSORS_AT_COMMIT if downgrade is true, otherwise
- * throw an exception.
- * If the connection is in a local transaction then the
- * passed in holdabilty is returned.
- * @param holdability
- * @param downgrade
- * @return holdability
- */
- public int checkHoldCursors(int holdability, boolean downgrade)
- throws SQLException {
- if (holdability == JDBC30Translation.HOLD_CURSORS_OVER_COMMIT) {
- if (xaRes.getCurrentXid() != null) {
- if (downgrade)
- return JDBC30Translation.CLOSE_CURSORS_AT_COMMIT;
- throw Util.generateCsSQLException(SQLState.CANNOT_HOLD_CURSOR_XA);
- }
- }
-
- return super.checkHoldCursors(holdability, downgrade);
- }
-
- /**
- * Allow control over creating a Savepoint (JDBC 3.0)
- */
- public void checkSavepoint() throws SQLException {
-
- if (xaRes.getCurrentXid() != null)
- throw Util.generateCsSQLException(SQLState.CANNOT_ROLLBACK_XA);
-
- super.checkSavepoint();
- }
-
- /**
- * Allow control over calling rollback.
- */
- public void checkRollback() throws SQLException {
-
- if (xaRes.getCurrentXid() != null)
- throw Util.generateCsSQLException(SQLState.CANNOT_ROLLBACK_XA);
-
- super.checkRollback();
- }
- /**
- * Allow control over calling commit.
- */
- public void checkCommit() throws SQLException {
-
- if (xaRes.getCurrentXid() != null)
- throw Util.generateCsSQLException(SQLState.CANNOT_COMMIT_XA);
-
- super.checkCommit();
- }
-
- /**
- * Create an object handle for a database connection.
- * @return a Connection object
- * @exception SQLException - if a database-access error occurs.
- */
- public Connection getConnection() throws SQLException {
- Connection handle;
-
- // Is this just a local transaction?
- if (xaRes.getCurrentXid() == null) {
- handle = super.getConnection();
- } else {
-
- if (currentConnectionHandle != null) {
- // this can only happen if someone called start(Xid),
- // getConnection, getConnection (and we are now the 2nd
- // getConnection call).
- // Cannot yank a global connection away like, I don't think...
- throw Util.generateCsSQLException(
- SQLState.CANNOT_CLOSE_ACTIVE_XA_CONNECTION);
- }
-
- handle = getNewCurrentConnectionHandle();
- }
-
- currentConnectionHandle.syncState();
-
- return handle;
- }
-
- /**
- * Wrap and control a Statement
- * @param s
- * @return Statement
- */
- public Statement wrapStatement(Statement s) throws SQLException {
- XAStatementControl sc = new XAStatementControl(this, s);
- return sc.applicationStatement;
- }
-
- /**
- * Wrap and control a PreparedStatement
- * @param ps
- * @param sql
- * @param generatedKeys
- * @return PreparedStatement
- */
- public PreparedStatement wrapStatement(PreparedStatement ps, String sql,
- Object generatedKeys) throws SQLException {
- XAStatementControl sc = new XAStatementControl(this, ps,
- sql, generatedKeys);
- return (PreparedStatement) sc.applicationStatement;
- }
-
- /**
- * Wrap and control a PreparedStatement
- * @param cs
- * @param sql
- * @return CallableStatement
- */
- public CallableStatement wrapStatement(CallableStatement cs,
- String sql) throws SQLException {
- XAStatementControl sc = new XAStatementControl(this, cs, sql);
- return (CallableStatement) sc.applicationStatement;
+ * Registers a <code>StatementEventListener</code> with this
+ * <code>PooledConnection</code> object. Components that
+ * wish to be notified when <code>PreparedStatement</code>s created by the
+ * connection are closed or are detected to be invalid may use this method
+ * to register a <code>StatementEventListener</code> with this
+ * <code>PooledConnection</code> object.
+ * <p>
+ *
+ * @param listener an component which implements the
+ * <code>StatementEventListener</code> interface that is to be registered
+ * with this <code>PooledConnection</code> object
+ * <p>
+ * @since 1.6
+ */
+ public void addStatementEventListener(StatementEventListener listener) {
+ throw new UnsupportedOperationException (
+ "addStatementEventListener(StatementEventListener listener)");
}
-
- /**
- * Override getRealConnection to create a a local connection
- * when we are not associated with an XA transaction.
- *
- * This can occur if the application has a Connection object (conn)
- * and the following sequence occurs.
- *
- * conn = xac.getConnection();
- * xac.start(xid, ...)
- *
- * // do work with conn
- *
- * xac.end(xid, ...);
- *
- * // do local work with conn
- * // need to create new connection here.
- */
- public EngineConnection getRealConnection() throws SQLException {
- EngineConnection rc = super.getRealConnection();
- if (rc != null)
- return rc;
-
- openRealConnection();
-
- // a new Connection, set its state according to the application's
- //Connection handle
- currentConnectionHandle.setState(true);
- return realConnection;
- }
-
-
-
-
-}
+
+}
\ No newline at end of file
Modified: db/derby/code/trunk/java/engine/org/apache/derby/jdbc/XAStatementControl.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/jdbc/XAStatementControl.java?rev=393460&r1=393459&r2=393460&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/jdbc/XAStatementControl.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/jdbc/XAStatementControl.java Wed Apr 12 06:47:03 2006
@@ -42,7 +42,7 @@
/**
*/
- private final EmbedPooledConnection xaConnection;
+ private final EmbedXAConnection xaConnection;
private final BrokeredConnection applicationConnection;
BrokeredStatement applicationStatement;
private EmbedConnection realConnection;
@@ -50,13 +50,13 @@
private PreparedStatement realPreparedStatement;
private CallableStatement realCallableStatement;
- private XAStatementControl(EmbedPooledConnection xaConnection) {
+ private XAStatementControl(EmbedXAConnection xaConnection) {
this.xaConnection = xaConnection;
this.realConnection = xaConnection.realConnection;
this.applicationConnection = xaConnection.currentConnectionHandle;
}
- XAStatementControl(EmbedPooledConnection xaConnection,
+ XAStatementControl(EmbedXAConnection xaConnection,
Statement realStatement) throws SQLException {
this(xaConnection);
this.realStatement = realStatement;
@@ -65,7 +65,7 @@
((EmbedStatement) realStatement).setApplicationStatement(
applicationStatement);
}
- XAStatementControl(EmbedPooledConnection xaConnection,
+ XAStatementControl(EmbedXAConnection xaConnection,
PreparedStatement realPreparedStatement,
String sql, Object generatedKeys) throws SQLException {
this(xaConnection);
@@ -74,7 +74,7 @@
((EmbedStatement) realPreparedStatement).setApplicationStatement(
applicationStatement);
}
- XAStatementControl(EmbedPooledConnection xaConnection,
+ XAStatementControl(EmbedXAConnection xaConnection,
CallableStatement realCallableStatement,
String sql) throws SQLException {
this(xaConnection);