Skip to content

Commit 0c3b8fd

Browse files
committed
unexpose the ServiceRegistry on SqmCreationContext + SqlAstCreationContext
1 parent 25d0922 commit 0c3b8fd

File tree

9 files changed

+30
-33
lines changed

9 files changed

+30
-33
lines changed

hibernate-core/src/main/java/org/hibernate/engine/spi/SessionFactoryDelegatingImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,4 +403,9 @@ public WrapperOptions getWrapperOptions() {
403403
public <T> List<EntityGraph<? super T>> findEntityGraphsByType(Class<T> entityClass) {
404404
return delegate.findEntityGraphsByType(entityClass);
405405
}
406+
407+
@Override
408+
public Class<?> classForName(String className) {
409+
return delegate.classForName( className );
410+
}
406411
}

hibernate-core/src/main/java/org/hibernate/engine/spi/SessionFactoryImplementor.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ default MappingMetamodelImplementor getMappingMetamodel() {
111111
*
112112
* @return The factory's ServiceRegistry
113113
*/
114-
@Override
115114
ServiceRegistryImplementor getServiceRegistry();
116115

117116
/**

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -458,8 +458,7 @@ private static SqlStringGenerationContext createSqlStringGenerationContext(
458458
private static SessionFactoryServiceRegistry getServiceRegistry(
459459
SessionFactoryOptions options,
460460
SessionFactoryImplementor self) {
461-
return options
462-
.getServiceRegistry()
461+
return options.getServiceRegistry()
463462
.requireService( SessionFactoryServiceRegistryFactory.class )
464463
// it is not great how we pass in an instance to
465464
// an incompletely-initialized instance here:
@@ -1704,6 +1703,12 @@ public SchemaManager getSchemaManager() {
17041703
return schemaManager;
17051704
}
17061705

1706+
@Override
1707+
public Class<?> classForName(String className) {
1708+
return serviceRegistry.requireService( ClassLoaderService.class )
1709+
.classForName( className );
1710+
}
1711+
17071712
private enum Status {
17081713
OPEN,
17091714
CLOSING,

hibernate-core/src/main/java/org/hibernate/query/hql/internal/FullyQualifiedReflectivePathTerminal.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import java.util.function.Function;
1414

1515
import org.checkerframework.checker.nullness.qual.Nullable;
16-
import org.hibernate.boot.registry.classloading.spi.ClassLoaderService;
1716
import org.hibernate.boot.registry.classloading.spi.ClassLoadingException;
1817
import org.hibernate.metamodel.model.domain.EntityDomainType;
1918
import org.hibernate.query.criteria.JpaSelection;
@@ -69,8 +68,6 @@ public FullyQualifiedReflectivePathTerminal<E> copy(SqmCopyContext context) {
6968
private Function<SemanticQueryWalker<?>, ?> resolveTerminalSemantic() {
7069
return semanticQueryWalker -> {
7170
final SqmCreationContext creationContext = creationState.getCreationContext();
72-
final ClassLoaderService cls =
73-
creationContext.getServiceRegistry().requireService( ClassLoaderService.class );
7471
final String fullPath = getFullPath();
7572

7673
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -85,7 +82,7 @@ public FullyQualifiedReflectivePathTerminal<E> copy(SqmCopyContext context) {
8582
// See if it is a Class FQN
8683

8784
try {
88-
final Class<?> namedClass = cls.classForName( fullPath );
85+
final Class<?> namedClass = creationContext.classForName( fullPath );
8986
if ( namedClass != null ) {
9087
return semanticQueryWalker.visitFullyQualifiedClass( namedClass );
9188
}
@@ -99,7 +96,7 @@ public FullyQualifiedReflectivePathTerminal<E> copy(SqmCopyContext context) {
9996

10097
final String parentFullPath = getParent().getFullPath();
10198
try {
102-
final Class<?> namedClass = cls.classForName( parentFullPath );
99+
final Class<?> namedClass = creationContext.classForName( parentFullPath );
103100
if ( namedClass != null ) {
104101
return createEnumOrFieldLiteral( namedClass );
105102
}

hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import java.util.Map;
3333
import java.util.Set;
3434

35-
import org.hibernate.boot.registry.classloading.spi.ClassLoaderService;
3635
import org.hibernate.boot.registry.classloading.spi.ClassLoadingException;
3736
import org.hibernate.dialect.function.SqlColumn;
3837
import org.hibernate.grammars.hql.HqlLexer;
@@ -1553,17 +1552,12 @@ public SqmDynamicInstantiation<?> visitInstantiation(HqlParser.InstantiationCont
15531552
}
15541553

15551554
private JavaType<?> resolveInstantiationTargetJtd(String className) {
1556-
final Class<?> targetJavaType = classForName( creationContext.getJpaMetamodel().qualifyImportableName( className ) );
1557-
return creationContext.getJpaMetamodel()
1558-
.getTypeConfiguration()
1559-
.getJavaTypeRegistry()
1555+
final String qualifiedName = creationContext.getJpaMetamodel().qualifyImportableName( className );
1556+
final Class<?> targetJavaType = creationContext.classForName( qualifiedName );
1557+
return creationContext.getTypeConfiguration().getJavaTypeRegistry()
15601558
.resolveDescriptor( targetJavaType );
15611559
}
15621560

1563-
private Class<?> classForName(String className) {
1564-
return creationContext.getServiceRegistry().requireService( ClassLoaderService.class ).classForName( className );
1565-
}
1566-
15671561
@Override
15681562
public SqmDynamicInstantiationArgument<?> visitInstantiationArgument(HqlParser.InstantiationArgumentContext ctx) {
15691563
final HqlParser.VariableContext variable = ctx.variable();

hibernate-core/src/main/java/org/hibernate/query/sqm/spi/SqmCreationContext.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import org.hibernate.query.BindingContext;
1111
import org.hibernate.query.spi.QueryEngine;
1212
import org.hibernate.query.sqm.NodeBuilder;
13-
import org.hibernate.service.ServiceRegistry;
1413

1514
/**
1615
* The context in which all SQM creations occur.
@@ -25,7 +24,10 @@ default NodeBuilder getNodeBuilder() {
2524
return getQueryEngine().getCriteriaBuilder();
2625
}
2726

28-
default ServiceRegistry getServiceRegistry() {
29-
return getJpaMetamodel().getServiceRegistry();
30-
}
27+
/**
28+
* @apiNote Avoid calling this method, since {@link Class}
29+
* objects are not available to the query validator
30+
* in Hibernate Processor at compilation time.
31+
*/
32+
Class<?> classForName(String className);
3133
}

