Skip to content

Commit 0b54111

Browse files
m-abdelmonemrobward-ms
authored andcommitted
Expose UriQueryExpressionParser.ParseFilter as a public API (#805)
Expose UriQueryExpressionParser and QueryToken object model publicly
1 parent 170827a commit 0b54111

46 files changed

Lines changed: 853 additions & 97 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎src/Microsoft.OData.Client/ALinq/ResourceBinder.cs‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ namespace Microsoft.OData.Client
2121
using Microsoft.OData;
2222
using Microsoft.OData.UriParser;
2323
using Microsoft.OData.Edm;
24-
24+
using PathSegmentToken = Microsoft.OData.Client.ALinq.UriParser.PathSegmentToken;
25+
using NonSystemToken = Microsoft.OData.Client.ALinq.UriParser.NonSystemToken;
2526
#endregion Namespaces
2627

2728
///

‎src/Microsoft.OData.Client/Build.Portable/Microsoft.OData.Client.Portable.csproj‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,8 @@
160160
<Compile Include="$(EnlistmentRoot)\src\Microsoft.OData.Core\UriParser\SyntacticAst\QueryToken.cs">
161161
<Link>ALinq\UriParser\SyntacticAst\QueryToken.csLink>
162162
Compile>
163-
<Compile Include="$(EnlistmentRoot)\src\Microsoft.OData.Core\UriParser\TreeNodeKinds\QueryTokenKind.cs">
164-
<Link>ALinq\UriParser\TreeNodeKinds\QueryTokenKind.csLink>
163+
<Compile Include="$(EnlistmentRoot)\src\Microsoft.OData.Core\UriParser\SyntacticAst\QueryTokenKind.cs">
164+
<Link>ALinq\UriParser\SyntacticAst\QueryTokenKind.csLink>
165165
Compile>
166166
<Compile Include="$(EnlistmentRoot)\src\Microsoft.OData.Core\UriParser\SyntacticAst\RangeVariableToken.cs">
167167
<Link>ALinq\UriParser\SyntacticAst\RangeVariableToken.csLink>

‎src/Microsoft.OData.Client/Microsoft.OData.Client.csproj‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,8 @@
166166
<Compile Include="$(EnlistmentRoot)\src\Microsoft.OData.Core\UriParser\SyntacticAst\QueryToken.cs">
167167
<Link>ALinq\UriParser\SyntacticAst\QueryToken.csLink>
168168
Compile>
169-
<Compile Include="$(EnlistmentRoot)\src\Microsoft.OData.Core\UriParser\TreeNodeKinds\QueryTokenKind.cs">
170-
<Link>ALinq\UriParser\TreeNodeKinds\QueryTokenKind.csLink>
169+
<Compile Include="$(EnlistmentRoot)\src\Microsoft.OData.Core\UriParser\SyntacticAst\QueryTokenKind.cs">
170+
<Link>ALinq\UriParser\SyntacticAst\QueryTokenKind.csLink>
171171
Compile>
172172
<Compile Include="$(EnlistmentRoot)\src\Microsoft.OData.Core\UriParser\SyntacticAst\RangeVariableToken.cs">
173173
<Link>ALinq\UriParser\SyntacticAst\RangeVariableToken.csLink>

‎src/Microsoft.OData.Core/Build.Net35/Microsoft.OData.Core.NetFX35.csproj‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1312,6 +1312,9 @@
13121312
<Compile Include="$(ODataCrossTargettingSourcePath)\UriParser\SyntacticAst\QueryToken.cs">
13131313
<Link>Microsoft\OData\Core\UriParser\SyntacticAst\QueryToken.csLink>
13141314
Compile>
1315+
<Compile Include="$(ODataCrossTargettingSourcePath)\UriParser\SyntacticAst\QueryTokenKind.cs">
1316+
<Link>Microsoft\OData\Core\UriParser\SyntacticAst\QueryTokenKind.csLink>
1317+
Compile>
13151318
<Compile Include="$(ODataCrossTargettingSourcePath)\UriParser\SyntacticAst\RangeVariableToken.cs">
13161319
<Link>Microsoft\OData\Core\UriParser\SyntacticAst\RangeVariableToken.csLink>
13171320
Compile>
@@ -1339,9 +1342,6 @@
13391342
<Compile Include="$(ODataCrossTargettingSourcePath)\UriParser\TreeNodeKinds\QueryNodeKind.cs">
13401343
<Link>Microsoft\OData\Core\UriParser\TreeNodeKinds\QueryNodeKind.csLink>
13411344
Compile>
1342-
<Compile Include="$(ODataCrossTargettingSourcePath)\UriParser\TreeNodeKinds\QueryTokenKind.cs">
1343-
<Link>Microsoft\OData\Core\UriParser\TreeNodeKinds\QueryTokenKind.csLink>
1344-
Compile>
13451345
<Compile Include="$(ODataCrossTargettingSourcePath)\UriParser\TreeNodeKinds\RequestTargetKind.cs">
13461346
<Link>Microsoft\OData\Core\UriParser\TreeNodeKinds\RequestTargetKind.csLink>
13471347
Compile>

‎src/Microsoft.OData.Core/Microsoft.OData.Core.csproj‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,7 @@
542542
<Compile Include="UriParser\TreeNodeKinds\BinaryOperatorKind.cs" />
543543
<Compile Include="UriParser\TreeNodeKinds\ExpressionTokenKind.cs" />
544544
<Compile Include="UriParser\TreeNodeKinds\QueryNodeKind.cs" />
545-
<Compile Include="UriParser\TreeNodeKinds\QueryTokenKind.cs" />
545+
<Compile Include="UriParser\SyntacticAst\QueryTokenKind.cs" />
546546
<Compile Include="UriParser\TreeNodeKinds\RequestTargetKind.cs" />
547547
<Compile Include="UriParser\TreeNodeKinds\UnaryOperatorKind.cs" />
548548
<Compile Include="UriParser\TypePromotionUtils.cs" />

‎src/Microsoft.OData.Core/UriParser/Aggregation/AggregateExpressionToken.cs‎

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ namespace Microsoft.OData.UriParser.Aggregation
1414
#endif
1515
using Microsoft.OData.UriParser;
1616

17-
internal sealed class AggregateExpressionToken : QueryToken
17+
///
18+
/// Query token representing an Aggregate expression.
19+
///
20+
public sealed class AggregateExpressionToken : QueryToken
1821
{
1922
private readonly QueryToken expression;
2023

@@ -24,6 +27,12 @@ internal sealed class AggregateExpressionToken : QueryToken
2427

2528
private readonly string alias;
2629

30+
///
31+
/// Create an AggregateExpressionToken.
32+
///
33+
/// The aggregate expression.
34+
/// The aggregation method.
35+
/// The alias for this query token.
2736
public AggregateExpressionToken(QueryToken expression, AggregationMethod method, string alias)
2837
{
2938
ExceptionUtils.CheckArgumentNotNull(expression, "expression");
@@ -34,32 +43,53 @@ public AggregateExpressionToken(QueryToken expression, AggregationMethod method,
3443
this.alias = alias;
3544
}
3645

46+
///
47+
/// Create an AggregateExpressionToken.
48+
///
49+
/// The aggregate expression.
50+
/// The aggregate method definition.
51+
/// The alias for this query token.
3752
public AggregateExpressionToken(QueryToken expression, AggregationMethodDefinition methodDefinition, string alias)
3853
: this(expression, methodDefinition.MethodKind, alias)
3954
{
4055
this.methodDefinition = methodDefinition;
4156
}
4257

58+
///
59+
/// Gets the kind of this token.
60+
///
4361
public override QueryTokenKind Kind
4462
{
4563
get { return QueryTokenKind.AggregateExpression; }
4664
}
4765

66+
///
67+
/// Gets the AggregationMethod of this token.
68+
///
4869
public AggregationMethod Method
4970
{
5071
get { return this.method; }
5172
}
5273

74+
///
75+
/// Gets the aggregate method definition.
76+
///
5377
public AggregationMethodDefinition MethodDefinition
5478
{
5579
get { return this.methodDefinition; }
5680
}
5781

82+
///
83+
/// Gets the expression.
84+
///
5885
public QueryToken Expression
5986
{
6087
get { return this.expression; }
6188
}
6289

90+
///
91+
/// Gets the alias.
92+
///
6393
public string Alias
6494
{
6595
get { return this.alias; }

‎src/Microsoft.OData.Core/UriParser/Aggregation/AggregateToken.cs‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,34 @@ namespace Microsoft.OData.UriParser.Aggregation
1313
using System.Collections.Generic;
1414
using Microsoft.OData.UriParser;
1515

16-
internal sealed class AggregateToken : ApplyTransformationToken
16+
///
17+
/// Query token representing an Aggregate token.
18+
///
19+
public sealed class AggregateToken : ApplyTransformationToken
1720
{
1821
private readonly IEnumerable<AggregateExpressionToken> expressions;
1922

23+
///
24+
/// Create an AggregateToken.
25+
///
26+
/// The list of AggregateExpressionToken.
2027
public AggregateToken(IEnumerable<AggregateExpressionToken> expressions)
2128
{
2229
ExceptionUtils.CheckArgumentNotNull(expressions, "expressions");
2330
this.expressions = expressions;
2431
}
2532

33+
///
34+
/// Gets the kind of this token.
35+
///
2636
public override QueryTokenKind Kind
2737
{
2838
get { return QueryTokenKind.Aggregate; }
2939
}
3040

41+
///
42+
/// Gets the list of AggregateExpressionToken.
43+
///
3144
public IEnumerable<AggregateExpressionToken> Expressions
3245
{
3346
get

‎src/Microsoft.OData.Core/UriParser/Aggregation/ApplyTransformationToken.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace Microsoft.OData.UriParser.Aggregation
1515
///
1616
/// Base class for Apply transformation tokens
1717
///
18-
internal abstract class ApplyTransformationToken : QueryToken
18+
public abstract class ApplyTransformationToken : QueryToken
1919
{
2020
}
2121
}

‎src/Microsoft.OData.Core/UriParser/Aggregation/GroupByToken.cs‎

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,20 @@ namespace Microsoft.OData.UriParser.Aggregation
1313
using System.Collections.Generic;
1414
using Microsoft.OData.UriParser;
1515

16-
internal sealed class GroupByToken : ApplyTransformationToken
16+
///
17+
/// Query token representing a GroupBy token.
18+
///
19+
public sealed class GroupByToken : ApplyTransformationToken
1720
{
1821
private readonly IEnumerable<EndPathToken> properties;
1922

2023
private readonly ApplyTransformationToken child;
2124

25+
///
26+
/// Create a GroupByToken.
27+
///
28+
/// The list of group by properties.
29+
/// The child of this token.
2230
public GroupByToken(IEnumerable<EndPathToken> properties, ApplyTransformationToken child)
2331
{
2432
ExceptionUtils.CheckArgumentNotNull(properties, "properties");
@@ -28,18 +36,24 @@ public GroupByToken(IEnumerable properties, ApplyTransformationTok
2836
}
2937

3038
///
31-
/// The kind of the query token.
39+
/// Gets the kind of this token.
3240
///
3341
public override QueryTokenKind Kind
3442
{
3543
get { return QueryTokenKind.AggregateGroupBy; }
3644
}
3745

46+
///
47+
/// Gets the list of group by properties.
48+
///
3849
public IEnumerable<EndPathToken> Properties
3950
{
4051
get { return this.properties; }
4152
}
4253

54+
///
55+
/// Gets the child of this token.
56+
///
4357
public ApplyTransformationToken Child
4458
{
4559
get { return this.child; }

‎src/Microsoft.OData.Core/UriParser/Binders/ExpandTreeNormalizer.cs‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public ExpandToken NormalizePaths(ExpandToken treeToInvert)
4444
foreach (ExpandTermToken term in treeToInvert.ExpandTerms)
4545
{
4646
PathReverser pathReverser = new PathReverser();
47-
PathSegmentToken reversedPath = term.PathToNavProp.Accept(pathReverser);
47+
PathSegmentToken reversedPath = term.PathToNavigationProp.Accept(pathReverser);
4848

4949
// we also need to call the select token normalizer for this level to reverse the select paths
5050
SelectToken newSelectToken = term.SelectOption;
@@ -86,7 +86,7 @@ public ExpandToken CombineTerms(ExpandToken treeToCollapse)
8686
{
8787
ExpandToken newSubExpand = CombineTerms(termToken.ExpandOption);
8888
finalTermToken = new ExpandTermToken(
89-
termToken.PathToNavProp,
89+
termToken.PathToNavigationProp,
9090
termToken.FilterOption,
9191
termToken.OrderByOptions,
9292
termToken.TopOption,
@@ -112,12 +112,12 @@ public ExpandToken CombineTerms(ExpandToken treeToCollapse)
112112
/// the combined token, or, if the two are mutually exclusive, the same tokens
113113
public ExpandTermToken CombineTerms(ExpandTermToken existingToken, ExpandTermToken newToken)
114114
{
115-
Debug.Assert(new PathSegmentTokenEqualityComparer().Equals(existingToken.PathToNavProp, newToken.PathToNavProp), "Paths should be equal.");
115+
Debug.Assert(new PathSegmentTokenEqualityComparer().Equals(existingToken.PathToNavigationProp, newToken.PathToNavigationProp), "Paths should be equal.");
116116

117117
List<ExpandTermToken> childNodes = CombineChildNodes(existingToken, newToken).ToList();
118118
SelectToken combinedSelects = CombineSelects(existingToken, newToken);
119119
return new ExpandTermToken(
120-
existingToken.PathToNavProp,
120+
existingToken.PathToNavigationProp,
121121
existingToken.FilterOption,
122122
existingToken.OrderByOptions,
123123
existingToken.TopOption,
@@ -177,13 +177,13 @@ private void AddChildOptionsToDictionary(ExpandTermToken newToken, Dictionary
177177
private void AddOrCombine(IDictionary<PathSegmentToken, ExpandTermToken> combinedTerms, ExpandTermToken expandedTerm)
178178
{
179179
ExpandTermToken existingTerm;
180-
if (combinedTerms.TryGetValue(expandedTerm.PathToNavProp, out existingTerm))
180+
if (combinedTerms.TryGetValue(expandedTerm.PathToNavigationProp, out existingTerm))
181181
{
182-
combinedTerms[expandedTerm.PathToNavProp] = CombineTerms(expandedTerm, existingTerm);
182+
combinedTerms[expandedTerm.PathToNavigationProp] = CombineTerms(expandedTerm, existingTerm);
183183
}
184184
else
185185
{
186-
combinedTerms.Add(expandedTerm.PathToNavProp, expandedTerm);
186+
combinedTerms.Add(expandedTerm.PathToNavigationProp, expandedTerm);
187187
}
188188
}
189189

0 commit comments

Comments
 (0)