From 59bc1662681fcf147c1e710f5d2328f0ef6c7271 Mon Sep 17 00:00:00 2001 From: Thies Edeling <thies@te-con.nl> Date: Tue, 3 Mar 2015 09:50:14 +0100 Subject: [PATCH] #273, special case for when called to unwrap a DataSource, copying the same behavior as the ConnectionProvider implementations by Hibernate. --- .../hibernate/HikariConnectionProvider.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/hikaricp-common/src/main/java/com/zaxxer/hikari/hibernate/HikariConnectionProvider.java b/hikaricp-common/src/main/java/com/zaxxer/hikari/hibernate/HikariConnectionProvider.java index dd79b401..b4c83489 100644 --- a/hikaricp-common/src/main/java/com/zaxxer/hikari/hibernate/HikariConnectionProvider.java +++ b/hikaricp-common/src/main/java/com/zaxxer/hikari/hibernate/HikariConnectionProvider.java @@ -31,6 +31,8 @@ import org.slf4j.LoggerFactory; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; +import javax.sql.DataSource; + /** * Connection provider for Hibernate 4.3. * @@ -125,12 +127,16 @@ public class HikariConnectionProvider implements ConnectionProvider, Configurabl @SuppressWarnings("unchecked") public <T> T unwrap(Class<T> unwrapType) { - if (isUnwrappableAs(unwrapType)) { - return (T) this; - } - else { - throw new UnknownUnwrapTypeException(unwrapType); - } + if ( ConnectionProvider.class.equals( unwrapType ) || + HikariConnectionProvider.class.isAssignableFrom( unwrapType ) ) { + return (T) this; + } + else if ( DataSource.class.isAssignableFrom( unwrapType ) ) { + return (T) this.hds; + } + else { + throw new UnknownUnwrapTypeException( unwrapType ); + } } // *************************************************************************