Skip to content

Commit 675105f

Browse files
committed
refactoring to SessionFactorySettings
1 parent dcae591 commit 675105f

File tree

3 files changed

+60
-38
lines changed

3 files changed

+60
-38
lines changed

hibernate-core/src/main/java/org/hibernate/internal/SessionFactoryImpl.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -137,11 +137,9 @@
137137
import static java.util.Collections.unmodifiableSet;
138138
import static org.hibernate.cfg.AvailableSettings.CURRENT_SESSION_CONTEXT_CLASS;
139139
import static org.hibernate.internal.FetchProfileHelper.addFetchProfiles;
140-
import static org.hibernate.internal.SessionFactorySettings.deprecationCheck;
141140
import static org.hibernate.internal.SessionFactorySettings.determineJndiName;
141+
import static org.hibernate.internal.SessionFactorySettings.getMaskedSettings;
142142
import static org.hibernate.internal.SessionFactorySettings.getSessionFactoryName;
143-
import static org.hibernate.internal.SessionFactorySettings.getSettings;
144-
import static org.hibernate.internal.SessionFactorySettings.maskOutSensitiveInformation;
145143
import static org.hibernate.jpa.HibernateHints.HINT_TENANT_ID;
146144
import static org.hibernate.proxy.HibernateProxy.extractLazyInitializer;
147145
import static org.hibernate.resource.jdbc.spi.PhysicalConnectionHandlingMode.DELAYED_ACQUISITION_AND_RELEASE_AFTER_STATEMENT;
@@ -239,9 +237,7 @@ public SessionFactoryImpl(
239237

240238
jdbcServices = serviceRegistry.requireService( JdbcServices.class );
241239

242-
settings = getSettings( options, serviceRegistry );
243-
maskOutSensitiveInformation( settings );
244-
deprecationCheck( settings );
240+
settings = getMaskedSettings( options, serviceRegistry );
245241
LOG.instantiatingFactory( uuid, settings );
246242

247243
sqlStringGenerationContext = createSqlStringGenerationContext( bootMetamodel, options, jdbcServices );

hibernate-core/src/main/java/org/hibernate/internal/SessionFactorySettings.java

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@
55
package org.hibernate.internal;
66

77
import org.hibernate.boot.cfgxml.spi.CfgXmlAccessService;
8-
import org.hibernate.boot.cfgxml.spi.LoadedConfig;
98
import org.hibernate.boot.spi.SessionFactoryOptions;
10-
import org.hibernate.cfg.AvailableSettings;
9+
import org.hibernate.cfg.JdbcSettings;
1110
import org.hibernate.engine.config.spi.ConfigurationService;
1211
import org.hibernate.query.sqm.mutation.internal.temptable.GlobalTemporaryTableStrategy;
1312
import org.hibernate.query.sqm.mutation.internal.temptable.LocalTemporaryTableStrategy;
@@ -25,6 +24,7 @@
2524
import static org.hibernate.engine.config.spi.StandardConverters.STRING;
2625
import static org.hibernate.internal.log.DeprecationLogger.DEPRECATION_LOGGER;
2726
import static org.hibernate.internal.util.StringHelper.isNotEmpty;
27+
import static org.hibernate.internal.util.config.ConfigurationHelper.maskOut;
2828

2929
/**
3030
* Helper methods used to set up a {@link SessionFactoryImpl}.
@@ -33,7 +33,7 @@ class SessionFactorySettings {
3333

3434
static Map<String, Object> getSettings(
3535
SessionFactoryOptions options, SessionFactoryServiceRegistry serviceRegistry) {
36-
final Map<String, Object> settings =
36+
final var settings =
3737
serviceRegistry.requireService( ConfigurationService.class )
3838
.getSettings();
3939
final Map<String,Object> result = new HashMap<>( settings );
@@ -48,14 +48,21 @@ static Map<String, Object> getSettings(
4848
return result;
4949
}
5050

51+
static Map<String, Object> getMaskedSettings(
52+
SessionFactoryOptions options, SessionFactoryServiceRegistry serviceRegistry) {
53+
final var settings = getSettings( options, serviceRegistry );
54+
deprecationCheck( settings );
55+
return maskOutSensitiveInformation( settings );
56+
}
57+
5158
static String getSessionFactoryName(
5259
SessionFactoryOptions options, SessionFactoryServiceRegistry serviceRegistry) {
5360
final String sessionFactoryName = options.getSessionFactoryName();
5461
if ( sessionFactoryName != null ) {
5562
return sessionFactoryName;
5663
}
5764

58-
final LoadedConfig loadedConfig =
65+
final var loadedConfig =
5966
serviceRegistry.requireService( CfgXmlAccessService.class )
6067
.getAggregatedConfig();
6168
if ( loadedConfig != null ) {
@@ -65,32 +72,25 @@ static String getSessionFactoryName(
6572
}
6673
}
6774

68-
final ConfigurationService configurationService =
69-
serviceRegistry.requireService( ConfigurationService.class );
70-
return configurationService.getSetting( PERSISTENCE_UNIT_NAME, STRING );
75+
return serviceRegistry.requireService( ConfigurationService.class )
76+
.getSetting( PERSISTENCE_UNIT_NAME, STRING );
7177
}
7278

73-
static void maskOutSensitiveInformation(Map<String, Object> props) {
74-
maskOutIfSet( props, AvailableSettings.JPA_JDBC_USER );
75-
maskOutIfSet( props, AvailableSettings.JPA_JDBC_PASSWORD );
76-
maskOutIfSet( props, AvailableSettings.JAKARTA_JDBC_USER );
77-
maskOutIfSet( props, AvailableSettings.JAKARTA_JDBC_PASSWORD );
78-
maskOutIfSet( props, AvailableSettings.USER );
79-
maskOutIfSet( props, AvailableSettings.PASS );
80-
}
81-
82-
private static void maskOutIfSet(Map<String, Object> props, String setting) {
83-
if ( props.containsKey( setting ) ) {
84-
props.put( setting, "****" );
85-
}
79+
static Map<String, Object> maskOutSensitiveInformation(Map<String, Object> props) {
80+
return maskOut( props,
81+
JdbcSettings.JPA_JDBC_USER,
82+
JdbcSettings.JPA_JDBC_PASSWORD,
83+
JdbcSettings.JAKARTA_JDBC_USER,
84+
JdbcSettings.JAKARTA_JDBC_PASSWORD,
85+
JdbcSettings.USER,
86+
JdbcSettings.PASS );
8687
}
8788

8889
static String determineJndiName(
8990
String name,
9091
SessionFactoryOptions options,
9192
SessionFactoryServiceRegistry serviceRegistry) {
92-
final ConfigurationService configService =
93-
serviceRegistry.requireService( ConfigurationService.class );
93+
final var configService = serviceRegistry.requireService( ConfigurationService.class );
9494
final String explicitJndiName = configService.getSetting( SESSION_FACTORY_JNDI_NAME, STRING );
9595
if ( isNotEmpty( explicitJndiName ) ) {
9696
return explicitJndiName;
@@ -100,13 +100,15 @@ else if ( options.isSessionFactoryNameAlsoJndiName() == Boolean.FALSE ) {
100100
return null;
101101
}
102102
else {
103-
final String expliciSessionFactoryname = configService.getSetting( SESSION_FACTORY_NAME, STRING );
104-
if ( isNotEmpty( expliciSessionFactoryname ) ) {
105-
return expliciSessionFactoryname;
103+
final String explicitSessionFactoryName = configService.getSetting( SESSION_FACTORY_NAME, STRING );
104+
if ( isNotEmpty( explicitSessionFactoryName ) ) {
105+
return explicitSessionFactoryName;
106+
}
107+
else {
108+
final String unitName = configService.getSetting( PERSISTENCE_UNIT_NAME, STRING );
109+
// if name comes from JPA persistence-unit name
110+
return !isNotEmpty( unitName ) ? name : null;
106111
}
107-
final String unitName = configService.getSetting( PERSISTENCE_UNIT_NAME, STRING );
108-
// if name comes from JPA persistence-unit name
109-
return ! isNotEmpty( unitName ) ? name : null;
110112
}
111113
}
112114

hibernate-core/src/main/java/org/hibernate/internal/util/config/ConfigurationHelper.java

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -292,13 +292,37 @@ public static Properties maskOut(Properties props, String key) {
292292
* @return cloned and masked properties
293293
*/
294294
public static Properties maskOut(Properties props, String... keys) {
295-
final var clone = (Properties) props.clone();
295+
Properties result = props;
296296
for ( String key : keys ) {
297-
if ( clone.get( key ) != null ) {
298-
clone.setProperty( key, "****" );
297+
if ( props.get( key ) != null ) {
298+
if ( result == props ) {
299+
result = (Properties) props.clone();
300+
}
301+
result.setProperty( key, "****" );
299302
}
300303
}
301-
return clone;
304+
return result;
305+
}
306+
307+
/**
308+
* Replace properties by starred version
309+
*
310+
* @param props properties to check
311+
* @param keys properties to mask
312+
*
313+
* @return cloned and masked properties
314+
*/
315+
public static Map<String, Object> maskOut(Map<String, Object> props, String... keys) {
316+
Map<String,Object> result = props;
317+
for ( String key : keys ) {
318+
if ( props.containsKey( key ) ) {
319+
if ( result == props ) {
320+
result = new HashMap<>( props );
321+
}
322+
result.put( key, "****" );
323+
}
324+
}
325+
return result;
302326
}
303327

304328
/**

0 commit comments

Comments
 (0)