Exemplo n.º 1
0
#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;
        }
Exemplo n.º 2
0
#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;
        }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
0
#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;
        }
Exemplo n.º 5
0
 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;
 }