Skip to content

Commit b3f7dbd

Browse files
committed
fix more weird implementations of unwrap()
1 parent b8a6fc2 commit b3f7dbd

File tree

4 files changed

+14
-17
lines changed

4 files changed

+14
-17
lines changed

hibernate-core/src/main/java/org/hibernate/engine/jdbc/connections/internal/UserSuppliedConnectionProviderImpl.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,13 @@
2121
public class UserSuppliedConnectionProviderImpl implements ConnectionProvider {
2222
@Override
2323
public boolean isUnwrappableAs(Class<?> unwrapType) {
24-
return ConnectionProvider.class.equals( unwrapType ) ||
25-
UserSuppliedConnectionProviderImpl.class.isAssignableFrom( unwrapType );
24+
return unwrapType.isAssignableFrom( UserSuppliedConnectionProviderImpl.class );
2625
}
2726

2827
@Override
2928
@SuppressWarnings( {"unchecked"})
3029
public <T> T unwrap(Class<T> unwrapType) {
31-
if ( ConnectionProvider.class.equals( unwrapType ) ||
32-
UserSuppliedConnectionProviderImpl.class.isAssignableFrom( unwrapType ) ) {
30+
if ( unwrapType.isAssignableFrom( UserSuppliedConnectionProviderImpl.class ) ) {
3331
return (T) this;
3432
}
3533
else {

hibernate-core/src/main/java/org/hibernate/engine/jdbc/connections/spi/AbstractDataSourceBasedMultiTenantConnectionProviderImpl.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
*
1616
* @author Steve Ebersole
1717
*/
18-
public abstract class AbstractDataSourceBasedMultiTenantConnectionProviderImpl<T> implements MultiTenantConnectionProvider<T> {
18+
public abstract class AbstractDataSourceBasedMultiTenantConnectionProviderImpl<T>
19+
implements MultiTenantConnectionProvider<T> {
1920
protected abstract DataSource selectAnyDataSource();
2021
protected abstract DataSource selectDataSource(T tenantIdentifier);
2122

@@ -46,18 +47,17 @@ public boolean supportsAggressiveRelease() {
4647

4748
@Override
4849
public boolean isUnwrappableAs(Class<?> unwrapType) {
49-
return
50-
DataSource.class.isAssignableFrom( unwrapType ) ||
51-
MultiTenantConnectionProvider.class.isAssignableFrom( unwrapType );
50+
return unwrapType.isInstance( this )
51+
|| unwrapType.isAssignableFrom( DataSource.class );
5252
}
5353

5454
@Override
55-
@SuppressWarnings( {"unchecked"})
55+
@SuppressWarnings("unchecked")
5656
public <T> T unwrap(Class<T> unwrapType) {
57-
if ( MultiTenantConnectionProvider.class.isAssignableFrom( unwrapType ) ) {
57+
if ( unwrapType.isInstance( this ) ) {
5858
return (T) this;
5959
}
60-
else if ( DataSource.class.isAssignableFrom( unwrapType ) ) {
60+
else if ( unwrapType.isAssignableFrom( DataSource.class ) ) {
6161
return (T) selectAnyDataSource();
6262
}
6363
else {

hibernate-core/src/main/java/org/hibernate/engine/jdbc/connections/spi/AbstractMultiTenantConnectionProvider.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,17 @@ public boolean supportsAggressiveRelease() {
4949

5050
@Override
5151
public boolean isUnwrappableAs(Class<?> unwrapType) {
52-
return
53-
ConnectionProvider.class.isAssignableFrom( unwrapType ) ||
54-
MultiTenantConnectionProvider.class.isAssignableFrom( unwrapType );
52+
return unwrapType.isInstance( this )
53+
|| unwrapType.isAssignableFrom( ConnectionProvider.class );
5554
}
5655

5756
@Override
5857
@SuppressWarnings("unchecked")
5958
public <T> T unwrap(Class<T> unwrapType) {
60-
if ( MultiTenantConnectionProvider.class.isAssignableFrom( unwrapType ) ) {
59+
if ( unwrapType.isInstance( this ) ) {
6160
return (T) this;
6261
}
63-
else if ( ConnectionProvider.class.isAssignableFrom( unwrapType ) ) {
62+
else if ( unwrapType.isAssignableFrom( ConnectionProvider.class ) ) {
6463
return (T) getAnyConnectionProvider();
6564
}
6665
else {

hibernate-core/src/main/java/org/hibernate/engine/jdbc/connections/spi/DataSourceBasedMultiTenantConnectionProviderImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ private Map<T, DataSource> dataSourceMap() {
7070

7171
@Override
7272
public void injectServices(ServiceRegistryImplementor serviceRegistry) {
73-
final ConfigurationService configurationService = serviceRegistry.requireService( ConfigurationService.class );
73+
final var configurationService = serviceRegistry.requireService( ConfigurationService.class );
7474
final Object dataSourceConfigValue = configurationService.getSettings().get( DATASOURCE );
7575
if ( !(dataSourceConfigValue instanceof String configuredJndiName) ) {
7676
throw new HibernateException( "illegal value for configuration setting '" + DATASOURCE + "'" );

0 commit comments

Comments
 (0)