Skip to content

Commit 36a6bdb

Browse files
committed
use 'var' in XxxxxSpecificationImpl
1 parent 7bd8e3b commit 36a6bdb

File tree

2 files changed

+37
-44
lines changed

2 files changed

+37
-44
lines changed

hibernate-core/src/main/java/org/hibernate/query/specification/internal/MutationSpecificationImpl.java

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import org.hibernate.query.IllegalMutationQueryException;
2121
import org.hibernate.query.MutationQuery;
2222
import org.hibernate.query.restriction.Restriction;
23-
import org.hibernate.query.spi.HqlInterpretation;
2423
import org.hibernate.query.spi.QueryEngine;
2524
import org.hibernate.query.sqm.NodeBuilder;
2625
import org.hibernate.query.sqm.SqmQuerySource;
@@ -43,7 +42,7 @@
4342
import static org.hibernate.query.sqm.tree.SqmCopyContext.noParamCopyContext;
4443

4544
/**
46-
* Standard implementation of MutationSpecification
45+
* Standard implementation of {@link MutationSpecification}.
4746
*
4847
* @author Steve Ebersole
4948
*/
@@ -95,10 +94,9 @@ public TypedQueryReference<Void> reference() {
9594
@Override
9695
public MutationSpecification<T> restrict(Restriction<? super T> restriction) {
9796
specifications.add( (sqmStatement, mutationTargetRoot) -> {
98-
final SqmPredicate sqmPredicate = (SqmPredicate) restriction.toPredicate(
99-
mutationTargetRoot,
100-
sqmStatement.nodeBuilder()
101-
);
97+
final var sqmPredicate = (SqmPredicate)
98+
restriction.toPredicate( mutationTargetRoot,
99+
sqmStatement.nodeBuilder() );
102100
sqmStatement.applyPredicate( sqmPredicate );
103101
} );
104102
return this;
@@ -123,7 +121,7 @@ public MutationQuery createQuery(StatelessSession session) {
123121

124122
public MutationQuery createQuery(SharedSessionContract session) {
125123
final var sessionImpl = session.unwrap(SharedSessionContractImplementor.class);
126-
final SqmDeleteOrUpdateStatement<T> sqmStatement = build( sessionImpl.getFactory().getQueryEngine() );
124+
final var sqmStatement = build( sessionImpl.getFactory().getQueryEngine() );
127125
return new SqmQueryImpl<>( sqmStatement, true, null, sessionImpl );
128126
}
129127

@@ -153,13 +151,13 @@ public MutationQuery createQuery(EntityManager entityManager) {
153151

154152
@Override
155153
public CommonAbstractCriteria buildCriteria(CriteriaBuilder builder) {
156-
final NodeBuilder nodeBuilder = (NodeBuilder) builder;
154+
final var nodeBuilder = (NodeBuilder) builder;
157155
return build( nodeBuilder.getQueryEngine() );
158156
}
159157

160158
@Override
161159
public MutationSpecification<T> validate(CriteriaBuilder builder) {
162-
final NodeBuilder nodeBuilder = (NodeBuilder) builder;
160+
final var nodeBuilder = (NodeBuilder) builder;
163161
final var statement = build( nodeBuilder.getQueryEngine() );
164162
( (AbstractSqmDmlStatement<?>) statement ).validate( hql );
165163
return this;
@@ -170,36 +168,36 @@ public MutationSpecification<T> validate(CriteriaBuilder builder) {
170168
* and produce the corresponding SQM tree.
171169
*/
172170
private static <T> SqmDeleteOrUpdateStatement<T> resolveSqmTree(String hql, QueryEngine queryEngine) {
173-
final HqlInterpretation<T> hqlInterpretation =
171+
final var hqlInterpretation =
174172
queryEngine.getInterpretationCache()
175-
.resolveHqlInterpretation( hql, null, queryEngine.getHqlTranslator() );
173+
.<T>resolveHqlInterpretation( hql, null, queryEngine.getHqlTranslator() );
176174

177175
if ( !SqmUtil.isRestrictedMutation( hqlInterpretation.getSqmStatement() ) ) {
178176
throw new IllegalMutationQueryException( "Expecting a delete or update query, but found '" + hql + "'", hql);
179177
}
180178

181179
// NOTE: this copy is to isolate the actual AST tree from the
182180
// one stored in the interpretation cache
183-
return (SqmDeleteOrUpdateStatement<T>) hqlInterpretation
184-
.getSqmStatement()
185-
.copy( noParamCopyContext( SqmQuerySource.CRITERIA ) );
181+
return (SqmDeleteOrUpdateStatement<T>)
182+
hqlInterpretation.getSqmStatement()
183+
.copy( noParamCopyContext( SqmQuerySource.CRITERIA ) );
186184
}
187185

188186
/**
189-
* Used during construction. Mainly used to group extracting and
187+
* Used during construction. Mainly used to group extracting and
190188
* validating the root.
191189
*/
192190
private static <T> SqmRoot<T> resolveSqmRoot(
193191
SqmDeleteOrUpdateStatement<T> sqmStatement,
194192
Class<T> mutationTarget) {
195-
final SqmRoot<T> mutationTargetRoot = sqmStatement.getTarget();
196-
if ( mutationTargetRoot.getJavaType() != null
197-
&& !mutationTarget.isAssignableFrom( mutationTargetRoot.getJavaType() ) ) {
193+
final var mutationTargetRoot = sqmStatement.getTarget();
194+
final var javaType = mutationTargetRoot.getJavaType();
195+
if ( javaType != null && !mutationTarget.isAssignableFrom( javaType ) ) {
198196
throw new IllegalArgumentException(
199197
String.format(
200198
Locale.ROOT,
201199
"Mutation target types do not match : %s / %s",
202-
mutationTargetRoot.getJavaType().getName(),
200+
javaType.getName(),
203201
mutationTarget.getName()
204202
)
205203
);

hibernate-core/src/main/java/org/hibernate/query/specification/internal/SelectionSpecificationImpl.java

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -20,35 +20,29 @@
2020
import org.hibernate.query.specification.SelectionSpecification;
2121
import org.hibernate.query.restriction.Path;
2222
import org.hibernate.query.restriction.Restriction;
23-
import org.hibernate.query.spi.HqlInterpretation;
2423
import org.hibernate.query.spi.QueryEngine;
2524
import org.hibernate.query.sqm.NodeBuilder;
2625
import org.hibernate.query.sqm.SqmQuerySource;
2726
import org.hibernate.query.sqm.internal.SqmSelectionQueryImpl;
2827
import org.hibernate.query.sqm.internal.SqmUtil;
2928
import org.hibernate.query.sqm.tree.from.SqmRoot;
30-
import org.hibernate.query.sqm.tree.predicate.SqmPredicate;
3129
import org.hibernate.query.sqm.tree.select.SqmOrderByClause;
32-
import org.hibernate.query.sqm.tree.select.SqmSelectClause;
3330
import org.hibernate.query.sqm.tree.select.SqmSelectStatement;
34-
import org.hibernate.query.sqm.tree.select.SqmSelection;
35-
import org.hibernate.query.sqm.tree.select.SqmSortSpecification;
3631
import org.hibernate.type.descriptor.java.JavaType;
3732

3833
import java.util.ArrayList;
3934
import java.util.Collections;
4035
import java.util.List;
4136
import java.util.Locale;
4237
import java.util.Map;
43-
import java.util.Set;
4438
import java.util.function.BiConsumer;
4539

4640
import static org.hibernate.internal.util.collections.CollectionHelper.isEmpty;
4741
import static org.hibernate.query.sqm.internal.SqmUtil.validateCriteriaQuery;
4842
import static org.hibernate.query.sqm.tree.SqmCopyContext.noParamCopyContext;
4943

5044
/**
51-
* Standard implementation of SelectionSpecification
45+
* Standard implementation of {@link SelectionSpecification}.
5246
*
5347
* @author Steve Ebersole
5448
*/
@@ -99,7 +93,7 @@ public TypedQueryReference<T> reference() {
9993
@Override
10094
public SelectionSpecification<T> restrict(Restriction<? super T> restriction) {
10195
specifications.add( (sqmStatement, root) -> {
102-
final SqmPredicate sqmPredicate = SqmUtil.restriction( sqmStatement, resultType, restriction );
96+
final var sqmPredicate = SqmUtil.restriction( sqmStatement, resultType, restriction );
10397
sqmStatement.getQuerySpec().applyPredicate( sqmPredicate );
10498
} );
10599
return this;
@@ -145,7 +139,7 @@ public final SelectionSpecification<T> resort(List<? extends Order<? super T>> o
145139
}
146140

147141
private static <T> void addOrder(Order<? super T> order, SqmSelectStatement<T> sqmStatement) {
148-
final SqmSortSpecification sortSpecification = SqmUtil.sortSpecification( sqmStatement, order );
142+
final var sortSpecification = SqmUtil.sortSpecification( sqmStatement, order );
149143
final var querySpec = sqmStatement.getQuerySpec();
150144
if ( querySpec.getOrderByClause() == null ) {
151145
querySpec.setOrderByClause( new SqmOrderByClause() );
@@ -165,7 +159,7 @@ public SelectionQuery<T> createQuery(StatelessSession session) {
165159

166160
public SelectionQuery<T> createQuery(SharedSessionContract session) {
167161
final var sessionImpl = session.unwrap(SharedSessionContractImplementor.class);
168-
final SqmSelectStatement<T> sqmStatement = build( sessionImpl.getFactory().getQueryEngine() );
162+
final var sqmStatement = build( sessionImpl.getFactory().getQueryEngine() );
169163
return new SqmSelectionQueryImpl<>( sqmStatement, true, resultType, sessionImpl );
170164
}
171165

@@ -199,13 +193,13 @@ public SelectionQuery<T> createQuery(EntityManager entityManager) {
199193

200194
@Override
201195
public CriteriaQuery<T> buildCriteria(CriteriaBuilder builder) {
202-
final NodeBuilder nodeBuilder = (NodeBuilder) builder;
196+
final var nodeBuilder = (NodeBuilder) builder;
203197
return build( nodeBuilder.getQueryEngine() );
204198
}
205199

206200
@Override
207201
public SelectionSpecification<T> validate(CriteriaBuilder builder) {
208-
final NodeBuilder nodeBuilder = (NodeBuilder) builder;
202+
final var nodeBuilder = (NodeBuilder) builder;
209203
final var statement = build( nodeBuilder.getQueryEngine() );
210204
final var queryPart = statement.getQueryPart();
211205
// For criteria queries, we have to validate the fetch structure here
@@ -220,7 +214,7 @@ public SelectionSpecification<T> validate(CriteriaBuilder builder) {
220214
* and produce the corresponding SQM tree.
221215
*/
222216
private static <T> SqmSelectStatement<T> resolveSqmTree(String hql, Class<T> resultType, QueryEngine queryEngine) {
223-
final HqlInterpretation<T> hqlInterpretation =
217+
final var hqlInterpretation =
224218
queryEngine.getInterpretationCache()
225219
.resolveHqlInterpretation( hql, resultType, queryEngine.getHqlTranslator() );
226220

@@ -231,25 +225,25 @@ private static <T> SqmSelectStatement<T> resolveSqmTree(String hql, Class<T> res
231225

232226
// NOTE: this copy is to isolate the actual AST tree from the
233227
// one stored in the interpretation cache
234-
return (SqmSelectStatement<T>) hqlInterpretation
235-
.getSqmStatement()
236-
.copy( noParamCopyContext( SqmQuerySource.CRITERIA ) );
228+
return (SqmSelectStatement<T>)
229+
hqlInterpretation.getSqmStatement()
230+
.copy( noParamCopyContext( SqmQuerySource.CRITERIA ) );
237231
}
238232

239233
/**
240-
* Used during construction. Mainly used to group extracting and
234+
* Used during construction. Mainly used to group extracting and
241235
* validating the root.
242236
*/
243237
private SqmRoot<T> extractRoot(SqmSelectStatement<T> sqmStatement, Class<T> resultType, String hql) {
244-
final Set<SqmRoot<?>> sqmRoots = sqmStatement.getQuerySpec().getRoots();
238+
final var sqmRoots = sqmStatement.getQuerySpec().getRoots();
245239
if ( sqmRoots.isEmpty() ) {
246240
throw new QueryException( "Query did not define any roots", hql );
247241
}
248242
if ( sqmRoots.size() > 1 ) {
249243
throw new QueryException( "Query defined multiple roots", hql );
250244
}
251245

252-
final SqmRoot<?> sqmRoot = sqmRoots.iterator().next();
246+
final var sqmRoot = sqmRoots.iterator().next();
253247
validateRoot( sqmRoot, resultType, hql );
254248
// for later, to support select lists
255249
//validateResultType( sqmStatement, sqmRoot, resultType, hql );
@@ -259,14 +253,15 @@ private SqmRoot<T> extractRoot(SqmSelectStatement<T> sqmStatement, Class<T> resu
259253
}
260254

261255
private void validateRoot(SqmRoot<?> sqmRoot, Class<T> resultType, String hql) {
262-
if ( sqmRoot.getJavaType() != null
263-
&& !Map.class.isAssignableFrom( sqmRoot.getJavaType() )
264-
&& !resultType.isAssignableFrom( sqmRoot.getJavaType() ) ) {
256+
final var javaType = sqmRoot.getJavaType();
257+
if ( javaType != null
258+
&& !Map.class.isAssignableFrom( javaType )
259+
&& !resultType.isAssignableFrom( javaType ) ) {
265260
throw new QueryException(
266261
String.format(
267262
Locale.ROOT,
268263
"Query root [%s] and result type [%s] are not compatible",
269-
sqmRoot.getJavaType().getName(),
264+
javaType.getName(),
270265
resultType.getName()
271266
),
272267
hql
@@ -297,8 +292,8 @@ private void validateResultType(
297292
}
298293
}
299294

300-
final SqmSelectClause sqmSelectClause = sqmStatement.getQuerySpec().getSelectClause();
301-
final List<SqmSelection<?>> sqmSelections = sqmSelectClause.getSelections();
295+
final var sqmSelectClause = sqmStatement.getQuerySpec().getSelectClause();
296+
final var sqmSelections = sqmSelectClause.getSelections();
302297
if ( isEmpty( sqmSelections ) ) {
303298
// implicit select clause, verify that resultType matches the root type
304299
if ( resultType.isAssignableFrom( rootJavaType ) ) {

0 commit comments

Comments
 (0)