[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