Skip to content

Commit 064c3c0

Browse files
committed
remove some last vestiges of NullsPrecedence
1 parent 4e1070f commit 064c3c0

17 files changed

+144
-145
lines changed

hibernate-core/src/main/java/org/hibernate/metamodel/mapping/internal/AbstractDomainPath.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import java.util.ArrayList;
88
import java.util.List;
99

10+
import jakarta.persistence.criteria.Nulls;
1011
import org.hibernate.metamodel.mapping.BasicValuedModelPart;
1112
import org.hibernate.metamodel.mapping.EmbeddableValuedModelPart;
1213
import org.hibernate.metamodel.mapping.EntityValuedModelPart;
@@ -15,7 +16,6 @@
1516
import org.hibernate.metamodel.mapping.SelectableMapping;
1617
import org.hibernate.metamodel.mapping.ordering.ast.DomainPath;
1718
import org.hibernate.metamodel.mapping.ordering.ast.OrderingExpression;
18-
import org.hibernate.query.NullPrecedence;
1919
import org.hibernate.query.SortDirection;
2020
import org.hibernate.sql.ast.spi.SqlAstCreationState;
2121
import org.hibernate.sql.ast.spi.SqlSelection;
@@ -117,7 +117,7 @@ public void apply(
117117
String collation,
118118
String modelPartName,
119119
SortDirection sortOrder,
120-
NullPrecedence nullPrecedence,
120+
Nulls nullPrecedence,
121121
SqlAstCreationState creationState) {
122122
apply(
123123
getReferenceModelPart(),
@@ -131,14 +131,14 @@ public void apply(
131131
);
132132
}
133133

134-
public void apply(
134+
private void apply(
135135
ModelPart referenceModelPart,
136136
QuerySpec ast,
137137
TableGroup tableGroup,
138138
String collation,
139139
String modelPartName,
140140
SortDirection sortOrder,
141-
NullPrecedence nullPrecedence,
141+
Nulls nullPrecedence,
142142
SqlAstCreationState creationState) {
143143
final BasicValuedModelPart basicPart = referenceModelPart.asBasicValuedModelPart();
144144
if ( basicPart != null ) {
@@ -193,7 +193,7 @@ private void addSortSpecification(
193193
String collation,
194194
String modelPartName,
195195
SortDirection sortOrder,
196-
NullPrecedence nullPrecedence,
196+
Nulls nullPrecedence,
197197
SqlAstCreationState creationState) {
198198
if ( embeddableValuedModelPart.getFetchableName()
199199
.equals( modelPartName ) || ELEMENT_TOKEN.equals( modelPartName ) ) {
@@ -231,7 +231,7 @@ private void addSortSpecification(
231231
TableGroup tableGroup,
232232
String collation,
233233
SortDirection sortOrder,
234-
NullPrecedence nullPrecedence,
234+
Nulls nullPrecedence,
235235
SqlAstCreationState creationState) {
236236
final TableReference tableReference = tableGroup.resolveTableReference( null, selection.getContainingTableExpression() );
237237
final Expression expression = creationState.getSqlExpressionResolver().resolveSqlExpression(
@@ -271,7 +271,7 @@ private void addSortSpecification(
271271
collation,
272272
creationState
273273
);
274-
ast.addSortSpecification( new SortSpecification( sortExpression, sortOrder, nullPrecedence.getJpaValue() ) );
274+
ast.addSortSpecification( new SortSpecification( sortExpression, sortOrder, nullPrecedence ) );
275275
}
276276

277277
private static boolean selectClauseDoesNotContainOrderExpression(Expression expression, SelectClause selectClause) {

hibernate-core/src/main/java/org/hibernate/metamodel/mapping/ordering/ast/ColumnReference.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@
44
*/
55
package org.hibernate.metamodel.mapping.ordering.ast;
66

7+
import jakarta.persistence.criteria.Nulls;
78
import org.hibernate.metamodel.UnsupportedMappingException;
8-
import org.hibernate.metamodel.mapping.MappingType;
99
import org.hibernate.metamodel.mapping.ModelPartContainer;
1010
import org.hibernate.metamodel.mapping.PluralAttributeMapping;
1111
import org.hibernate.metamodel.mapping.ordering.TranslationContext;
1212
import org.hibernate.persister.entity.EntityPersister;
13-
import org.hibernate.query.NullPrecedence;
1413
import org.hibernate.query.SortDirection;
1514
import org.hibernate.sql.ast.spi.SqlAstCreationState;
1615
import org.hibernate.sql.ast.spi.SqlExpressionResolver;
@@ -86,7 +85,7 @@ public void apply(
8685
String collation,
8786
String modelPartName,
8887
SortDirection sortOrder,
89-
NullPrecedence nullPrecedence,
88+
Nulls nullPrecedence,
9089
SqlAstCreationState creationState) {
9190
final Expression expression = resolve( ast, tableGroup, modelPartName, creationState );
9291
// It makes no sense to order by an expression multiple times
@@ -99,12 +98,9 @@ public void apply(
9998
}
10099
}
101100

102-
final Expression sortExpression = OrderingExpression.applyCollation(
103-
expression,
104-
collation,
105-
creationState
106-
);
107-
ast.addSortSpecification( new SortSpecification( sortExpression, sortOrder, nullPrecedence.getJpaValue() ) );
101+
final Expression sortExpression =
102+
OrderingExpression.applyCollation( expression, collation, creationState );
103+
ast.addSortSpecification( new SortSpecification( sortExpression, sortOrder, nullPrecedence ) );
108104
}
109105

110106
TableReference getTableReference(TableGroup tableGroup) {
@@ -114,9 +110,8 @@ TableReference getTableReference(TableGroup tableGroup) {
114110
return tableGroup.getPrimaryTableReference();
115111
}
116112

117-
final MappingType elementMappingType = pluralAttribute.getElementDescriptor().getPartMappingType();
118-
119-
if ( elementMappingType instanceof EntityPersister entityPersister ) {
113+
if ( pluralAttribute.getElementDescriptor().getPartMappingType()
114+
instanceof EntityPersister entityPersister ) {
120115
final String tableName = entityPersister.getTableNameForColumn( columnExpression );
121116
return tableGroup.getTableReference( tableGroup.getNavigablePath(), tableName );
122117
}

hibernate-core/src/main/java/org/hibernate/metamodel/mapping/ordering/ast/FunctionExpression.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
import java.util.Collections;
99
import java.util.List;
1010

11+
import jakarta.persistence.criteria.Nulls;
1112
import org.hibernate.metamodel.mapping.CollectionPart;
1213
import org.hibernate.metamodel.mapping.internal.AbstractDomainPath;
13-
import org.hibernate.query.NullPrecedence;
1414
import org.hibernate.metamodel.model.domain.ReturnableType;
1515
import org.hibernate.query.SortDirection;
1616
import org.hibernate.query.sqm.function.FunctionRenderer;
@@ -93,15 +93,14 @@ public void apply(
9393
String collation,
9494
String modelPartName,
9595
SortDirection sortOrder,
96-
NullPrecedence nullPrecedence,
96+
Nulls nullPrecedence,
9797
SqlAstCreationState creationState) {
98-
final SelfRenderingFunctionSqlAstExpression expression = resolve( ast, tableGroup, modelPartName, creationState );
9998
final Expression sortExpression = OrderingExpression.applyCollation(
100-
expression,
99+
resolve( ast, tableGroup, modelPartName, creationState ),
101100
collation,
102101
creationState
103102
);
104-
ast.addSortSpecification( new SortSpecification( sortExpression, sortOrder, nullPrecedence.getJpaValue() ) );
103+
ast.addSortSpecification( new SortSpecification( sortExpression, sortOrder, nullPrecedence ) );
105104
}
106105

107106
@Override

hibernate-core/src/main/java/org/hibernate/metamodel/mapping/ordering/ast/OrderingExpression.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
*/
55
package org.hibernate.metamodel.mapping.ordering.ast;
66

7+
import jakarta.persistence.criteria.Nulls;
78
import org.hibernate.query.NullPrecedence;
89
import org.hibernate.query.SortDirection;
910
import org.hibernate.query.spi.QueryEngine;
@@ -30,15 +31,29 @@ public interface OrderingExpression extends Node {
3031
/**
3132
* Apply the SQL AST sort-specifications associated with this ordering-expression
3233
*/
33-
void apply(
34+
@Deprecated(since = "7.0", forRemoval = true)
35+
default void apply(
3436
QuerySpec ast,
3537
TableGroup tableGroup,
3638
String collation,
3739
String modelPartName,
3840
SortDirection sortOrder,
3941
NullPrecedence nullPrecedence,
40-
SqlAstCreationState creationState);
42+
SqlAstCreationState creationState) {
43+
apply( ast, tableGroup, collation, modelPartName, sortOrder, nullPrecedence.getJpaValue(), creationState );
44+
}
4145

46+
/**
47+
* Apply the SQL AST sort-specifications associated with this ordering-expression
48+
*/
49+
void apply(
50+
QuerySpec ast,
51+
TableGroup tableGroup,
52+
String collation,
53+
String modelPartName,
54+
SortDirection sortOrder,
55+
Nulls nullPrecedence,
56+
SqlAstCreationState creationState);
4257

4358
static Expression applyCollation(
4459
Expression expression,

hibernate-core/src/main/java/org/hibernate/metamodel/mapping/ordering/ast/OrderingSpecification.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*/
55
package org.hibernate.metamodel.mapping.ordering.ast;
66

7-
import org.hibernate.query.NullPrecedence;
7+
import jakarta.persistence.criteria.Nulls;
88
import org.hibernate.query.SortDirection;
99

1010
/**
@@ -17,7 +17,7 @@ public class OrderingSpecification implements Node {
1717

1818
private String collation;
1919
private SortDirection sortOrder = SortDirection.ASCENDING;
20-
private NullPrecedence nullPrecedence = NullPrecedence.NONE;
20+
private Nulls nullPrecedence = Nulls.NONE;
2121
private String orderByValue;
2222

2323
public OrderingSpecification(OrderingExpression orderingExpression, String orderByValue) {
@@ -45,11 +45,11 @@ public void setSortOrder(SortDirection sortOrder) {
4545
this.sortOrder = sortOrder;
4646
}
4747

48-
public NullPrecedence getNullPrecedence() {
48+
public Nulls getNullPrecedence() {
4949
return nullPrecedence;
5050
}
5151

52-
public void setNullPrecedence(NullPrecedence nullPrecedence) {
52+
public void setNullPrecedence(Nulls nullPrecedence) {
5353
this.nullPrecedence = nullPrecedence;
5454
}
5555

hibernate-core/src/main/java/org/hibernate/metamodel/mapping/ordering/ast/ParseTreeVisitor.java

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,10 @@
55
package org.hibernate.metamodel.mapping.ordering.ast;
66

77
import java.util.ArrayList;
8-
import java.util.Collections;
98
import java.util.List;
109
import java.util.Locale;
1110

12-
import org.hibernate.internal.util.QuotingHelper;
13-
import org.hibernate.query.NullPrecedence;
11+
import jakarta.persistence.criteria.Nulls;
1412
import org.hibernate.query.SortDirection;
1513
import org.hibernate.grammars.ordering.OrderingParser;
1614
import org.hibernate.grammars.ordering.OrderingParserBaseVisitor;
@@ -22,6 +20,9 @@
2220
import org.antlr.v4.runtime.tree.ParseTree;
2321
import org.antlr.v4.runtime.tree.TerminalNode;
2422

23+
import static java.util.Collections.singletonList;
24+
import static org.hibernate.internal.util.QuotingHelper.unquoteIdentifier;
25+
2526
/**
2627
* @author Steve Ebersole
2728
*/
@@ -41,18 +42,16 @@ public List<OrderingSpecification> visitOrderByFragment(OrderingParser.OrderByFr
4142
final int size = ctx.getChildCount();
4243
// Shift 1 bit instead of division by 2
4344
final int specificationCount = ( size + 1 ) >> 1;
44-
4545
if ( specificationCount == 1 ) {
46-
return Collections.singletonList( visitSortSpecification( (OrderingParser.SortSpecificationContext) ctx.getChild( 0 ) ) );
46+
return singletonList( visitSortSpecification( (OrderingParser.SortSpecificationContext) ctx.getChild( 0 ) ) );
4747
}
48-
49-
final List<OrderingSpecification> specifications = new ArrayList<>( specificationCount );
50-
51-
for ( int i = 0; i < size; i += 2 ) {
52-
specifications.add( visitSortSpecification( (OrderingParser.SortSpecificationContext) ctx.getChild( i ) ) );
48+
else {
49+
final List<OrderingSpecification> specifications = new ArrayList<>( specificationCount );
50+
for ( int i = 0; i < size; i += 2 ) {
51+
specifications.add( visitSortSpecification( (OrderingParser.SortSpecificationContext) ctx.getChild( i ) ) );
52+
}
53+
return specifications;
5354
}
54-
55-
return specifications;
5655
}
5756

5857
@Override
@@ -103,10 +102,10 @@ public OrderingSpecification visitSortSpecification(OrderingParser.SortSpecifica
103102
final ParseTree parseTree = parsedSpec.getChild( i );
104103
if ( parseTree instanceof OrderingParser.NullsPrecedenceContext nullsCtx ) {
105104
if ( ( (TerminalNode) nullsCtx.getChild( 1 ) ).getSymbol().getType() == OrderingParser.FIRST ) {
106-
result.setNullPrecedence( NullPrecedence.FIRST );
105+
result.setNullPrecedence( Nulls.FIRST );
107106
}
108107
else {
109-
result.setNullPrecedence( NullPrecedence.LAST );
108+
result.setNullPrecedence( Nulls.LAST );
110109
}
111110
}
112111
}
@@ -216,16 +215,11 @@ public String visitCollationSpecification(OrderingParser.CollationSpecificationC
216215

217216
@Override
218217
public Object visitTerminal(TerminalNode node) {
219-
if ( node.getSymbol().getType() == OrderingParser.EOF ) {
220-
return null;
221-
}
222-
switch ( node.getSymbol().getType() ) {
223-
case OrderingParser.IDENTIFIER:
224-
return node.getText();
225-
case OrderingParser.QUOTED_IDENTIFIER:
226-
return QuotingHelper.unquoteIdentifier( node.getText() );
227-
default:
228-
throw new ParsingException( "Unexpected terminal node [" + node.getText() + "]");
229-
}
218+
return switch ( node.getSymbol().getType() ) {
219+
case OrderingParser.EOF -> null;
220+
case OrderingParser.IDENTIFIER -> node.getText();
221+
case OrderingParser.QUOTED_IDENTIFIER -> unquoteIdentifier( node.getText() );
222+
default -> throw new ParsingException( "Unexpected terminal node [" + node.getText() + "]" );
223+
};
230224
}
231225
}

hibernate-core/src/main/java/org/hibernate/metamodel/mapping/ordering/ast/SelfRenderingOrderingExpression.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*/
55
package org.hibernate.metamodel.mapping.ordering.ast;
66

7-
import org.hibernate.query.NullPrecedence;
7+
import jakarta.persistence.criteria.Nulls;
88
import org.hibernate.query.SortDirection;
99
import org.hibernate.sql.ast.spi.SqlAstCreationState;
1010
import org.hibernate.sql.ast.tree.expression.Expression;
@@ -43,7 +43,7 @@ public void apply(
4343
String collation,
4444
String modelPartName,
4545
SortDirection sortOrder,
46-
NullPrecedence nullPrecedence,
46+
Nulls nullPrecedence,
4747
SqlAstCreationState creationState) {
4848
final Expression expression = resolve( ast, tableGroup, modelPartName, creationState );
4949
// It makes no sense to order by an expression multiple times
@@ -55,13 +55,10 @@ public void apply(
5555
}
5656
}
5757
}
58-
final Expression sortExpression = OrderingExpression.applyCollation(
59-
expression,
60-
collation,
61-
creationState
62-
);
6358

64-
ast.addSortSpecification( new SortSpecification( sortExpression, sortOrder, nullPrecedence.getJpaValue() ) );
59+
final Expression sortExpression =
60+
OrderingExpression.applyCollation( expression, collation, creationState );
61+
ast.addSortSpecification( new SortSpecification( sortExpression, sortOrder, nullPrecedence ) );
6562
}
6663

6764
@Override

0 commit comments

Comments
 (0)