hibernate-core/src/main/java/org/hibernate/sql/ast/spi/SqlAstCreationContext.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import org.hibernate.engine.spi.SessionFactoryImplementor;
1010
import org.hibernate.metamodel.spi.MappingMetamodelImplementor;
1111
import org.hibernate.query.BindingContext;
12-
import org.hibernate.service.ServiceRegistry;
1312

1413
/**
1514
* The "context" in which creation of SQL AST occurs. Provides
@@ -28,11 +27,6 @@ public interface SqlAstCreationContext extends BindingContext {
2827
*/
2928
MappingMetamodelImplementor getMappingMetamodel();
3029

31-
/**
32-
* Access to Services
33-
*/
34-
ServiceRegistry getServiceRegistry();
35-
3630
/**
3731
* When creating {@link org.hibernate.sql.results.graph.Fetch} references,
3832
* defines a limit to how deep we should join for fetches.

hibernate-core/src/test/java/org/hibernate/orm/test/query/sqm/BaseSqmUnitTest.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import org.hibernate.metamodel.model.domain.JpaMetamodel;
1616
import org.hibernate.metamodel.spi.MappingMetamodelImplementor;
1717
import org.hibernate.query.sqm.tree.select.SqmSelectStatement;
18-
import org.hibernate.service.ServiceRegistry;
1918
import org.hibernate.sql.ast.spi.SqlAstCreationContext;
2019
import org.hibernate.sql.exec.spi.Callback;
2120

@@ -92,11 +91,6 @@ public JpaMetamodel getJpaMetamodel() {
9291
return sessionFactory().getJpaMetamodel();
9392
}
9493

95-
@Override
96-
public ServiceRegistry getServiceRegistry() {
97-
return sessionFactory().getServiceRegistry();
98-
}
99-
10094
@Override
10195
public Integer getMaximumFetchDepth() {
10296
return sessionFactory().getMaximumFetchDepth();

tooling/metamodel-generator/src/main/java/org/hibernate/processor/validation/MockSessionFactory.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.hibernate.boot.model.relational.SqlStringGenerationContext;
2525
import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder;
2626
import org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl;
27+
import org.hibernate.boot.registry.classloading.spi.ClassLoaderService;
2728
import org.hibernate.boot.registry.classloading.spi.ClassLoadingException;
2829
import org.hibernate.boot.registry.internal.StandardServiceRegistryImpl;
2930
import org.hibernate.boot.spi.BootstrapContext;
@@ -364,6 +365,12 @@ public StandardServiceRegistryImpl getServiceRegistry() {
364365
return serviceRegistry;
365366
}
366367

368+
@Override
369+
public Class<?> classForName(String className) {
370+
return serviceRegistry.requireService( ClassLoaderService.class )
371+
.classForName( className );
372+
}
373+
367374
@Override
368375
public JdbcServices getJdbcServices() {
369376
return MockJdbcServicesInitiator.jdbcServices;

0 commit comments

Comments
 (0)