public override void DoProcess(ResolveRenderingDataSourceArgs args)
{
// if a search context came in, we don't dispose it when done - otherwise we dispose our temp context
bool disposeSearchContext = args.SearchContext == null;
IProviderSearchContext searchContext = null;
try
{
searchContext = args.SearchContext ?? ContentSearchManager.CreateSearchContext(new SitecoreIndexableItem(args.ContextItem));
var query = CreateQuery(searchContext, args.DataSource);
args.DataSourceItems.AddRange(ProcessQueryResults(query));
}
finally
{
if(disposeSearchContext && searchContext != null) searchContext.Dispose();
}
}