/// <inheritdoc/> protected override void Initialize(ODataContext context, ODataPath path) { base.Initialize(context, path); ODataNavigationSourceSegment navigationSourceSegment = path.FirstSegment as ODataNavigationSourceSegment; NavigationSource = navigationSourceSegment.NavigationSource; LastSegmentIsKeySegment = path.LastSegment is ODataKeySegment; LastSegmentIsRefSegment = path.LastSegment is ODataRefSegment; NavigationProperty = path.OfType <ODataNavigationPropertySegment>().Last().NavigationProperty; NavigationPropertyPath = string.Join("/", Path.Segments.Where(s => !(s is ODataKeySegment || s is ODataNavigationSourceSegment)).Select(e => e.Identifier)); IEdmEntitySet entitySet = NavigationSource as IEdmEntitySet; IEdmSingleton singleton = NavigationSource as IEdmSingleton; NavigationRestrictionsType navigation; if (entitySet != null) { navigation = Context.Model.GetRecord <NavigationRestrictionsType>(entitySet, CapabilitiesConstants.NavigationRestrictions); } else { navigation = Context.Model.GetRecord <NavigationRestrictionsType>(singleton, CapabilitiesConstants.NavigationRestrictions); } if (navigation != null && navigation.RestrictedProperties != null) { Restriction = navigation.RestrictedProperties.FirstOrDefault(r => r.NavigationProperty != null && r.NavigationProperty == NavigationPropertyPath); } }
/// <inheritdoc/> protected override void Initialize(ODataContext context, ODataPath path) { base.Initialize(context, path); ODataNavigationSourceSegment navigationSourceSegment = path.FirstSegment as ODataNavigationSourceSegment; NavigationSource = navigationSourceSegment.NavigationSource; LastSegmentIsKeySegment = path.LastSegment is ODataKeySegment; LastSegmentIsRefSegment = path.LastSegment is ODataRefSegment; NavigationProperty = path.OfType <ODataNavigationPropertySegment>().Last().NavigationProperty; IEdmEntitySet entitySet = NavigationSource as IEdmEntitySet; IEdmSingleton singleton = NavigationSource as IEdmSingleton; NavigationRestrictionsType navigation; if (entitySet != null) { navigation = Context.Model.GetRecord <NavigationRestrictionsType>(entitySet, CapabilitiesConstants.NavigationRestrictions); } else { navigation = Context.Model.GetRecord <NavigationRestrictionsType>(singleton, CapabilitiesConstants.NavigationRestrictions); } Restriction = navigation?.RestrictedProperties?.FirstOrDefault(r => r.NavigationProperty != null && r.NavigationProperty == Path.NavigationPropertyPath()) ?? Context.Model.GetRecord <NavigationRestrictionsType>(NavigationProperty, CapabilitiesConstants.NavigationRestrictions)?.RestrictedProperties?.FirstOrDefault(); }
public void GetPathItemNameReturnsCorrectNavigationSourceLiteralForSingleton() { // Arrange & Act var segment = new ODataNavigationSourceSegment(_singleton); // Assert Assert.Equal("Me", segment.GetPathItemName(new OpenApiConvertSettings())); }
/// <inheritdoc/> protected override void Initialize(ODataContext context, ODataPath path) { base.Initialize(context, path); ODataNavigationSourceSegment navigationSourceSegment = path.FirstSegment as ODataNavigationSourceSegment; Singleton = navigationSourceSegment.NavigationSource as IEdmSingleton; }
public void GetPathItemNameReturnsCorrectNavigationSourceLiteralForEntitySet() { // Arrange & Act var segment = new ODataNavigationSourceSegment(_entitySet); // Assert Assert.Equal("Entities", segment.GetPathItemName(new OpenApiConvertSettings())); }
public void KindPropertyReturnsNavigationSourceEnumMember() { // Arrange & Act var segment = new ODataNavigationSourceSegment(_singleton); // Assert Assert.Equal(ODataSegmentKind.NavigationSource, segment.Kind); }
public void GetEntityTypeReturnsCorrectEntityType() { // Arrange & Act var segment = new ODataNavigationSourceSegment(_singleton); // Assert Assert.Same(_entityType, segment.EntityType); }
public void CtorSetNavigationSourceProperty() { // Arrange & Act var segment = new ODataNavigationSourceSegment(_entitySet); // Assert Assert.Same(_entitySet, segment.NavigationSource); }
/// <inheritdoc/> protected override void Initialize(ODataContext context, ODataPath path) { base.Initialize(context, path); // get the entity set. ODataNavigationSourceSegment navigationSourceSegment = path.FirstSegment as ODataNavigationSourceSegment; EntitySet = navigationSourceSegment.NavigationSource as IEdmEntitySet; }
/// <inheritdoc/> protected override void Initialize(ODataContext context, ODataPath path) { // Base Initialize should be called at top of this method. base.Initialize(context, path); ODataNavigationSourceSegment navigationSourceSegment = path.FirstSegment as ODataNavigationSourceSegment; Singleton = navigationSourceSegment.NavigationSource as IEdmSingleton; }
public void KindPropertyReturnsEntitySet() { // Arrange ODataNavigationSourceSegment nsSegment = new ODataNavigationSourceSegment(_compositeKeyEntitySet); ODataPath path = new ODataPath(nsSegment); // Act & Assert Assert.Equal(ODataPathKind.EntitySet, path.Kind); }
public void KindPropertyReturnsEntity() { // Arrange ODataNavigationSourceSegment nsSegment = new ODataNavigationSourceSegment(_simpleKeyEntitySet); ODataKeySegment keySegment = new ODataKeySegment(_simpleKeyEntityType); ODataPath path = new ODataPath(nsSegment, keySegment); // Act & Assert Assert.Equal(ODataPathKind.Entity, path.Kind); }
/// <inheritdoc/> protected override void Initialize(ODataContext context, ODataPath path) { base.Initialize(context, path); ODataNavigationSourceSegment navigationSourceSegment = path.FirstSegment as ODataNavigationSourceSegment; NavigationSource = navigationSourceSegment.NavigationSource; NavigationProperty = path.OfType <ODataNavigationPropertySegment>().Last().NavigationProperty; }
public void KindPropertyReturnsOperation() { // Arrange ODataNavigationSourceSegment nsSegment = new ODataNavigationSourceSegment(_simpleKeyEntitySet); EdmAction action = new EdmAction("NS", "MyAction", null, isBound: true, entitySetPathExpression: null); ODataOperationSegment opSegment = new ODataOperationSegment(action); ODataPath path = new ODataPath(nsSegment, opSegment); // Act & Assert Assert.Equal(ODataPathKind.Operation, path.Kind); }
public void KindPropertyReturnsSingleton() { // Arrange EdmEntityContainer container = new EdmEntityContainer("NS", "Default"); EdmSingleton me = new EdmSingleton(container, "Me", _simpleKeyEntityType); ODataNavigationSourceSegment nsSegment = new ODataNavigationSourceSegment(me); ODataPath path = new ODataPath(nsSegment); // Act & Assert Assert.Equal(ODataPathKind.Singleton, path.Kind); }
/// <inheritdoc/> protected override void Initialize(ODataContext context, ODataPath path) { base.Initialize(context, path); // get the entity set. ODataNavigationSourceSegment navigationSourceSegment = path.FirstSegment as ODataNavigationSourceSegment; EntitySet = navigationSourceSegment.NavigationSource as IEdmEntitySet; Request = Context.FindRequest(EntitySet, OperationType.ToString()); }
/// <inheritdoc/> protected override void Initialize(ODataContext context, ODataPath path) { base.Initialize(context, path); // The first segment could be an entity set segment or a singleton segment. ODataNavigationSourceSegment navigationSourceSegment = path.FirstSegment as ODataNavigationSourceSegment; EntitySet = navigationSourceSegment.NavigationSource as IEdmEntitySet; if (EntitySet == null) { Singleton = navigationSourceSegment.NavigationSource as IEdmSingleton; } }
/// <inheritdoc/> protected override void Initialize(ODataContext context, ODataPath path) { base.Initialize(context, path); ODataNavigationSourceSegment navigationSourceSegment = path.FirstSegment as ODataNavigationSourceSegment; NavigationSource = navigationSourceSegment.NavigationSource; LastSegmentIsKeySegment = path.LastSegment.Kind == ODataSegmentKind.Key; LastSegmentIsRefSegment = path.LastSegment.Kind == ODataSegmentKind.Ref; NavigationProperty = path.OfType <ODataNavigationPropertySegment>().Last().NavigationProperty; _entityType = NavigationProperty.ToEntityType(); }
public void ODataPathLastSegmentWorks() { // Arrange ODataNavigationSourceSegment nsSegment = new ODataNavigationSourceSegment(_simpleKeyEntitySet); ODataKeySegment keySegment = new ODataKeySegment(_simpleKeyEntityType); ODataPath path = new ODataPath(nsSegment, keySegment); // Act var segment = path.LastSegment; // Assert Assert.Same(keySegment, segment); }
/// <inheritdoc/> protected override void Initialize(ODataContext context, ODataPath path) { base.Initialize(context, path); // It's bound operation, the first segment must be the navigaiton source. ODataNavigationSourceSegment navigationSourceSegment = path.FirstSegment as ODataNavigationSourceSegment; NavigationSource = navigationSourceSegment.NavigationSource; OperationSegment = path.LastSegment as ODataOperationSegment; EdmOperation = OperationSegment.Operation; HasTypeCast = path.Segments.Any(s => s is ODataTypeCastSegment); }
/// <inheritdoc/> protected override void SetExtensions(OpenApiPathItem item) { if (!Context.Settings.ShowMsDosGroupPath) { return; } IList <ODataPath> samePaths = new List <ODataPath>(); foreach (var path in Context.AllPaths.Where(p => p.Kind == ODataPathKind.NavigationProperty && p != Path)) { bool lastIsKeySegment = path.LastSegment is ODataKeySegment; if (LastSegmentIsKeySegment != lastIsKeySegment) { continue; } ODataNavigationSourceSegment navigationSourceSegment = path.FirstSegment as ODataNavigationSourceSegment; if (NavigationSource != navigationSourceSegment.NavigationSource) { continue; } ODataNavigationPropertySegment npSegment = path.LastSegment as ODataNavigationPropertySegment; if (npSegment == null) { npSegment = path.Segments[path.Count - 2] as ODataNavigationPropertySegment; } if (NavigationProperty != npSegment.NavigationProperty) { continue; } samePaths.Add(path); } if (samePaths.Any()) { OpenApiArray array = new OpenApiArray(); OpenApiConvertSettings settings = Context.Settings.Clone(); settings.EnableKeyAsSegment = Context.KeyAsSegment; foreach (var p in samePaths) { array.Add(new OpenApiString(p.GetPathItemName(settings))); } item.Extensions.Add(Constants.xMsDosGroupPath, array); } }
/// <inheritdoc/> protected override void Initialize(ODataContext context, ODataPath path) { base.Initialize(context, path); ODataNavigationSourceSegment navigationSourceSegment = path.FirstSegment as ODataNavigationSourceSegment; NavigationSource = navigationSourceSegment.NavigationSource; LastSegmentIsKeySegment = path.LastSegment is ODataKeySegment; ODataNavigationPropertySegment npSegment = path.LastSegment as ODataNavigationPropertySegment; if (npSegment == null) { npSegment = path.Segments[path.Count - 2] as ODataNavigationPropertySegment; } NavigationProperty = npSegment.NavigationProperty; }
/// <inheritdoc/> protected override void SetExtensions(OpenApiPathItem item) { if (!Context.Settings.ShowMsDosGroupPath) { return; } ODataNavigationSourceSegment navigationSourceSegment = Path.FirstSegment as ODataNavigationSourceSegment; IEdmNavigationSource currentNavSource = navigationSourceSegment.NavigationSource; IList <ODataPath> samePaths = new List <ODataPath>(); foreach (var path in Context.AllPaths.Where(p => p.Kind == ODataPathKind.Operation && p != Path)) { navigationSourceSegment = path.FirstSegment as ODataNavigationSourceSegment; if (currentNavSource != navigationSourceSegment.NavigationSource) { continue; } ODataOperationSegment operationSegment = path.LastSegment as ODataOperationSegment; if (EdmOperation.FullName() != operationSegment.Operation.FullName()) { continue; } samePaths.Add(path); } if (samePaths.Any()) { OpenApiArray array = new OpenApiArray(); OpenApiConvertSettings settings = Context.Settings.Clone(); settings.EnableKeyAsSegment = Context.KeyAsSegment; foreach (var p in samePaths) { array.Add(new OpenApiString(p.GetPathItemName(settings))); } item.Extensions.Add(Constants.xMsDosGroupPath, array); } base.SetExtensions(item); item.Extensions.AddCustomAtributesToExtensions(Context, EdmOperation); }
public void GetPathItemNameReturnsCorrectWithSingleKeySegment(bool keyAsSegment, bool prefix, string expected) { // Arrange ODataNavigationSourceSegment nsSegment = new ODataNavigationSourceSegment(_simpleKeyEntitySet); ODataKeySegment keySegment = new ODataKeySegment(_simpleKeyEntityType); ODataPath path = new ODataPath(nsSegment, keySegment); OpenApiConvertSettings settings = new OpenApiConvertSettings { EnableKeyAsSegment = keyAsSegment, PrefixEntityTypeNameBeforeKey = prefix }; // Act string pathItemName = path.GetPathItemName(settings); // Assert Assert.Equal(expected, pathItemName); }
public void KindPropertyReturnsNavigationProperty() { // Arrange EdmNavigationPropertyInfo propertyInfo = new EdmNavigationPropertyInfo { Name = "Nav", TargetMultiplicity = EdmMultiplicity.One, Target = _compositeKeyEntityType }; var property = EdmNavigationProperty.CreateNavigationProperty(_simpleKeyEntityType, propertyInfo); ODataNavigationPropertySegment npSegment = new ODataNavigationPropertySegment(property); ODataNavigationSourceSegment nsSegment = new ODataNavigationSourceSegment(_simpleKeyEntitySet); ODataKeySegment keySegment = new ODataKeySegment(_simpleKeyEntityType); ODataPath path = new ODataPath(nsSegment, keySegment, npSegment); // Act & Assert Assert.Equal(ODataPathKind.NavigationProperty, path.Kind); }
public void GetPathItemNameReturnsCorrectStringWithMultipleKeySegment(bool keyAsSegment, bool prefix, string expected) { // Arrange ODataNavigationSourceSegment nsSegment = new ODataNavigationSourceSegment(_compositeKeyEntitySet); ODataKeySegment keySegment = new ODataKeySegment(_compositeKeyEntityType); ODataPath path = new ODataPath(nsSegment, keySegment); OpenApiConvertSettings settings = new OpenApiConvertSettings { EnableKeyAsSegment = keyAsSegment, PrefixEntityTypeNameBeforeKey = prefix, AddSingleQuotesForStringParameters = true, }; // Act string pathItemName = path.GetPathItemName(settings); // Assert Assert.Equal(expected, pathItemName); }
/// <inheritdoc/> protected override void Initialize(ODataContext context, ODataPath path) { // The first segment will either be an EntitySet navigation source or a Singleton navigation source ODataNavigationSourceSegment navigationSourceSegment = path.FirstSegment as ODataNavigationSourceSegment; EntitySet = navigationSourceSegment.NavigationSource as IEdmEntitySet; if (EntitySet == null) { Singleton = navigationSourceSegment.NavigationSource as IEdmSingleton; } // Check whether path is a navigation property path IsNavigationPropertyPath = Path.Segments.Contains( Path.Segments.Where(segment => segment is ODataNavigationPropertySegment).FirstOrDefault()); if (IsNavigationPropertyPath) { // Initialize navigation property paths from base base.Initialize(context, path); } }
/// <inheritdoc/> protected override void Initialize(ODataContext context, ODataPath path) { base.Initialize(context, path); ODataNavigationSourceSegment navigationSourceSegment = path.FirstSegment as ODataNavigationSourceSegment; NavigationSource = navigationSourceSegment.NavigationSource; LastSegmentIsKeySegment = path.LastSegment is ODataKeySegment; ODataNavigationPropertySegment npSegment = path.LastSegment as ODataNavigationPropertySegment; if (npSegment == null) { npSegment = path.Segments[path.Count - 2] as ODataNavigationPropertySegment; } NavigationProperty = npSegment.NavigationProperty; NavigationPropertyPath = string.Join("/", path.Segments.OfType <ODataNavigationPropertySegment>().Select(p => p.NavigationProperty.Name)); // So far, we haven't defined the HttpRequest for the navigation property path. // Request = Context.FindRequest(NavigationSource, OperationType.ToString()); }