protected function processSecondLevelCache($name, array $config, $isDefault)
{
if (!$config['enabled']) {
return;
}
$builder = $this->getContainerBuilder();
$cacheFactory = $builder->addDefinition($this->prefix($name . '.cacheFactory'))->setClass('Doctrine\\ORM\\Cache\\CacheFactory')->setFactory($config['factoryClass'], [$this->prefix('@' . $name . '.cacheRegionsConfiguration'), $this->processCache($config['driver'], $name . '.secondLevel')])->setAutowired($isDefault);
if ($config['factoryClass'] === $this->managerDefaults['secondLevelCache']['factoryClass'] || is_subclass_of($config['factoryClass'], $this->managerDefaults['secondLevelCache']['factoryClass'])) {
$cacheFactory->addSetup('setFileLockRegionDirectory', [$config['fileLockRegionDirectory']]);
}
$builder->addDefinition($this->prefix($name . '.cacheRegionsConfiguration'))->setClass('Doctrine\\ORM\\Cache\\RegionsConfiguration', [$config['regions']['defaultLifetime'], $config['regions']['defaultLockLifetime']])->setAutowired($isDefault);
$logger = $builder->addDefinition($this->prefix($name . '.cacheLogger'))->setClass('Doctrine\\ORM\\Cache\\Logging\\CacheLogger')->setFactory('Doctrine\\ORM\\Cache\\Logging\\CacheLoggerChain')->setAutowired(FALSE);
if ($config['logging']) {
$logger->addSetup('setLogger', ['statistics', new Statement('Doctrine\\ORM\\Cache\\Logging\\StatisticsCacheLogger')]);
}
$builder->addDefinition($cacheConfigName = $this->prefix($name . '.ormCacheConfiguration'))->setClass('Doctrine\\ORM\\Cache\\CacheConfiguration')->addSetup('setCacheFactory', [$this->prefix('@' . $name . '.cacheFactory')])->addSetup('setCacheLogger', [$this->prefix('@' . $name . '.cacheLogger')])->setAutowired($isDefault);
$configuration = $builder->getDefinition($this->prefix($name . '.ormConfiguration'));
$configuration->addSetup('setSecondLevelCacheEnabled');
$configuration->addSetup('setSecondLevelCacheConfiguration', ['@' . $cacheConfigName]);
}