postgresql-jdbc.git / summary / log / commit / refs

commit    1318486141ceebafc7ebaa00f2ffb41b5eb70fac
Author:   Justin Santa Barbara <justin@fathomdb.com>
Date:     Sat Feb 23 19:19:49 2013 +0000

    Support for JDBC4 isWrapperFor & unwrap methods


org/postgresql/ds/jdbc4/AbstractJdbc4PoolingDataSource.java | 8 ++++++-- org/postgresql/ds/jdbc4/AbstractJdbc4SimpleDataSource.java | 8 ++++++-- org/postgresql/jdbc4/AbstractJdbc4Connection.java | 8 ++++++-- org/postgresql/jdbc4/AbstractJdbc4DatabaseMetaData.java | 8 ++++++-- org/postgresql/jdbc4/AbstractJdbc4ParameterMetaData.java | 8 ++++++-- org/postgresql/jdbc4/AbstractJdbc4ResultSet.java | 8 ++++++-- org/postgresql/jdbc4/AbstractJdbc4ResultSetMetaData.java | 8 ++++++-- org/postgresql/jdbc4/AbstractJdbc4Statement.java | 8 ++++++-- 8 files changed, 48 insertions(+), 16 deletions(-) diff --git a/org/postgresql/ds/jdbc4/AbstractJdbc4PoolingDataSource.java b/org/postgresql/ds/jdbc4/AbstractJdbc4PoolingDataSource.java index 426f016d..72d40d21 100644 --- a/org/postgresql/ds/jdbc4/AbstractJdbc4PoolingDataSource.java +++ b/org/postgresql/ds/jdbc4/AbstractJdbc4PoolingDataSource.java @@ -17,12 +17,16 @@ public abstract class AbstractJdbc4PoolingDataSource extends AbstractJdbc23Pooli public boolean isWrapperFor(Class<?> iface) throws SQLException { - throw org.postgresql.Driver.notImplemented(this.getClass(), "isWrapperFor(Class<?>)"); + return iface.isAssignableFrom(getClass()); } public <T> T unwrap(Class<T> iface) throws SQLException { - throw org.postgresql.Driver.notImplemented(this.getClass(), "unwrap(Class<T>)"); + if (iface.isAssignableFrom(getClass())) + { + return (T) this; + } + throw new SQLException("Cannot unwrap to " + iface.getName()); } public java.util.logging.Logger getParentLogger() throws SQLFeatureNotSupportedException diff --git a/org/postgresql/ds/jdbc4/AbstractJdbc4SimpleDataSource.java b/org/postgresql/ds/jdbc4/AbstractJdbc4SimpleDataSource.java index 1d9b5023..da52644e 100644 --- a/org/postgresql/ds/jdbc4/AbstractJdbc4SimpleDataSource.java +++ b/org/postgresql/ds/jdbc4/AbstractJdbc4SimpleDataSource.java @@ -16,12 +16,16 @@ public abstract class AbstractJdbc4SimpleDataSource extends AbstractJdbc23Simple { public boolean isWrapperFor(Class<?> iface) throws SQLException { - throw org.postgresql.Driver.notImplemented(this.getClass(), "isWrapperFor(Class<?>)"); + return iface.isAssignableFrom(getClass()); } public <T> T unwrap(Class<T> iface) throws SQLException { - throw org.postgresql.Driver.notImplemented(this.getClass(), "unwrap(Class<T>)"); + if (iface.isAssignableFrom(getClass())) + { + return (T) this; + } + throw new SQLException("Cannot unwrap to " + iface.getName()); } public java.util.logging.Logger getParentLogger() throws SQLFeatureNotSupportedException diff --git a/org/postgresql/jdbc4/AbstractJdbc4Connection.java b/org/postgresql/jdbc4/AbstractJdbc4Connection.java index 8a89a802..d25710a0 100644 --- a/org/postgresql/jdbc4/AbstractJdbc4Connection.java +++ b/org/postgresql/jdbc4/AbstractJdbc4Connection.java @@ -208,13 +208,17 @@ abstract class AbstractJdbc4Connection extends org.postgresql.jdbc3g.AbstractJdb public boolean isWrapperFor(Class<?> iface) throws SQLException { checkClosed(); - throw org.postgresql.Driver.notImplemented(this.getClass(), "isWrapperFor(Class<?>)"); + return iface.isAssignableFrom(getClass()); } public <T> T unwrap(Class<T> iface) throws SQLException { checkClosed(); - throw org.postgresql.Driver.notImplemented(this.getClass(), "unwrap(Class<T>)"); + if (iface.isAssignableFrom(getClass())) + { + return (T) this; + } + throw new SQLException("Cannot unwrap to " + iface.getName()); } public java.util.logging.Logger getParentLogger() throws SQLFeatureNotSupportedException diff --git a/org/postgresql/jdbc4/AbstractJdbc4DatabaseMetaData.java b/org/postgresql/jdbc4/AbstractJdbc4DatabaseMetaData.java index b88bba4a..7fc7b2a4 100644 --- a/org/postgresql/jdbc4/AbstractJdbc4DatabaseMetaData.java +++ b/org/postgresql/jdbc4/AbstractJdbc4DatabaseMetaData.java @@ -70,12 +70,16 @@ public abstract class AbstractJdbc4DatabaseMetaData extends org.postgresql.jdbc3 public boolean isWrapperFor(Class<?> iface) throws SQLException { - throw org.postgresql.Driver.notImplemented(this.getClass(), "isWrapperFor(Class<?>)"); + return iface.isAssignableFrom(getClass()); } public <T> T unwrap(Class<T> iface) throws SQLException { - throw org.postgresql.Driver.notImplemented(this.getClass(), "unwrap(Class<T>)"); + if (iface.isAssignableFrom(getClass())) + { + return (T) this; + } + throw new SQLException("Cannot unwrap to " + iface.getName()); } public ResultSet getFunctions(String catalog, String schemaPattern, String functionNamePattern) throws SQLException diff --git a/org/postgresql/jdbc4/AbstractJdbc4ParameterMetaData.java b/org/postgresql/jdbc4/AbstractJdbc4ParameterMetaData.java index b3895b5f..34dad2ba 100644 --- a/org/postgresql/jdbc4/AbstractJdbc4ParameterMetaData.java +++ b/org/postgresql/jdbc4/AbstractJdbc4ParameterMetaData.java @@ -20,12 +20,16 @@ public abstract class AbstractJdbc4ParameterMetaData extends org.postgresql.jdbc public boolean isWrapperFor(Class<?> iface) throws SQLException { - throw org.postgresql.Driver.notImplemented(this.getClass(), "isWrapperFor(Class<?>)"); + return iface.isAssignableFrom(getClass()); } public <T> T unwrap(Class<T> iface) throws SQLException { - throw org.postgresql.Driver.notImplemented(this.getClass(), "unwrap(Class<T>)"); + if (iface.isAssignableFrom(getClass())) + { + return (T) this; + } + throw new SQLException("Cannot unwrap to " + iface.getName()); } } diff --git a/org/postgresql/jdbc4/AbstractJdbc4ResultSet.java b/org/postgresql/jdbc4/AbstractJdbc4ResultSet.java index 665c0ae3..f3d0445a 100644 --- a/org/postgresql/jdbc4/AbstractJdbc4ResultSet.java +++ b/org/postgresql/jdbc4/AbstractJdbc4ResultSet.java @@ -278,12 +278,16 @@ abstract class AbstractJdbc4ResultSet extends org.postgresql.jdbc3g.AbstractJdbc public boolean isWrapperFor(Class<?> iface) throws SQLException { - throw org.postgresql.Driver.notImplemented(this.getClass(), "isWrapperFor(Class<?>)"); + return iface.isAssignableFrom(getClass()); } public <T> T unwrap(Class<T> iface) throws SQLException { - throw org.postgresql.Driver.notImplemented(this.getClass(), "unwrap(Class<T>)"); + if (iface.isAssignableFrom(getClass())) + { + return (T) this; + } + throw new SQLException("Cannot unwrap to " + iface.getName()); } protected Object internalGetObject(int columnIndex, Field field) throws SQLException diff --git a/org/postgresql/jdbc4/AbstractJdbc4ResultSetMetaData.java b/org/postgresql/jdbc4/AbstractJdbc4ResultSetMetaData.java index d83c9d9a..68a411d0 100644 --- a/org/postgresql/jdbc4/AbstractJdbc4ResultSetMetaData.java +++ b/org/postgresql/jdbc4/AbstractJdbc4ResultSetMetaData.java @@ -21,12 +21,16 @@ abstract class AbstractJdbc4ResultSetMetaData extends org.postgresql.jdbc2.Abstr public boolean isWrapperFor(Class<?> iface) throws SQLException { - throw org.postgresql.Driver.notImplemented(this.getClass(), "isWrapperFor(Class<?>)"); + return iface.isAssignableFrom(getClass()); } public <T> T unwrap(Class<T> iface) throws SQLException { - throw org.postgresql.Driver.notImplemented(this.getClass(), "unwrap(Class<T>)"); + if (iface.isAssignableFrom(getClass())) + { + return (T) this; + } + throw new SQLException("Cannot unwrap to " + iface.getName()); } } diff --git a/org/postgresql/jdbc4/AbstractJdbc4Statement.java b/org/postgresql/jdbc4/AbstractJdbc4Statement.java index ad89a846..c511d71f 100644 --- a/org/postgresql/jdbc4/AbstractJdbc4Statement.java +++ b/org/postgresql/jdbc4/AbstractJdbc4Statement.java @@ -364,12 +364,16 @@ abstract class AbstractJdbc4Statement extends org.postgresql.jdbc3g.AbstractJdbc public boolean isWrapperFor(Class<?> iface) throws SQLException { - throw org.postgresql.Driver.notImplemented(this.getClass(), "isWrapperFor(Class<?>)"); + return iface.isAssignableFrom(getClass()); } public <T> T unwrap(Class<T> iface) throws SQLException { - throw org.postgresql.Driver.notImplemented(this.getClass(), "unwrap(Class<T>)"); + if (iface.isAssignableFrom(getClass())) + { + return (T) this; + } + throw new SQLException("Cannot unwrap to " + iface.getName()); } public java.util.logging.Logger getParentLogger() throws SQLFeatureNotSupportedException [parent: 8cc4c64ec649]