From 7af02399ed8255e2857da01f5870ba2275314f3e Mon Sep 17 00:00:00 2001 From: Gavin King Date: Tue, 23 Sep 2025 19:40:58 +0200 Subject: [PATCH] use 'var' in XxxxxSpecificationImpl --- .../internal/MutationSpecificationImpl.java | 36 +++++++-------- .../internal/SelectionSpecificationImpl.java | 45 +++++++++---------- 2 files changed, 37 insertions(+), 44 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/query/specification/internal/MutationSpecificationImpl.java b/hibernate-core/src/main/java/org/hibernate/query/specification/internal/MutationSpecificationImpl.java index 64a01b53095e..a9db084bd2be 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/specification/internal/MutationSpecificationImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/query/specification/internal/MutationSpecificationImpl.java @@ -20,7 +20,6 @@ import org.hibernate.query.IllegalMutationQueryException; import org.hibernate.query.MutationQuery; import org.hibernate.query.restriction.Restriction; -import org.hibernate.query.spi.HqlInterpretation; import org.hibernate.query.spi.QueryEngine; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SqmQuerySource; @@ -43,7 +42,7 @@ import static org.hibernate.query.sqm.tree.SqmCopyContext.noParamCopyContext; /** - * Standard implementation of MutationSpecification + * Standard implementation of {@link MutationSpecification}. * * @author Steve Ebersole */ @@ -95,10 +94,9 @@ public TypedQueryReference reference() { @Override public MutationSpecification restrict(Restriction restriction) { specifications.add( (sqmStatement, mutationTargetRoot) -> { - final SqmPredicate sqmPredicate = (SqmPredicate) restriction.toPredicate( - mutationTargetRoot, - sqmStatement.nodeBuilder() - ); + final var sqmPredicate = (SqmPredicate) + restriction.toPredicate( mutationTargetRoot, + sqmStatement.nodeBuilder() ); sqmStatement.applyPredicate( sqmPredicate ); } ); return this; @@ -123,7 +121,7 @@ public MutationQuery createQuery(StatelessSession session) { public MutationQuery createQuery(SharedSessionContract session) { final var sessionImpl = session.unwrap(SharedSessionContractImplementor.class); - final SqmDeleteOrUpdateStatement sqmStatement = build( sessionImpl.getFactory().getQueryEngine() ); + final var sqmStatement = build( sessionImpl.getFactory().getQueryEngine() ); return new SqmQueryImpl<>( sqmStatement, true, null, sessionImpl ); } @@ -153,13 +151,13 @@ public MutationQuery createQuery(EntityManager entityManager) { @Override public CommonAbstractCriteria buildCriteria(CriteriaBuilder builder) { - final NodeBuilder nodeBuilder = (NodeBuilder) builder; + final var nodeBuilder = (NodeBuilder) builder; return build( nodeBuilder.getQueryEngine() ); } @Override public MutationSpecification validate(CriteriaBuilder builder) { - final NodeBuilder nodeBuilder = (NodeBuilder) builder; + final var nodeBuilder = (NodeBuilder) builder; final var statement = build( nodeBuilder.getQueryEngine() ); ( (AbstractSqmDmlStatement) statement ).validate( hql ); return this; @@ -170,9 +168,9 @@ public MutationSpecification validate(CriteriaBuilder builder) { * and produce the corresponding SQM tree. */ private static SqmDeleteOrUpdateStatement resolveSqmTree(String hql, QueryEngine queryEngine) { - final HqlInterpretation hqlInterpretation = + final var hqlInterpretation = queryEngine.getInterpretationCache() - .resolveHqlInterpretation( hql, null, queryEngine.getHqlTranslator() ); + .resolveHqlInterpretation( hql, null, queryEngine.getHqlTranslator() ); if ( !SqmUtil.isRestrictedMutation( hqlInterpretation.getSqmStatement() ) ) { throw new IllegalMutationQueryException( "Expecting a delete or update query, but found '" + hql + "'", hql); @@ -180,26 +178,26 @@ private static SqmDeleteOrUpdateStatement resolveSqmTree(String hql, Quer // NOTE: this copy is to isolate the actual AST tree from the // one stored in the interpretation cache - return (SqmDeleteOrUpdateStatement) hqlInterpretation - .getSqmStatement() - .copy( noParamCopyContext( SqmQuerySource.CRITERIA ) ); + return (SqmDeleteOrUpdateStatement) + hqlInterpretation.getSqmStatement() + .copy( noParamCopyContext( SqmQuerySource.CRITERIA ) ); } /** - * Used during construction. Mainly used to group extracting and + * Used during construction. Mainly used to group extracting and * validating the root. */ private static SqmRoot resolveSqmRoot( SqmDeleteOrUpdateStatement sqmStatement, Class mutationTarget) { - final SqmRoot mutationTargetRoot = sqmStatement.getTarget(); - if ( mutationTargetRoot.getJavaType() != null - && !mutationTarget.isAssignableFrom( mutationTargetRoot.getJavaType() ) ) { + final var mutationTargetRoot = sqmStatement.getTarget(); + final var javaType = mutationTargetRoot.getJavaType(); + if ( javaType != null && !mutationTarget.isAssignableFrom( javaType ) ) { throw new IllegalArgumentException( String.format( Locale.ROOT, "Mutation target types do not match : %s / %s", - mutationTargetRoot.getJavaType().getName(), + javaType.getName(), mutationTarget.getName() ) ); diff --git a/hibernate-core/src/main/java/org/hibernate/query/specification/internal/SelectionSpecificationImpl.java b/hibernate-core/src/main/java/org/hibernate/query/specification/internal/SelectionSpecificationImpl.java index afd15e366390..990085005ec6 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/specification/internal/SelectionSpecificationImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/query/specification/internal/SelectionSpecificationImpl.java @@ -20,19 +20,14 @@ import org.hibernate.query.specification.SelectionSpecification; import org.hibernate.query.restriction.Path; import org.hibernate.query.restriction.Restriction; -import org.hibernate.query.spi.HqlInterpretation; import org.hibernate.query.spi.QueryEngine; import org.hibernate.query.sqm.NodeBuilder; import org.hibernate.query.sqm.SqmQuerySource; import org.hibernate.query.sqm.internal.SqmSelectionQueryImpl; import org.hibernate.query.sqm.internal.SqmUtil; import org.hibernate.query.sqm.tree.from.SqmRoot; -import org.hibernate.query.sqm.tree.predicate.SqmPredicate; import org.hibernate.query.sqm.tree.select.SqmOrderByClause; -import org.hibernate.query.sqm.tree.select.SqmSelectClause; import org.hibernate.query.sqm.tree.select.SqmSelectStatement; -import org.hibernate.query.sqm.tree.select.SqmSelection; -import org.hibernate.query.sqm.tree.select.SqmSortSpecification; import org.hibernate.type.descriptor.java.JavaType; import java.util.ArrayList; @@ -40,7 +35,6 @@ import java.util.List; import java.util.Locale; import java.util.Map; -import java.util.Set; import java.util.function.BiConsumer; import static org.hibernate.internal.util.collections.CollectionHelper.isEmpty; @@ -48,7 +42,7 @@ import static org.hibernate.query.sqm.tree.SqmCopyContext.noParamCopyContext; /** - * Standard implementation of SelectionSpecification + * Standard implementation of {@link SelectionSpecification}. * * @author Steve Ebersole */ @@ -99,7 +93,7 @@ public TypedQueryReference reference() { @Override public SelectionSpecification restrict(Restriction restriction) { specifications.add( (sqmStatement, root) -> { - final SqmPredicate sqmPredicate = SqmUtil.restriction( sqmStatement, resultType, restriction ); + final var sqmPredicate = SqmUtil.restriction( sqmStatement, resultType, restriction ); sqmStatement.getQuerySpec().applyPredicate( sqmPredicate ); } ); return this; @@ -145,7 +139,7 @@ public final SelectionSpecification resort(List> o } private static void addOrder(Order order, SqmSelectStatement sqmStatement) { - final SqmSortSpecification sortSpecification = SqmUtil.sortSpecification( sqmStatement, order ); + final var sortSpecification = SqmUtil.sortSpecification( sqmStatement, order ); final var querySpec = sqmStatement.getQuerySpec(); if ( querySpec.getOrderByClause() == null ) { querySpec.setOrderByClause( new SqmOrderByClause() ); @@ -165,7 +159,7 @@ public SelectionQuery createQuery(StatelessSession session) { public SelectionQuery createQuery(SharedSessionContract session) { final var sessionImpl = session.unwrap(SharedSessionContractImplementor.class); - final SqmSelectStatement sqmStatement = build( sessionImpl.getFactory().getQueryEngine() ); + final var sqmStatement = build( sessionImpl.getFactory().getQueryEngine() ); return new SqmSelectionQueryImpl<>( sqmStatement, true, resultType, sessionImpl ); } @@ -199,13 +193,13 @@ public SelectionQuery createQuery(EntityManager entityManager) { @Override public CriteriaQuery buildCriteria(CriteriaBuilder builder) { - final NodeBuilder nodeBuilder = (NodeBuilder) builder; + final var nodeBuilder = (NodeBuilder) builder; return build( nodeBuilder.getQueryEngine() ); } @Override public SelectionSpecification validate(CriteriaBuilder builder) { - final NodeBuilder nodeBuilder = (NodeBuilder) builder; + final var nodeBuilder = (NodeBuilder) builder; final var statement = build( nodeBuilder.getQueryEngine() ); final var queryPart = statement.getQueryPart(); // For criteria queries, we have to validate the fetch structure here @@ -220,7 +214,7 @@ public SelectionSpecification validate(CriteriaBuilder builder) { * and produce the corresponding SQM tree. */ private static SqmSelectStatement resolveSqmTree(String hql, Class resultType, QueryEngine queryEngine) { - final HqlInterpretation hqlInterpretation = + final var hqlInterpretation = queryEngine.getInterpretationCache() .resolveHqlInterpretation( hql, resultType, queryEngine.getHqlTranslator() ); @@ -231,17 +225,17 @@ private static SqmSelectStatement resolveSqmTree(String hql, Class res // NOTE: this copy is to isolate the actual AST tree from the // one stored in the interpretation cache - return (SqmSelectStatement) hqlInterpretation - .getSqmStatement() - .copy( noParamCopyContext( SqmQuerySource.CRITERIA ) ); + return (SqmSelectStatement) + hqlInterpretation.getSqmStatement() + .copy( noParamCopyContext( SqmQuerySource.CRITERIA ) ); } /** - * Used during construction. Mainly used to group extracting and + * Used during construction. Mainly used to group extracting and * validating the root. */ private SqmRoot extractRoot(SqmSelectStatement sqmStatement, Class resultType, String hql) { - final Set> sqmRoots = sqmStatement.getQuerySpec().getRoots(); + final var sqmRoots = sqmStatement.getQuerySpec().getRoots(); if ( sqmRoots.isEmpty() ) { throw new QueryException( "Query did not define any roots", hql ); } @@ -249,7 +243,7 @@ private SqmRoot extractRoot(SqmSelectStatement sqmStatement, Class resu throw new QueryException( "Query defined multiple roots", hql ); } - final SqmRoot sqmRoot = sqmRoots.iterator().next(); + final var sqmRoot = sqmRoots.iterator().next(); validateRoot( sqmRoot, resultType, hql ); // for later, to support select lists //validateResultType( sqmStatement, sqmRoot, resultType, hql ); @@ -259,14 +253,15 @@ private SqmRoot extractRoot(SqmSelectStatement sqmStatement, Class resu } private void validateRoot(SqmRoot sqmRoot, Class resultType, String hql) { - if ( sqmRoot.getJavaType() != null - && !Map.class.isAssignableFrom( sqmRoot.getJavaType() ) - && !resultType.isAssignableFrom( sqmRoot.getJavaType() ) ) { + final var javaType = sqmRoot.getJavaType(); + if ( javaType != null + && !Map.class.isAssignableFrom( javaType ) + && !resultType.isAssignableFrom( javaType ) ) { throw new QueryException( String.format( Locale.ROOT, "Query root [%s] and result type [%s] are not compatible", - sqmRoot.getJavaType().getName(), + javaType.getName(), resultType.getName() ), hql @@ -297,8 +292,8 @@ private void validateResultType( } } - final SqmSelectClause sqmSelectClause = sqmStatement.getQuerySpec().getSelectClause(); - final List> sqmSelections = sqmSelectClause.getSelections(); + final var sqmSelectClause = sqmStatement.getQuerySpec().getSelectClause(); + final var sqmSelections = sqmSelectClause.getSelections(); if ( isEmpty( sqmSelections ) ) { // implicit select clause, verify that resultType matches the root type if ( resultType.isAssignableFrom( rootJavaType ) ) {