Skip to content

Commit 97ca1cc

Browse files
author
Bart Koelman
committed
Narrowed some types in the filter parse tree that were too wide. The parsers already constrained the input, so API users should not observe any effects of this change.
1 parent c6e9fd4 commit 97ca1cc

File tree

7 files changed

+12
-14
lines changed

7 files changed

+12
-14
lines changed

src/JsonApiDotNetCore/Queries/Expressions/FilterExpression.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
namespace JsonApiDotNetCore.Queries.Expressions
22
{
33
/// <summary>
4-
/// Represents the base type for filter functions.
4+
/// Represents the base type for filter functions that return a boolean value.
55
/// </summary>
66
public abstract class FilterExpression : FunctionExpression
77
{

src/JsonApiDotNetCore/Queries/Expressions/FunctionExpression.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
namespace JsonApiDotNetCore.Queries.Expressions
22
{
33
/// <summary>
4-
/// Represents the base type for functions.
4+
/// Represents the base type for functions that return a value.
55
/// </summary>
66
public abstract class FunctionExpression : QueryExpression
77
{

src/JsonApiDotNetCore/Queries/Expressions/LogicalExpression.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ namespace JsonApiDotNetCore.Queries.Expressions
1414
public class LogicalExpression : FilterExpression
1515
{
1616
public LogicalOperator Operator { get; }
17-
public IReadOnlyCollection<QueryExpression> Terms { get; }
17+
public IReadOnlyCollection<FilterExpression> Terms { get; }
1818

19-
public LogicalExpression(LogicalOperator @operator, IReadOnlyCollection<QueryExpression> terms)
19+
public LogicalExpression(LogicalOperator @operator, IReadOnlyCollection<FilterExpression> terms)
2020
{
2121
ArgumentGuard.NotNull(terms, nameof(terms));
2222

src/JsonApiDotNetCore/Queries/Expressions/NotExpression.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ namespace JsonApiDotNetCore.Queries.Expressions
99
[PublicAPI]
1010
public class NotExpression : FilterExpression
1111
{
12-
public QueryExpression Child { get; }
12+
public FilterExpression Child { get; }
1313

14-
public NotExpression(QueryExpression child)
14+
public NotExpression(FilterExpression child)
1515
{
1616
ArgumentGuard.NotNull(child, nameof(child));
1717

src/JsonApiDotNetCore/Queries/Expressions/QueryExpressionRewriter.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public override QueryExpression VisitLogical(LogicalExpression expression, TArgu
5454
{
5555
if (expression != null)
5656
{
57-
IReadOnlyCollection<QueryExpression> newTerms = VisitSequence(expression.Terms, argument);
57+
IReadOnlyCollection<FilterExpression> newTerms = VisitSequence(expression.Terms, argument);
5858

5959
if (newTerms.Count == 1)
6060
{
@@ -75,9 +75,7 @@ public override QueryExpression VisitNot(NotExpression expression, TArgument arg
7575
{
7676
if (expression != null)
7777
{
78-
QueryExpression newChild = Visit(expression.Child, argument);
79-
80-
if (newChild != null)
78+
if (Visit(expression.Child, argument) is FilterExpression newChild)
8179
{
8280
var newExpression = new NotExpression(newChild);
8381
return newExpression.Equals(expression) ? expression : newExpression;

src/JsonApiDotNetCore/Queries/Internal/Parsing/FilterParser.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ protected LogicalExpression ParseLogical(string operatorName)
106106
EatText(operatorName);
107107
EatSingleCharacterToken(TokenKind.OpenParen);
108108

109-
var terms = new List<QueryExpression>();
109+
var terms = new List<FilterExpression>();
110110

111111
FilterExpression term = ParseFilter();
112112
terms.Add(term);

test/JsonApiDotNetCoreExampleTests/IntegrationTests/CompositeKeys/CarExpressionRewriter.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ private static bool IsCarId(PropertyInfo property)
8383

8484
private QueryExpression RewriteFilterOnCarStringIds(ResourceFieldChainExpression existingCarIdChain, IEnumerable<string> carStringIds)
8585
{
86-
var outerTerms = new List<QueryExpression>();
86+
var outerTerms = new List<FilterExpression>();
8787

8888
foreach (string carStringId in carStringIds)
8989
{
@@ -92,14 +92,14 @@ private QueryExpression RewriteFilterOnCarStringIds(ResourceFieldChainExpression
9292
StringId = carStringId
9393
};
9494

95-
QueryExpression keyComparison = CreateEqualityComparisonOnCompositeKey(existingCarIdChain, tempCar.RegionId, tempCar.LicensePlate);
95+
FilterExpression keyComparison = CreateEqualityComparisonOnCompositeKey(existingCarIdChain, tempCar.RegionId, tempCar.LicensePlate);
9696
outerTerms.Add(keyComparison);
9797
}
9898

9999
return outerTerms.Count == 1 ? outerTerms[0] : new LogicalExpression(LogicalOperator.Or, outerTerms);
100100
}
101101

102-
private QueryExpression CreateEqualityComparisonOnCompositeKey(ResourceFieldChainExpression existingCarIdChain, long regionIdValue,
102+
private FilterExpression CreateEqualityComparisonOnCompositeKey(ResourceFieldChainExpression existingCarIdChain, long regionIdValue,
103103
string licensePlateValue)
104104
{
105105
ResourceFieldChainExpression regionIdChain = ReplaceLastAttributeInChain(existingCarIdChain, _regionIdAttribute);

0 commit comments

Comments
 (0)