Skip to content

Commit d79b3aa

Browse files
committed
clean up some config logic
deprecate a method which reports errors using debug logging!
1 parent e48a99b commit d79b3aa

File tree

5 files changed

+58
-52
lines changed

5 files changed

+58
-52
lines changed

hibernate-core/src/main/java/org/hibernate/boot/internal/MetadataBuilderImpl.java

Lines changed: 41 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010

1111
import org.hibernate.AnnotationException;
1212
import org.hibernate.HibernateException;
13+
import org.hibernate.cfg.CacheSettings;
14+
import org.hibernate.cfg.JpaComplianceSettings;
15+
import org.hibernate.cfg.ManagedBeanSettings;
16+
import org.hibernate.cfg.SchemaToolingSettings;
1317
import org.hibernate.context.spi.MultiTenancy;
1418
import org.hibernate.type.TimeZoneStorageStrategy;
1519
import org.hibernate.annotations.CacheConcurrencyStrategy;
@@ -61,7 +65,6 @@
6165
import org.hibernate.boot.spi.MetadataSourcesContributor;
6266
import org.hibernate.cache.spi.RegionFactory;
6367
import org.hibernate.cache.spi.access.AccessType;
64-
import org.hibernate.cfg.AvailableSettings;
6568
import org.hibernate.cfg.MappingSettings;
6669
import org.hibernate.dialect.Dialect;
6770
import org.hibernate.dialect.TimeZoneSupport;
@@ -87,10 +90,8 @@
8790
import jakarta.persistence.ConstraintMode;
8891
import jakarta.persistence.SharedCacheMode;
8992

