diff --git a/src/Microsoft.OData.Core/PublicAPI.Unshipped.txt b/src/Microsoft.OData.Core/PublicAPI.Unshipped.txt index 66a1ab6b10..14f730d9a1 100644 --- a/src/Microsoft.OData.Core/PublicAPI.Unshipped.txt +++ b/src/Microsoft.OData.Core/PublicAPI.Unshipped.txt @@ -1540,6 +1540,7 @@ Microsoft.OData.UriParser.ODataPath.GetEnumerator() -> System.Collections.Generi 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.ODataPathExtensions @@ -1801,7 +1802,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..f16ea450e8 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,23 +77,26 @@ 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; } } /// - /// Get the List of ODataPathSegments. + /// Get the segment in the path at the specified index. /// - internal IList Segments + /// The index. + /// The segment corresponding to the index. + public ODataPathSegment this[int i] { - get { return this.segments; } + get + { + return this.segments[i]; + } } - /// /// Get the segments enumerator /// @@ -135,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. /// @@ -171,5 +161,31 @@ internal void AddRange(ODataPath oDataPath) { this.segments.AddRange(oDataPath.segments); } + + /// + /// 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; + } + + 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 92a04e3db8..0c61700f06 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 IReadOnlyList SelectedItems { get { - return this.allSelected.Value; + return new ReadOnlyCollection(this.selectedItems); } } 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..2dc14447c1 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; @@ -25,9 +25,20 @@ internal 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 7c914234f0..86be39e5aa 100644 --- a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.net45.bsl +++ b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.net45.bsl @@ -2494,6 +2494,18 @@ 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, 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 @@ -6465,17 +6477,21 @@ 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) } -public class Microsoft.OData.UriParser.ODataPath : IEnumerable, IEnumerable`1 { +[ +DefaultMemberAttribute(), +] +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 virtual get; } Microsoft.OData.UriParser.ODataPathSegment LastSegment { public get; } public virtual System.Collections.Generic.IEnumerator`1[[Microsoft.OData.UriParser.ODataPathSegment]] GetEnumerator () @@ -6508,7 +6524,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) } @@ -7399,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.IEnumerable`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 df3c0a5326..9a215a3fef 100644 --- a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard1.1.bsl +++ b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard1.1.bsl @@ -2494,6 +2494,18 @@ 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, 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 @@ -6465,17 +6477,21 @@ 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) } -public class Microsoft.OData.UriParser.ODataPath : IEnumerable, IEnumerable`1 { +[ +DefaultMemberAttribute(), +] +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 virtual get; } Microsoft.OData.UriParser.ODataPathSegment LastSegment { public get; } public virtual System.Collections.Generic.IEnumerator`1[[Microsoft.OData.UriParser.ODataPathSegment]] GetEnumerator () @@ -6508,7 +6524,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) } @@ -7399,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.IEnumerable`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 7c914234f0..86be39e5aa 100644 --- a/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl +++ b/test/PublicApiTests/BaseLine/Microsoft.OData.PublicApi.netstandard2.0.bsl @@ -2494,6 +2494,18 @@ 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, 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 @@ -6465,17 +6477,21 @@ 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) } -public class Microsoft.OData.UriParser.ODataPath : IEnumerable, IEnumerable`1 { +[ +DefaultMemberAttribute(), +] +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 virtual get; } Microsoft.OData.UriParser.ODataPathSegment LastSegment { public get; } public virtual System.Collections.Generic.IEnumerator`1[[Microsoft.OData.UriParser.ODataPathSegment]] GetEnumerator () @@ -6508,7 +6524,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) } @@ -7399,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.IEnumerable`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 {