@@ -266,12 +266,12 @@ public SessionFactoryOptionsBuilder(StandardServiceRegistry serviceRegistry, Boo
266266
267267 // we cannot use context.getConfigurationService() here because it might be missing some settings
268268 // (the StandardServiceRegistry passed in here does not need to be the bootstrap service registry)
269- final ConfigurationService configurationService = serviceRegistry .requireService ( ConfigurationService .class );
269+ final var configurationService = serviceRegistry .requireService ( ConfigurationService .class );
270270
271- final StrategySelector strategySelector = serviceRegistry .requireService ( StrategySelector .class );
272- final JdbcServices jdbcServices = serviceRegistry .requireService ( JdbcServices .class );
271+ final var strategySelector = serviceRegistry .requireService ( StrategySelector .class );
272+ final var jdbcServices = serviceRegistry .requireService ( JdbcServices .class );
273273
274- final Dialect dialect = jdbcServices .getJdbcEnvironment ().getDialect ();
274+ final var dialect = jdbcServices .getJdbcEnvironment ().getDialect ();
275275
276276 final Map <String ,Object > settings = new HashMap <>();
277277 settings .putAll ( map ( dialect .getDefaultProperties () ) );
@@ -601,6 +601,12 @@ private static boolean disallowBatchUpdates(Dialect dialect, ExtractedDatabaseMe
601601 return dialectAnswer != null ? !dialectAnswer : !meta .supportsBatchUpdates ();
602602 }
603603
604+ private static boolean hasStrategyConstructorSignature (Class <?>[] parameterTypes ) {
605+ return parameterTypes .length == 2
606+ && parameterTypes [0 ] == EntityMappingType .class
607+ && parameterTypes [1 ] == RuntimeModelCreationContext .class ;
608+ }
609+
604610 @ SuppressWarnings ("unchecked" )
605611 private SqmMultiTableMutationStrategy resolveSqmMutationStrategy (
606612 String strategyName ,
@@ -631,7 +637,7 @@ private SqmMultiTableMutationStrategy resolveSqmMutationStrategy(
631637 else if ( parameterTypes .length == 0 ) {
632638 emptyConstructor = constructor ;
633639 }
634- else if ( parameterTypes . length == 2 && parameterTypes [ 0 ] == EntityMappingType . class && parameterTypes [ 1 ] == RuntimeModelCreationContext . class ) {
640+ else if ( hasStrategyConstructorSignature ( parameterTypes ) ) {
635641 entityBasedConstructor = (Constructor <SqmMultiTableMutationStrategy >) declaredConstructor ;
636642 }
637643 }
@@ -649,13 +655,12 @@ else if ( emptyConstructor != null ) {
649655 }
650656 catch (Exception e ) {
651657 throw new StrategySelectionException (
652- "Could not instantiate named strategy class [" +
653- strategyClass .getName () + "]" ,
658+ "Could not instantiate named strategy class [" + strategyClass .getName () + "]" ,
654659 e
655660 );
656661 }
657- throw new IllegalArgumentException (
658- "Cannot instantiate the class [" + strategyClass . getName () + "] because it does not have a constructor that accepts a dialect or an empty constructor" );
662+ throw new IllegalArgumentException ( "Cannot instantiate the class [" + strategyClass . getName ()
663+ + "] because it does not have a constructor that accepts a dialect or an empty constructor" );
659664 }
660665 else {
661666 return null ;
@@ -668,19 +673,16 @@ else if ( emptyConstructor != null ) {
668673 private Constructor <SqmMultiTableMutationStrategy > resolveSqmMutationStrategyConstructor (
669674 String strategyName ,
670675 StrategySelector strategySelector ) {
671- if ( strategyName == null ) {
672- return null ;
673- }
674-
675- Class <? extends SqmMultiTableMutationStrategy > strategyClass =
676- strategySelector .selectStrategyImplementor ( SqmMultiTableMutationStrategy .class , strategyName );
677- for ( Constructor <?> declaredConstructor : strategyClass .getDeclaredConstructors () ) {
678- final Class <?>[] parameterTypes = declaredConstructor .getParameterTypes ();
679- if ( parameterTypes .length == 2 && parameterTypes [0 ] == EntityMappingType .class && parameterTypes [1 ] == RuntimeModelCreationContext .class ) {
680- return (Constructor <SqmMultiTableMutationStrategy >) declaredConstructor ;
676+ if ( strategyName != null ) {
677+ final var strategyClass =
678+ strategySelector .selectStrategyImplementor ( SqmMultiTableMutationStrategy .class , strategyName );
679+ for ( var declaredConstructor : strategyClass .getDeclaredConstructors () ) {
680+ final var parameterTypes = declaredConstructor .getParameterTypes ();
681+ if ( hasStrategyConstructorSignature ( parameterTypes ) ) {
682+ return (Constructor <SqmMultiTableMutationStrategy >) declaredConstructor ;
683+ }
681684 }
682685 }
683-
684686 return null ;
685687 }
686688
@@ -714,7 +716,7 @@ private SqmMultiTableInsertStrategy resolveSqmInsertStrategy(
714716 else if ( parameterTypes .length == 0 ) {
715717 emptyConstructor = constructor ;
716718 }
717- else if ( parameterTypes . length == 2 && parameterTypes [ 0 ] == EntityMappingType . class && parameterTypes [ 1 ] == RuntimeModelCreationContext . class ) {
719+ else if ( hasStrategyConstructorSignature ( parameterTypes ) ) {
718720 entityBasedConstructor = (Constructor <SqmMultiTableInsertStrategy >) declaredConstructor ;
719721 }
720722 }
@@ -751,19 +753,16 @@ else if ( emptyConstructor != null ) {
751753 private Constructor <SqmMultiTableInsertStrategy > resolveSqmInsertStrategyConstructor (
752754 String strategyName ,
753755 StrategySelector strategySelector ) {
754- if ( strategyName == null ) {
755- return null ;
756- }
757-
758- Class <? extends SqmMultiTableInsertStrategy > strategyClass =
759- strategySelector .selectStrategyImplementor ( SqmMultiTableInsertStrategy .class , strategyName );
760- for ( Constructor <?> declaredConstructor : strategyClass .getDeclaredConstructors () ) {
761- final Class <?>[] parameterTypes = declaredConstructor .getParameterTypes ();
762- if ( parameterTypes .length == 2 && parameterTypes [0 ] == EntityMappingType .class && parameterTypes [1 ] == RuntimeModelCreationContext .class ) {
763- return (Constructor <SqmMultiTableInsertStrategy >) declaredConstructor ;
756+ if ( strategyName != null ) {
757+ final var strategyClass =
758+ strategySelector .selectStrategyImplementor ( SqmMultiTableInsertStrategy .class , strategyName );
759+ for ( var declaredConstructor : strategyClass .getDeclaredConstructors () ) {
760+ final var parameterTypes = declaredConstructor .getParameterTypes ();
761+ if ( hasStrategyConstructorSignature ( parameterTypes ) ) {
762+ return (Constructor <SqmMultiTableInsertStrategy >) declaredConstructor ;
763+ }
764764 }
765765 }
766-
767766 return null ;
768767 }
769768
@@ -844,7 +843,7 @@ private static Supplier<? extends Interceptor> interceptorSupplier(Class<? exten
844843 private PhysicalConnectionHandlingMode interpretConnectionHandlingMode (
845844 Map <String ,Object > configurationSettings ,
846845 StandardServiceRegistry serviceRegistry ) {
847- final PhysicalConnectionHandlingMode specifiedHandlingMode =
846+ final var specifiedHandlingMode =
848847 PhysicalConnectionHandlingMode .interpret ( configurationSettings .get ( CONNECTION_HANDLING ) );
849848 return specifiedHandlingMode != null
850849 ? specifiedHandlingMode
@@ -995,7 +994,8 @@ public SqmMultiTableMutationStrategy resolveCustomSqmMultiTableMutationStrategy(
995994 }
996995 catch (Exception e ) {
997996 throw new StrategySelectionException (
998- String .format ( "Could not instantiate named strategy class [%s]" , sqmMultiTableMutationStrategyConstructor .getDeclaringClass ().getName () ),
997+ String .format ( "Could not instantiate named strategy class [%s]" ,
998+ sqmMultiTableMutationStrategyConstructor .getDeclaringClass ().getName () ),
999999 e
10001000 );
10011001 }
@@ -1011,7 +1011,8 @@ public SqmMultiTableInsertStrategy resolveCustomSqmMultiTableInsertStrategy(Enti
10111011 }
10121012 catch (Exception e ) {
10131013 throw new StrategySelectionException (
1014- String .format ( "Could not instantiate named strategy class [%s]" , sqmMultiTableInsertStrategyConstructor .getDeclaringClass ().getName () ),
1014+ String .format ( "Could not instantiate named strategy class [%s]" ,
1015+ sqmMultiTableInsertStrategyConstructor .getDeclaringClass ().getName () ),
10151016 e
10161017 );
10171018 }
0 commit comments