public static ISearchContext SearchContext(this HttpContextBase context, Item dataSource) { return(context.CreatePerRequest(CacheKey, () => { // only instantiate one searchContext per request var mapper = ServiceLocator.ServiceProvider.GetService <IItemMapper>(); var sortOptionRepository = ServiceLocator.ServiceProvider.GetService <ISortOptionRepository>(); var settings = mapper.Map <CollectionSettings>(dataSource); // set non-mapped fields settings.CollectionFacets = dataSource.GetListFieldValueItems(DSP.Foundation.SitecoreTemplates.Has_Collection_Facets.CollectionFacets.FieldName).ToList(); settings.CollectionSource = dataSource.GetFieldValueAsItem(DSP.Foundation.SitecoreTemplates.Collection_Source.CollectionSource.FieldName); var facetValueValidator = ServiceLocator.ServiceProvider.GetService <FacetValueValidator>(); return new HttpRequestSearchContext(context.Request, facetValueValidator, settings, sortOptionRepository); })); }