90-
import static org.hibernate.cfg.AvailableSettings.JPA_COMPLIANCE;
91-
import static org.hibernate.cfg.AvailableSettings.WRAPPER_ARRAY_HANDLING;
92-
import static org.hibernate.cfg.MappingSettings.XML_FORMAT_MAPPER_LEGACY_FORMAT;
9393
import static org.hibernate.engine.config.spi.StandardConverters.BOOLEAN;
94+
import static org.hibernate.engine.config.spi.StandardConverters.STRING;
9495
import static org.hibernate.internal.util.NullnessHelper.coalesceSuppliedValues;
9596
import static org.hibernate.internal.util.StringHelper.nullIfEmpty;
9697
import static org.hibernate.internal.util.collections.CollectionHelper.isNotEmpty;
@@ -447,7 +448,7 @@ public MetadataImplementor build() {
447448
sources.getHbmXmlBindings(),
448449
bootModel,
449450
UnsupportedFeatureHandling.fromSetting(
450-
configurationService.getSettings().get( AvailableSettings.TRANSFORM_HBM_XML_FEATURE_HANDLING ),
451+
configurationService.getSettings().get( MappingSettings.TRANSFORM_HBM_XML_FEATURE_HANDLING ),
451452
UnsupportedFeatureHandling.ERROR
452453
)
453454
);
@@ -505,26 +506,26 @@ public MappingDefaultsImpl(StandardServiceRegistry serviceRegistry) {
505506
implicitCatalogName = null;
506507

507508
implicitlyQuoteIdentifiers = configService.getSetting(
508-
AvailableSettings.GLOBALLY_QUOTED_IDENTIFIERS,
509+
MappingSettings.GLOBALLY_QUOTED_IDENTIFIERS,
509510
BOOLEAN,
510511
false
511512
);
512513

513514
implicitCacheAccessType = configService.getSetting(
514-
AvailableSettings.DEFAULT_CACHE_CONCURRENCY_STRATEGY,
515+
CacheSettings.DEFAULT_CACHE_CONCURRENCY_STRATEGY,
515516
value -> AccessType.fromExternalName( value.toString() )
516517
);
517518

518519
implicitListClassification = configService.getSetting(
519-
AvailableSettings.DEFAULT_LIST_SEMANTICS,
520+
MappingSettings.DEFAULT_LIST_SEMANTICS,
520521
value -> {
521522
final CollectionClassification classification = CollectionClassification.interpretSetting( value );
522523
if ( classification != CollectionClassification.LIST && classification != CollectionClassification.BAG ) {
523524
throw new AnnotationException(
524525
String.format(
525526
Locale.ROOT,
526527
"'%s' should specify either '%s' or '%s' (was '%s')",
527-
AvailableSettings.DEFAULT_LIST_SEMANTICS,
528+
MappingSettings.DEFAULT_LIST_SEMANTICS,
528529
java.util.List.class.getName(),
529530
java.util.Collection.class.getName(),
530531
classification.name()
@@ -654,45 +655,49 @@ public MetadataBuildingOptionsImpl(StandardServiceRegistry serviceRegistry) {
654655
multiTenancyEnabled = MultiTenancy.isMultiTenancyEnabled( serviceRegistry );
655656

656657
xmlMappingEnabled = configService.getSetting(
657-
AvailableSettings.XML_MAPPING_ENABLED,
658+
MappingSettings.XML_MAPPING_ENABLED,
658659
BOOLEAN,
659660
true
660661
);
661-
xmlFormatMapperLegacyFormat = configService.getSetting( XML_FORMAT_MAPPER_LEGACY_FORMAT, BOOLEAN, false );
662+
xmlFormatMapperLegacyFormat = configService.getSetting(
663+
MappingSettings.XML_FORMAT_MAPPER_LEGACY_FORMAT,
664+
BOOLEAN,
665+
false
666+
);
662667

663668
implicitDiscriminatorsForJoinedInheritanceSupported = configService.getSetting(
664-
AvailableSettings.IMPLICIT_DISCRIMINATOR_COLUMNS_FOR_JOINED_SUBCLASS,
669+
MappingSettings.IMPLICIT_DISCRIMINATOR_COLUMNS_FOR_JOINED_SUBCLASS,
665670
BOOLEAN,
666671
false
667672
);
668673

669674
explicitDiscriminatorsForJoinedInheritanceSupported = !configService.getSetting(
670-
AvailableSettings.IGNORE_EXPLICIT_DISCRIMINATOR_COLUMNS_FOR_JOINED_SUBCLASS,
675+
MappingSettings.IGNORE_EXPLICIT_DISCRIMINATOR_COLUMNS_FOR_JOINED_SUBCLASS,
671676
BOOLEAN,
672677
false
673678
);
674679

675680
implicitlyForceDiscriminatorInSelect = configService.getSetting(
676-
AvailableSettings.FORCE_DISCRIMINATOR_IN_SELECTS_BY_DEFAULT,
681+
MappingSettings.FORCE_DISCRIMINATOR_IN_SELECTS_BY_DEFAULT,
677682
BOOLEAN,
678683
false
679684
);
680685

681686
sharedCacheMode = configService.getSetting(
682-
AvailableSettings.JAKARTA_SHARED_CACHE_MODE,
687+
CacheSettings.JAKARTA_SHARED_CACHE_MODE,
683688
value -> value instanceof SharedCacheMode cacheMode
684689
? cacheMode
685690
: SharedCacheMode.valueOf( value.toString() ),
686691
configService.getSetting(
687-
AvailableSettings.JPA_SHARED_CACHE_MODE,
692+
CacheSettings.JPA_SHARED_CACHE_MODE,
688693
value -> {
689694
if ( value == null ) {
690695
return null;
691696
}
692697

693698
DeprecationLogger.DEPRECATION_LOGGER.deprecatedSetting(
694-
AvailableSettings.JPA_SHARED_CACHE_MODE,
695-
AvailableSettings.JAKARTA_SHARED_CACHE_MODE
699+
CacheSettings.JPA_SHARED_CACHE_MODE,
700+
CacheSettings.JAKARTA_SHARED_CACHE_MODE
696701
);
697702

698703
return value instanceof SharedCacheMode cacheMode
@@ -705,7 +710,7 @@ public MetadataBuildingOptionsImpl(StandardServiceRegistry serviceRegistry) {
705710

706711
final RegionFactory regionFactory = serviceRegistry.getService( RegionFactory.class );
707712
defaultCacheAccessType = configService.getSetting(
708-
AvailableSettings.DEFAULT_CACHE_CONCURRENCY_STRATEGY,
713+
CacheSettings.DEFAULT_CACHE_CONCURRENCY_STRATEGY,
709714
value -> {
710715
if ( value == null ) {
711716
return null;
@@ -724,15 +729,18 @@ else if ( value instanceof AccessType accessType ) {
724729
regionFactory == null ? null : regionFactory.getDefaultAccessType()
725730
);
726731

727-
noConstraintByDefault = ConstraintMode.NO_CONSTRAINT.name().equalsIgnoreCase( configService.getSetting(
728-
AvailableSettings.HBM2DDL_DEFAULT_CONSTRAINT_MODE,
729-
String.class,
732+
final String defaultConstraintMode = configService.getSetting(
733+
SchemaToolingSettings.HBM2DDL_DEFAULT_CONSTRAINT_MODE,
734+
STRING,
730735
null
731-
) );
736+
);
737+
noConstraintByDefault =
738+
ConstraintMode.NO_CONSTRAINT.name()
739+
.equalsIgnoreCase( defaultConstraintMode );
732740

733741
implicitNamingStrategy = strategySelector.<ImplicitNamingStrategy>resolveDefaultableStrategy(
734742
ImplicitNamingStrategy.class,
735-
configService.getSettings().get( AvailableSettings.IMPLICIT_NAMING_STRATEGY ),
743+
configService.getSettings().get( MappingSettings.IMPLICIT_NAMING_STRATEGY ),
736744
() -> strategySelector.resolveDefaultableStrategy(
737745
ImplicitNamingStrategy.class,
738746
"default",
@@ -742,13 +750,13 @@ else if ( value instanceof AccessType accessType ) {
742750

743751
physicalNamingStrategy = strategySelector.resolveDefaultableStrategy(
744752
PhysicalNamingStrategy.class,
745-
configService.getSettings().get( AvailableSettings.PHYSICAL_NAMING_STRATEGY ),
753+
configService.getSettings().get( MappingSettings.PHYSICAL_NAMING_STRATEGY ),
746754
PhysicalNamingStrategyStandardImpl.INSTANCE
747755
);
748756

749757
columnOrderingStrategy = strategySelector.<ColumnOrderingStrategy>resolveDefaultableStrategy(
750758
ColumnOrderingStrategy.class,
751-
configService.getSettings().get( AvailableSettings.COLUMN_ORDERING_STRATEGY ),
759+
configService.getSettings().get( MappingSettings.COLUMN_ORDERING_STRATEGY ),
752760
() -> strategySelector.resolveDefaultableStrategy(
753761
ColumnOrderingStrategy.class,
754762
"default",
@@ -757,19 +765,19 @@ else if ( value instanceof AccessType accessType ) {
757765
);
758766

759767
useNationalizedCharacterData = configService.getSetting(
760-
AvailableSettings.USE_NATIONALIZED_CHARACTER_DATA,
768+
MappingSettings.USE_NATIONALIZED_CHARACTER_DATA,
761769
BOOLEAN,
762770
false
763771
);
764772

765773
schemaCharset = configService.getSetting(
766-
AvailableSettings.HBM2DDL_CHARSET_NAME,
767-
String.class,
774+
SchemaToolingSettings.HBM2DDL_CHARSET_NAME,
775+
STRING,
768776
null
769777
);
770778

771779
allowExtensionsInCdi = configService.getSetting(
772-
AvailableSettings.ALLOW_EXTENSIONS_IN_CDI,
780+
ManagedBeanSettings.ALLOW_EXTENSIONS_IN_CDI,
773781
BOOLEAN,
774782
false
775783
);
@@ -975,7 +983,7 @@ public void setBootstrapContext(BootstrapContext bootstrapContext) {
975983
private static TimeZoneStorageType resolveTimeZoneStorageStrategy(
976984
ConfigurationService configService) {
977985
return configService.getSetting(
978-
AvailableSettings.TIMEZONE_DEFAULT_STORAGE,
986+
MappingSettings.TIMEZONE_DEFAULT_STORAGE,
979987
value -> TimeZoneStorageType.valueOf( value.toString() ),
980988
TimeZoneStorageType.DEFAULT
981989
);
@@ -985,7 +993,7 @@ private static WrapperArrayHandling resolveWrapperArrayHandling(
985993
ConfigurationService configService) {
986994
return coalesceSuppliedValues(
987995
() -> configService.getSetting(
988-
WRAPPER_ARRAY_HANDLING,
996+
MappingSettings.WRAPPER_ARRAY_HANDLING,
989997
WrapperArrayHandling::interpretExternalSettingLeniently
990998
),
991999
() -> resolveFallbackWrapperArrayHandling( configService )
@@ -1005,7 +1013,7 @@ private static WrapperArrayHandling pickWrapperArrayHandling(Dialect dialect) {
10051013

10061014
private static WrapperArrayHandling resolveFallbackWrapperArrayHandling(
10071015
ConfigurationService configService) {
1008-
return configService.getSetting( JPA_COMPLIANCE, BOOLEAN, false )
1016+
return configService.getSetting( JpaComplianceSettings.JPA_COMPLIANCE, BOOLEAN, false )
10091017
? WrapperArrayHandling.PICK // JPA compliance was enabled. Use PICK
10101018
: WrapperArrayHandling.DISALLOW;
10111019
}

hibernate-core/src/main/java/org/hibernate/engine/config/internal/ConfigurationServiceImpl.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,7 @@ public void injectServices(ServiceRegistryImplementor serviceRegistry) {
6262
@Override
6363
public <T> @PolyNull T getSetting(String name, Converter<T> converter, @PolyNull T defaultValue) {
6464
final Object value = settings.get( name );
65-
if ( value == null ) {
66-
return defaultValue;
67-
}
68-
69-
return converter.convert( value );
65+
return value == null ? defaultValue : converter.convert( value );
7066
}
7167

7268
@Override

hibernate-core/src/main/java/org/hibernate/engine/config/spi/ConfigurationService.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ public interface ConfigurationService extends Service {
3838
* @param converter The converter to apply
3939
* @param <T> The Java type of the conversion
4040
*
41-
* @return The converted (typed) setting. May return {@code null} (see {@link #getSetting(String, Class, Object)})
41+
* @return The converted (typed) setting.
42+
* May return {@code null}
43+
* (see {@link #getSetting(String, Class, Object)})
4244
*/
4345
<T> @Nullable T getSetting(String name, Converter<T> converter);
4446

@@ -64,7 +66,11 @@ public interface ConfigurationService extends Service {
6466
* @param <T> The Java type of the conversion
6567
*
6668
* @return The converted (typed) setting. Will be the defaultValue if no such setting was defined.
69+
*
70+
* @deprecated Use {@link #getSetting(String, Converter, Object)}.
71+
* This method does not report errors correctly.
6772
*/
73+
@Deprecated(since = "7.2")
6874
<T> @PolyNull T getSetting(String name, Class<T> expected, @PolyNull T defaultValue);
6975

7076
/**

hibernate-core/src/main/java/org/hibernate/query/sqm/tree/select/SqmSelectClause.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
package org.hibernate.query.sqm.tree.select;
66

77
import java.util.ArrayList;
8-
import java.util.Collections;
98
import java.util.List;
109
import java.util.Objects;
1110

@@ -16,14 +15,17 @@
1615
import org.hibernate.query.sqm.tree.expression.SqmExpression;
1716
import org.hibernate.type.descriptor.java.JavaType;
1817

18+
import static java.util.Collections.emptyList;
19+
import static java.util.Collections.unmodifiableList;
1920
import static org.hibernate.internal.util.collections.CollectionHelper.arrayList;
2021

2122
/**
2223
* The semantic select clause. Defined as a list of individual selections.
2324
*
2425
* @author Steve Ebersole
2526
*/
26-
public class SqmSelectClause extends AbstractSqmNode implements SqmAliasedExpressionContainer<SqmSelection<?>>, JpaSelection<Object> {
27+
public class SqmSelectClause extends AbstractSqmNode
28+
implements SqmAliasedExpressionContainer<SqmSelection<?>>, JpaSelection<Object> {
2729
private boolean distinct;
2830
private List<SqmSelection<?>> selections;
2931

@@ -64,12 +66,7 @@ public void makeDistinct(boolean distinct) {
6466
}
6567

6668
public List<SqmSelection<?>> getSelections() {
67-
if ( selections == null ) {
68-
return Collections.emptyList();
69-
}
70-
else {
71-
return Collections.unmodifiableList( selections );
72-
}
69+
return selections == null ? emptyList() : unmodifiableList( selections );
7370
}
7471

7572
public void addSelection(SqmSelection<?> selection) {

hibernate-spatial/src/main/java/org/hibernate/spatial/dialect/oracle/OracleDialectContributor.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public class OracleDialectContributor implements ContributorImplementor {
2626

2727
public OracleDialectContributor(ServiceRegistry serviceRegistry) {
2828
this.serviceRegistry = serviceRegistry;
29-
final var cfgService = getServiceRegistry().getService( ConfigurationService.class );
29+
final var cfgService = getServiceRegistry().requireService( ConfigurationService.class );
3030
this.useSTGeometry = cfgService.getSetting(
3131
HibernateSpatialConfigurationSettings.ORACLE_OGC_STRICT,
3232
StandardConverters.BOOLEAN,
@@ -37,15 +37,14 @@ public OracleDialectContributor(ServiceRegistry serviceRegistry) {
3737
@Override
3838
public void contributeJdbcTypes(TypeContributions typeContributions, ServiceRegistry serviceRegistry) {
3939
HSMessageLogger.SPATIAL_MSG_LOGGER.typeContributions( this.getClass().getCanonicalName() );
40-
final ConfigurationService cfgService = getServiceRegistry().getService( ConfigurationService.class );
41-
final StrategySelector strategySelector = getServiceRegistry().getService( StrategySelector.class );
42-
40+
final var cfgService = getServiceRegistry().requireService( ConfigurationService.class );
41+
final var strategySelector = getServiceRegistry().requireService( StrategySelector.class );
4342

4443
final ConnectionFinder connectionFinder = strategySelector.resolveStrategy(
4544
ConnectionFinder.class,
4645
cfgService.getSetting(
4746
HibernateSpatialConfigurationSettings.CONNECTION_FINDER,
48-
String.class,
47+
StandardConverters.STRING,
4948
"org.geolatte.geom.codec.db.oracle.DefaultConnectionFinder"
5049
)
5150
);

0 commit comments

Comments
 (0)