Skip to content

Commit 9aebcf6

Browse files
committed
HHH-9639 support unwrapping HikariCPConnectionProvider as DataSource
1 parent 260ff03 commit 9aebcf6

File tree

1 file changed

+18
-13
lines changed

1 file changed

+18
-13
lines changed

hibernate-hikaricp/src/main/java/org/hibernate/hikaricp/internal/HikariCPConnectionProvider.java

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,19 @@
2121

2222
package org.hibernate.hikaricp.internal;
2323

24-
import java.sql.Connection;
25-
import java.sql.SQLException;
26-
import java.util.Map;
27-
24+
import com.zaxxer.hikari.HikariConfig;
25+
import com.zaxxer.hikari.HikariDataSource;
2826
import org.hibernate.HibernateException;
2927
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
3028
import org.hibernate.service.UnknownUnwrapTypeException;
3129
import org.hibernate.service.spi.Configurable;
3230
import org.hibernate.service.spi.Stoppable;
3331
import org.jboss.logging.Logger;
3432

35-
import com.zaxxer.hikari.HikariConfig;
36-
import com.zaxxer.hikari.HikariDataSource;
33+
import javax.sql.DataSource;
34+
import java.sql.Connection;
35+
import java.sql.SQLException;
36+
import java.util.Map;
3737

3838
/**
3939
* HikariCP Connection provider for Hibernate.
@@ -106,18 +106,23 @@ public boolean supportsAggressiveRelease() {
106106
@SuppressWarnings("rawtypes")
107107
public boolean isUnwrappableAs(Class unwrapType) {
108108
return ConnectionProvider.class.equals( unwrapType )
109-
|| HikariCPConnectionProvider.class.isAssignableFrom( unwrapType );
109+
|| HikariCPConnectionProvider.class.isAssignableFrom( unwrapType )
110+
|| DataSource.class.isAssignableFrom( unwrapType );
110111
}
111112

112113
@Override
113114
@SuppressWarnings("unchecked")
114115
public <T> T unwrap(Class<T> unwrapType) {
115-
if ( isUnwrappableAs( unwrapType ) ) {
116-
return (T) this;
117-
}
118-
else {
119-
throw new UnknownUnwrapTypeException( unwrapType );
120-
}
116+
if ( ConnectionProvider.class.equals( unwrapType ) ||
117+
HikariCPConnectionProvider.class.isAssignableFrom( unwrapType ) ) {
118+
return (T) this;
119+
}
120+
else if ( DataSource.class.isAssignableFrom( unwrapType ) ) {
121+
return (T) hds;
122+
}
123+
else {
124+
throw new UnknownUnwrapTypeException( unwrapType );
125+
}
121126
}
122127

123128
// *************************************************************************

0 commit comments

Comments
 (0)