private static FieldsToSerialize CreateFieldsToSerialize(IResourceGraph resourceGraph)
        {
            var resourceDefinitionProvider = DependencyFactory.CreateResourceDefinitionProvider(resourceGraph);
            var currentRequest             = new CurrentRequest();
            var sparseFieldsService        = new SparseFieldsService(resourceGraph, currentRequest);

            return(new FieldsToSerialize(resourceGraph, sparseFieldsService, resourceDefinitionProvider));
        }
        private static QueryParameterDiscovery CreateQueryParameterDiscoveryForAll(IResourceGraph resourceGraph,
                                                                                   CurrentRequest currentRequest, IResourceDefinitionProvider resourceDefinitionProvider, IJsonApiOptions options)
        {
            IIncludeService      includeService      = new IncludeService(resourceGraph, currentRequest);
            IFilterService       filterService       = new FilterService(resourceDefinitionProvider, resourceGraph, currentRequest);
            ISortService         sortService         = new SortService(resourceDefinitionProvider, resourceGraph, currentRequest);
            ISparseFieldsService sparseFieldsService = new SparseFieldsService(resourceGraph, currentRequest);
            IPageService         pageService         = new PageService(options, resourceGraph, currentRequest);
            IOmitDefaultService  omitDefaultService  = new OmitDefaultService(options);
            IOmitNullService     omitNullService     = new OmitNullService(options);

            var queryServices = new List <IQueryParameterService>
            {
                includeService, filterService, sortService, sparseFieldsService, pageService, omitDefaultService,
                omitNullService
            };

            return(new QueryParameterDiscovery(options, queryServices));
        }
        private static QueryParameterParser CreateQueryParameterDiscoveryForAll(IResourceGraph resourceGraph,
                                                                                CurrentRequest currentRequest, IResourceDefinitionProvider resourceDefinitionProvider,
                                                                                IJsonApiOptions options, FakeRequestQueryStringAccessor queryStringAccessor)
        {
            IIncludeService      includeService      = new IncludeService(resourceGraph, currentRequest);
            IFilterService       filterService       = new FilterService(resourceDefinitionProvider, resourceGraph, currentRequest);
            ISortService         sortService         = new SortService(resourceDefinitionProvider, resourceGraph, currentRequest);
            ISparseFieldsService sparseFieldsService = new SparseFieldsService(resourceGraph, currentRequest);
            IPageService         pageService         = new PageService(options, resourceGraph, currentRequest);
            IDefaultsService     defaultsService     = new DefaultsService(options);
            INullsService        nullsService        = new NullsService(options);

            var queryServices = new List <IQueryParameterService>
            {
                includeService, filterService, sortService, sparseFieldsService, pageService, defaultsService,
                nullsService
            };

            return(new QueryParameterParser(options, queryStringAccessor, queryServices, NullLoggerFactory.Instance));
        }