public function testResolveHints()
 {
     $query = $this->getQuery();
     $query->setHint(Query::HINT_CUSTOM_TREE_WALKERS, ['another_walker_class']);
     $query->setHint('test_output', true);
     $this->queryHintResolver->addOutputWalker('test_output', 'Test\\OutputWalker', null, 'HINT_1');
     $walkerHintProvider = $this->getMock('Oro\\Bundle\\EntityBundle\\ORM\\QueryWalkerHintProviderInterface');
     $this->queryHintResolver->addTreeWalker('test_tree', 'Test\\TreeWalker', $walkerHintProvider, 'HINT_2');
     $walkerHintProvider->expects($this->once())->method('getHints')->with('hint_2_param')->willReturn(['test.tree_walker.hint' => 'val1']);
     $this->queryHintResolver->resolveHints($query, [['name' => 'HINT_2', 'value' => 'hint_2_param'], 'HINT_REFRESH', ['name' => Query::HINT_CUSTOM_TREE_WALKERS, 'value' => 'walker_class']]);
     $this->assertEquals(['test_output' => true, 'test_tree' => 'hint_2_param', Query::HINT_CUSTOM_TREE_WALKERS => ['another_walker_class', 'walker_class', 'Test\\TreeWalker'], Query::HINT_REFRESH => true, Query::HINT_CUSTOM_OUTPUT_WALKER => 'Test\\OutputWalker', 'test.tree_walker.hint' => 'val1'], $query->getHints());
 }
 /**
  * @return ResultRecordInterface[]
  */
 public function getResults()
 {
     $query = $this->qb->getQuery();
     $this->queryHintResolver->resolveHints($query, null !== $this->queryHints ? $this->queryHints : []);
     $event = new OrmResultBefore($this->datagrid, $query);
     $this->eventDispatcher->dispatch(OrmResultBefore::NAME, $event);
     $results = $event->getQuery()->execute();
     $rows = [];
     foreach ($results as $result) {
         $rows[] = new ResultRecord($result);
     }
     $event = new OrmResultAfter($this->datagrid, $rows);
     $this->eventDispatcher->dispatch(OrmResultAfter::NAME, $event);
     return $event->getRecords();
 }
 /**
  * @return ResultRecordInterface[]
  */
 public function getResults()
 {
     $audit = [];
     $rows = [];
     /** @var $qb QueryBuilder $query */
     foreach ($this->getQueryBuilders() as $qb) {
         $query = $qb->getQuery();
         $this->queryHintResolver->resolveHints($query, null !== $this->queryHints ? $this->queryHints : []);
         $beforeEvent = new OrmResultBefore($this->grid, $query);
         $this->dispatcher->dispatch(OrmResultBefore::NAME, $beforeEvent);
         $result = $beforeEvent->getQuery()->execute();
         $audit = array_merge($audit, $result);
         unset($result, $query, $beforeEvent);
     }
     $this->applySorting($audit);
     foreach ($audit as $item) {
         $rows[] = new ResultRecord($item);
     }
     $this->applyPagination($rows);
     $event = new OrmResultAfter($this->grid, $rows);
     $this->dispatcher->dispatch(OrmResultAfter::NAME, $event);
     $records = $event->getRecords();
     return $records;
 }