Skip to content

Commit 63723f1

Browse files
committed
more consistent handling of JDBC driver name in log message
1 parent 1361ed3 commit 63723f1

File tree

6 files changed

+28
-48
lines changed

6 files changed

+28
-48
lines changed

hibernate-agroal/src/main/java/org/hibernate/agroal/internal/AgroalConnectionProvider.java

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,12 @@
4040
import static org.hibernate.cfg.AgroalSettings.AGROAL_CONFIG_PREFIX;
4141
import static org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.toIsolationNiceName;
4242
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getCatalog;
43+
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getDriverName;
4344
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getFetchSize;
4445
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getIsolation;
4546
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getSchema;
4647
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.hasCatalog;
4748
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.hasSchema;
48-
import static org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.allowJdbcMetadataAccess;
4949

5050
/**
5151
* {@link ConnectionProvider} based on Agroal connection pool.
@@ -79,7 +79,6 @@ public class AgroalConnectionProvider implements ConnectionProvider, Configurabl
7979
@Serial
8080
private static final long serialVersionUID = 1L;
8181
private AgroalDataSource agroalDataSource = null;
82-
private boolean isMetadataAccessAllowed = true;
8382

8483
// --- Configurable
8584

@@ -107,8 +106,6 @@ private static <T> void copyProperty(Map<String, Object> properties, String key,
107106

108107
@Override
109108
public void configure(Map<String, Object> properties) throws HibernateException {
110-
isMetadataAccessAllowed = allowJdbcMetadataAccess( properties );
111-
112109
ConnectionInfoLogger.INSTANCE.configureConnectionPool( "Agroal" );
113110
try {
114111
final var config = toStringValuedProperties( properties );
@@ -180,7 +177,7 @@ public DatabaseConnectionInfo getDatabaseConnectionInfo(Dialect dialect) {
180177
// database metadata is allowed
181178
connectionConfig.connectionProviderClass() != null
182179
? connectionConfig.connectionProviderClass().toString()
183-
: extractDriverNameFromMetadata(),
180+
: getDriverName( connection ),
184181
dialect.getClass(),
185182
dialect.getVersion(),
186183
hasSchema( connection ),
@@ -206,18 +203,6 @@ public DatabaseConnectionInfo getDatabaseConnectionInfo(Dialect dialect) {
206203
}
207204
}
208205

209-
private String extractDriverNameFromMetadata() {
210-
if (isMetadataAccessAllowed) {
211-
try ( Connection conn = getConnection() ) {
212-
return conn.getMetaData().getDriverName();
213-
}
214-
catch (SQLException e) {
215-
// Do nothing
216-
}
217-
}
218-
return null;
219-
}
220-
221206
@Override
222207
public boolean isUnwrappableAs(Class<?> unwrapType) {
223208
return ConnectionProvider.class.equals( unwrapType )

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,15 @@ public static Integer getIsolation(Connection connection) {
173173
}
174174
}
175175

176+
public static String getDriverName(Connection connection) {
177+
try {
178+
return connection.getMetaData().getDriverName();
179+
}
180+
catch (SQLException e) {
181+
return null;
182+
}
183+
}
184+
176185
@Override
177186
public String getJdbcUrl() {
178187
return jdbcUrl;

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

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import javax.sql.DataSource;
1111

1212
import org.hibernate.HibernateException;
13-
import org.hibernate.cfg.AvailableSettings;
1413
import org.hibernate.cfg.JdbcSettings;
1514
import org.hibernate.dialect.Dialect;
1615
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
@@ -89,9 +88,9 @@ else if ( DataSource.class.isAssignableFrom( unwrapType ) ) {
8988
}
9089

9190
@Override
92-
public void configure(Map<String, Object> configValues) {
91+
public void configure(Map<String, Object> configuration) {
9392
if ( dataSource == null ) {
94-
final Object dataSourceSetting = configValues.get( DATASOURCE );
93+
final Object dataSourceSetting = configuration.get( DATASOURCE );
9594
if ( dataSourceSetting instanceof DataSource instance ) {
9695
dataSource = instance;
9796
}
@@ -111,17 +110,17 @@ else if ( dataSourceSetting instanceof String jndiName ) {
111110
throw new ConnectionProviderConfigurationException( "Unable to determine appropriate DataSource to use" );
112111
}
113112

114-
if ( configValues.containsKey( AvailableSettings.AUTOCOMMIT ) ) {
115-
ConnectionInfoLogger.INSTANCE.ignoredSetting( AvailableSettings.AUTOCOMMIT,
113+
if ( configuration.containsKey( JdbcSettings.AUTOCOMMIT ) ) {
114+
ConnectionInfoLogger.INSTANCE.ignoredSetting( JdbcSettings.AUTOCOMMIT,
116115
DatasourceConnectionProviderImpl.class );
117116
}
118-
if ( configValues.containsKey( AvailableSettings.ISOLATION ) ) {
119-
ConnectionInfoLogger.INSTANCE.ignoredSetting( AvailableSettings.ISOLATION,
117+
if ( configuration.containsKey( JdbcSettings.ISOLATION ) ) {
118+
ConnectionInfoLogger.INSTANCE.ignoredSetting( JdbcSettings.ISOLATION,
120119
DatasourceConnectionProviderImpl.class );
121120
}
122121

123-
user = (String) configValues.get( AvailableSettings.USER );
124-
pass = (String) configValues.get( AvailableSettings.PASS );
122+
user = (String) configuration.get( JdbcSettings.USER );
123+
pass = (String) configuration.get( JdbcSettings.PASS );
125124
useCredentials = user != null || pass != null;
126125
available = true;
127126
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import static org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.getConnectionProperties;
3838
import static org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.toIsolationNiceName;
3939
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getCatalog;
40+
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getDriverName;
4041
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getFetchSize;
4142
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getIsolation;
4243
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getSchema;
@@ -124,7 +125,7 @@ private PooledConnections buildPool(Map<String,Object> configuration, ServiceReg
124125
dbInfo = new DatabaseConnectionInfoImpl(
125126
DriverManagerConnectionProviderImpl.class,
126127
url,
127-
driver == null ? null : driver.getClass().getName(),
128+
getDriverName( connection ),
128129
null,
129130
SimpleDatabaseVersion.ZERO_VERSION,
130131
hasSchema( connection ),

hibernate-core/src/test/java/org/hibernate/orm/test/datasource/TestDataSourceConnectionProvider.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ public class TestDataSourceConnectionProvider
2525
final DriverManagerConnectionProviderImpl delegate = new DriverManagerConnectionProviderImpl();
2626

2727
@Override
28-
public void configure(Map<String, Object> configValues) {
29-
delegate.configure(configValues);
28+
public void configure(Map<String, Object> configuration) {
29+
delegate.configure( configuration );
3030
setDataSource( new DataSource() {
3131
PrintWriter logWriter = new PrintWriter( System.out );
3232
@Override
@@ -74,7 +74,7 @@ public Logger getParentLogger() throws SQLFeatureNotSupportedException {
7474
throw new SQLFeatureNotSupportedException();
7575
}
7676
} );
77-
super.configure( configValues );
77+
super.configure( configuration );
7878
}
7979

8080
@Override

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

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@
2626
import com.zaxxer.hikari.HikariDataSource;
2727

2828
import static org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator.toIsolationNiceName;
29+
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getDriverName;
2930
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getFetchSize;
3031
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.getIsolation;
3132
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.hasCatalog;
3233
import static org.hibernate.engine.jdbc.connections.internal.DatabaseConnectionInfoImpl.hasSchema;
33-
import static org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.allowJdbcMetadataAccess;
3434
import static org.hibernate.hikaricp.internal.HikariConfigurationUtil.loadConfiguration;
3535
import static org.hibernate.internal.util.StringHelper.isBlank;
3636

@@ -48,7 +48,6 @@ public class HikariCPConnectionProvider implements ConnectionProvider, Configura
4848

4949
@Serial
5050
private static final long serialVersionUID = -9131625057941275711L;
51-
private boolean isMetadataAccessAllowed = true;
5251

5352
/**
5453
* HikariCP configuration.
@@ -65,11 +64,10 @@ public class HikariCPConnectionProvider implements ConnectionProvider, Configura
6564
// *************************************************************************
6665

6766
@Override
68-
public void configure(Map<String, Object> configurationValues) throws HibernateException {
67+
public void configure(Map<String, Object> configuration) throws HibernateException {
6968
try {
70-
isMetadataAccessAllowed = allowJdbcMetadataAccess( configurationValues );
7169
ConnectionInfoLogger.INSTANCE.configureConnectionPool( "HikariCP" );
72-
hikariConfig = loadConfiguration( configurationValues );
70+
hikariConfig = loadConfiguration( configuration );
7371
hikariDataSource = new HikariDataSource( hikariConfig );
7472
}
7573
catch (Exception e) {
@@ -108,7 +106,7 @@ public DatabaseConnectionInfo getDatabaseConnectionInfo(Dialect dialect) {
108106
// in case it wasn't explicitly set and access to the
109107
// database metadata is allowed
110108
isBlank( hikariConfig.getDriverClassName() )
111-
? extractDriverNameFromMetadata()
109+
? getDriverName( connection )
112110
: hikariConfig.getDriverClassName(),
113111
dialect.getClass(),
114112
dialect.getVersion(),
@@ -134,18 +132,6 @@ public DatabaseConnectionInfo getDatabaseConnectionInfo(Dialect dialect) {
134132
}
135133
}
136134

137-
private String extractDriverNameFromMetadata() {
138-
if ( isMetadataAccessAllowed ) {
139-
try ( Connection conn = getConnection() ) {
140-
return conn.getMetaData().getDriverName();
141-
}
142-
catch (SQLException e) {
143-
// Do nothing
144-
}
145-
}
146-
return null;
147-
}
148-
149135
@Override
150136
public boolean isUnwrappableAs(Class<?> unwrapType) {
151137
return ConnectionProvider.class.equals( unwrapType )

0 commit comments

Comments
 (0)