From b03bed965bae61420aff7d50b13c06b424d9956d Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 30 Oct 2019 14:56:37 +0100 Subject: [PATCH] [jOOQ/jOOQ#9468] SQLDialect.ASE cannot be used with a MockConnection --- .../org/jooq/tools/jdbc/MockConnection.java | 28 ++++++++++++------- .../org/jooq/tools/jdbc/MockResultSet.java | 10 +++++-- .../tools/jdbc/MockResultSetMetaData.java | 12 ++++++-- .../org/jooq/tools/jdbc/MockStatement.java | 14 ++++++++-- 4 files changed, 46 insertions(+), 18 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/tools/jdbc/MockConnection.java b/jOOQ/src/main/java/org/jooq/tools/jdbc/MockConnection.java index 4360f7861b..721a1e7cdb 100644 --- a/jOOQ/src/main/java/org/jooq/tools/jdbc/MockConnection.java +++ b/jOOQ/src/main/java/org/jooq/tools/jdbc/MockConnection.java @@ -353,6 +353,24 @@ public class MockConnection extends JDBC41Connection implements Connection { return null; } + // ------------------------------------------------------------------------- + // XXX: Unwrapping + // ------------------------------------------------------------------------- + + @SuppressWarnings("unchecked") + @Override + public T unwrap(Class iface) throws SQLException { + if (isWrapperFor(iface)) + return (T) this; + else + throw new SQLException("MockConnection does not implement " + iface); + } + + @Override + public boolean isWrapperFor(Class iface) throws SQLException { + return iface.isInstance(this); + } + // ------------------------------------------------------------------------- // XXX: Unsupported operations // ------------------------------------------------------------------------- @@ -362,16 +380,6 @@ public class MockConnection extends JDBC41Connection implements Connection { throw new SQLFeatureNotSupportedException("Unsupported Operation"); } - @Override - public T unwrap(Class iface) throws SQLException { - throw new SQLFeatureNotSupportedException("Unsupported Operation"); - } - - @Override - public boolean isWrapperFor(Class iface) throws SQLException { - throw new SQLFeatureNotSupportedException("Unsupported Operation"); - } - @Override public String nativeSQL(String sql) throws SQLException { throw new SQLFeatureNotSupportedException("Unsupported Operation"); diff --git a/jOOQ/src/main/java/org/jooq/tools/jdbc/MockResultSet.java b/jOOQ/src/main/java/org/jooq/tools/jdbc/MockResultSet.java index 3a06b3c57d..760c573992 100644 --- a/jOOQ/src/main/java/org/jooq/tools/jdbc/MockResultSet.java +++ b/jOOQ/src/main/java/org/jooq/tools/jdbc/MockResultSet.java @@ -98,17 +98,21 @@ public class MockResultSet extends JDBC41ResultSet implements ResultSet, Seriali } // ------------------------------------------------------------------------- - // XXX: Unsupported implementations + // XXX: Unwrapping // ------------------------------------------------------------------------- + @SuppressWarnings("unchecked") @Override public T unwrap(Class iface) throws SQLException { - return null; + if (isWrapperFor(iface)) + return (T) this; + else + throw new SQLException("MockResultSet does not implement " + iface); } @Override public boolean isWrapperFor(Class iface) throws SQLException { - return false; + return iface.isInstance(this); } // ------------------------------------------------------------------------- diff --git a/jOOQ/src/main/java/org/jooq/tools/jdbc/MockResultSetMetaData.java b/jOOQ/src/main/java/org/jooq/tools/jdbc/MockResultSetMetaData.java index 2d4dcc6b90..a667d5edb9 100644 --- a/jOOQ/src/main/java/org/jooq/tools/jdbc/MockResultSetMetaData.java +++ b/jOOQ/src/main/java/org/jooq/tools/jdbc/MockResultSetMetaData.java @@ -74,14 +74,22 @@ public class MockResultSetMetaData implements ResultSetMetaData, Serializable { this.rs = rs; } + // ------------------------------------------------------------------------- + // XXX: Unwrapping + // ------------------------------------------------------------------------- + + @SuppressWarnings("unchecked") @Override public T unwrap(Class iface) throws SQLException { - return null; + if (isWrapperFor(iface)) + return (T) this; + else + throw new SQLException("MockResultSetMetaData does not implement " + iface); } @Override public boolean isWrapperFor(Class iface) throws SQLException { - return false; + return iface.isInstance(this); } @Override diff --git a/jOOQ/src/main/java/org/jooq/tools/jdbc/MockStatement.java b/jOOQ/src/main/java/org/jooq/tools/jdbc/MockStatement.java index 97ff60197f..aaae8bf354 100644 --- a/jOOQ/src/main/java/org/jooq/tools/jdbc/MockStatement.java +++ b/jOOQ/src/main/java/org/jooq/tools/jdbc/MockStatement.java @@ -844,19 +844,27 @@ public class MockStatement extends JDBC41Statement implements CallableStatement } // ------------------------------------------------------------------------- - // XXX: Unsupported operations + // XXX: Unwrapping // ------------------------------------------------------------------------- + @SuppressWarnings("unchecked") @Override public T unwrap(Class iface) throws SQLException { - throw new SQLFeatureNotSupportedException("Unsupported Operation"); + if (isWrapperFor(iface)) + return (T) this; + else + throw new SQLException("MockStatement does not implement " + iface); } @Override public boolean isWrapperFor(Class iface) throws SQLException { - throw new SQLFeatureNotSupportedException("Unsupported Operation"); + return iface.isInstance(this); } + // ------------------------------------------------------------------------- + // XXX: Unsupported operations + // ------------------------------------------------------------------------- + @Override public ParameterMetaData getParameterMetaData() throws SQLException { throw new SQLFeatureNotSupportedException("Unsupported Operation");