From 2ba8e8acaa927457ea60df069310a2798afad9a8 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Sun, 1 Jul 2012 10:16:43 +0200 Subject: [PATCH] [#1498] jOOQ does not compile using JDK 7 / JDBC 4.1. GitHub Issue #24 - Moved JDBC 4.1 artefacts to a public org.jooq.tools.jdbc package, for reuse in jOOQ Console and other modules --- .../java/org/jooq/impl/ConnectionProxy.java | 3 +- .../main/java/org/jooq/impl/CursorImpl.java | 3 +- .../org/jooq/impl/DataSourceConnection.java | 3 +- .../org/jooq/impl/DataSourceStatement.java | 4 ++- .../org/jooq/impl/PreparedStatementProxy.java | 2 ++ .../jdbc}/JDBC41Connection.java | 7 ++-- .../{impl => tools/jdbc}/JDBC41ResultSet.java | 11 ++++--- .../{impl => tools/jdbc}/JDBC41Statement.java | 32 +++++++++++++++++-- 8 files changed, 52 insertions(+), 13 deletions(-) rename jOOQ/src/main/java/org/jooq/{impl => tools/jdbc}/JDBC41Connection.java (91%) rename jOOQ/src/main/java/org/jooq/{impl => tools/jdbc}/JDBC41ResultSet.java (83%) rename jOOQ/src/main/java/org/jooq/{impl => tools/jdbc}/JDBC41Statement.java (62%) diff --git a/jOOQ/src/main/java/org/jooq/impl/ConnectionProxy.java b/jOOQ/src/main/java/org/jooq/impl/ConnectionProxy.java index 5a140f8c2f..e89348120f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ConnectionProxy.java +++ b/jOOQ/src/main/java/org/jooq/impl/ConnectionProxy.java @@ -57,6 +57,7 @@ import java.util.Properties; import org.jooq.conf.Settings; import org.jooq.conf.StatementType; +import org.jooq.tools.jdbc.JDBC41Connection; /** * A proxy for a JDBC {@link Connection} that handles creation of prepared @@ -64,7 +65,7 @@ import org.jooq.conf.StatementType; * * @author Lukas Eder */ -class ConnectionProxy extends JDBC41Connection { +class ConnectionProxy extends JDBC41Connection implements Connection { private final Connection delegate; private final Settings settings; diff --git a/jOOQ/src/main/java/org/jooq/impl/CursorImpl.java b/jOOQ/src/main/java/org/jooq/impl/CursorImpl.java index d3f3c6accc..0c658c037f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CursorImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CursorImpl.java @@ -68,6 +68,7 @@ import org.jooq.Record; import org.jooq.RecordHandler; import org.jooq.Result; import org.jooq.Table; +import org.jooq.tools.jdbc.JDBC41ResultSet; /** * @author Lukas Eder @@ -231,7 +232,7 @@ class CursorImpl implements Cursor { /** * A wrapper for the underlying JDBC {@link ResultSet} and {@link Statement} */ - private final class CursorResultSet extends JDBC41ResultSet { + private final class CursorResultSet extends JDBC41ResultSet implements ResultSet { private final boolean keepStatementOpen; diff --git a/jOOQ/src/main/java/org/jooq/impl/DataSourceConnection.java b/jOOQ/src/main/java/org/jooq/impl/DataSourceConnection.java index 802a190aa4..9010e40804 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DataSourceConnection.java +++ b/jOOQ/src/main/java/org/jooq/impl/DataSourceConnection.java @@ -57,6 +57,7 @@ import javax.sql.DataSource; import org.jooq.conf.Settings; import org.jooq.exception.DataAccessException; +import org.jooq.tools.jdbc.JDBC41Connection; /** * A {@link DataSource}-enabled connection. @@ -68,7 +69,7 @@ import org.jooq.exception.DataAccessException; * * @author Lukas Eder */ -class DataSourceConnection extends JDBC41Connection { +class DataSourceConnection extends JDBC41Connection implements Connection { private final DataSource datasource; private final Settings settings; diff --git a/jOOQ/src/main/java/org/jooq/impl/DataSourceStatement.java b/jOOQ/src/main/java/org/jooq/impl/DataSourceStatement.java index 8dbc213564..5cc73b5090 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DataSourceStatement.java +++ b/jOOQ/src/main/java/org/jooq/impl/DataSourceStatement.java @@ -43,13 +43,15 @@ import java.sql.Statement; import javax.sql.DataSource; +import org.jooq.tools.jdbc.JDBC41Statement; + /** * A {@link DataSource}-enabled statement. * * @author Lukas Eder * @see DataSourceConnection */ -class DataSourceStatement extends JDBC41Statement { +class DataSourceStatement extends JDBC41Statement implements Statement { private final DataSourceConnection connection; private final Statement statement; diff --git a/jOOQ/src/main/java/org/jooq/impl/PreparedStatementProxy.java b/jOOQ/src/main/java/org/jooq/impl/PreparedStatementProxy.java index d7d77ce74b..1f60258abd 100644 --- a/jOOQ/src/main/java/org/jooq/impl/PreparedStatementProxy.java +++ b/jOOQ/src/main/java/org/jooq/impl/PreparedStatementProxy.java @@ -59,6 +59,8 @@ import java.sql.Time; import java.sql.Timestamp; import java.util.Calendar; +import org.jooq.tools.jdbc.JDBC41Statement; + /** * A proxy for a JDBC {@link PreparedStatement} that simulates the API of a * prepared statement, when in fact executing an ad-hoc {@link Statement} diff --git a/jOOQ/src/main/java/org/jooq/impl/JDBC41Connection.java b/jOOQ/src/main/java/org/jooq/tools/jdbc/JDBC41Connection.java similarity index 91% rename from jOOQ/src/main/java/org/jooq/impl/JDBC41Connection.java rename to jOOQ/src/main/java/org/jooq/tools/jdbc/JDBC41Connection.java index ef6985594e..225bb9ee06 100644 --- a/jOOQ/src/main/java/org/jooq/impl/JDBC41Connection.java +++ b/jOOQ/src/main/java/org/jooq/tools/jdbc/JDBC41Connection.java @@ -33,7 +33,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ -package org.jooq.impl; +package org.jooq.tools.jdbc; import java.sql.Connection; import java.sql.SQLException; @@ -41,10 +41,13 @@ import java.util.concurrent.Executor; /** * Add JDBC 4.1 API compliance to a JDBC 4.0 {@link Connection} + *

+ * Extend this type if you want to compile {@link Connection} implementations on + * both JDBC 4.0 (JDK 6) and 4.1 (JDK 7). * * @author Lukas Eder */ -abstract class JDBC41Connection implements Connection { +public abstract class JDBC41Connection { // JDBC 4.1 compliance: @Override @SuppressWarnings("unused") diff --git a/jOOQ/src/main/java/org/jooq/impl/JDBC41ResultSet.java b/jOOQ/src/main/java/org/jooq/tools/jdbc/JDBC41ResultSet.java similarity index 83% rename from jOOQ/src/main/java/org/jooq/impl/JDBC41ResultSet.java rename to jOOQ/src/main/java/org/jooq/tools/jdbc/JDBC41ResultSet.java index 304d17d23f..e9f5d5e3a5 100644 --- a/jOOQ/src/main/java/org/jooq/impl/JDBC41ResultSet.java +++ b/jOOQ/src/main/java/org/jooq/tools/jdbc/JDBC41ResultSet.java @@ -33,27 +33,30 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ -package org.jooq.impl; +package org.jooq.tools.jdbc; import java.sql.ResultSet; import java.sql.SQLException; /** * Add JDBC 4.1 API compliance to a JDBC 4.0 {@link ResultSet} + *

+ * Extend this type if you want to compile {@link ResultSet} implementations on + * both JDBC 4.0 (JDK 6) and 4.1 (JDK 7). * * @author Lukas Eder */ -abstract class JDBC41ResultSet implements ResultSet { +public abstract class JDBC41ResultSet { // JDBC 4.1 compliance: @Override @SuppressWarnings("unused") - public T getObject(int columnIndex, Class type0) throws SQLException { + public T getObject(int columnIndex, Class type) throws SQLException { throw new UnsupportedOperationException("Not supported yet."); } // JDBC 4.1 compliance: @Override @SuppressWarnings("unused") - public T getObject(String columnLabel, Class type0) throws SQLException { + public T getObject(String columnLabel, Class type) throws SQLException { throw new UnsupportedOperationException("Not supported yet."); } } diff --git a/jOOQ/src/main/java/org/jooq/impl/JDBC41Statement.java b/jOOQ/src/main/java/org/jooq/tools/jdbc/JDBC41Statement.java similarity index 62% rename from jOOQ/src/main/java/org/jooq/impl/JDBC41Statement.java rename to jOOQ/src/main/java/org/jooq/tools/jdbc/JDBC41Statement.java index a06406c820..9fb651542f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/JDBC41Statement.java +++ b/jOOQ/src/main/java/org/jooq/tools/jdbc/JDBC41Statement.java @@ -33,17 +33,27 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ -package org.jooq.impl; +package org.jooq.tools.jdbc; +import java.sql.CallableStatement; +import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; /** - * Add JDBC 4.1 API compliance to a JDBC 4.0 {@link Statement} + * Add JDBC 4.1 API compliance to a JDBC 4.0 {@link Statement}. + *

+ * Extend this type if you want to compile {@link Statement}, + * {@link PreparedStatement}, and {@link CallableStatement} implementations on + * both JDBC 4.0 (JDK 6) and 4.1 (JDK 7). * * @author Lukas Eder */ -abstract class JDBC41Statement implements Statement { +public abstract class JDBC41Statement { + + // ------------------------------------------------------------------------ + // Methods from JDBC 4.1 java.sql.Statement + // ------------------------------------------------------------------------ // JDBC 4.1 compliance: @Override @SuppressWarnings("unused") @@ -56,4 +66,20 @@ abstract class JDBC41Statement implements Statement { public boolean isCloseOnCompletion() throws SQLException { throw new UnsupportedOperationException("Not supported yet."); } + + // ------------------------------------------------------------------------ + // Methods from JDBC 4.1 java.sql.PreparedCall + // ------------------------------------------------------------------------ + + // JDBC 4.1 compliance: @Override + @SuppressWarnings("unused") + public T getObject(int parameterIndex, Class type) throws SQLException { + throw new UnsupportedOperationException("Not supported yet."); + } + + // JDBC 4.1 compliance: @Override + @SuppressWarnings("unused") + public T getObject(String parameterName, Class type) throws SQLException { + throw new UnsupportedOperationException("Not supported yet."); + } }