/**
  * {@inheritdoc}
  */
 public function collect(Request $request, Response $response, \Exception $exception = null)
 {
     parent::collect($request, $response, $exception);
     $errors = array();
     $entities = array();
     foreach ($this->registry->getManagers() as $name => $em) {
         $entities[$name] = array();
         /** @var $factory \Doctrine\ORM\Mapping\ClassMetadataFactory */
         $factory = $em->getMetadataFactory();
         $validator = new SchemaValidator($em);
         /** @var $class \Doctrine\ORM\Mapping\ClassMetadataInfo */
         foreach ($factory->getLoadedMetadata() as $class) {
             $entities[$name][] = $class->getName();
             $classErrors = $validator->validateClass($class);
             if (!empty($classErrors)) {
                 $errors[$name][$class->getName()] = $classErrors;
             }
         }
     }
     $this->data['entities'] = $entities;
     $this->data['errors'] = $errors;
 }
 /**
  * {@inheritdoc}
  */
 public function collect(Request $request, Response $response, \Exception $exception = null)
 {
     parent::collect($request, $response, $exception);
     $errors = array();
     $entities = array();
     $caches = array('enabled' => false, 'log_enabled' => false, 'counts' => array('puts' => 0, 'hits' => 0, 'misses' => 0), 'regions' => array('puts' => array(), 'hits' => array(), 'misses' => array()));
     foreach ($this->registry->getManagers() as $name => $em) {
         $entities[$name] = array();
         /** @var $factory \Doctrine\ORM\Mapping\ClassMetadataFactory */
         $factory = $em->getMetadataFactory();
         $validator = new SchemaValidator($em);
         /** @var $class \Doctrine\ORM\Mapping\ClassMetadataInfo */
         foreach ($factory->getLoadedMetadata() as $class) {
             $entities[$name][] = $class->getName();
             $classErrors = $validator->validateClass($class);
             if (!empty($classErrors)) {
                 $errors[$name][$class->getName()] = $classErrors;
             }
         }
         if (version_compare(\Doctrine\ORM\Version::VERSION, '2.5.0-DEV') < 0) {
             continue;
         }
         /** @var $emConfig \Doctrine\ORM\Configuration */
         $emConfig = $em->getConfiguration();
         $slcEnabled = $emConfig->isSecondLevelCacheEnabled();
         if (!$slcEnabled) {
             continue;
         }
         $caches['enabled'] = true;
         /** @var $cacheConfiguration \Doctrine\ORM\Cache\CacheConfiguration */
         /** @var $clacheLoggerChain \Doctrine\ORM\Cache\Logging\CacheLoggerChain */
         $cacheConfiguration = $emConfig->getSecondLevelCacheConfiguration();
         $cacheLoggerChain = $cacheConfiguration->getCacheLogger();
         if (!$cacheLoggerChain || !$cacheLoggerChain->getLogger('statistics')) {
             continue;
         }
         /** @var $cacheLoggerStats \Doctrine\ORM\Cache\Logging\StatisticsCacheLogger */
         $cacheLoggerStats = $cacheLoggerChain->getLogger('statistics');
         $caches['log_enabled'] = true;
         $caches['counts']['puts'] += $cacheLoggerStats->getPutCount();
         $caches['counts']['hits'] += $cacheLoggerStats->getHitCount();
         $caches['counts']['misses'] += $cacheLoggerStats->getMissCount();
         foreach ($cacheLoggerStats->getRegionsPut() as $key => $value) {
             if (!isset($caches['regions']['puts'][$key])) {
                 $caches['regions']['puts'][$key] = 0;
             }
             $caches['regions']['puts'][$key] += $value;
         }
         foreach ($cacheLoggerStats->getRegionsHit() as $key => $value) {
             if (!isset($caches['regions']['hits'][$key])) {
                 $caches['regions']['hits'][$key] = 0;
             }
             $caches['regions']['hits'][$key] += $value;
         }
         foreach ($cacheLoggerStats->getRegionsMiss() as $key => $value) {
             if (!isset($caches['regions']['misses'][$key])) {
                 $caches['regions']['misses'][$key] = 0;
             }
             $caches['regions']['misses'][$key] += $value;
         }
     }
     $this->data['entities'] = $entities;
     $this->data['errors'] = $errors;
     $this->data['caches'] = $caches;
 }
 private function createCollector($queries)
 {
     $connection = $this->getMockBuilder('Doctrine\\DBAL\\Connection')->disableOriginalConstructor()->getMock();
     $connection->expects($this->any())->method('getDatabasePlatform')->will($this->returnValue(new MySqlPlatform()));
     $registry = $this->getMock('Doctrine\\Common\\Persistence\\ManagerRegistry');
     $registry->expects($this->any())->method('getConnectionNames')->will($this->returnValue(array('default' => 'doctrine.dbal.default_connection')));
     $registry->expects($this->any())->method('getManagerNames')->will($this->returnValue(array('default' => 'doctrine.orm.default_entity_manager')));
     $registry->expects($this->any())->method('getConnection')->will($this->returnValue($connection));
     $logger = $this->getMock('Doctrine\\DBAL\\Logging\\DebugStack');
     $logger->queries = $queries;
     $collector = new DoctrineDataCollector($registry);
     $collector->addLogger('default', $logger);
     return $collector;
 }