5050
5151import org .jboss .logging .Logger ;
5252
53+ import static java .lang .Integer .parseInt ;
5354import static org .hibernate .cfg .AvailableSettings .CONNECTION_HANDLING ;
5455import static org .hibernate .cfg .AvailableSettings .DIALECT_DB_MAJOR_VERSION ;
5556import static org .hibernate .cfg .AvailableSettings .DIALECT_DB_MINOR_VERSION ;
6970import static org .hibernate .internal .log .DeprecationLogger .DEPRECATION_LOGGER ;
7071import static org .hibernate .internal .util .NullnessHelper .coalesceSuppliedValues ;
7172import static org .hibernate .internal .util .StringHelper .isNotEmpty ;
73+ import static org .hibernate .internal .util .StringHelper .split ;
7274import static org .hibernate .internal .util .config .ConfigurationHelper .getBoolean ;
7375import static org .hibernate .internal .util .config .ConfigurationHelper .getBooleanWrapper ;
7476import static org .hibernate .internal .util .config .ConfigurationHelper .getInteger ;
@@ -100,8 +102,6 @@ public Class<JdbcEnvironment> getServiceInitiated() {
100102
101103 @ Override
102104 public JdbcEnvironment initiateService (Map <String , Object > configurationValues , ServiceRegistryImplementor registry ) {
103- final DialectFactory dialectFactory = registry .requireService ( DialectFactory .class );
104-
105105 final String explicitDatabaseName = getExplicitDatabaseName ( configurationValues );
106106 Integer explicitDatabaseMajorVersion = getExplicitDatabaseMajorVersion ( configurationValues );
107107 Integer explicitDatabaseMinorVersion = getExplicitDatabaseMinorVersion ( configurationValues );
@@ -110,11 +110,11 @@ public JdbcEnvironment initiateService(Map<String, Object> configurationValues,
110110 getExplicitDatabaseVersion ( configurationValues , explicitDatabaseMajorVersion , explicitDatabaseMinorVersion );
111111
112112 if ( explicitDatabaseMajorVersion == null && explicitDatabaseMinorVersion == null && explicitDatabaseVersion != null ) {
113- final String [] parts = StringHelper . split ( "." , explicitDatabaseVersion );
113+ final String [] parts = split ( "." , explicitDatabaseVersion );
114114 try {
115- final int potentialMajor = Integer . parseInt ( parts [0 ] );
115+ final int potentialMajor = parseInt ( parts [0 ] );
116116 if ( parts .length > 1 ) {
117- explicitDatabaseMinorVersion = Integer . parseInt ( parts [1 ] );
117+ explicitDatabaseMinorVersion = parseInt ( parts [1 ] );
118118 }
119119 explicitDatabaseMajorVersion = potentialMajor ;
120120 }
@@ -123,8 +123,27 @@ public JdbcEnvironment initiateService(Map<String, Object> configurationValues,
123123 }
124124 }
125125
126+ return getJdbcEnvironment (
127+ configurationValues ,
128+ registry ,
129+ explicitDatabaseName ,
130+ explicitDatabaseMajorVersion ,
131+ explicitDatabaseMinorVersion ,
132+ explicitDatabaseVersion
133+ );
134+ }
135+
136+ private JdbcEnvironment getJdbcEnvironment (
137+ Map <String , Object > configurationValues ,
138+ ServiceRegistryImplementor registry ,
139+ String explicitDatabaseName ,
140+ Integer explicitDatabaseMajorVersion ,
141+ Integer explicitDatabaseMinorVersion ,
142+ String explicitDatabaseVersion ) {
143+ final DialectFactory dialectFactory = registry .requireService ( DialectFactory .class );
144+
126145 final JdbcEnvironment jdbcEnvironment ;
127- DatabaseConnectionInfo databaseConnectionInfo ;
146+ final DatabaseConnectionInfo databaseConnectionInfo ;
128147 if ( allowJdbcMetadataAccess ( configurationValues ) ) {
129148 jdbcEnvironment = getJdbcEnvironmentUsingJdbcMetadata (
130149 configurationValues ,
@@ -133,8 +152,9 @@ public JdbcEnvironment initiateService(Map<String, Object> configurationValues,
133152 explicitDatabaseName ,
134153 explicitDatabaseMajorVersion ,
135154 explicitDatabaseMinorVersion ,
136- explicitDatabaseVersion );
137- databaseConnectionInfo = buildDbInfo ( registry , jdbcEnvironment .getDialect () );
155+ explicitDatabaseVersion
156+ );
157+ databaseConnectionInfo = buildInfo ( registry , jdbcEnvironment );
138158 }
139159 else if ( explicitDialectConfiguration ( explicitDatabaseName , configurationValues ) ) {
140160 jdbcEnvironment = getJdbcEnvironmentWithExplicitConfiguration (
@@ -146,33 +166,31 @@ else if ( explicitDialectConfiguration( explicitDatabaseName, configurationValue
146166 explicitDatabaseMinorVersion ,
147167 explicitDatabaseVersion
148168 );
149- databaseConnectionInfo = buildDbInfo ( configurationValues , jdbcEnvironment . getDialect () );
169+ databaseConnectionInfo = buildInfo ( configurationValues , jdbcEnvironment );
150170 }
151171 else {
152172 jdbcEnvironment = getJdbcEnvironmentWithDefaults ( configurationValues , registry , dialectFactory );
153- databaseConnectionInfo = buildDbInfo ( configurationValues , jdbcEnvironment . getDialect () );
173+ databaseConnectionInfo = buildInfo ( configurationValues , jdbcEnvironment );
154174 }
155175
156- // Standardized DB info logging
176+ // Standardized info logging
157177 ConnectionInfoLogger .INSTANCE .logConnectionInfoDetails ( databaseConnectionInfo .toInfoString () );
158-
159178 return jdbcEnvironment ;
160179 }
161180
162- private DatabaseConnectionInfo buildDbInfo (ServiceRegistryImplementor registry , Dialect dialect ) {
163- if ( ! isMultiTenancyEnabled ( registry ) ) {
164- return registry .requireService ( ConnectionProvider .class )
165- .getDatabaseConnectionInfo ( dialect );
181+ private DatabaseConnectionInfo buildInfo (ServiceRegistryImplementor registry , JdbcEnvironment environment ) {
182+ if ( isMultiTenancyEnabled ( registry ) ) {
183+ return registry .requireService ( MultiTenantConnectionProvider .class )
184+ .getDatabaseConnectionInfo ( environment . getDialect () );
166185 }
167186 else {
168- final MultiTenantConnectionProvider <?> mcp =
169- registry .requireService ( MultiTenantConnectionProvider .class );
170- return mcp .getDatabaseConnectionInfo ( dialect );
187+ return registry .requireService ( ConnectionProvider .class )
188+ .getDatabaseConnectionInfo ( environment .getDialect (), environment .getExtractedDatabaseMetaData () );
171189 }
172190 }
173191
174- private DatabaseConnectionInfo buildDbInfo (Map <String , Object > configurationValues , Dialect dialect ) {
175- return new DatabaseConnectionInfoImpl ( configurationValues , dialect );
192+ private DatabaseConnectionInfo buildInfo (Map <String , Object > configurationValues , JdbcEnvironment environment ) {
193+ return new DatabaseConnectionInfoImpl ( configurationValues , environment . getDialect () );
176194 }
177195
178196 private static JdbcEnvironmentImpl getJdbcEnvironmentWithDefaults (
@@ -372,7 +390,7 @@ private int databaseMicroVersion(DatabaseMetaData metadata) throws SQLException
372390 try {
373391 final String substring = version .substring ( prefix .length () );
374392 final String micro = new StringTokenizer (substring ," .,-:;/()[]" ).nextToken ();
375- return Integer . parseInt (micro );
393+ return parseInt (micro );
376394 }
377395 catch (NumberFormatException nfe ) {
378396 return 0 ;
0 commit comments