Skip to content

Commit ec542ee

Browse files
committed
HHH-19466 get rid of RootGraphImplementor from JpaMetamodel
1 parent c39a684 commit ec542ee

File tree

5 files changed

+42
-34
lines changed

5 files changed

+42
-34
lines changed

hibernate-core/src/main/java/org/hibernate/metamodel/MappingMetamodel.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import org.hibernate.Incubating;
1313
import org.hibernate.Internal;
1414
import org.hibernate.graph.RootGraph;
15-
import org.hibernate.graph.spi.RootGraphImplementor;
1615
import org.hibernate.metamodel.mapping.EmbeddableValuedModelPart;
1716
import org.hibernate.metamodel.mapping.MappingModelExpressible;
1817
import org.hibernate.type.BindableType;
@@ -186,7 +185,7 @@ MappingModelExpressible<?> resolveMappingExpressible(
186185
// JPA entity graphs
187186

188187
RootGraph<?> findNamedGraph(String name);
189-
<T> void addNamedEntityGraph(String graphName, RootGraphImplementor<T> entityGraph);
188+
void addNamedEntityGraph(String graphName, RootGraph<?> entityGraph);
190189
void forEachNamedGraph(Consumer<RootGraph<?>> action);
191190
RootGraph<?> defaultGraph(String entityName);
192191
RootGraph<?> defaultGraph(Class<?> entityJavaType);

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/JpaMetamodel.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import jakarta.persistence.metamodel.Metamodel;
1717
import org.checkerframework.checker.nullness.qual.Nullable;
1818
import org.hibernate.Incubating;
19-
import org.hibernate.graph.spi.RootGraphImplementor;
19+
import org.hibernate.graph.RootGraph;
2020
import org.hibernate.jpa.spi.JpaCompliance;
2121
import org.hibernate.metamodel.MappingMetamodel;
2222
import org.hibernate.service.ServiceRegistry;
@@ -150,11 +150,11 @@ public interface JpaMetamodel extends Metamodel {
150150
@Override
151151
Set<EmbeddableType<?>> getEmbeddables();
152152

153-
<T> void addNamedEntityGraph(String graphName, RootGraphImplementor<T> entityGraph);
153+
void addNamedEntityGraph(String graphName, RootGraph<?> entityGraph);
154154

155-
<T> RootGraphImplementor<T> findEntityGraphByName(String name);
155+
RootGraph<?> findEntityGraphByName(String name);
156156

157-
<T> List<RootGraphImplementor<? super T>> findEntityGraphsByJavaType(Class<T> entityClass);
157+
<T> List<RootGraph<? super T>> findEntityGraphsByJavaType(Class<T> entityClass);
158158

159159
<T> Map<String, EntityGraph<? extends T>> getNamedEntityGraphs(Class<T> entityType);
160160

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/JpaMetamodelImpl.java

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.hibernate.boot.registry.classloading.spi.ClassLoadingException;
2828
import org.hibernate.boot.spi.MetadataImplementor;
2929
import org.hibernate.engine.spi.SessionFactoryImplementor;
30+
import org.hibernate.graph.RootGraph;
3031
import org.hibernate.graph.spi.RootGraphImplementor;
3132
import org.hibernate.internal.CoreLogging;
3233
import org.hibernate.internal.CoreMessageLogger;
@@ -394,31 +395,31 @@ private Field getJavaField(String className, String fieldName) throws NoSuchFiel
394395
}
395396

396397
@Override
397-
public <T> void addNamedEntityGraph(String graphName, RootGraphImplementor<T> entityGraph) {
398-
final EntityGraph<?> old = entityGraphMap.put( graphName, entityGraph.makeImmutableCopy( graphName ) );
398+
public void addNamedEntityGraph(String graphName, RootGraph<?> entityGraph) {
399+
final RootGraphImplementor<?> rootGraph = (RootGraphImplementor<?>) entityGraph;
400+
final EntityGraph<?> old = entityGraphMap.put( graphName, rootGraph.makeImmutableCopy( graphName ) );
399401
if ( old != null ) {
400402
log.debugf( "EntityGraph being replaced on EntityManagerFactory for name %s", graphName );
401403
}
402404
}
403405

404406
@Override
405-
@SuppressWarnings("unchecked")
406-
public <T> RootGraphImplementor<T> findEntityGraphByName(String name) {
407-
return (RootGraphImplementor<T>) entityGraphMap.get( name );
407+
public RootGraphImplementor<?> findEntityGraphByName(String name) {
408+
return entityGraphMap.get( name );
408409
}
409410

410411
@Override
411-
public <T> List<RootGraphImplementor<? super T>> findEntityGraphsByJavaType(Class<T> entityClass) {
412+
public <T> List<RootGraph<? super T>> findEntityGraphsByJavaType(Class<T> entityClass) {
412413
final EntityDomainType<T> entityType = entity( entityClass );
413414
if ( entityType == null ) {
414415
throw new IllegalArgumentException( "Given class is not an entity: " + entityClass.getName() );
415416
}
416417
else {
417-
final List<RootGraphImplementor<? super T>> results = new ArrayList<>();
418-
for ( RootGraphImplementor<?> entityGraph : entityGraphMap.values() ) {
418+
final List<RootGraph<? super T>> results = new ArrayList<>();
419+
for ( var entityGraph : entityGraphMap.values() ) {
419420
if ( entityGraph.appliesTo( entityType ) ) {
420-
@SuppressWarnings("unchecked")
421-
final RootGraphImplementor<? super T> result = (RootGraphImplementor<? super T>) entityGraph;
421+
@SuppressWarnings("unchecked") // safe, we just checked
422+
var result = (RootGraphImplementor<? super T>) entityGraph;
422423
results.add( result );
423424
}
424425
}
@@ -434,10 +435,11 @@ public <T> Map<String, EntityGraph<? extends T>> getNamedEntityGraphs(Class<T> e
434435
}
435436
else {
436437
final Map<String, EntityGraph<? extends T>> results = new HashMap<>();
437-
for ( RootGraphImplementor<?> entityGraph : entityGraphMap.values() ) {
438+
for ( var entityGraph : entityGraphMap.values() ) {
438439
if ( entityGraph.appliesTo( entityType ) ) {
439-
//noinspection unchecked
440-
results.put( entityGraph.getName(), (EntityGraph<? extends T>) entityGraph );
440+
@SuppressWarnings("unchecked") // safe, we just checked
441+
var graph = (EntityGraph<? extends T>) entityGraph;
442+
results.put( entityGraph.getName(), graph );
441443
}
442444
}
443445
return results;
@@ -736,7 +738,9 @@ private <T> EntityDomainType<T> locateOrBuildEntityType(
736738
MetadataContext context,
737739
final TypeConfiguration typeConfiguration) {
738740
@SuppressWarnings("unchecked")
739-
final EntityDomainType<T> entityType = (EntityDomainType<T>) context.locateEntityType( persistentClass );
741+
final EntityDomainType<T> entityType =
742+
(EntityDomainType<T>)
743+
context.locateEntityType( persistentClass );
740744
return entityType == null
741745
? buildEntityType( persistentClass, context, typeConfiguration )
742746
: entityType;

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/MappingMetamodelImpl.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.hibernate.boot.spi.MetadataImplementor;
2424
import org.hibernate.cache.spi.CacheImplementor;
2525
import org.hibernate.graph.RootGraph;
26-
import org.hibernate.graph.spi.RootGraphImplementor;
2726
import org.hibernate.internal.CoreLogging;
2827
import org.hibernate.internal.CoreMessageLogger;
2928
import org.hibernate.internal.util.collections.ArrayHelper;
@@ -37,7 +36,6 @@
3736
import org.hibernate.metamodel.mapping.MappingModelExpressible;
3837
import org.hibernate.metamodel.mapping.internal.MappingModelCreationProcess;
3938
import org.hibernate.metamodel.model.domain.BasicDomainType;
40-
import org.hibernate.metamodel.model.domain.DomainType;
4139
import org.hibernate.metamodel.model.domain.EmbeddableDomainType;
4240
import org.hibernate.metamodel.model.domain.EntityDomainType;
4341
import org.hibernate.metamodel.model.domain.JpaMetamodel;
@@ -565,12 +563,12 @@ public CollectionPersister findCollectionDescriptor(String role) {
565563
}
566564

567565
@Override
568-
public <T> void addNamedEntityGraph(String graphName, RootGraphImplementor<T> entityGraph) {
566+
public void addNamedEntityGraph(String graphName, RootGraph<?> entityGraph) {
569567
jpaMetamodel.addNamedEntityGraph( graphName, entityGraph );
570568
}
571569

572570
@Override
573-
public <T> RootGraphImplementor<T> findEntityGraphByName(String name) {
571+
public RootGraph<?> findEntityGraphByName(String name) {
574572
return jpaMetamodel.findEntityGraphByName( name );
575573
}
576574

@@ -580,7 +578,7 @@ public <T> Map<String, EntityGraph<? extends T>> getNamedEntityGraphs(Class<T> e
580578
}
581579

582580
@Override
583-
public <T> List<RootGraphImplementor<? super T>> findEntityGraphsByJavaType(Class<T> entityClass) {
581+
public <T> List<RootGraph<? super T>> findEntityGraphsByJavaType(Class<T> entityClass) {
584582
return jpaMetamodel.findEntityGraphsByJavaType( entityClass );
585583
}
586584

@@ -639,8 +637,8 @@ public MappingModelExpressible<?> resolveMappingExpressible(
639637
SqmExpressible<?> sqmExpressible,
640638
Function<NavigablePath, TableGroup> tableGroupLocator) {
641639
if ( sqmExpressible instanceof SqmPath<?> sqmPath ) {
642-
final DomainType<?> sqmPathType = sqmPath.getResolvedModel().getPathType();
643-
if ( sqmPathType instanceof MappingModelExpressible<?> mappingExpressible ) {
640+
if ( sqmPath.getResolvedModel().getPathType()
641+
instanceof MappingModelExpressible<?> mappingExpressible ) {
644642
return mappingExpressible;
645643
}
646644
final NavigablePath navigablePath = sqmPath.getNavigablePath();
@@ -656,7 +654,8 @@ else if ( sqmExpressible instanceof BasicType<?> basicType ) {
656654
}
657655

658656
else if ( sqmExpressible instanceof BasicDomainType<?> ) {
659-
return getTypeConfiguration().getBasicTypeForJavaType( sqmExpressible.getRelationalJavaType().getJavaType() );
657+
return getTypeConfiguration()
658+
.getBasicTypeForJavaType( sqmExpressible.getRelationalJavaType().getJavaType() );
660659
}
661660

662661
else if ( sqmExpressible instanceof BasicSqmPathSource<?>
@@ -714,7 +713,9 @@ else if ( sqmExpressible instanceof TupleType<?> tupleType ) {
714713

715714
@Override
716715
public <T> BindableType<T> resolveQueryParameterType(Class<T> javaClass) {
717-
final BasicType<T> basicType = getTypeConfiguration().getBasicTypeForJavaType( javaClass );
716+
final TypeConfiguration typeConfiguration = getTypeConfiguration();
717+
718+
final BasicType<T> basicType = typeConfiguration.getBasicTypeForJavaType( javaClass );
718719
// For enums, we simply don't know the exact mapping if there is no basic type registered
719720
if ( basicType != null || javaClass.isEnum() ) {
720721
return basicType;
@@ -725,22 +726,22 @@ public <T> BindableType<T> resolveQueryParameterType(Class<T> javaClass) {
725726
return (BindableType<T>) managedType;
726727
}
727728

728-
final JavaTypeRegistry javaTypeRegistry = getTypeConfiguration().getJavaTypeRegistry();
729+
final JavaTypeRegistry javaTypeRegistry = typeConfiguration.getJavaTypeRegistry();
729730
final JavaType<T> javaType = javaTypeRegistry.findDescriptor( javaClass );
730731
if ( javaType != null ) {
731732
final JdbcType recommendedJdbcType =
732-
javaType.getRecommendedJdbcType( getTypeConfiguration().getCurrentBaseSqlTypeIndicators() );
733+
javaType.getRecommendedJdbcType( typeConfiguration.getCurrentBaseSqlTypeIndicators() );
733734
if ( recommendedJdbcType != null ) {
734-
return getTypeConfiguration().getBasicTypeRegistry().resolve( javaType, recommendedJdbcType );
735+
return typeConfiguration.getBasicTypeRegistry().resolve( javaType, recommendedJdbcType );
735736
}
736737
}
737738

738739
if ( javaClass.isArray() && javaTypeRegistry.findDescriptor( javaClass.getComponentType() ) != null ) {
739740
final JavaType<T> resolvedJavaType = javaTypeRegistry.resolveDescriptor( javaClass );
740741
final JdbcType recommendedJdbcType =
741-
resolvedJavaType.getRecommendedJdbcType( getTypeConfiguration().getCurrentBaseSqlTypeIndicators() );
742+
resolvedJavaType.getRecommendedJdbcType( typeConfiguration.getCurrentBaseSqlTypeIndicators() );
742743
if ( recommendedJdbcType != null ) {
743-
return getTypeConfiguration().getBasicTypeRegistry().resolve( resolvedJavaType, recommendedJdbcType );
744+
return typeConfiguration.getBasicTypeRegistry().resolve( resolvedJavaType, recommendedJdbcType );
744745
}
745746
}
746747

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/spi/JpaMetamodelImplementor.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*/
55
package org.hibernate.metamodel.model.domain.spi;
66

7+
import org.hibernate.graph.spi.RootGraphImplementor;
78
import org.hibernate.metamodel.MappingMetamodel;
89
import org.hibernate.metamodel.model.domain.JpaMetamodel;
910

@@ -14,4 +15,7 @@
1415
*/
1516
public interface JpaMetamodelImplementor extends JpaMetamodel {
1617
MappingMetamodel getMappingMetamodel();
18+
19+
@Override
20+
RootGraphImplementor<?> findEntityGraphByName(String name);
1721
}

0 commit comments

Comments
 (0)