#pragma warning disable 1591 // Xml Comments public QueryResult Execute(IQuery query, PagingInfo paging) { ThrowIfNoQueryPropertyOnQuery(query); var result = QueryResult.For(query); var authorizationResult = _fetchingSecurityManager.Authorize(query); if (!authorizationResult.IsAuthorized) { result.SecurityMessages = authorizationResult.BuildFailedAuthorizationMessages(); return result; } try { var property = GetQueryPropertyFromQuery(query); var queryProviderType = GetActualProviderTypeFrom(property.PropertyType); ThrowIfUnknownQueryType(queryProviderType, query, property); var provider = _container.Get(queryProviderType); var actualQuery = property.GetValue(query, null); var providerResult = ExecuteOnProvider(provider, actualQuery, paging); result.TotalItems = providerResult.TotalItems; var readModels = providerResult.Items as IEnumerable<IReadModel>; result.Items = _filters.Filter(readModels); } catch (TargetInvocationException ex) { result.Exception = ex.InnerException; } catch (Exception ex) { result.Exception = ex; } return result; }
#pragma warning disable 1591 // Xml Comments public QueryResult Execute(IQuery query, PagingInfo paging) { ThrowIfNoQueryPropertyOnQuery(query); var result = new QueryResult(); try { var property = GetQueryPropertyFromQuery(query); var queryProviderType = GetActualProviderTypeFrom(property.PropertyType); ThrowIfUnknownQueryType(queryProviderType, query, property); var provider = _container.Get(queryProviderType); var actualQuery = property.GetValue(query, null); var providerResult = ExecuteOnProvider(provider, actualQuery, paging); result.TotalItems = providerResult.TotalItems; result.Items = providerResult.Items; } catch (TargetInvocationException ex) { result.Exception = ex.InnerException; } catch (Exception ex) { result.Exception = ex; } return result; }
public QueryResult Execute(QueryDescriptor descriptor, PagingInfo paging) { var queryType = _typeDiscoverer.GetQueryTypeByName(descriptor.GeneratedFrom); var query = _container.Get(queryType) as IQuery; PopulateProperties (descriptor, queryType, query); var result = _queryCoordinator.Execute(query, paging); if( result.Success ) AddClientTypeInformation(result); return result; }
#pragma warning disable 1591 // Xml Comments public QueryResult Execute(IQuery query, PagingInfo paging) { ThrowIfNoQueryPropertyOnQuery(query); var result = QueryResult.For(query); try { var authorizationResult = _fetchingSecurityManager.Authorize(query); if (!authorizationResult.IsAuthorized) { result.SecurityMessages = authorizationResult.BuildFailedAuthorizationMessages(); result.Items = new object[0]; return result; } result.Validation = _validator.Validate(query); if (!result.Validation.Success) { result.Items = new object[0]; return result; } var property = GetQueryPropertyFromQuery(query); var actualQuery = property.GetValue(query, null); var provider = GetQueryProvider(query, property, actualQuery); var providerResult = ExecuteOnProvider(provider, actualQuery, paging); result.TotalItems = providerResult.TotalItems; var readModels = providerResult.Items as IEnumerable<IReadModel>; result.Items = readModels != null ? _filters.Filter(readModels) : providerResult.Items; } catch (TargetInvocationException ex) { _exceptionPublisher.Publish(ex.InnerException); result.Exception = ex.InnerException; } catch (Exception ex) { _exceptionPublisher.Publish(ex); result.Exception = ex; } return result; }
QueryProviderResult ExecuteOnProvider(object provider, object query, PagingInfo paging) { var method = provider.GetType().GetMethod(ExecuteMethodName); var result = method.Invoke(provider, new[] { query, paging }) as QueryProviderResult; return result; }