Repository: incubator-trafodion
Updated Branches:
  refs/heads/master 68fe67f4f -> bf2ad712e


TRAFODION-2787 jdbc does not implement wrapper related api


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/71fa57bc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/71fa57bc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/71fa57bc

Branch: refs/heads/master
Commit: 71fa57bc19704e71d39874526e264759c07013a0
Parents: 371cb71
Author: gpj1987 <[email protected]>
Authored: Mon Oct 30 17:03:54 2017 +0800
Committer: gpj1987 <[email protected]>
Committed: Mon Oct 30 17:03:54 2017 +0800

----------------------------------------------------------------------
 .../jdbcT4/src/main/java/T4Messages.properties  |  4 ++
 .../org/trafodion/jdbc/t4/TrafT4Connection.java | 14 ++++--
 .../java/org/trafodion/jdbc_test/TestWrap.java  | 50 ++++++++++++++++++++
 3 files changed, 64 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/71fa57bc/core/conn/jdbcT4/src/main/java/T4Messages.properties
----------------------------------------------------------------------
diff --git a/core/conn/jdbcT4/src/main/java/T4Messages.properties 
b/core/conn/jdbcT4/src/main/java/T4Messages.properties
index 6317a2b..3d0a43c 100644
--- a/core/conn/jdbcT4/src/main/java/T4Messages.properties
+++ b/core/conn/jdbcT4/src/main/java/T4Messages.properties
@@ -703,3 +703,7 @@ cursor_is_before_first_row_sqlcode=29189
 cursor_after_last_row_msg=The cursor is after last row, which could be due to 
the result set containing no rows, or all rows have been retrieved.
 cursor_after_last_row_sqlstate=HY109
 cursor_after_last_row_sqlcode=29190
+
+unable_unwrap_msg=The interface is not unable to wrap.
+unable_unwrap_sqlstate=HY109
+unable_unwrap_sqlcode=29190

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/71fa57bc/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Connection.java
----------------------------------------------------------------------
diff --git 
a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Connection.java 
b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Connection.java
index 2a8e381..dff6fa0 100644
--- a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Connection.java
+++ b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Connection.java
@@ -1849,13 +1849,19 @@ public class TrafT4Connection extends 
PreparedStatementManager implements java.s
 
 
        public Object unwrap(Class iface) throws SQLException {
-               // TODO Auto-generated method stub
-               return null;
+               try {
+                       return iface.cast(this);
+               } catch (ClassCastException cce) {
+                       throw TrafT4Messages.createSQLException(props_, 
this.getLocale(), "unable_unwrap", iface.toString());
+               }
        }
 
        public boolean isWrapperFor(Class iface) throws SQLException {
-               // TODO Auto-generated method stub
-               return false;
+               if (_isClosed() == true) {
+                       throw TrafT4Messages.createSQLException(props_, null, 
"invalid_connection", null);
+               } else {
+                       return iface.isInstance(this);
+               }
        }
 
        public Clob createClob() throws SQLException {

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/71fa57bc/dcs/src/test/jdbc_test/src/test/java/org/trafodion/jdbc_test/TestWrap.java
----------------------------------------------------------------------
diff --git 
a/dcs/src/test/jdbc_test/src/test/java/org/trafodion/jdbc_test/TestWrap.java 
b/dcs/src/test/jdbc_test/src/test/java/org/trafodion/jdbc_test/TestWrap.java
new file mode 100644
index 0000000..07ae116
--- /dev/null
+++ b/dcs/src/test/jdbc_test/src/test/java/org/trafodion/jdbc_test/TestWrap.java
@@ -0,0 +1,50 @@
+import static org.junit.Assert.assertTrue;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import org.junit.Test;
+
+public class TestWrap {
+
+    @Test
+    public void testIsWrapFor() {
+        Connection conn = null;
+        try {
+            System.out.println("Connecting to database...");
+            conn = Utils.getUserConnection();
+            boolean result = conn.isWrapperFor(Connection.class);
+            assertTrue("It is wrapper for this interface", result);
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Test(expected = SQLException.class)
+    public void testConnectIsClose() throws SQLException {
+        Connection conn = null;
+        try {
+            System.out.println("Connecting to database...");
+            conn = Utils.getUserConnection();
+            conn.close();
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+        conn.isWrapperFor(Connection.class) ;
+    }
+
+    @Test
+    public void testUnwrap() {
+        Connection conn = null;
+        try {
+            System.out.println("Connecting to database...");
+            conn = Utils.getUserConnection();
+            boolean result = conn.unwrap(Connection.class) instanceof 
Connection;
+            assertTrue("It is unwrape for this interface", result);
+            result = conn.unwrap(Connection.class) instanceof TestWrap;
+            assertTrue("It is unwrape for this interface", !result);
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+    }
+}

Reply via email to