[jboss-svn-commits] JBL Code SVN: r26941 - labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/internal/jdbc.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Jun 12 06:37:24 EDT 2009
Author: jhalliday
Date: 2009-06-12 06:37:22 -0400 (Fri, 12 Jun 2009)
New Revision: 26941
Modified:
labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/internal/jdbc/ConnectionImpleJDBC4.java
Log:
Implemented JDBC4 unwrap and isWrapperFor methods. JBTM-419
Modified: labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/internal/jdbc/ConnectionImpleJDBC4.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/internal/jdbc/ConnectionImpleJDBC4.java 2009-06-12 10:27:13 UTC (rev 26940)
+++ labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/internal/jdbc/ConnectionImpleJDBC4.java 2009-06-12 10:37:22 UTC (rev 26941)
@@ -23,11 +23,8 @@
*/
package com.arjuna.ats.internal.jdbc;
-import com.arjuna.ats.jdbc.logging.jdbcLogger;
-
import java.sql.*;
import java.util.Properties;
-import java.util.Map;
/**
* JDBC 4.0 extention to the Connection wrapper.
@@ -144,16 +141,42 @@
return getConnection().createStruct(typeName, attributes);
}
- /**
- * @message com.arjuna.ats.internal.jdbc.nounwrapping Unwrapping is not supported.
- */
public <T> T unwrap(Class<T> iface) throws SQLException
{
- throw new SQLException(jdbcLogger.logMesg.getString("com.arjuna.ats.internal.jdbc.nounwrapping"));
+ if (iface != null) {
+ if (iface.isInstance(this)) {
+ return (T) this;
+ } else {
+ Connection conn = getConnection();
+ if (conn != null) {
+ if (iface.isInstance(conn)) {
+ return (T) conn;
+ } else if(conn.isWrapperFor(iface)) {
+ return conn.unwrap(iface);
+ }
+ }
+ }
+ }
+ return null;
}
- public boolean isWrapperFor(Class<?> iface) throws SQLException {
- throw new SQLException(jdbcLogger.logMesg.getString("com.arjuna.ats.internal.jdbc.nounwrapping"));
+ public boolean isWrapperFor(Class<?> iface) throws SQLException
+ {
+ if (iface != null) {
+ if (iface.isInstance(this)) {
+ return true;
+ } else {
+ Connection conn = getConnection();
+ if (conn != null) {
+ if (iface.isInstance(conn)) {
+ return true;
+ } else {
+ return conn.isWrapperFor(iface);
+ }
+ }
+ }
+ }
+ return false;
}
/*
More information about the jboss-svn-commits
mailing list