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(); + } + } +}
