public OeParser CreateParser(String request, OeModelBoundProvider modelBoundProvider) { ODataUri odataUri = ParseUri(request); IEdmModel edmModel = OeEdmModel.GetEdmModel(odataUri.Path); return(new OeParser(odataUri.ServiceRoot, edmModel, modelBoundProvider, ServiceProvider)); }
public bool IsAllowed(OeModelBoundProvider modelBoundProvider, IEdmProperty property, OeModelBoundKind modelBoundKind) { SelectExpandType?propertySetting = GetPropertySetting(property, modelBoundKind); if (propertySetting != null) { return(propertySetting.Value != SelectExpandType.Disabled); } if (NavigationProperty != null) { OeModelBoundSettings entitySettings = modelBoundProvider.GetSettings((IEdmEntityType)property.DeclaringType); if (entitySettings != null && entitySettings.GetPropertySetting(property, modelBoundKind) == SelectExpandType.Disabled) { return(false); } } return(true); }
public OeModelBoundValidator(OeModelBoundProvider modelBoundProvider) { _modelBoundProvider = modelBoundProvider; }
public async Task <IList> ExecuteOe <TResult>(String requestUri, bool navigationNextLink, int pageSize) { OeModelBoundProvider modelBoundProvider = ModelBoundProvider; if (modelBoundProvider == null) { var modelBoundProviderBuilder = new PageNextLinkModelBoundBuilder(OeEdmModel, IsSqlite); modelBoundProvider = modelBoundProviderBuilder.BuildProvider(pageSize, navigationNextLink); } OeParser parser = CreateParser(requestUri, modelBoundProvider); var uri = new Uri(parser.BaseUri, requestUri); OeRequestHeaders requestHeaders = OeRequestHeaders.JsonDefault.SetMaxPageSize(pageSize); long count = -1; ODataUri odataUri; var fromOe = new List <Object>(); do { odataUri = ParseUri(uri.OriginalString); var response = new MemoryStream(); await parser.ExecuteQueryAsync(odataUri, requestHeaders, response, CancellationToken.None).ConfigureAwait(false); response.Position = 0; List <Object> result; ResponseReader responseReader; if (typeof(TResult).IsPrimitive) { TypeConverter converter = TypeDescriptor.GetConverter(typeof(TResult)); return(new Object[] { converter.ConvertFromString(new StreamReader(response).ReadToEnd()) }); } { responseReader = new OpenTypeResponseReader(TestHelper.GetEdmModel(DbEdmModel, odataUri.Path), ServiceProvider); result = responseReader.Read(response).Cast <Object>().ToList(); } if (pageSize > 0) { Xunit.Assert.InRange(result.Count, 0, requestHeaders.MaxPageSize); } fromOe.AddRange(result); await responseReader.FillNextLinkProperties(parser, CancellationToken.None).ConfigureAwait(false); if (count < 0) { count = responseReader.ResourceSet.Count.GetValueOrDefault(); } uri = responseReader.ResourceSet.NextPageLink; }while (uri != null); if (odataUri.QueryCount != null) { Xunit.Assert.Equal(count, fromOe.Count); } return(fromOe); }
public OePageNextLinkSelectItemBuilder(OeModelBoundProvider modelBoundProvider) { _modelBoundProvider = modelBoundProvider; }
public async Task Get(string table) { var edmModel = (IEdmModel)_httpContextAccessor.HttpContext.RequestServices.GetService(typeof(IEdmModel)); OeModelBoundProvider modelBoundProvider = OeAspHelper.CreateModelBoundProvider(edmModel, 50, false); await OeAspQueryParser.Get(_httpContextAccessor.HttpContext, modelBoundProvider).ConfigureAwait(false); }