Skip to content

Commit 6078461

Browse files
committed
fix use of raw types in StrategySelector stuff
1 parent 49b322f commit 6078461

File tree

15 files changed

+111
-119
lines changed

15 files changed

+111
-119
lines changed

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
*/
55
package org.hibernate.agroal.internal;
66

7-
import java.util.Collections;
8-
97
import org.hibernate.boot.registry.selector.SimpleStrategyRegistrationImpl;
108
import org.hibernate.boot.registry.selector.StrategyRegistration;
119
import org.hibernate.boot.registry.selector.StrategyRegistrationProvider;
1210
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
1311

12+
import static java.util.Collections.singleton;
13+
1414
/**
1515
* Provides the {@link AgroalConnectionProvider} to the
1616
* {@link org.hibernate.boot.registry.selector.spi.StrategySelector} service.
@@ -20,16 +20,15 @@
2020
public final class StrategyRegistrationProviderImpl implements StrategyRegistrationProvider {
2121

2222
@Override
23-
public Iterable<StrategyRegistration> getStrategyRegistrations() {
24-
final SimpleStrategyRegistrationImpl<ConnectionProvider> strategyRegistration = new SimpleStrategyRegistrationImpl<>(
23+
public Iterable<StrategyRegistration<?>> getStrategyRegistrations() {
24+
return singleton( new SimpleStrategyRegistrationImpl<>(
2525
ConnectionProvider.class,
2626
AgroalConnectionProvider.class,
2727
AgroalConnectionProvider.class.getSimpleName(),
2828
"agroal",
2929
"Agroal",
3030
// for consistency's sake
3131
"org.hibernate.connection.AgroalConnectionProvider"
32-
);
33-
return Collections.singleton( strategyRegistration );
32+
) );
3433
}
3534
}

hibernate-c3p0/src/main/java/org/hibernate/c3p0/internal/StrategyRegistrationProviderImpl.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
*/
55
package org.hibernate.c3p0.internal;
66

7-
import java.util.Collections;
8-
97
import org.hibernate.boot.registry.selector.SimpleStrategyRegistrationImpl;
108
import org.hibernate.boot.registry.selector.StrategyRegistration;
119
import org.hibernate.boot.registry.selector.StrategyRegistrationProvider;
1210
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
1311

