From aa2ee176d3236479f3bd60d8e3f00e9f4fdc39ca Mon Sep 17 00:00:00 2001 From: Brad Cleaver Date: Thu, 17 Mar 2022 13:51:22 -0700 Subject: [PATCH 1/6] Expose more information about path segments and selected items --- .../PublicAPI.Unshipped.txt | 11 +++- .../UriParser/SemanticAst/ODataPath.cs | 59 ++++++++++++++++++- .../SemanticAst/SelectExpandClause.cs | 21 ++++--- .../UriParser/SemanticAst/ODataPathTests.cs | 29 +++++++++ 4 files changed, 105 insertions(+), 15 deletions(-) diff --git a/src/Microsoft.OData.Core/PublicAPI.Unshipped.txt b/src/Microsoft.OData.Core/PublicAPI.Unshipped.txt index d15221a3be..1428ccd7d6 100644 --- a/src/Microsoft.OData.Core/PublicAPI.Unshipped.txt +++ b/src/Microsoft.OData.Core/PublicAPI.Unshipped.txt @@ -1535,11 +1535,18 @@ Microsoft.OData.UriParser.ODataExpandPath.ODataExpandPath(params Microsoft.OData Microsoft.OData.UriParser.ODataExpandPath.ODataExpandPath(System.Collections.Generic.IEnumerable segments) -> void Microsoft.OData.UriParser.ODataPath Microsoft.OData.UriParser.ODataPath.Count.get -> int +Microsoft.OData.UriParser.ODataPath.Enumerator +Microsoft.OData.UriParser.ODataPath.Enumerator.Current.get -> Microsoft.OData.UriParser.ODataPathSegment +Microsoft.OData.UriParser.ODataPath.Enumerator.Dispose() -> void +Microsoft.OData.UriParser.ODataPath.Enumerator.Enumerator() -> void +Microsoft.OData.UriParser.ODataPath.Enumerator.MoveNext() -> bool +Microsoft.OData.UriParser.ODataPath.Enumerator.Reset() -> void Microsoft.OData.UriParser.ODataPath.FirstSegment.get -> Microsoft.OData.UriParser.ODataPathSegment -Microsoft.OData.UriParser.ODataPath.GetEnumerator() -> System.Collections.Generic.IEnumerator +Microsoft.OData.UriParser.ODataPath.GetEnumerator() -> Microsoft.OData.UriParser.ODataPath.Enumerator Microsoft.OData.UriParser.ODataPath.LastSegment.get -> Microsoft.OData.UriParser.ODataPathSegment Microsoft.OData.UriParser.ODataPath.ODataPath(params Microsoft.OData.UriParser.ODataPathSegment[] segments) -> void Microsoft.OData.UriParser.ODataPath.ODataPath(System.Collections.Generic.IEnumerable segments) -> void +Microsoft.OData.UriParser.ODataPath.this[int i].get -> Microsoft.OData.UriParser.ODataPathSegment Microsoft.OData.UriParser.ODataPath.WalkWith(Microsoft.OData.UriParser.PathSegmentHandler handler) -> void Microsoft.OData.UriParser.ODataPath.WalkWith(Microsoft.OData.UriParser.PathSegmentTranslator translator) -> System.Collections.Generic.IEnumerable Microsoft.OData.UriParser.ODataPathSegment @@ -1800,7 +1807,7 @@ Microsoft.OData.UriParser.SearchTermNode.SearchTermNode(string text) -> void Microsoft.OData.UriParser.SearchTermNode.Text.get -> string Microsoft.OData.UriParser.SelectExpandClause Microsoft.OData.UriParser.SelectExpandClause.AllSelected.get -> bool -Microsoft.OData.UriParser.SelectExpandClause.SelectedItems.get -> System.Collections.Generic.IEnumerable +Microsoft.OData.UriParser.SelectExpandClause.SelectedItems.get -> System.Collections.Generic.IList Microsoft.OData.UriParser.SelectExpandClause.SelectExpandClause(System.Collections.Generic.IEnumerable selectedItems, bool allSelected) -> void Microsoft.OData.UriParser.SelectExpandTermToken Microsoft.OData.UriParser.SelectExpandTermToken.ComputeOption.get -> Microsoft.OData.UriParser.ComputeToken diff --git a/src/Microsoft.OData.Core/UriParser/SemanticAst/ODataPath.cs b/src/Microsoft.OData.Core/UriParser/SemanticAst/ODataPath.cs index 172749a24a..9348600be4 100644 --- a/src/Microsoft.OData.Core/UriParser/SemanticAst/ODataPath.cs +++ b/src/Microsoft.OData.Core/UriParser/SemanticAst/ODataPath.cs @@ -82,6 +82,19 @@ public int Count get { return this.segments.Count; } } + /// + /// Get the segment in the path at the specified index. + /// + /// The index. + /// The segment corresponding to the index. + public ODataPathSegment this[int i] + { + get + { + return this.segments[i]; + } + } + /// /// Get the List of ODataPathSegments. /// @@ -94,9 +107,18 @@ internal IList Segments /// Get the segments enumerator /// /// The segments enumerator - public IEnumerator GetEnumerator() + public Enumerator GetEnumerator() { - return this.segments.GetEnumerator(); + return new Enumerator(this.segments); + } + + /// + /// Get the segments enumerator + /// + /// The segments enumerator + IEnumerator IEnumerable.GetEnumerator() + { + return this.GetEnumerator(); } /// @@ -171,5 +193,38 @@ internal void AddRange(ODataPath oDataPath) { this.segments.AddRange(oDataPath.segments); } + + public struct Enumerator : IEnumerator + { + private List.Enumerator enumerator; + + internal Enumerator(List list) + { + this.enumerator = list.GetEnumerator(); + } + + public ODataPathSegment Current => this.enumerator.Current; + + object IEnumerator.Current => this.enumerator.Current; + + public void Dispose() + { + this.enumerator.Dispose(); + } + + public bool MoveNext() + { + return this.enumerator.MoveNext(); + } + + public void Reset() + { + // Unfortunately "Reset" is implemented explicitly and so we need to box IEnumerable, call "Reset", + // and then unbox it in order to get the desired result. + IEnumerator boxedEnumerator = this.enumerator; + boxedEnumerator.Reset(); + this.enumerator = (List.Enumerator)boxedEnumerator; + } + } } } diff --git a/src/Microsoft.OData.Core/UriParser/SemanticAst/SelectExpandClause.cs b/src/Microsoft.OData.Core/UriParser/SemanticAst/SelectExpandClause.cs index 92a04e3db8..9a5327035d 100644 --- a/src/Microsoft.OData.Core/UriParser/SemanticAst/SelectExpandClause.cs +++ b/src/Microsoft.OData.Core/UriParser/SemanticAst/SelectExpandClause.cs @@ -41,29 +41,28 @@ public SelectExpandClause(IEnumerable selectedItems, bool allSelecte } /// - /// Gets the selected properties and operations. + /// Gets a flag indicating that everything at this level has been selected. /// - /// This list includes expanded navigations properties, which may have additional nested selections and expansions. - public IEnumerable SelectedItems + /// + /// If true, then all structural properties, bound actions and functions, and all navigations in the SelectedItems list have been selected. + /// + public bool AllSelected { get { - ////Debug.Assert(!this.usedInternalLegacyConstructor || this.selectedItems != null, "You cannot get the list of selected items until processing is complete."); - return new ReadOnlyCollection(this.selectedItems).AsEnumerable(); + return this.allSelected.Value; } } /// - /// Gets a flag indicating that everything at this level has been selected. + /// Gets the selected properties and operations. /// - /// - /// If true, then all structural properties, bound actions and functions, and all navigations in the SelectedItems list have been selected. - /// - public bool AllSelected + /// This list includes expanded navigations properties, which may have additional nested selections and expansions. + public IList SelectedItems { get { - return this.allSelected.Value; + return new ReadOnlyCollection(this.selectedItems); } } diff --git a/test/FunctionalTests/Microsoft.OData.Core.Tests/UriParser/SemanticAst/ODataPathTests.cs b/test/FunctionalTests/Microsoft.OData.Core.Tests/UriParser/SemanticAst/ODataPathTests.cs index 6b1e3dbb8d..61e0271220 100644 --- a/test/FunctionalTests/Microsoft.OData.Core.Tests/UriParser/SemanticAst/ODataPathTests.cs +++ b/test/FunctionalTests/Microsoft.OData.Core.Tests/UriParser/SemanticAst/ODataPathTests.cs @@ -97,5 +97,34 @@ public void PathsOfDifferentLengthsAreNotEqualBatch() { Assert.False(new ODataPath().Equals(new ODataPath(BatchSegment.Instance))); } + + [Fact] + public void Enumerator() + { + ODataPath path = new ODataPath(BatchSegment.Instance, CountSegment.Instance); + + ODataPath.Enumerator enumerator = path.GetEnumerator(); + Assert.True(enumerator.MoveNext()); + enumerator.Current.ShouldBeBatchSegment(); + Assert.True(enumerator.MoveNext()); + enumerator.Current.ShouldBeCountSegment(); + Assert.False(enumerator.MoveNext()); + } + + [Fact] + public void Enumerator_Reset() + { + ODataPath path = new ODataPath(BatchSegment.Instance, CountSegment.Instance); + + ODataPath.Enumerator enumerator = path.GetEnumerator(); + Assert.True(enumerator.MoveNext()); + enumerator.Current.ShouldBeBatchSegment(); + enumerator.Reset(); + Assert.True(enumerator.MoveNext()); + enumerator.Current.ShouldBeBatchSegment(); + Assert.True(enumerator.MoveNext()); + enumerator.Current.ShouldBeCountSegment(); + Assert.False(enumerator.MoveNext()); + } } } From c7010fbe7ce7798b667b21983bf084cd8dbdaaf7 Mon Sep 17 00:00:00 2001 From: ificator Date: Sat, 19 Mar 2022 14:13:44 -0700 Subject: [PATCH 2/6] Fix BSL files --- .../Microsoft.OData.PublicApi.net45.bsl | 17 +++++++++++++++-- ...Microsoft.OData.PublicApi.netstandard1.1.bsl | 17 +++++++++++++++-- ...Microsoft.OData.PublicApi.netstandard2.0.bsl | 17 +++++++++++++++-- 3 files changed, 45 insertions(+), 6 deletions(-) diff --git a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.net45.bsl b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.net45.bsl index f0d6ea8e69..bc4a5ed0c9 100644 --- a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.net45.bsl +++ b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.net45.bsl @@ -6065,6 +6065,14 @@ public enum Microsoft.OData.UriParser.UnaryOperatorKind : int { Not = 1 } +public struct Microsoft.OData.UriParser.ODataPath+Enumerator : IDisposable, IEnumerator, IEnumerator`1 { + Microsoft.OData.UriParser.ODataPathSegment Current { public virtual get; } + + public virtual void Dispose () + public virtual bool MoveNext () + public virtual void Reset () +} + public interface Microsoft.OData.UriParser.IPathSegmentTokenVisitor { void Visit (Microsoft.OData.UriParser.NonSystemToken tokenIn) void Visit (Microsoft.OData.UriParser.SystemToken tokenIn) @@ -6414,15 +6422,20 @@ public class Microsoft.OData.UriParser.ODataExpandPath : Microsoft.OData.UriPars public ODataExpandPath (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.ODataPathSegment]] segments) } +[ +DefaultMemberAttribute(), +] public class Microsoft.OData.UriParser.ODataPath : IEnumerable, IEnumerable`1 { public ODataPath (Microsoft.OData.UriParser.ODataPathSegment[] segments) public ODataPath (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.ODataPathSegment]] segments) int Count { public get; } Microsoft.OData.UriParser.ODataPathSegment FirstSegment { public get; } + Microsoft.OData.UriParser.ODataPathSegment Item [int i] { public get; } Microsoft.OData.UriParser.ODataPathSegment LastSegment { public get; } - public virtual System.Collections.Generic.IEnumerator`1[[Microsoft.OData.UriParser.ODataPathSegment]] GetEnumerator () + public Microsoft.OData.UriParser.ODataPath+Enumerator GetEnumerator () + System.Collections.Generic.IEnumerator`1[[Microsoft.OData.UriParser.ODataPathSegment]] System.Collections.Generic.IEnumerable.GetEnumerator () System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator () public IEnumerable`1 WalkWith (PathSegmentTranslator`1 translator) public void WalkWith (Microsoft.OData.UriParser.PathSegmentHandler handler) @@ -7343,7 +7356,7 @@ public sealed class Microsoft.OData.UriParser.SelectExpandClause { public SelectExpandClause (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.SelectItem]] selectedItems, bool allSelected) bool AllSelected { public get; } - System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.SelectItem]] SelectedItems { public get; } + System.Collections.Generic.IList`1[[Microsoft.OData.UriParser.SelectItem]] SelectedItems { public get; } } public sealed class Microsoft.OData.UriParser.SelectTermToken : Microsoft.OData.UriParser.SelectExpandTermToken { diff --git a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard1.1.bsl b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard1.1.bsl index d03dc7a0e2..4cd757ee03 100644 --- a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard1.1.bsl +++ b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard1.1.bsl @@ -6065,6 +6065,14 @@ public enum Microsoft.OData.UriParser.UnaryOperatorKind : int { Not = 1 } +public struct Microsoft.OData.UriParser.ODataPath+Enumerator : IDisposable, IEnumerator, IEnumerator`1 { + Microsoft.OData.UriParser.ODataPathSegment Current { public virtual get; } + + public virtual void Dispose () + public virtual bool MoveNext () + public virtual void Reset () +} + public interface Microsoft.OData.UriParser.IPathSegmentTokenVisitor { void Visit (Microsoft.OData.UriParser.NonSystemToken tokenIn) void Visit (Microsoft.OData.UriParser.SystemToken tokenIn) @@ -6414,15 +6422,20 @@ public class Microsoft.OData.UriParser.ODataExpandPath : Microsoft.OData.UriPars public ODataExpandPath (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.ODataPathSegment]] segments) } +[ +DefaultMemberAttribute(), +] public class Microsoft.OData.UriParser.ODataPath : IEnumerable, IEnumerable`1 { public ODataPath (Microsoft.OData.UriParser.ODataPathSegment[] segments) public ODataPath (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.ODataPathSegment]] segments) int Count { public get; } Microsoft.OData.UriParser.ODataPathSegment FirstSegment { public get; } + Microsoft.OData.UriParser.ODataPathSegment Item [int i] { public get; } Microsoft.OData.UriParser.ODataPathSegment LastSegment { public get; } - public virtual System.Collections.Generic.IEnumerator`1[[Microsoft.OData.UriParser.ODataPathSegment]] GetEnumerator () + public Microsoft.OData.UriParser.ODataPath+Enumerator GetEnumerator () + System.Collections.Generic.IEnumerator`1[[Microsoft.OData.UriParser.ODataPathSegment]] System.Collections.Generic.IEnumerable.GetEnumerator () System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator () public IEnumerable`1 WalkWith (PathSegmentTranslator`1 translator) public void WalkWith (Microsoft.OData.UriParser.PathSegmentHandler handler) @@ -7343,7 +7356,7 @@ public sealed class Microsoft.OData.UriParser.SelectExpandClause { public SelectExpandClause (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.SelectItem]] selectedItems, bool allSelected) bool AllSelected { public get; } - System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.SelectItem]] SelectedItems { public get; } + System.Collections.Generic.IList`1[[Microsoft.OData.UriParser.SelectItem]] SelectedItems { public get; } } public sealed class Microsoft.OData.UriParser.SelectTermToken : Microsoft.OData.UriParser.SelectExpandTermToken { diff --git a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl index fa1751a5d1..0e2428740e 100644 --- a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl +++ b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl @@ -6097,6 +6097,14 @@ public enum Microsoft.OData.UriParser.UnaryOperatorKind : int { Not = 1 } +public struct Microsoft.OData.UriParser.ODataPath+Enumerator : IDisposable, IEnumerator, IEnumerator`1 { + Microsoft.OData.UriParser.ODataPathSegment Current { public virtual get; } + + public virtual void Dispose () + public virtual bool MoveNext () + public virtual void Reset () +} + public interface Microsoft.OData.UriParser.IPathSegmentTokenVisitor { void Visit (Microsoft.OData.UriParser.NonSystemToken tokenIn) void Visit (Microsoft.OData.UriParser.SystemToken tokenIn) @@ -6446,15 +6454,20 @@ public class Microsoft.OData.UriParser.ODataExpandPath : Microsoft.OData.UriPars public ODataExpandPath (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.ODataPathSegment]] segments) } +[ +DefaultMemberAttribute(), +] public class Microsoft.OData.UriParser.ODataPath : IEnumerable, IEnumerable`1 { public ODataPath (Microsoft.OData.UriParser.ODataPathSegment[] segments) public ODataPath (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.ODataPathSegment]] segments) int Count { public get; } Microsoft.OData.UriParser.ODataPathSegment FirstSegment { public get; } + Microsoft.OData.UriParser.ODataPathSegment Item [int i] { public get; } Microsoft.OData.UriParser.ODataPathSegment LastSegment { public get; } - public virtual System.Collections.Generic.IEnumerator`1[[Microsoft.OData.UriParser.ODataPathSegment]] GetEnumerator () + public Microsoft.OData.UriParser.ODataPath+Enumerator GetEnumerator () + System.Collections.Generic.IEnumerator`1[[Microsoft.OData.UriParser.ODataPathSegment]] System.Collections.Generic.IEnumerable.GetEnumerator () System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator () public IEnumerable`1 WalkWith (PathSegmentTranslator`1 translator) public void WalkWith (Microsoft.OData.UriParser.PathSegmentHandler handler) @@ -7375,7 +7388,7 @@ public sealed class Microsoft.OData.UriParser.SelectExpandClause { public SelectExpandClause (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.SelectItem]] selectedItems, bool allSelected) bool AllSelected { public get; } - System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.SelectItem]] SelectedItems { public get; } + System.Collections.Generic.IList`1[[Microsoft.OData.UriParser.SelectItem]] SelectedItems { public get; } } public sealed class Microsoft.OData.UriParser.SelectTermToken : Microsoft.OData.UriParser.SelectExpandTermToken { From 86054b8e8bea4474a117a3520d461fa2b005e5a9 Mon Sep 17 00:00:00 2001 From: ificator Date: Fri, 25 Mar 2022 17:15:59 -0700 Subject: [PATCH 3/6] Make 'EdmContainedEntitySet' pubilc --- .../PublicApi/net45/PublicAPI.Unshipped.txt | 9 +++++++++ .../netstandard1.1/PublicAPI.Unshipped.txt | 9 +++++++++ .../netstandard2.0/PublicAPI.Unshipped.txt | 9 +++++++++ .../Schema/EdmContainedEntitySet.cs | 2 +- .../BaseLine/Microsoft.OData.PublicApi.net45.bsl | 13 +++++++++++++ .../Microsoft.OData.PublicApi.netstandard1.1.bsl | 13 +++++++++++++ .../Microsoft.OData.PublicApi.netstandard2.0.bsl | 13 +++++++++++++ 7 files changed, 67 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.OData.Edm/PublicApi/net45/PublicAPI.Unshipped.txt b/src/Microsoft.OData.Edm/PublicApi/net45/PublicAPI.Unshipped.txt index 20108831e8..f25d4a0741 100644 --- a/src/Microsoft.OData.Edm/PublicApi/net45/PublicAPI.Unshipped.txt +++ b/src/Microsoft.OData.Edm/PublicApi/net45/PublicAPI.Unshipped.txt @@ -107,6 +107,11 @@ Microsoft.OData.Edm.EdmComplexType.SchemaElementKind.get -> Microsoft.OData.Edm. Microsoft.OData.Edm.EdmComplexTypeReference Microsoft.OData.Edm.EdmComplexTypeReference.EdmComplexTypeReference(Microsoft.OData.Edm.IEdmComplexType complexType, bool isNullable) -> void Microsoft.OData.Edm.EdmConstants +Microsoft.OData.Edm.EdmContainedEntitySet +Microsoft.OData.Edm.EdmContainedEntitySet.EdmContainedEntitySet(Microsoft.OData.Edm.IEdmNavigationSource parentNavigationSource, Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) -> void +Microsoft.OData.Edm.EdmContainedEntitySet.EdmContainedEntitySet(Microsoft.OData.Edm.IEdmNavigationSource parentNavigationSource, Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty, Microsoft.OData.Edm.IEdmPathExpression navigationPath) -> void +Microsoft.OData.Edm.EdmContainedEntitySet.NavigationProperty.get -> Microsoft.OData.Edm.IEdmNavigationProperty +Microsoft.OData.Edm.EdmContainedEntitySet.ParentNavigationSource.get -> Microsoft.OData.Edm.IEdmNavigationSource Microsoft.OData.Edm.EdmContainerElementKind Microsoft.OData.Edm.EdmContainerElementKind.ActionImport = 2 -> Microsoft.OData.Edm.EdmContainerElementKind Microsoft.OData.Edm.EdmContainerElementKind.EntitySet = 1 -> Microsoft.OData.Edm.EdmContainerElementKind @@ -1373,6 +1378,10 @@ override Microsoft.OData.Edm.EdmActionImport.ContainerElementKind.get -> Microso override Microsoft.OData.Edm.EdmActionImport.OperationArgumentNullParameterName() -> string override Microsoft.OData.Edm.EdmCollectionType.TypeKind.get -> Microsoft.OData.Edm.EdmTypeKind override Microsoft.OData.Edm.EdmComplexType.TypeKind.get -> Microsoft.OData.Edm.EdmTypeKind +override Microsoft.OData.Edm.EdmContainedEntitySet.FindNavigationPropertyBindings(Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) -> System.Collections.Generic.IEnumerable +override Microsoft.OData.Edm.EdmContainedEntitySet.FindNavigationTarget(Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) -> Microsoft.OData.Edm.IEdmNavigationSource +override Microsoft.OData.Edm.EdmContainedEntitySet.FindNavigationTarget(Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty, Microsoft.OData.Edm.IEdmPathExpression bindingPath) -> Microsoft.OData.Edm.IEdmNavigationSource +override Microsoft.OData.Edm.EdmContainedEntitySet.Path.get -> Microsoft.OData.Edm.IEdmPathExpression override Microsoft.OData.Edm.EdmEntityReferenceType.TypeKind.get -> Microsoft.OData.Edm.EdmTypeKind override Microsoft.OData.Edm.EdmEntitySet.Path.get -> Microsoft.OData.Edm.IEdmPathExpression override Microsoft.OData.Edm.EdmEntitySet.Type.get -> Microsoft.OData.Edm.IEdmType diff --git a/src/Microsoft.OData.Edm/PublicApi/netstandard1.1/PublicAPI.Unshipped.txt b/src/Microsoft.OData.Edm/PublicApi/netstandard1.1/PublicAPI.Unshipped.txt index 20108831e8..f25d4a0741 100644 --- a/src/Microsoft.OData.Edm/PublicApi/netstandard1.1/PublicAPI.Unshipped.txt +++ b/src/Microsoft.OData.Edm/PublicApi/netstandard1.1/PublicAPI.Unshipped.txt @@ -107,6 +107,11 @@ Microsoft.OData.Edm.EdmComplexType.SchemaElementKind.get -> Microsoft.OData.Edm. Microsoft.OData.Edm.EdmComplexTypeReference Microsoft.OData.Edm.EdmComplexTypeReference.EdmComplexTypeReference(Microsoft.OData.Edm.IEdmComplexType complexType, bool isNullable) -> void Microsoft.OData.Edm.EdmConstants +Microsoft.OData.Edm.EdmContainedEntitySet +Microsoft.OData.Edm.EdmContainedEntitySet.EdmContainedEntitySet(Microsoft.OData.Edm.IEdmNavigationSource parentNavigationSource, Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) -> void +Microsoft.OData.Edm.EdmContainedEntitySet.EdmContainedEntitySet(Microsoft.OData.Edm.IEdmNavigationSource parentNavigationSource, Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty, Microsoft.OData.Edm.IEdmPathExpression navigationPath) -> void +Microsoft.OData.Edm.EdmContainedEntitySet.NavigationProperty.get -> Microsoft.OData.Edm.IEdmNavigationProperty +Microsoft.OData.Edm.EdmContainedEntitySet.ParentNavigationSource.get -> Microsoft.OData.Edm.IEdmNavigationSource Microsoft.OData.Edm.EdmContainerElementKind Microsoft.OData.Edm.EdmContainerElementKind.ActionImport = 2 -> Microsoft.OData.Edm.EdmContainerElementKind Microsoft.OData.Edm.EdmContainerElementKind.EntitySet = 1 -> Microsoft.OData.Edm.EdmContainerElementKind @@ -1373,6 +1378,10 @@ override Microsoft.OData.Edm.EdmActionImport.ContainerElementKind.get -> Microso override Microsoft.OData.Edm.EdmActionImport.OperationArgumentNullParameterName() -> string override Microsoft.OData.Edm.EdmCollectionType.TypeKind.get -> Microsoft.OData.Edm.EdmTypeKind override Microsoft.OData.Edm.EdmComplexType.TypeKind.get -> Microsoft.OData.Edm.EdmTypeKind +override Microsoft.OData.Edm.EdmContainedEntitySet.FindNavigationPropertyBindings(Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) -> System.Collections.Generic.IEnumerable +override Microsoft.OData.Edm.EdmContainedEntitySet.FindNavigationTarget(Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) -> Microsoft.OData.Edm.IEdmNavigationSource +override Microsoft.OData.Edm.EdmContainedEntitySet.FindNavigationTarget(Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty, Microsoft.OData.Edm.IEdmPathExpression bindingPath) -> Microsoft.OData.Edm.IEdmNavigationSource +override Microsoft.OData.Edm.EdmContainedEntitySet.Path.get -> Microsoft.OData.Edm.IEdmPathExpression override Microsoft.OData.Edm.EdmEntityReferenceType.TypeKind.get -> Microsoft.OData.Edm.EdmTypeKind override Microsoft.OData.Edm.EdmEntitySet.Path.get -> Microsoft.OData.Edm.IEdmPathExpression override Microsoft.OData.Edm.EdmEntitySet.Type.get -> Microsoft.OData.Edm.IEdmType diff --git a/src/Microsoft.OData.Edm/PublicApi/netstandard2.0/PublicAPI.Unshipped.txt b/src/Microsoft.OData.Edm/PublicApi/netstandard2.0/PublicAPI.Unshipped.txt index d86c0562f6..344926a5a3 100644 --- a/src/Microsoft.OData.Edm/PublicApi/netstandard2.0/PublicAPI.Unshipped.txt +++ b/src/Microsoft.OData.Edm/PublicApi/netstandard2.0/PublicAPI.Unshipped.txt @@ -124,6 +124,11 @@ Microsoft.OData.Edm.EdmComplexType.SchemaElementKind.get -> Microsoft.OData.Edm. Microsoft.OData.Edm.EdmComplexTypeReference Microsoft.OData.Edm.EdmComplexTypeReference.EdmComplexTypeReference(Microsoft.OData.Edm.IEdmComplexType complexType, bool isNullable) -> void Microsoft.OData.Edm.EdmConstants +Microsoft.OData.Edm.EdmContainedEntitySet +Microsoft.OData.Edm.EdmContainedEntitySet.EdmContainedEntitySet(Microsoft.OData.Edm.IEdmNavigationSource parentNavigationSource, Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) -> void +Microsoft.OData.Edm.EdmContainedEntitySet.EdmContainedEntitySet(Microsoft.OData.Edm.IEdmNavigationSource parentNavigationSource, Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty, Microsoft.OData.Edm.IEdmPathExpression navigationPath) -> void +Microsoft.OData.Edm.EdmContainedEntitySet.NavigationProperty.get -> Microsoft.OData.Edm.IEdmNavigationProperty +Microsoft.OData.Edm.EdmContainedEntitySet.ParentNavigationSource.get -> Microsoft.OData.Edm.IEdmNavigationSource Microsoft.OData.Edm.EdmContainerElementKind Microsoft.OData.Edm.EdmContainerElementKind.ActionImport = 2 -> Microsoft.OData.Edm.EdmContainerElementKind Microsoft.OData.Edm.EdmContainerElementKind.EntitySet = 1 -> Microsoft.OData.Edm.EdmContainerElementKind @@ -1390,6 +1395,10 @@ override Microsoft.OData.Edm.EdmActionImport.ContainerElementKind.get -> Microso override Microsoft.OData.Edm.EdmActionImport.OperationArgumentNullParameterName() -> string override Microsoft.OData.Edm.EdmCollectionType.TypeKind.get -> Microsoft.OData.Edm.EdmTypeKind override Microsoft.OData.Edm.EdmComplexType.TypeKind.get -> Microsoft.OData.Edm.EdmTypeKind +override Microsoft.OData.Edm.EdmContainedEntitySet.FindNavigationPropertyBindings(Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) -> System.Collections.Generic.IEnumerable +override Microsoft.OData.Edm.EdmContainedEntitySet.FindNavigationTarget(Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) -> Microsoft.OData.Edm.IEdmNavigationSource +override Microsoft.OData.Edm.EdmContainedEntitySet.FindNavigationTarget(Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty, Microsoft.OData.Edm.IEdmPathExpression bindingPath) -> Microsoft.OData.Edm.IEdmNavigationSource +override Microsoft.OData.Edm.EdmContainedEntitySet.Path.get -> Microsoft.OData.Edm.IEdmPathExpression override Microsoft.OData.Edm.EdmEntityReferenceType.TypeKind.get -> Microsoft.OData.Edm.EdmTypeKind override Microsoft.OData.Edm.EdmEntitySet.Path.get -> Microsoft.OData.Edm.IEdmPathExpression override Microsoft.OData.Edm.EdmEntitySet.Type.get -> Microsoft.OData.Edm.IEdmType diff --git a/src/Microsoft.OData.Edm/Schema/EdmContainedEntitySet.cs b/src/Microsoft.OData.Edm/Schema/EdmContainedEntitySet.cs index 222291f134..65c49e4e22 100644 --- a/src/Microsoft.OData.Edm/Schema/EdmContainedEntitySet.cs +++ b/src/Microsoft.OData.Edm/Schema/EdmContainedEntitySet.cs @@ -12,7 +12,7 @@ namespace Microsoft.OData.Edm /// /// Represents an EDM contained entity set. /// - internal class EdmContainedEntitySet : EdmEntitySetBase, IEdmContainedEntitySet + public class EdmContainedEntitySet : EdmEntitySetBase, IEdmContainedEntitySet { private readonly IEdmPathExpression navigationPath; private readonly IEdmNavigationSource parentNavigationSource; diff --git a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.net45.bsl b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.net45.bsl index bc4a5ed0c9..1cd503afb1 100644 --- a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.net45.bsl +++ b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.net45.bsl @@ -2494,6 +2494,19 @@ public class Microsoft.OData.Edm.EdmComplexTypeReference : Microsoft.OData.Edm.E public EdmComplexTypeReference (Microsoft.OData.Edm.IEdmComplexType complexType, bool isNullable) } +public class Microsoft.OData.Edm.EdmContainedEntitySet : Microsoft.OData.Edm.EdmEntitySetBase, IEdmContainedEntitySet, IEdmElement, IEdmEntitySetBase, IEdmNamedElement, IEdmNavigationSource { + public EdmContainedEntitySet (Microsoft.OData.Edm.IEdmNavigationSource parentNavigationSource, Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) + public EdmContainedEntitySet (Microsoft.OData.Edm.IEdmNavigationSource parentNavigationSource, Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty, Microsoft.OData.Edm.IEdmPathExpression navigationPath) + + Microsoft.OData.Edm.IEdmNavigationProperty NavigationProperty { public virtual get; } + Microsoft.OData.Edm.IEdmNavigationSource ParentNavigationSource { public virtual get; } + Microsoft.OData.Edm.IEdmPathExpression Path { public virtual get; } + + public virtual System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.IEdmNavigationPropertyBinding]] FindNavigationPropertyBindings (Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) + public virtual Microsoft.OData.Edm.IEdmNavigationSource FindNavigationTarget (Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) + public virtual Microsoft.OData.Edm.IEdmNavigationSource FindNavigationTarget (Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty, Microsoft.OData.Edm.IEdmPathExpression bindingPath) +} + public class Microsoft.OData.Edm.EdmCoreModel : Microsoft.OData.Edm.EdmElement, IEdmCoreModelElement, IEdmElement, IEdmModel { public static readonly Microsoft.OData.Edm.EdmCoreModel Instance = Microsoft.OData.Edm.EdmCoreModel diff --git a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard1.1.bsl b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard1.1.bsl index 4cd757ee03..9428f0e612 100644 --- a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard1.1.bsl +++ b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard1.1.bsl @@ -2494,6 +2494,19 @@ public class Microsoft.OData.Edm.EdmComplexTypeReference : Microsoft.OData.Edm.E public EdmComplexTypeReference (Microsoft.OData.Edm.IEdmComplexType complexType, bool isNullable) } +public class Microsoft.OData.Edm.EdmContainedEntitySet : Microsoft.OData.Edm.EdmEntitySetBase, IEdmContainedEntitySet, IEdmElement, IEdmEntitySetBase, IEdmNamedElement, IEdmNavigationSource { + public EdmContainedEntitySet (Microsoft.OData.Edm.IEdmNavigationSource parentNavigationSource, Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) + public EdmContainedEntitySet (Microsoft.OData.Edm.IEdmNavigationSource parentNavigationSource, Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty, Microsoft.OData.Edm.IEdmPathExpression navigationPath) + + Microsoft.OData.Edm.IEdmNavigationProperty NavigationProperty { public virtual get; } + Microsoft.OData.Edm.IEdmNavigationSource ParentNavigationSource { public virtual get; } + Microsoft.OData.Edm.IEdmPathExpression Path { public virtual get; } + + public virtual System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.IEdmNavigationPropertyBinding]] FindNavigationPropertyBindings (Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) + public virtual Microsoft.OData.Edm.IEdmNavigationSource FindNavigationTarget (Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) + public virtual Microsoft.OData.Edm.IEdmNavigationSource FindNavigationTarget (Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty, Microsoft.OData.Edm.IEdmPathExpression bindingPath) +} + public class Microsoft.OData.Edm.EdmCoreModel : Microsoft.OData.Edm.EdmElement, IEdmCoreModelElement, IEdmElement, IEdmModel { public static readonly Microsoft.OData.Edm.EdmCoreModel Instance = Microsoft.OData.Edm.EdmCoreModel diff --git a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl index 0e2428740e..134ca1563f 100644 --- a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl +++ b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl @@ -2494,6 +2494,19 @@ public class Microsoft.OData.Edm.EdmComplexTypeReference : Microsoft.OData.Edm.E public EdmComplexTypeReference (Microsoft.OData.Edm.IEdmComplexType complexType, bool isNullable) } +public class Microsoft.OData.Edm.EdmContainedEntitySet : Microsoft.OData.Edm.EdmEntitySetBase, IEdmContainedEntitySet, IEdmElement, IEdmEntitySetBase, IEdmNamedElement, IEdmNavigationSource { + public EdmContainedEntitySet (Microsoft.OData.Edm.IEdmNavigationSource parentNavigationSource, Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) + public EdmContainedEntitySet (Microsoft.OData.Edm.IEdmNavigationSource parentNavigationSource, Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty, Microsoft.OData.Edm.IEdmPathExpression navigationPath) + + Microsoft.OData.Edm.IEdmNavigationProperty NavigationProperty { public virtual get; } + Microsoft.OData.Edm.IEdmNavigationSource ParentNavigationSource { public virtual get; } + Microsoft.OData.Edm.IEdmPathExpression Path { public virtual get; } + + public virtual System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.IEdmNavigationPropertyBinding]] FindNavigationPropertyBindings (Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) + public virtual Microsoft.OData.Edm.IEdmNavigationSource FindNavigationTarget (Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) + public virtual Microsoft.OData.Edm.IEdmNavigationSource FindNavigationTarget (Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty, Microsoft.OData.Edm.IEdmPathExpression bindingPath) +} + public class Microsoft.OData.Edm.EdmCoreModel : Microsoft.OData.Edm.EdmElement, IEdmCoreModelElement, IEdmElement, IEdmModel { public static readonly Microsoft.OData.Edm.EdmCoreModel Instance = Microsoft.OData.Edm.EdmCoreModel From b1f15d7004fecd89c4acef5b5487daa09507e4c3 Mon Sep 17 00:00:00 2001 From: ificator Date: Sat, 23 Apr 2022 18:02:18 -0700 Subject: [PATCH 4/6] Revert enumeration change --- .../PublicAPI.Unshipped.txt | 8 +- .../UriParser/SemanticAst/ODataPath.cs | 98 +++++-------------- .../UriParser/SemanticAst/ODataPathTests.cs | 29 ------ .../Microsoft.OData.PublicApi.net45.bsl | 21 ++-- ...crosoft.OData.PublicApi.netstandard1.1.bsl | 21 ++-- ...crosoft.OData.PublicApi.netstandard2.0.bsl | 21 ++-- 6 files changed, 44 insertions(+), 154 deletions(-) diff --git a/src/Microsoft.OData.Core/PublicAPI.Unshipped.txt b/src/Microsoft.OData.Core/PublicAPI.Unshipped.txt index 1428ccd7d6..4e7b7e40cb 100644 --- a/src/Microsoft.OData.Core/PublicAPI.Unshipped.txt +++ b/src/Microsoft.OData.Core/PublicAPI.Unshipped.txt @@ -1535,14 +1535,8 @@ Microsoft.OData.UriParser.ODataExpandPath.ODataExpandPath(params Microsoft.OData Microsoft.OData.UriParser.ODataExpandPath.ODataExpandPath(System.Collections.Generic.IEnumerable segments) -> void Microsoft.OData.UriParser.ODataPath Microsoft.OData.UriParser.ODataPath.Count.get -> int -Microsoft.OData.UriParser.ODataPath.Enumerator -Microsoft.OData.UriParser.ODataPath.Enumerator.Current.get -> Microsoft.OData.UriParser.ODataPathSegment -Microsoft.OData.UriParser.ODataPath.Enumerator.Dispose() -> void -Microsoft.OData.UriParser.ODataPath.Enumerator.Enumerator() -> void -Microsoft.OData.UriParser.ODataPath.Enumerator.MoveNext() -> bool -Microsoft.OData.UriParser.ODataPath.Enumerator.Reset() -> void Microsoft.OData.UriParser.ODataPath.FirstSegment.get -> Microsoft.OData.UriParser.ODataPathSegment -Microsoft.OData.UriParser.ODataPath.GetEnumerator() -> Microsoft.OData.UriParser.ODataPath.Enumerator +Microsoft.OData.UriParser.ODataPath.GetEnumerator() -> System.Collections.Generic.IEnumerator Microsoft.OData.UriParser.ODataPath.LastSegment.get -> Microsoft.OData.UriParser.ODataPathSegment Microsoft.OData.UriParser.ODataPath.ODataPath(params Microsoft.OData.UriParser.ODataPathSegment[] segments) -> void Microsoft.OData.UriParser.ODataPath.ODataPath(System.Collections.Generic.IEnumerable segments) -> void diff --git a/src/Microsoft.OData.Core/UriParser/SemanticAst/ODataPath.cs b/src/Microsoft.OData.Core/UriParser/SemanticAst/ODataPath.cs index 9348600be4..feff9950b9 100644 --- a/src/Microsoft.OData.Core/UriParser/SemanticAst/ODataPath.cs +++ b/src/Microsoft.OData.Core/UriParser/SemanticAst/ODataPath.cs @@ -6,21 +6,17 @@ namespace Microsoft.OData.UriParser { - #region Namespaces - using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; - #endregion Namespaces - /// /// A representation of the path portion of an OData URI which is made up of s. /// [SuppressMessage("Microsoft.Naming", "CA1710:IdentifiersShouldHaveCorrectSuffix", Justification = "ODataPathCollection just doesn't sound right")] - public class ODataPath : IEnumerable + public class ODataPath : IReadOnlyList { /// /// The segments that make up this path. @@ -52,6 +48,14 @@ public ODataPath(params ODataPathSegment[] segments) { } + /// + /// Get the number of segments in this path. + /// + public int Count + { + get { return this.segments.Count; } + } + /// /// Gets the first segment in the path. Returns null if the path is empty. /// @@ -73,13 +77,12 @@ public ODataPathSegment LastSegment return this.segments.LastOrDefault(); } } - /// - /// Get the number of segments in this path. + /// Get the List of ODataPathSegments. /// - public int Count + internal IList Segments { - get { return this.segments.Count; } + get { return this.segments; } } /// @@ -94,31 +97,13 @@ public ODataPathSegment this[int i] return this.segments[i]; } } - - /// - /// Get the List of ODataPathSegments. - /// - internal IList Segments - { - get { return this.segments; } - } - - /// - /// Get the segments enumerator - /// - /// The segments enumerator - public Enumerator GetEnumerator() - { - return new Enumerator(this.segments); - } - /// /// Get the segments enumerator /// /// The segments enumerator - IEnumerator IEnumerable.GetEnumerator() + public IEnumerator GetEnumerator() { - return this.GetEnumerator(); + return this.segments.GetEnumerator(); } /// @@ -157,23 +142,6 @@ public void WalkWith(PathSegmentHandler handler) } } - /// - /// Checks if this path is equal to another path. - /// - /// The other path to compare it to - /// True if the two paths are equal - /// Throws if the input other is null. - internal bool Equals(ODataPath other) - { - ExceptionUtils.CheckArgumentNotNull(other, "other"); - if (this.segments.Count != other.segments.Count) - { - return false; - } - - return !this.segments.Where((t, i) => !t.Equals(other.segments[i])).Any(); - } - /// /// Add a segment to this path. /// @@ -194,37 +162,21 @@ internal void AddRange(ODataPath oDataPath) this.segments.AddRange(oDataPath.segments); } - public struct Enumerator : IEnumerator + /// + /// Checks if this path is equal to another path. + /// + /// The other path to compare it to + /// True if the two paths are equal + /// Throws if the input other is null. + internal bool Equals(ODataPath other) { - private List.Enumerator enumerator; - - internal Enumerator(List list) - { - this.enumerator = list.GetEnumerator(); - } - - public ODataPathSegment Current => this.enumerator.Current; - - object IEnumerator.Current => this.enumerator.Current; - - public void Dispose() - { - this.enumerator.Dispose(); - } - - public bool MoveNext() + ExceptionUtils.CheckArgumentNotNull(other, "other"); + if (this.segments.Count != other.segments.Count) { - return this.enumerator.MoveNext(); + return false; } - public void Reset() - { - // Unfortunately "Reset" is implemented explicitly and so we need to box IEnumerable, call "Reset", - // and then unbox it in order to get the desired result. - IEnumerator boxedEnumerator = this.enumerator; - boxedEnumerator.Reset(); - this.enumerator = (List.Enumerator)boxedEnumerator; - } + return !this.segments.Where((t, i) => !t.Equals(other.segments[i])).Any(); } } } diff --git a/test/FunctionalTests/Microsoft.OData.Core.Tests/UriParser/SemanticAst/ODataPathTests.cs b/test/FunctionalTests/Microsoft.OData.Core.Tests/UriParser/SemanticAst/ODataPathTests.cs index 61e0271220..6b1e3dbb8d 100644 --- a/test/FunctionalTests/Microsoft.OData.Core.Tests/UriParser/SemanticAst/ODataPathTests.cs +++ b/test/FunctionalTests/Microsoft.OData.Core.Tests/UriParser/SemanticAst/ODataPathTests.cs @@ -97,34 +97,5 @@ public void PathsOfDifferentLengthsAreNotEqualBatch() { Assert.False(new ODataPath().Equals(new ODataPath(BatchSegment.Instance))); } - - [Fact] - public void Enumerator() - { - ODataPath path = new ODataPath(BatchSegment.Instance, CountSegment.Instance); - - ODataPath.Enumerator enumerator = path.GetEnumerator(); - Assert.True(enumerator.MoveNext()); - enumerator.Current.ShouldBeBatchSegment(); - Assert.True(enumerator.MoveNext()); - enumerator.Current.ShouldBeCountSegment(); - Assert.False(enumerator.MoveNext()); - } - - [Fact] - public void Enumerator_Reset() - { - ODataPath path = new ODataPath(BatchSegment.Instance, CountSegment.Instance); - - ODataPath.Enumerator enumerator = path.GetEnumerator(); - Assert.True(enumerator.MoveNext()); - enumerator.Current.ShouldBeBatchSegment(); - enumerator.Reset(); - Assert.True(enumerator.MoveNext()); - enumerator.Current.ShouldBeBatchSegment(); - Assert.True(enumerator.MoveNext()); - enumerator.Current.ShouldBeCountSegment(); - Assert.False(enumerator.MoveNext()); - } } } diff --git a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.net45.bsl b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.net45.bsl index 1cd503afb1..ac6d2f4e7e 100644 --- a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.net45.bsl +++ b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.net45.bsl @@ -6078,14 +6078,6 @@ public enum Microsoft.OData.UriParser.UnaryOperatorKind : int { Not = 1 } -public struct Microsoft.OData.UriParser.ODataPath+Enumerator : IDisposable, IEnumerator, IEnumerator`1 { - Microsoft.OData.UriParser.ODataPathSegment Current { public virtual get; } - - public virtual void Dispose () - public virtual bool MoveNext () - public virtual void Reset () -} - public interface Microsoft.OData.UriParser.IPathSegmentTokenVisitor { void Visit (Microsoft.OData.UriParser.NonSystemToken tokenIn) void Visit (Microsoft.OData.UriParser.SystemToken tokenIn) @@ -6430,7 +6422,7 @@ public class Microsoft.OData.UriParser.NamedFunctionParameterNode : Microsoft.OD public virtual T Accept (QueryNodeVisitor`1 visitor) } -public class Microsoft.OData.UriParser.ODataExpandPath : Microsoft.OData.UriParser.ODataPath, IEnumerable, IEnumerable`1 { +public class Microsoft.OData.UriParser.ODataExpandPath : Microsoft.OData.UriParser.ODataPath, IEnumerable, IEnumerable`1, IReadOnlyCollection`1, IReadOnlyList`1 { public ODataExpandPath (Microsoft.OData.UriParser.ODataPathSegment[] segments) public ODataExpandPath (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.ODataPathSegment]] segments) } @@ -6438,17 +6430,16 @@ public class Microsoft.OData.UriParser.ODataExpandPath : Microsoft.OData.UriPars [ DefaultMemberAttribute(), ] -public class Microsoft.OData.UriParser.ODataPath : IEnumerable, IEnumerable`1 { +public class Microsoft.OData.UriParser.ODataPath : IEnumerable, IEnumerable`1, IReadOnlyCollection`1, IReadOnlyList`1 { public ODataPath (Microsoft.OData.UriParser.ODataPathSegment[] segments) public ODataPath (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.ODataPathSegment]] segments) - int Count { public get; } + int Count { public virtual get; } Microsoft.OData.UriParser.ODataPathSegment FirstSegment { public get; } - Microsoft.OData.UriParser.ODataPathSegment Item [int i] { public get; } + Microsoft.OData.UriParser.ODataPathSegment Item [int i] { public virtual get; } Microsoft.OData.UriParser.ODataPathSegment LastSegment { public get; } - public Microsoft.OData.UriParser.ODataPath+Enumerator GetEnumerator () - System.Collections.Generic.IEnumerator`1[[Microsoft.OData.UriParser.ODataPathSegment]] System.Collections.Generic.IEnumerable.GetEnumerator () + public virtual System.Collections.Generic.IEnumerator`1[[Microsoft.OData.UriParser.ODataPathSegment]] GetEnumerator () System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator () public IEnumerable`1 WalkWith (PathSegmentTranslator`1 translator) public void WalkWith (Microsoft.OData.UriParser.PathSegmentHandler handler) @@ -6478,7 +6469,7 @@ public class Microsoft.OData.UriParser.ODataQueryOptionParser { public System.Nullable`1[[System.Int64]] ParseTop () } -public class Microsoft.OData.UriParser.ODataSelectPath : Microsoft.OData.UriParser.ODataPath, IEnumerable, IEnumerable`1 { +public class Microsoft.OData.UriParser.ODataSelectPath : Microsoft.OData.UriParser.ODataPath, IEnumerable, IEnumerable`1, IReadOnlyCollection`1, IReadOnlyList`1 { public ODataSelectPath (Microsoft.OData.UriParser.ODataPathSegment[] segments) public ODataSelectPath (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.ODataPathSegment]] segments) } diff --git a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard1.1.bsl b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard1.1.bsl index 9428f0e612..84bd0a3978 100644 --- a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard1.1.bsl +++ b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard1.1.bsl @@ -6078,14 +6078,6 @@ public enum Microsoft.OData.UriParser.UnaryOperatorKind : int { Not = 1 } -public struct Microsoft.OData.UriParser.ODataPath+Enumerator : IDisposable, IEnumerator, IEnumerator`1 { - Microsoft.OData.UriParser.ODataPathSegment Current { public virtual get; } - - public virtual void Dispose () - public virtual bool MoveNext () - public virtual void Reset () -} - public interface Microsoft.OData.UriParser.IPathSegmentTokenVisitor { void Visit (Microsoft.OData.UriParser.NonSystemToken tokenIn) void Visit (Microsoft.OData.UriParser.SystemToken tokenIn) @@ -6430,7 +6422,7 @@ public class Microsoft.OData.UriParser.NamedFunctionParameterNode : Microsoft.OD public virtual T Accept (QueryNodeVisitor`1 visitor) } -public class Microsoft.OData.UriParser.ODataExpandPath : Microsoft.OData.UriParser.ODataPath, IEnumerable, IEnumerable`1 { +public class Microsoft.OData.UriParser.ODataExpandPath : Microsoft.OData.UriParser.ODataPath, IEnumerable, IEnumerable`1, IReadOnlyCollection`1, IReadOnlyList`1 { public ODataExpandPath (Microsoft.OData.UriParser.ODataPathSegment[] segments) public ODataExpandPath (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.ODataPathSegment]] segments) } @@ -6438,17 +6430,16 @@ public class Microsoft.OData.UriParser.ODataExpandPath : Microsoft.OData.UriPars [ DefaultMemberAttribute(), ] -public class Microsoft.OData.UriParser.ODataPath : IEnumerable, IEnumerable`1 { +public class Microsoft.OData.UriParser.ODataPath : IEnumerable, IEnumerable`1, IReadOnlyCollection`1, IReadOnlyList`1 { public ODataPath (Microsoft.OData.UriParser.ODataPathSegment[] segments) public ODataPath (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.ODataPathSegment]] segments) - int Count { public get; } + int Count { public virtual get; } Microsoft.OData.UriParser.ODataPathSegment FirstSegment { public get; } - Microsoft.OData.UriParser.ODataPathSegment Item [int i] { public get; } + Microsoft.OData.UriParser.ODataPathSegment Item [int i] { public virtual get; } Microsoft.OData.UriParser.ODataPathSegment LastSegment { public get; } - public Microsoft.OData.UriParser.ODataPath+Enumerator GetEnumerator () - System.Collections.Generic.IEnumerator`1[[Microsoft.OData.UriParser.ODataPathSegment]] System.Collections.Generic.IEnumerable.GetEnumerator () + public virtual System.Collections.Generic.IEnumerator`1[[Microsoft.OData.UriParser.ODataPathSegment]] GetEnumerator () System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator () public IEnumerable`1 WalkWith (PathSegmentTranslator`1 translator) public void WalkWith (Microsoft.OData.UriParser.PathSegmentHandler handler) @@ -6478,7 +6469,7 @@ public class Microsoft.OData.UriParser.ODataQueryOptionParser { public System.Nullable`1[[System.Int64]] ParseTop () } -public class Microsoft.OData.UriParser.ODataSelectPath : Microsoft.OData.UriParser.ODataPath, IEnumerable, IEnumerable`1 { +public class Microsoft.OData.UriParser.ODataSelectPath : Microsoft.OData.UriParser.ODataPath, IEnumerable, IEnumerable`1, IReadOnlyCollection`1, IReadOnlyList`1 { public ODataSelectPath (Microsoft.OData.UriParser.ODataPathSegment[] segments) public ODataSelectPath (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.ODataPathSegment]] segments) } diff --git a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl index 134ca1563f..9a2ad53653 100644 --- a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl +++ b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl @@ -6110,14 +6110,6 @@ public enum Microsoft.OData.UriParser.UnaryOperatorKind : int { Not = 1 } -public struct Microsoft.OData.UriParser.ODataPath+Enumerator : IDisposable, IEnumerator, IEnumerator`1 { - Microsoft.OData.UriParser.ODataPathSegment Current { public virtual get; } - - public virtual void Dispose () - public virtual bool MoveNext () - public virtual void Reset () -} - public interface Microsoft.OData.UriParser.IPathSegmentTokenVisitor { void Visit (Microsoft.OData.UriParser.NonSystemToken tokenIn) void Visit (Microsoft.OData.UriParser.SystemToken tokenIn) @@ -6462,7 +6454,7 @@ public class Microsoft.OData.UriParser.NamedFunctionParameterNode : Microsoft.OD public virtual T Accept (QueryNodeVisitor`1 visitor) } -public class Microsoft.OData.UriParser.ODataExpandPath : Microsoft.OData.UriParser.ODataPath, IEnumerable, IEnumerable`1 { +public class Microsoft.OData.UriParser.ODataExpandPath : Microsoft.OData.UriParser.ODataPath, IEnumerable, IEnumerable`1, IReadOnlyCollection`1, IReadOnlyList`1 { public ODataExpandPath (Microsoft.OData.UriParser.ODataPathSegment[] segments) public ODataExpandPath (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.ODataPathSegment]] segments) } @@ -6470,17 +6462,16 @@ public class Microsoft.OData.UriParser.ODataExpandPath : Microsoft.OData.UriPars [ DefaultMemberAttribute(), ] -public class Microsoft.OData.UriParser.ODataPath : IEnumerable, IEnumerable`1 { +public class Microsoft.OData.UriParser.ODataPath : IEnumerable, IEnumerable`1, IReadOnlyCollection`1, IReadOnlyList`1 { public ODataPath (Microsoft.OData.UriParser.ODataPathSegment[] segments) public ODataPath (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.ODataPathSegment]] segments) - int Count { public get; } + int Count { public virtual get; } Microsoft.OData.UriParser.ODataPathSegment FirstSegment { public get; } - Microsoft.OData.UriParser.ODataPathSegment Item [int i] { public get; } + Microsoft.OData.UriParser.ODataPathSegment Item [int i] { public virtual get; } Microsoft.OData.UriParser.ODataPathSegment LastSegment { public get; } - public Microsoft.OData.UriParser.ODataPath+Enumerator GetEnumerator () - System.Collections.Generic.IEnumerator`1[[Microsoft.OData.UriParser.ODataPathSegment]] System.Collections.Generic.IEnumerable.GetEnumerator () + public virtual System.Collections.Generic.IEnumerator`1[[Microsoft.OData.UriParser.ODataPathSegment]] GetEnumerator () System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator () public IEnumerable`1 WalkWith (PathSegmentTranslator`1 translator) public void WalkWith (Microsoft.OData.UriParser.PathSegmentHandler handler) @@ -6510,7 +6501,7 @@ public class Microsoft.OData.UriParser.ODataQueryOptionParser { public System.Nullable`1[[System.Int64]] ParseTop () } -public class Microsoft.OData.UriParser.ODataSelectPath : Microsoft.OData.UriParser.ODataPath, IEnumerable, IEnumerable`1 { +public class Microsoft.OData.UriParser.ODataSelectPath : Microsoft.OData.UriParser.ODataPath, IEnumerable, IEnumerable`1, IReadOnlyCollection`1, IReadOnlyList`1 { public ODataSelectPath (Microsoft.OData.UriParser.ODataPathSegment[] segments) public ODataSelectPath (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.ODataPathSegment]] segments) } From 72c28b2ccf9d0245d77f8eb16d6c8f24983ee802 Mon Sep 17 00:00:00 2001 From: ificator Date: Tue, 2 Aug 2022 12:46:24 -0700 Subject: [PATCH 5/6] Fix some review comments --- .../UriParser/SemanticAst/ODataPath.cs | 11 +++++- .../SemanticAst/SelectExpandClause.cs | 2 +- .../Schema/EdmContainedEntitySet.cs | 29 +++++++++------ .../Microsoft.OData.PublicApi.net45.bsl | 3 +- ...crosoft.OData.PublicApi.netstandard1.1.bsl | 3 +- ...crosoft.OData.PublicApi.netstandard2.0.bsl | 35 +++++++++++++++++-- 6 files changed, 64 insertions(+), 19 deletions(-) diff --git a/src/Microsoft.OData.Core/UriParser/SemanticAst/ODataPath.cs b/src/Microsoft.OData.Core/UriParser/SemanticAst/ODataPath.cs index feff9950b9..f16ea450e8 100644 --- a/src/Microsoft.OData.Core/UriParser/SemanticAst/ODataPath.cs +++ b/src/Microsoft.OData.Core/UriParser/SemanticAst/ODataPath.cs @@ -171,12 +171,21 @@ internal void AddRange(ODataPath oDataPath) internal bool Equals(ODataPath other) { ExceptionUtils.CheckArgumentNotNull(other, "other"); + if (this.segments.Count != other.segments.Count) { return false; } - return !this.segments.Where((t, i) => !t.Equals(other.segments[i])).Any(); + for (int i = 0; i < this.segments.Count; i++) + { + if (!this.segments[i].Equals(other.segments[i])) + { + return false; + } + } + + return true; } } } diff --git a/src/Microsoft.OData.Core/UriParser/SemanticAst/SelectExpandClause.cs b/src/Microsoft.OData.Core/UriParser/SemanticAst/SelectExpandClause.cs index 9a5327035d..0c61700f06 100644 --- a/src/Microsoft.OData.Core/UriParser/SemanticAst/SelectExpandClause.cs +++ b/src/Microsoft.OData.Core/UriParser/SemanticAst/SelectExpandClause.cs @@ -58,7 +58,7 @@ public bool AllSelected /// Gets the selected properties and operations. /// /// This list includes expanded navigations properties, which may have additional nested selections and expansions. - public IList SelectedItems + public IReadOnlyList SelectedItems { get { diff --git a/src/Microsoft.OData.Edm/Schema/EdmContainedEntitySet.cs b/src/Microsoft.OData.Edm/Schema/EdmContainedEntitySet.cs index 65c49e4e22..2dc14447c1 100644 --- a/src/Microsoft.OData.Edm/Schema/EdmContainedEntitySet.cs +++ b/src/Microsoft.OData.Edm/Schema/EdmContainedEntitySet.cs @@ -25,9 +25,20 @@ public class EdmContainedEntitySet : EdmEntitySetBase, IEdmContainedEntitySet /// /// The that container element belongs to /// An containing the navigation property definition of the contained element - public EdmContainedEntitySet(IEdmNavigationSource parentNavigationSource, IEdmNavigationProperty navigationProperty) - : this(parentNavigationSource, navigationProperty, new EdmPathExpression(navigationProperty.Name)) + /// The path from the parentNavigationSource to the related resource, concluding with the navigation property name. May traverse complex types and cast segments + public EdmContainedEntitySet( + IEdmNavigationSource parentNavigationSource, + IEdmNavigationProperty navigationProperty, + IEdmPathExpression navigationPath) + : base( + EdmUtil.CheckArgumentNull(navigationProperty, nameof(navigationProperty)).Name, + navigationProperty.ToEntityType()) { + EdmUtil.CheckArgumentNull(parentNavigationSource, nameof(parentNavigationSource)); + + this.parentNavigationSource = parentNavigationSource; + this.navigationProperty = navigationProperty; + this.navigationPath = navigationPath; } /// @@ -35,16 +46,12 @@ public EdmContainedEntitySet(IEdmNavigationSource parentNavigationSource, IEdmNa /// /// The that container element belongs to /// An containing the navigation property definition of the contained element - /// The path from the parentNavigationSource to the related resource, concluding with the navigation property name. May traverse complex types and cast segments - public EdmContainedEntitySet(IEdmNavigationSource parentNavigationSource, IEdmNavigationProperty navigationProperty, IEdmPathExpression navigationPath) - : base(navigationProperty.Name, navigationProperty.ToEntityType()) + internal EdmContainedEntitySet(IEdmNavigationSource parentNavigationSource, IEdmNavigationProperty navigationProperty) + : this( + parentNavigationSource, + navigationProperty, + new EdmPathExpression(navigationProperty.Name)) { - EdmUtil.CheckArgumentNull(parentNavigationSource, "parentNavigationSource"); - EdmUtil.CheckArgumentNull(navigationProperty, "navigationProperty"); - - this.parentNavigationSource = parentNavigationSource; - this.navigationProperty = navigationProperty; - this.navigationPath = navigationPath; } /// diff --git a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.net45.bsl b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.net45.bsl index 3c3d1124e0..86be39e5aa 100644 --- a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.net45.bsl +++ b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.net45.bsl @@ -2495,7 +2495,6 @@ public class Microsoft.OData.Edm.EdmComplexTypeReference : Microsoft.OData.Edm.E } public class Microsoft.OData.Edm.EdmContainedEntitySet : Microsoft.OData.Edm.EdmEntitySetBase, IEdmContainedEntitySet, IEdmElement, IEdmEntitySetBase, IEdmNamedElement, IEdmNavigationSource { - public EdmContainedEntitySet (Microsoft.OData.Edm.IEdmNavigationSource parentNavigationSource, Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) public EdmContainedEntitySet (Microsoft.OData.Edm.IEdmNavigationSource parentNavigationSource, Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty, Microsoft.OData.Edm.IEdmPathExpression navigationPath) Microsoft.OData.Edm.IEdmNavigationProperty NavigationProperty { public virtual get; } @@ -7416,7 +7415,7 @@ public sealed class Microsoft.OData.UriParser.SelectExpandClause { public SelectExpandClause (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.SelectItem]] selectedItems, bool allSelected) bool AllSelected { public get; } - System.Collections.Generic.IList`1[[Microsoft.OData.UriParser.SelectItem]] SelectedItems { public get; } + System.Collections.Generic.IReadOnlyList`1[[Microsoft.OData.UriParser.SelectItem]] SelectedItems { public get; } } public sealed class Microsoft.OData.UriParser.SelectTermToken : Microsoft.OData.UriParser.SelectExpandTermToken { diff --git a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard1.1.bsl b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard1.1.bsl index 52c16d521b..9a215a3fef 100644 --- a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard1.1.bsl +++ b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard1.1.bsl @@ -2495,7 +2495,6 @@ public class Microsoft.OData.Edm.EdmComplexTypeReference : Microsoft.OData.Edm.E } public class Microsoft.OData.Edm.EdmContainedEntitySet : Microsoft.OData.Edm.EdmEntitySetBase, IEdmContainedEntitySet, IEdmElement, IEdmEntitySetBase, IEdmNamedElement, IEdmNavigationSource { - public EdmContainedEntitySet (Microsoft.OData.Edm.IEdmNavigationSource parentNavigationSource, Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) public EdmContainedEntitySet (Microsoft.OData.Edm.IEdmNavigationSource parentNavigationSource, Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty, Microsoft.OData.Edm.IEdmPathExpression navigationPath) Microsoft.OData.Edm.IEdmNavigationProperty NavigationProperty { public virtual get; } @@ -7416,7 +7415,7 @@ public sealed class Microsoft.OData.UriParser.SelectExpandClause { public SelectExpandClause (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.SelectItem]] selectedItems, bool allSelected) bool AllSelected { public get; } - System.Collections.Generic.IList`1[[Microsoft.OData.UriParser.SelectItem]] SelectedItems { public get; } + System.Collections.Generic.IReadOnlyList`1[[Microsoft.OData.UriParser.SelectItem]] SelectedItems { public get; } } public sealed class Microsoft.OData.UriParser.SelectTermToken : Microsoft.OData.UriParser.SelectExpandTermToken { diff --git a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl index 3c3d1124e0..653b540100 100644 --- a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl +++ b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl @@ -2495,7 +2495,6 @@ public class Microsoft.OData.Edm.EdmComplexTypeReference : Microsoft.OData.Edm.E } public class Microsoft.OData.Edm.EdmContainedEntitySet : Microsoft.OData.Edm.EdmEntitySetBase, IEdmContainedEntitySet, IEdmElement, IEdmEntitySetBase, IEdmNamedElement, IEdmNavigationSource { - public EdmContainedEntitySet (Microsoft.OData.Edm.IEdmNavigationSource parentNavigationSource, Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty) public EdmContainedEntitySet (Microsoft.OData.Edm.IEdmNavigationSource parentNavigationSource, Microsoft.OData.Edm.IEdmNavigationProperty navigationProperty, Microsoft.OData.Edm.IEdmPathExpression navigationPath) Microsoft.OData.Edm.IEdmNavigationProperty NavigationProperty { public virtual get; } @@ -3039,6 +3038,24 @@ public sealed class Microsoft.OData.Edm.Csdl.SerializationExtensionMethods { public static void SetSerializationLocation (Microsoft.OData.Edm.Vocabularies.IEdmVocabularyAnnotation annotation, Microsoft.OData.Edm.IEdmModel model, System.Nullable`1[[Microsoft.OData.Edm.Csdl.EdmVocabularyAnnotationSerializationLocation]] location) } +public class Microsoft.OData.Edm.Csdl.CsdlJsonReaderSettings : Microsoft.OData.Edm.Csdl.CsdlReaderSettingsBase { + public static Microsoft.OData.Edm.Csdl.CsdlJsonReaderSettings Default = Microsoft.OData.Edm.Csdl.CsdlJsonReaderSettings + + public CsdlJsonReaderSettings () + + bool IgnoreUnexpectedJsonElements { public get; public set; } + bool IncludeDefaultVocabularies { public get; public set; } + bool IsBracketNotation { public get; public set; } + Microsoft.OData.Edm.Csdl.CsdlJsonReaderFactory JsonSchemaReaderFactory { public get; public set; } + System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.IEdmModel]] ReferencedModels { public get; public set; } +} + +public class Microsoft.OData.Edm.Csdl.CsdlJsonWriterSettings { + public CsdlJsonWriterSettings () + + bool IsIeee754Compatible { public get; public set; } +} + public class Microsoft.OData.Edm.Csdl.CsdlLocation : Microsoft.OData.Edm.EdmLocation { int LineNumber { public get; } int LinePosition { public get; } @@ -3049,11 +3066,15 @@ public class Microsoft.OData.Edm.Csdl.CsdlLocation : Microsoft.OData.Edm.EdmLoca } public class Microsoft.OData.Edm.Csdl.CsdlReader { + public static Microsoft.OData.Edm.IEdmModel Parse (System.Text.Json.Utf8JsonReader& reader) public static Microsoft.OData.Edm.IEdmModel Parse (System.Xml.XmlReader reader) + public static Microsoft.OData.Edm.IEdmModel Parse (System.Text.Json.Utf8JsonReader& reader, Microsoft.OData.Edm.Csdl.CsdlJsonReaderSettings settings) public static Microsoft.OData.Edm.IEdmModel Parse (System.Xml.XmlReader reader, Microsoft.OData.Edm.IEdmModel referencedModel) public static Microsoft.OData.Edm.IEdmModel Parse (System.Xml.XmlReader reader, System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.IEdmModel]] referencedModels) public static Microsoft.OData.Edm.IEdmModel Parse (System.Xml.XmlReader reader, System.Func`2[[System.Uri],[System.Xml.XmlReader]] getReferencedModelReaderFunc) + public static bool TryParse (System.Text.Json.Utf8JsonReader& reader, out Microsoft.OData.Edm.IEdmModel& model, out System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.Validation.EdmError]]& errors) public static bool TryParse (System.Xml.XmlReader reader, out Microsoft.OData.Edm.IEdmModel& model, out System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.Validation.EdmError]]& errors) + public static bool TryParse (System.Text.Json.Utf8JsonReader& reader, Microsoft.OData.Edm.Csdl.CsdlJsonReaderSettings settings, out Microsoft.OData.Edm.IEdmModel& model, out System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.Validation.EdmError]]& errors) public static bool TryParse (System.Xml.XmlReader reader, Microsoft.OData.Edm.IEdmModel reference, out Microsoft.OData.Edm.IEdmModel& model, out System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.Validation.EdmError]]& errors) public static bool TryParse (System.Xml.XmlReader reader, bool ignoreUnexpectedAttributesAndElements, out Microsoft.OData.Edm.IEdmModel& model, out System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.Validation.EdmError]]& errors) public static bool TryParse (System.Xml.XmlReader reader, System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.IEdmModel]] references, out Microsoft.OData.Edm.IEdmModel& model, out System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.Validation.EdmError]]& errors) @@ -3066,6 +3087,8 @@ public class Microsoft.OData.Edm.Csdl.CsdlWriter { protected CsdlWriter (Microsoft.OData.Edm.IEdmModel model, System.Version edmxVersion) protected static string GetVersionString (System.Version version) + public static bool TryWriteCsdl (Microsoft.OData.Edm.IEdmModel model, System.Text.Json.Utf8JsonWriter writer, out System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.Validation.EdmError]]& errors) + public static bool TryWriteCsdl (Microsoft.OData.Edm.IEdmModel model, System.Text.Json.Utf8JsonWriter writer, Microsoft.OData.Edm.Csdl.CsdlJsonWriterSettings settings, out System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.Validation.EdmError]]& errors) public static bool TryWriteCsdl (Microsoft.OData.Edm.IEdmModel model, System.Xml.XmlWriter writer, Microsoft.OData.Edm.Csdl.CsdlTarget target, out System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.Validation.EdmError]]& errors) protected virtual void WriteCsdl () } @@ -3079,6 +3102,14 @@ public class Microsoft.OData.Edm.Csdl.EdmParseException : System.Exception, ISer System.Collections.ObjectModel.ReadOnlyCollection`1[[Microsoft.OData.Edm.Validation.EdmError]] Errors { public get; } } +public sealed class Microsoft.OData.Edm.Csdl.CsdlJsonReaderFactory : System.MulticastDelegate, ICloneable, ISerializable { + public CsdlJsonReaderFactory (object object, System.IntPtr method) + + public virtual System.IAsyncResult BeginInvoke (System.Uri uri, out System.Boolean& skip, System.AsyncCallback callback, object object) + public virtual System.Text.Json.Utf8JsonReader EndInvoke (out System.Boolean& skip, System.IAsyncResult result) + public virtual System.Text.Json.Utf8JsonReader Invoke (System.Uri uri, out System.Boolean& skip) +} + public sealed class Microsoft.OData.Edm.Csdl.CsdlReaderSettings : Microsoft.OData.Edm.Csdl.CsdlReaderSettingsBase { public CsdlReaderSettings () @@ -7416,7 +7447,7 @@ public sealed class Microsoft.OData.UriParser.SelectExpandClause { public SelectExpandClause (System.Collections.Generic.IEnumerable`1[[Microsoft.OData.UriParser.SelectItem]] selectedItems, bool allSelected) bool AllSelected { public get; } - System.Collections.Generic.IList`1[[Microsoft.OData.UriParser.SelectItem]] SelectedItems { public get; } + System.Collections.Generic.IReadOnlyList`1[[Microsoft.OData.UriParser.SelectItem]] SelectedItems { public get; } } public sealed class Microsoft.OData.UriParser.SelectTermToken : Microsoft.OData.UriParser.SelectExpandTermToken { From b3a7300ab6134e6d9c3a9bce314f7162302b2f44 Mon Sep 17 00:00:00 2001 From: ificator Date: Thu, 4 Aug 2022 11:56:10 -0700 Subject: [PATCH 6/6] Fix broken test case (bad merge?) --- ...crosoft.OData.PublicApi.netstandard2.0.bsl | 32 ------------------- 1 file changed, 32 deletions(-) diff --git a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl index 653b540100..86be39e5aa 100644 --- a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl +++ b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl @@ -3038,24 +3038,6 @@ public sealed class Microsoft.OData.Edm.Csdl.SerializationExtensionMethods { public static void SetSerializationLocation (Microsoft.OData.Edm.Vocabularies.IEdmVocabularyAnnotation annotation, Microsoft.OData.Edm.IEdmModel model, System.Nullable`1[[Microsoft.OData.Edm.Csdl.EdmVocabularyAnnotationSerializationLocation]] location) } -public class Microsoft.OData.Edm.Csdl.CsdlJsonReaderSettings : Microsoft.OData.Edm.Csdl.CsdlReaderSettingsBase { - public static Microsoft.OData.Edm.Csdl.CsdlJsonReaderSettings Default = Microsoft.OData.Edm.Csdl.CsdlJsonReaderSettings - - public CsdlJsonReaderSettings () - - bool IgnoreUnexpectedJsonElements { public get; public set; } - bool IncludeDefaultVocabularies { public get; public set; } - bool IsBracketNotation { public get; public set; } - Microsoft.OData.Edm.Csdl.CsdlJsonReaderFactory JsonSchemaReaderFactory { public get; public set; } - System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.IEdmModel]] ReferencedModels { public get; public set; } -} - -public class Microsoft.OData.Edm.Csdl.CsdlJsonWriterSettings { - public CsdlJsonWriterSettings () - - bool IsIeee754Compatible { public get; public set; } -} - public class Microsoft.OData.Edm.Csdl.CsdlLocation : Microsoft.OData.Edm.EdmLocation { int LineNumber { public get; } int LinePosition { public get; } @@ -3066,15 +3048,11 @@ public class Microsoft.OData.Edm.Csdl.CsdlLocation : Microsoft.OData.Edm.EdmLoca } public class Microsoft.OData.Edm.Csdl.CsdlReader { - public static Microsoft.OData.Edm.IEdmModel Parse (System.Text.Json.Utf8JsonReader& reader) public static Microsoft.OData.Edm.IEdmModel Parse (System.Xml.XmlReader reader) - public static Microsoft.OData.Edm.IEdmModel Parse (System.Text.Json.Utf8JsonReader& reader, Microsoft.OData.Edm.Csdl.CsdlJsonReaderSettings settings) public static Microsoft.OData.Edm.IEdmModel Parse (System.Xml.XmlReader reader, Microsoft.OData.Edm.IEdmModel referencedModel) public static Microsoft.OData.Edm.IEdmModel Parse (System.Xml.XmlReader reader, System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.IEdmModel]] referencedModels) public static Microsoft.OData.Edm.IEdmModel Parse (System.Xml.XmlReader reader, System.Func`2[[System.Uri],[System.Xml.XmlReader]] getReferencedModelReaderFunc) - public static bool TryParse (System.Text.Json.Utf8JsonReader& reader, out Microsoft.OData.Edm.IEdmModel& model, out System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.Validation.EdmError]]& errors) public static bool TryParse (System.Xml.XmlReader reader, out Microsoft.OData.Edm.IEdmModel& model, out System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.Validation.EdmError]]& errors) - public static bool TryParse (System.Text.Json.Utf8JsonReader& reader, Microsoft.OData.Edm.Csdl.CsdlJsonReaderSettings settings, out Microsoft.OData.Edm.IEdmModel& model, out System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.Validation.EdmError]]& errors) public static bool TryParse (System.Xml.XmlReader reader, Microsoft.OData.Edm.IEdmModel reference, out Microsoft.OData.Edm.IEdmModel& model, out System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.Validation.EdmError]]& errors) public static bool TryParse (System.Xml.XmlReader reader, bool ignoreUnexpectedAttributesAndElements, out Microsoft.OData.Edm.IEdmModel& model, out System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.Validation.EdmError]]& errors) public static bool TryParse (System.Xml.XmlReader reader, System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.IEdmModel]] references, out Microsoft.OData.Edm.IEdmModel& model, out System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.Validation.EdmError]]& errors) @@ -3087,8 +3065,6 @@ public class Microsoft.OData.Edm.Csdl.CsdlWriter { protected CsdlWriter (Microsoft.OData.Edm.IEdmModel model, System.Version edmxVersion) protected static string GetVersionString (System.Version version) - public static bool TryWriteCsdl (Microsoft.OData.Edm.IEdmModel model, System.Text.Json.Utf8JsonWriter writer, out System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.Validation.EdmError]]& errors) - public static bool TryWriteCsdl (Microsoft.OData.Edm.IEdmModel model, System.Text.Json.Utf8JsonWriter writer, Microsoft.OData.Edm.Csdl.CsdlJsonWriterSettings settings, out System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.Validation.EdmError]]& errors) public static bool TryWriteCsdl (Microsoft.OData.Edm.IEdmModel model, System.Xml.XmlWriter writer, Microsoft.OData.Edm.Csdl.CsdlTarget target, out System.Collections.Generic.IEnumerable`1[[Microsoft.OData.Edm.Validation.EdmError]]& errors) protected virtual void WriteCsdl () } @@ -3102,14 +3078,6 @@ public class Microsoft.OData.Edm.Csdl.EdmParseException : System.Exception, ISer System.Collections.ObjectModel.ReadOnlyCollection`1[[Microsoft.OData.Edm.Validation.EdmError]] Errors { public get; } } -public sealed class Microsoft.OData.Edm.Csdl.CsdlJsonReaderFactory : System.MulticastDelegate, ICloneable, ISerializable { - public CsdlJsonReaderFactory (object object, System.IntPtr method) - - public virtual System.IAsyncResult BeginInvoke (System.Uri uri, out System.Boolean& skip, System.AsyncCallback callback, object object) - public virtual System.Text.Json.Utf8JsonReader EndInvoke (out System.Boolean& skip, System.IAsyncResult result) - public virtual System.Text.Json.Utf8JsonReader Invoke (System.Uri uri, out System.Boolean& skip) -} - public sealed class Microsoft.OData.Edm.Csdl.CsdlReaderSettings : Microsoft.OData.Edm.Csdl.CsdlReaderSettingsBase { public CsdlReaderSettings ()