12+
import static java.util.Collections.singleton;
13+
1414
/**
1515
* Provides the {@link C3P0ConnectionProvider} to the
1616
* {@link org.hibernate.boot.registry.selector.spi.StrategySelector} service.
@@ -20,8 +20,8 @@
2020
public final class StrategyRegistrationProviderImpl implements StrategyRegistrationProvider {
2121

2222
@Override
23-
public Iterable<StrategyRegistration> getStrategyRegistrations() {
24-
final SimpleStrategyRegistrationImpl<ConnectionProvider> c3p0 = new SimpleStrategyRegistrationImpl<>(
23+
public Iterable<StrategyRegistration<?>> getStrategyRegistrations() {
24+
return singleton( new SimpleStrategyRegistrationImpl<>(
2525
ConnectionProvider.class,
2626
C3P0ConnectionProvider.class,
2727
"c3p0",
@@ -30,7 +30,6 @@ public Iterable<StrategyRegistration> getStrategyRegistrations() {
3030
"org.hibernate.connection.C3P0ConnectionProvider",
3131
// legacy
3232
"org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider"
33-
);
34-
return Collections.singleton( c3p0 );
33+
) );
3534
}
3635
}

hibernate-core/src/main/java/org/hibernate/boot/BootLogging.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,7 @@ public interface BootLogging extends BasicLogger {
282282
void duplicatedFetchProfile(String name);
283283

284284
// EntityBinder discriminator handling
285+
285286
@LogMessage(level = TRACE)
286287
@Message(id = 160190, value = "Ignoring explicit @DiscriminatorColumn annotation on: %s")
287288
void ignoringExplicitDiscriminatorForJoined(String className);
@@ -290,7 +291,8 @@ public interface BootLogging extends BasicLogger {
290291
@Message(id = 160191, value = "Inferring implicit @DiscriminatorColumn using defaults for: %s")
291292
void inferringImplicitDiscriminatorForJoined(String className);
292293

293-
// GeneratorBinder additions
294+
// GeneratorBinder
295+
294296
@LogMessage(level = TRACE)
295297
@Message(id = 160192, value = "Added generator with name: %s, strategy: %s")
296298
void addedGenerator(String name, String strategy);
@@ -340,7 +342,7 @@ public interface BootLogging extends BasicLogger {
340342

341343
@LogMessage(level = DEBUG)
342344
@Message(id = 160218, value = "Skipping registration of discovered AttributeConverter '%s' for auto-apply")
343-
void skippingRegistrationOfDiscoveredAttributeConverterForAutoApply(String converter);
345+
void skippingRegistrationAttributeConverterForAutoApply(String converter);
344346

345347
@LogMessage(level = DEBUG)
346348
@Message(id = 160219, value = "Skipping duplicate '@ConverterRegistration' for '%s'")
@@ -374,7 +376,8 @@ public interface BootLogging extends BasicLogger {
374376
@Message(id = 160226, value = "Injecting ArchiveDescriptorFactory [%s] into BootstrapContext; was [%s]")
375377
void injectingArchiveDescriptorFactory(Object newFactory, Object oldFactory);
376378

377-
// Strategy selector tracing
379+
// Strategy selector
380+
378381
@LogMessage(level = TRACE)
379382
@Message(id = 160227, value = "Strategy selector for %s: '%s' -> %s")
380383
void strategySelectorMapping(String strategySimpleName, String name, String implementationName);
@@ -387,7 +390,8 @@ public interface BootLogging extends BasicLogger {
387390
@Message(id = 160229, value = "Named strategy map did not exist on call to unregister")
388391
void namedStrategyMapDidNotExistOnUnregister();
389392

390-
// LoadedConfig messages
393+
// LoadedConfig
394+
391395
@LogMessage(level = DEBUG)
392396
@Message(id = 160230, value = "Listener [%s] defined as part of a group also defined event type")
393397
void listenerDefinedAlsoDefinedEventType(String listenerClass);
@@ -396,7 +400,8 @@ public interface BootLogging extends BasicLogger {
396400
@Message(id = 160231, value = "More than one cfg.xml file attempted to supply SessionFactory name: [%s], [%s]. Keeping initially discovered one [%s]")
397401
void moreThanOneCfgXmlSuppliedSessionFactoryName(String first, String second, String keeping);
398402

399-
// Additional HBM binding traces
403+
// HBM binding
404+
400405
@LogMessage(level = TRACE)
401406
@Message(id = 160233, value = "Creating FetchProfile: %s")
402407
void creatingFetchProfile(String name);

hibernate-core/src/main/java/org/hibernate/boot/cfgxml/internal/JaxbCfgProcessor.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import org.xml.sax.SAXException;
2121

22-
import javax.xml.XMLConstants;
2322
import jakarta.xml.bind.JAXBContext;
2423
import jakarta.xml.bind.JAXBException;
2524
import jakarta.xml.bind.ValidationEvent;

hibernate-core/src/main/java/org/hibernate/boot/model/convert/internal/AttributeConverterManager.java

Lines changed: 26 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ public RegisteredConversion findRegisteredConversion(Class<?> domainType) {
4646
}
4747

4848
public void addConverter(ConverterDescriptor<?,?> descriptor) {
49+
final var converterClass = descriptor.getAttributeConverterClass();
4950
if ( BOOT_LOGGER.isTraceEnabled() ) {
50-
BOOT_LOGGER.registeringAttributeConverter(
51-
descriptor.getAttributeConverterClass().getName() );
51+
BOOT_LOGGER.registeringAttributeConverter( converterClass.getName() );
5252
}
5353

5454
if ( registeredConversionsByDomainType != null ) {
@@ -57,8 +57,7 @@ public void addConverter(ConverterDescriptor<?,?> descriptor) {
5757
if ( registeredConversion != null ) {
5858
// we can skip registering the converter, the RegisteredConversion will always take precedence
5959
if ( BOOT_LOGGER.isDebugEnabled() ) {
60-
BOOT_LOGGER.skippingRegistrationOfDiscoveredAttributeConverterForAutoApply(
61-
descriptor.getAttributeConverterClass().getName() );
60+
BOOT_LOGGER.skippingRegistrationAttributeConverterForAutoApply( converterClass.getName() );
6261
}
6362
return;
6463
}
@@ -68,17 +67,13 @@ public void addConverter(ConverterDescriptor<?,?> descriptor) {
6867
attributeConverterDescriptorsByClass = new ConcurrentHashMap<>();
6968
}
7069

71-
final Object old = attributeConverterDescriptorsByClass.put(
72-
descriptor.getAttributeConverterClass(),
73-
descriptor
74-
);
75-
70+
final Object old = attributeConverterDescriptorsByClass.put( converterClass, descriptor );
7671
if ( old != null ) {
7772
throw new HibernateException(
7873
String.format(
7974
Locale.ENGLISH,
8075
"AttributeConverter class [%s] registered multiple times",
81-
descriptor.getAttributeConverterClass()
76+
converterClass
8277
)
8378
);
8479
}
@@ -90,46 +85,40 @@ public void addRegistration(RegisteredConversion conversion, BootstrapContext co
9085
}
9186

9287
final Class<?> domainType = getDomainType( conversion, context );
88+
checkNotOverriding( conversion, domainType );
89+
// See if we have a matching entry in attributeConverterDescriptorsByClass.
90+
// If so, remove it. The conversion being registered will always take precedence.
91+
if ( attributeConverterDescriptorsByClass != null ) {
92+
final var removed = attributeConverterDescriptorsByClass.remove( conversion.getConverterType() );
93+
if ( removed != null && BOOT_LOGGER.isDebugEnabled() ) {
94+
BOOT_LOGGER.removedPotentiallyAutoApplicableConverterDueToRegistration(
95+
removed.getAttributeConverterClass().getName() );
96+
}
97+
}
98+
registeredConversionsByDomainType.put( domainType, conversion );
99+
}
93100

101+
private void checkNotOverriding(RegisteredConversion conversion, Class<?> domainType) {
94102
// make sure we are not overriding a previous conversion registration
95103
final var existingRegistration = registeredConversionsByDomainType.get( domainType );
96104
if ( existingRegistration != null ) {
105+
final String converterTypeName = conversion.getConverterType().getName();
97106
if ( !conversion.equals( existingRegistration ) ) {
98107
throw new AnnotationException( "Conflicting '@ConverterRegistration' descriptors for attribute converter '"
99-
+ conversion.getConverterType().getName() + "'" );
108+
+ converterTypeName + "'" );
100109
}
101110
else {
102-
if ( BOOT_LOGGER.isDebugEnabled() ) {
103-
BOOT_LOGGER.skippingDuplicateConverterRegistration(
104-
conversion.getConverterType().getName()
105-
);
106-
}
111+
BOOT_LOGGER.skippingDuplicateConverterRegistration( converterTypeName );
107112
}
108113
}
109-
110-
// see if we have a matching entry in `attributeConverterDescriptorsByClass`.
111-
// if so, remove it. The conversion being registered will always take precedence
112-
if ( attributeConverterDescriptorsByClass != null ) {
113-
final var removed = attributeConverterDescriptorsByClass.remove( conversion.getConverterType() );
114-
if ( removed != null && BOOT_LOGGER.isDebugEnabled() ) {
115-
BOOT_LOGGER.removedPotentiallyAutoApplicableConverterDueToRegistration(
116-
removed.getAttributeConverterClass().getName() );
117-
}
118-
}
119-
120-
registeredConversionsByDomainType.put( domainType, conversion );
121114
}
122115

123116
private static Class<?> getDomainType(RegisteredConversion conversion, BootstrapContext context) {
124-
if ( conversion.getExplicitDomainType().equals( void.class ) ) {
125-
// the registration did not define an explicit domain-type, so inspect the converter
126-
final var converterParamTypes =
127-
resolveConverterClassParamTypes( conversion.getConverterType(), context.getClassmateContext() );
128-
return converterParamTypes.get( 0 ).getErasedType();
129-
}
130-
else {
131-
return conversion.getExplicitDomainType();
132-
}
117+
// the registration did not define an explicit domain-type, so inspect the converter
118+
return conversion.getExplicitDomainType().equals( void.class )
119+
? resolveConverterClassParamTypes( conversion.getConverterType(), context.getClassmateContext() )
120+
.get( 0 ).getErasedType()
121+
: conversion.getExplicitDomainType();
133122
}
134123

135124
private Collection<ConverterDescriptor<?,?>> converterDescriptors() {

hibernate-core/src/main/java/org/hibernate/boot/registry/selector/StrategyRegistrationProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,5 @@ public interface StrategyRegistrationProvider {
2727
*
2828
* @return All {@link StrategyRegistration}s
2929
*/
30-
Iterable<StrategyRegistration> getStrategyRegistrations();
30+
Iterable<StrategyRegistration<?>> getStrategyRegistrations();
3131
}

hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/AggregatedDialectSelector.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public class AggregatedDialectSelector implements DialectSelector {
1717

1818
public AggregatedDialectSelector(Iterable<DialectSelector> dialectSelectorProvider) {
1919
final List<DialectSelector> dialectSelectors = new ArrayList<>();
20-
for ( DialectSelector dialectSelector : dialectSelectorProvider ) {
20+
for ( var dialectSelector : dialectSelectorProvider ) {
2121
dialectSelectors.add( dialectSelector );
2222
}
2323
dialectSelectors.add( new DefaultDialectSelector() );
@@ -30,8 +30,8 @@ public Class<? extends Dialect> resolve(final String name) {
3030
if ( name.isEmpty() ) {
3131
return null;
3232
}
33-
for ( DialectSelector dialectSelector : dialectSelectors ) {
34-
final Class<? extends Dialect> dialectClass = dialectSelector.resolve( name );
33+
for ( var dialectSelector : dialectSelectors ) {
34+
final var dialectClass = dialectSelector.resolve( name );
3535
if ( dialectClass != null ) {
3636
return dialectClass;
3737
}

hibernate-core/src/main/java/org/hibernate/boot/registry/selector/internal/StrategySelectorBuilder.java

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -85,18 +85,15 @@ public <T> void addExplicitStrategyRegistration(Class<T> strategy, Class<? exten
8585
* compatible.
8686
*/
8787
public <T> void addExplicitStrategyRegistration(StrategyRegistration<T> strategyRegistration) {
88-
if ( BOOT_LOGGER.isTraceEnabled() && !strategyRegistration.getStrategyRole().isInterface() ) {
89-
BOOT_LOGGER.registeringNonInterfaceStrategy(
90-
strategyRegistration.getStrategyRole().getName()
91-
);
88+
final var strategyRole = strategyRegistration.getStrategyRole();
89+
if ( BOOT_LOGGER.isTraceEnabled() && !strategyRole.isInterface() ) {
90+
BOOT_LOGGER.registeringNonInterfaceStrategy( strategyRole.getName() );
9291
}
93-
94-
if ( !strategyRegistration.getStrategyRole()
95-
.isAssignableFrom( strategyRegistration.getStrategyImplementation() ) ) {
92+
if ( !strategyRole.isAssignableFrom( strategyRegistration.getStrategyImplementation() ) ) {
9693
throw new StrategySelectionException(
9794
"Implementation class [" + strategyRegistration.getStrategyImplementation().getName()
98-
+ "] does not implement strategy interface ["
99-
+ strategyRegistration.getStrategyRole().getName() + "]"
95+
+ "] does not implement strategy interface ["
96+
+ strategyRole.getName() + "]"
10097
);
10198
}
10299
explicitStrategyRegistrations.add( strategyRegistration );
@@ -111,13 +108,11 @@ public <T> void addExplicitStrategyRegistration(StrategyRegistration<T> strategy
111108
* @return The selector.
112109
*/
113110
public StrategySelector buildSelector(ClassLoaderService classLoaderService) {
114-
final StrategySelectorImpl strategySelector = new StrategySelectorImpl( classLoaderService );
111+
final var strategySelector = new StrategySelectorImpl( classLoaderService );
115112

116113
// build the baseline...
117-
strategySelector.registerStrategyLazily(
118-
Dialect.class,
119-
new AggregatedDialectSelector( classLoaderService.loadJavaServices( DialectSelector.class ) )
120-
);
114+
strategySelector.registerStrategyLazily( Dialect.class,
115+
new AggregatedDialectSelector( classLoaderService.loadJavaServices( DialectSelector.class ) ) );
121116
strategySelector.registerStrategyLazily( JtaPlatform.class, new DefaultJtaPlatformSelector() );
122117
addTransactionCoordinatorBuilders( strategySelector );
123118
addSqmMultiTableInsertStrategies( strategySelector );
@@ -129,14 +124,14 @@ public StrategySelector buildSelector(ClassLoaderService classLoaderService) {
129124
addXmlFormatMappers( strategySelector );
130125

131126
// apply auto-discovered registrations
132-
for ( StrategyRegistrationProvider provider : classLoaderService.loadJavaServices( StrategyRegistrationProvider.class ) ) {
133-
for ( StrategyRegistration<?> discoveredStrategyRegistration : provider.getStrategyRegistrations() ) {
127+
for ( var provider : classLoaderService.loadJavaServices( StrategyRegistrationProvider.class ) ) {
128+
for ( var discoveredStrategyRegistration : provider.getStrategyRegistrations() ) {
134129
applyFromStrategyRegistration( strategySelector, discoveredStrategyRegistration );
135130
}
136131
}
137132

138133
// apply customizations
139-
for ( StrategyRegistration<?> explicitStrategyRegistration : explicitStrategyRegistrations ) {
134+
for ( var explicitStrategyRegistration : explicitStrategyRegistrations ) {
140135
applyFromStrategyRegistration( strategySelector, explicitStrategyRegistration );
141136
}
142137

0 commit comments

Comments
 (0)