private function createCollector($type, $config)
 {
     $definition = new DefinitionDecorator('beberlei_metrics.collector_proto.' . $config['type']);
     // Theses listeners should be as late as possible
     $definition->addTag('kernel.event_listener', array('method' => 'flush', 'priority' => -1024, 'event' => 'kernel.terminate'));
     $definition->addTag('kernel.event_listener', array('method' => 'flush', 'priority' => -1024, 'event' => 'console.terminate'));
     switch ($type) {
         case 'doctrine_dbal':
             $ref = $config['connection'] ? sprintf('doctrine.dbal.%s_connection', $config['connection']) : 'database_connection';
             $definition->replaceArgument(0, new Reference($ref));
             return $definition;
         case 'graphite':
             $definition->replaceArgument(0, $config['host'] ?: 'localhost');
             $definition->replaceArgument(1, $config['port'] ?: 2003);
             $definition->replaceArgument(2, $config['protocol'] ?: 'tcp');
             return $definition;
         case 'librato':
             $definition->replaceArgument(1, $config['source']);
             $definition->replaceArgument(2, $config['username']);
             $definition->replaceArgument(3, $config['password']);
             return $definition;
         case 'logger':
         case 'null':
             return $definition;
         case 'statsd':
             $definition->replaceArgument(0, $config['host'] ?: 'localhost');
             $definition->replaceArgument(1, $config['port'] ?: 8125);
             $definition->replaceArgument(2, (string) $config['prefix']);
             return $definition;
         case 'zabbix':
             $sender = new Definition('Net\\Zabbix\\Sender');
             if ($config['file']) {
                 $senderConfig = new Definition('Net\\Zabbix\\Agent\\Config');
                 $senderConfig->addArgument($config['file']);
                 $sender->addMethodCall('importAgentConfig', array($senderConfig));
             } else {
                 $sender->addArgument($config['host'] ?: 'localhost');
                 $sender->addArgument((int) $config['port'] ?: 10051);
             }
             $definition->replaceArgument(0, $sender);
             $definition->replaceArgument(1, $config['prefix']);
             return $definition;
         case 'credis':
             $credis_client = new Definition('Credis_Client');
             $credis_client->addArgument($config['host'] ?: 'localhost');
             $credis_client->addArgument($config['port'] ?: 6379);
             $definition->replaceArgument(0, $credis_client);
             return $definition;
         default:
             throw new \InvalidArgumentException(sprintf('The type "%s" is not supported', $type));
     }
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     if ($container->hasDefinition('doctrine')) {
         $definition = new DefinitionDecorator('dag.form.type.object_to_identifier');
         $definition->addArgument(new Reference('doctrine'));
         $definition->addArgument('dag_entity_to_identifier');
         $definition->addTag('form.type', array('alias' => 'dag_entity_to_identifier'));
         $container->setDefinition('dag_entity_to_identifier', $definition);
     }
     if ($container->hasDefinition('doctrine_mongodb')) {
         $definition = new DefinitionDecorator('dag.form.type.object_to_identifier');
         $definition->addArgument(new Reference('doctrine_mongodb'));
         $definition->addArgument('dag_document_to_identifier');
         $definition->addTag('form.type', array('alias' => 'dag_document_to_identifier'));
         $container->setDefinition('dag_document_to_identifier', $definition);
         if (!$container->hasDefinition('dag_entity_to_identifier')) {
             $container->setAlias('dag_entity_to_identifier', 'dag_document_to_identifier');
         }
     }
     if ($container->hasDefinition('doctrine_phpcr')) {
         $definition = new DefinitionDecorator('dag.form.type.object_to_identifier');
         $definition->addArgument(new Reference('doctrine_phpcr'));
         $definition->addArgument('dag_phpcr_document_to_identifier');
         $definition->addTag('form.type', array('alias' => 'dag_phpcr_document_to_identifier'));
         $container->setDefinition('dag_phpcr_document_to_identifier', $definition);
         if (!$container->hasDefinition('dag_entity_to_identifier')) {
             $container->setAlias('dag_entity_to_identifier', 'dag_phpcr_document_to_identifier');
         }
     }
 }
 private function createConverter($name, array $config, ContainerBuilder $container)
 {
     $environment = new DefinitionDecorator($config['environment']);
     $environment->setPublic(false);
     $environment->setClass($container->getDefinition($config['environment'])->getClass());
     $environment->addMethodCall('mergeConfig', [$config['config']]);
     $environment->addTag('webuni_commonmark.environment.extensions', $config['extensions']);
     // $environment->addTag('webuni_commonmark.environment', ['parent' => $config['environment'], 'extensions' => [$config['extensions']]);
     $environmentName = 'webuni_commonmark.' . $name . '_environment' . $config['environment'];
     $container->setDefinition($environmentName, $environment);
     $parser = new DefinitionDecorator($config['parser']);
     $parser->setPublic(false);
     $parser->setClass($container->getDefinition($config['parser'])->getClass());
     $parser->replaceArgument(0, new Reference($environmentName));
     $renderer = new DefinitionDecorator($config['renderer']);
     $renderer->setPublic(false);
     $renderer->setClass($container->getDefinition($config['renderer'])->getClass());
     $renderer->replaceArgument(0, new Reference($environmentName));
     $converter = new DefinitionDecorator($config['converter']);
     $converter->setPublic(true);
     $converter->setClass($container->getDefinition($config['converter'])->getClass());
     $converter->replaceArgument(0, $parser);
     $converter->replaceArgument(1, $renderer);
     $converterName = 'webuni_commonmark.' . $name . '_converter';
     $container->setDefinition($converterName, $converter);
     return $converterName;
 }
 /**
  * @param ContainerBuilder $container
  *
  * @throws \InvalidArgumentException
  */
 public function process(ContainerBuilder $container)
 {
     $config = $container->getExtensionConfig('elastica')[0];
     $jsonLdFrameLoader = $container->get('nemrod.elastica.jsonld.frame.loader.filesystem');
     $confManager = $container->getDefinition('nemrod.elastica.config_manager');
     $filiationBuilder = $container->get('nemrod.filiation.builder');
     $jsonLdFrameLoader->setFiliationBuilder($filiationBuilder);
     foreach ($config['indexes'] as $name => $index) {
         $indexName = isset($index['index_name']) ? $index['index_name'] : $name;
         foreach ($index['types'] as $typeName => $settings) {
             $jsonLdFrameLoader->setEsIndex($name);
             $frame = $jsonLdFrameLoader->load($settings['frame'], null, true, true, true);
             $type = !empty($frame['@type']) ? $frame['@type'] : $settings['type'];
             if (empty($type)) {
                 throw \Exception("You must provide a RDF Type.");
             }
             //type
             $typeId = 'nemrod.elastica.type.' . $name . '.' . $typeName;
             $indexId = 'nemrod.elastica.index.' . $name;
             $typeDef = new DefinitionDecorator('nemrod.elastica.type.abstract');
             $typeDef->replaceArgument(0, $type);
             $typeDef->setFactory(array(new Reference($indexId), 'getType'));
             $typeDef->addTag('nemrod.elastica.type', array('index' => $name, 'name' => $typeName, 'type' => $type));
             $container->setDefinition($typeId, $typeDef);
             //registering config to configManager
             $confManager->addMethodCall('setTypeConfigurationArray', array($name, $typeName, $type, $frame));
         }
     }
 }
 /**
  * {@inheritDoc}
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     $configuration = new Configuration();
     $config = $this->processConfiguration($configuration, $configs);
     $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $loader->load('services.xml');
     if (array_key_exists('servers', $config)) {
         foreach ($config['servers'] as $id => $server) {
             $container->setParameter('json_rpc.serializer.class', $server['serializer']);
             $container->setParameter('json_rpc.reflection.class', $server['reflection']);
             $definition = new DefinitionDecorator('json_rpc.server');
             $definition->addTag('json_rpc.servers', array('resource' => $id));
             foreach ($server['services'] as $service) {
                 $definition->addMethodCall('addService', array($service['namespace'], $service['class']));
             }
             $container->setDefinition(sprintf('json_rpc.server.%s', $id), $definition);
             $definition = new DefinitionDecorator('json_rpc.transport.internal');
             $definition->addTag('json_rpc.transports');
             $definition->replaceArgument(0, new Reference(sprintf('json_rpc.server.%s', $id)));
             $container->setDefinition(sprintf('json_rpc.transport.internal.%s', $id), $definition);
             $definition = new DefinitionDecorator('json_rpc.client.internal');
             $definition->addTag('json_rpc.clients.internal');
             $definition->replaceArgument(0, new Reference(sprintf('json_rpc.transport.internal.%s', $id)));
             $container->setDefinition(sprintf('json_rpc.client.internal.%s', $id), $definition);
         }
     }
 }
 /**
  * @inheritdoc
  */
 public function process(ContainerBuilder $container)
 {
     if (!$container->hasDefinition('qimnet.crud.configuration.repository')) {
         return;
     }
     $repository = $container->getDefinition('qimnet.crud.configuration.repository');
     $defaults = $container->getParameter('qimnet.crud.defaults');
     foreach ($container->getParameter('qimnet.crud.services') as $name => $configuration) {
         $options = $configuration['options'] + array('name' => $name) + $defaults['options'];
         $configuration = $configuration + $defaults;
         $serviceId = 'qimnet.crud.configuration.' . strtolower($name);
         $definition = new DefinitionDecorator('qimnet.crud.configuration');
         foreach (array('object_manager_factory', 'security_context_factory', 'path_generator_factory') as $index => $key) {
             if ($configuration[$key]) {
                 $definition->replaceArgument($index, new Reference($configuration[$key]));
             }
         }
         $definition->addArgument($options);
         if ($configuration['class']) {
             $definition->setClass($configuration['class']);
         }
         $definition->addTag('qimnet.crud.configuration', array('alias' => $name, 'object_class' => $options['object_class'], 'worker' => $configuration['worker'], 'redirection_manager' => $configuration['redirection_manager']));
         $container->setDefinition($serviceId, $definition);
     }
     $taggedServices = $container->findTaggedServiceIds('qimnet.crud.configuration');
     foreach ($taggedServices as $id => $attributes) {
         $repository->addMethodCall('add', array($attributes[0]['alias'], $attributes[0]['object_class'], $id, $attributes[0]['worker'], $attributes[0]['redirection_manager']));
     }
 }
 /**
  * {@inheritDoc}
  */
 public function create(ContainerBuilder $container, $loaderName, array $config)
 {
     $loaderDefinition = new DefinitionDecorator('liip_imagine.binary.loader.prototype.filesystem');
     $loaderDefinition->replaceArgument(2, $config['data_root']);
     $loaderDefinition->addTag('liip_imagine.binary.loader', array('loader' => $loaderName));
     $loaderId = 'liip_imagine.binary.loader.' . $loaderName;
     $container->setDefinition($loaderId, $loaderDefinition);
     return $loaderId;
 }
Esempio n. 8
0
 /**
  * {@inheritdoc}
  */
 public function create(ContainerBuilder $container, $resolverName, array $config)
 {
     $resolverDefinition = new DefinitionDecorator('liip_imagine.cache.resolver.prototype.web_path');
     $resolverDefinition->replaceArgument(2, $config['web_root']);
     $resolverDefinition->replaceArgument(3, $config['cache_prefix']);
     $resolverDefinition->addTag('liip_imagine.cache.resolver', array('resolver' => $resolverName));
     $resolverId = 'liip_imagine.cache.resolver.' . $resolverName;
     $container->setDefinition($resolverId, $resolverDefinition);
     return $resolverId;
 }
 /**
  * {@inheritdoc}
  */
 public function create(ContainerBuilder $container, $resolverName, array $config)
 {
     $resolverDefinition = new DefinitionDecorator('liip_imagine.cache.resolver.prototype.flysystem');
     $resolverDefinition->replaceArgument(0, new Reference($config['filesystem_service']));
     $resolverDefinition->replaceArgument(2, $config['root_url']);
     $resolverDefinition->replaceArgument(3, $config['cache_prefix']);
     $resolverDefinition->addTag('liip_imagine.cache.resolver', array('resolver' => $resolverName));
     $resolverId = 'liip_imagine.cache.resolver.' . $resolverName;
     $container->setDefinition($resolverId, $resolverDefinition);
     return $resolverId;
 }
Esempio n. 10
0
 /**
  * @expectedException \InvalidArgumentException
  * @expectedExceptionMessage Invalid "cache.pool" tag for service "app.cache_pool": accepted attributes are
  */
 public function testThrowsExceptionWhenCachePoolTagHasUnknownAttributes()
 {
     $container = new ContainerBuilder();
     $adapter = new Definition();
     $adapter->setAbstract(true);
     $adapter->addTag('cache.pool');
     $container->setDefinition('app.cache_adapter', $adapter);
     $cachePool = new DefinitionDecorator('app.cache_adapter');
     $cachePool->addTag('cache.pool', array('foobar' => 123));
     $container->setDefinition('app.cache_pool', $cachePool);
     $this->cachePoolPass->process($container);
 }
    /**
     * {@inheritDoc}
     */
    public function create(ContainerBuilder $container, $loaderName, array $config)
    {
        $loaderDefinition = new DefinitionDecorator('liip_imagine.binary.loader.prototype.stream');
        $loaderDefinition->replaceArgument(0, $config['wrapper']);
        $loaderDefinition->replaceArgument(1, $config['context']);
        $loaderDefinition->addTag('liip_imagine.binary.loader', array(
            'loader' => $loaderName,
        ));
        $loaderId = 'liip_imagine.binary.loader.'.$loaderName;

        $container->setDefinition($loaderId, $loaderDefinition);

        return $loaderId;
    }
 /**
  * @expectedException \InvalidArgumentException
  * @expectedExceptionMessage Invalid "cache.pool" tag for service "app.cache_pool": accepted attributes are
  */
 public function testThrowsExceptionWhenCachePoolTagHasUnknownAttributes()
 {
     $container = new ContainerBuilder();
     $container->setParameter('kernel.debug', false);
     $container->setParameter('kernel.name', 'app');
     $container->setParameter('kernel.environment', 'prod');
     $container->setParameter('kernel.root_dir', 'foo');
     $adapter = new Definition();
     $adapter->setAbstract(true);
     $adapter->addTag('cache.pool');
     $container->setDefinition('app.cache_adapter', $adapter);
     $cachePool = new DefinitionDecorator('app.cache_adapter');
     $cachePool->addTag('cache.pool', array('foobar' => 123));
     $container->setDefinition('app.cache_pool', $cachePool);
     $this->cachePoolPass->process($container);
 }
 /**
  * {@inheritdoc}
  */
 protected function loadInternal(array $configs, ContainerBuilder $container)
 {
     $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $loader->load('controller.xml');
     foreach ($configs['filters'] as $name => $settings) {
         if (!$settings['enabled']) {
             continue;
         }
         $loader->load('filters/' . $name . '.xml');
         foreach ($settings['apply_to'] as $i => $pattern) {
             $worker = new DefinitionDecorator('assetic.worker.ensure_filter');
             $worker->replaceArgument(0, '/' . $pattern . '/');
             $worker->replaceArgument(1, new Reference('assetic.filter.' . $name));
             $worker->addTag('assetic.factory_worker');
             $container->setDefinition('assetic.filter.' . $name . '.worker' . $i, $worker);
         }
     }
 }
 private function configureConnectionClient(ContainerBuilder $builder, $connectionName, array $connectionConfig, $profiling)
 {
     $connectionDef = new DefinitionDecorator('kassko_cassandra.connection.prototype');
     $connectionDef->addTag('kassko_cassandra.connection');
     //logger Cql creation.
     $loggerCqlServiceName = $this->computeLoggerCqlServiceName($connectionName);
     $loggerCqlServiceDef = new DefinitionDecorator('kassko_cassandra.logger_cql.prototype');
     if (isset($connectionConfig['logger_service'])) {
         $loggerCqlServiceDef->replaceArgument(0, new Reference($connectionConfig['logger_service']));
     }
     $builder->setDefinition($loggerCqlServiceName, $loggerCqlServiceDef);
     //loggerChain creation.
     $loggerChainServiceName = $this->computeLoggerChainServiceName($connectionName);
     $loggerChainDef = new DefinitionDecorator('kassko_cassandra.logger_chain.prototype');
     $builder->setDefinition($loggerChainServiceName, $loggerChainDef);
     $loggerChainDef->addMethodCall('addLogger', [new Reference($loggerCqlServiceName)]);
     if ($profiling) {
         $loggerProfilerServiceName = $this->computeLoggerProfilerServiceName($connectionName);
         $builder->setDefinition($loggerProfilerServiceName, new DefinitionDecorator('kassko_cassandra.logger_profiler.prototype'));
         $loggerChainDef->addMethodCall('addLogger', [new Reference($loggerProfilerServiceName)]);
         $queryStatsManagerDef = $builder->getDefinition('kassko_cassandra.query_stats.manager');
         $queryStatsManagerDef->addMethodCall('addLogger', [$connectionName, new Reference($loggerProfilerServiceName)]);
     }
     if (isset($connectionConfig['event_dispatcher_service'])) {
         $connectionDef->addMethodCall('setEventDispatcher', [new Reference($connectionConfig['event_dispatcher_service'])]);
     }
     $connectionDef->addMethodCall('setLogger', [new Reference($loggerChainServiceName)]);
     $connectionDef->addMethodCall('useKeyspace', [$connectionConfig['keyspace']]);
     list($dsn, $username, $password) = $this->resolveConnectionParam($connectionConfig);
     if (null === $username xor null === $password) {
         throw new \LogicException(sprintf('username and password should be provided both or neither for keyspace "%s".', $connectionConfig['keyspace']));
     }
     if (null !== $username) {
         $connectionDef->setArguments([$dsn, $username, $password]);
     } else {
         $connectionDef->setArguments([$dsn]);
     }
     $serviceName = $this->computeServiceName($connectionName);
     $builder->setDefinition($serviceName, $connectionDef);
     if (isset($connectionConfig['alias'])) {
         $builder->setAlias($connectionConfig['alias'], $serviceName);
     }
 }
 /**
  * {@inheritdoc}
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     $configuration = new Configuration();
     $config = $this->processConfiguration($configuration, $configs);
     $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $loader->load('services.yml');
     foreach ($config as $key => $stateMachineConfig) {
         $stateMachineConfig = $this->removeDisabledCallbacks($stateMachineConfig);
         $definition = new DefinitionDecorator('bangpound_finite.container_loader');
         $definition->replaceArgument(0, $stateMachineConfig);
         $definition->addTag('bangpound_finite.loader');
         // setLazy method wasn't available before 2.3, FiniteBundle requirement is ~2.1
         if (method_exists($definition, 'setLazy')) {
             $definition->setLazy(true);
         }
         $serviceId = 'bangpound_finite.loader.' . $key;
         $container->setDefinition($serviceId, $definition);
     }
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     if ($container->hasDefinition('doctrine')) {
         $definition = new DefinitionDecorator('sylius.form.type.object_to_identifier');
         $definition->addArgument(new Reference('doctrine'));
         $definition->addArgument('sylius_entity_to_identifier');
         $definition->addTag('form.type', ['alias' => 'sylius_entity_to_identifier']);
         $container->setDefinition('sylius_entity_to_identifier', $definition);
         $definition = $container->findDefinition('sylius.form.type.entity_hidden');
         $definition->replaceArgument(0, new Reference('doctrine'));
     }
     if ($container->hasDefinition('doctrine_mongodb')) {
         $definition = new DefinitionDecorator('sylius.form.type.object_to_identifier');
         $definition->addArgument(new Reference('doctrine_mongodb'));
         $definition->addArgument('sylius_document_to_identifier');
         $definition->addTag('form.type', ['alias' => 'sylius_document_to_identifier']);
         $container->setDefinition('sylius_document_to_identifier', $definition);
         if (!$container->hasDefinition('sylius_entity_to_identifier')) {
             $container->setAlias('sylius_entity_to_identifier', 'sylius_document_to_identifier');
         }
         if (!$container->hasDefinition('doctrine')) {
             $definition = $container->findDefinition('sylius.form.type.entity_hidden');
             $definition->replaceArgument(0, new Reference('doctrine_mongodb'));
         }
     }
     if ($container->hasDefinition('doctrine_phpcr')) {
         $definition = new DefinitionDecorator('sylius.form.type.object_to_identifier');
         $definition->addArgument(new Reference('doctrine_phpcr'));
         $definition->addArgument('sylius_phpcr_document_to_identifier');
         $definition->addTag('form.type', ['alias' => 'sylius_phpcr_document_to_identifier']);
         $container->setDefinition('sylius_phpcr_document_to_identifier', $definition);
         if (!$container->hasDefinition('sylius_entity_to_identifier')) {
             $container->setAlias('sylius_entity_to_identifier', 'sylius_phpcr_document_to_identifier');
         }
     }
 }
 public function load(array $configs, ContainerBuilder $container)
 {
     $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $loader->load('services.xml');
     $processor = new Processor();
     $configuration = $this->getConfiguration($configs, $container);
     $config = $processor->processConfiguration($configuration, $configs);
     $filterDef = $container->getDefinition('the_island.assetic.filter.node_scss');
     foreach ($config['load_paths'] as $loadPath) {
         $filterDef->addMethodCall('addLoadPath', [$loadPath]);
     }
     unset($config['load_paths']);
     if (isset($config['apply_to']) && $config['apply_to']) {
         $worker = new DefinitionDecorator('assetic.worker.ensure_filter');
         $worker->replaceArgument(0, '/' . $config['apply_to'] . '/');
         $worker->replaceArgument(1, new Reference('the_island.assetic.filter.node_scss'));
         $worker->addTag('assetic.factory_worker');
         $container->setDefinition('the_island.assetic.filter.node_scss.worker', $worker);
         unset($config['apply_to']);
     }
     foreach ($config as $key => $value) {
         $container->setParameter('the_island.assetic.filter.node_scss.' . $key, $value);
     }
 }
Esempio n. 18
0
 private function registerCacheConfiguration(array $config, ContainerBuilder $container)
 {
     $version = substr(str_replace('/', '-', base64_encode(md5(uniqid(mt_rand(), true), true))), 0, -2);
     $container->getDefinition('cache.adapter.apcu')->replaceArgument(2, $version);
     $container->getDefinition('cache.adapter.system')->replaceArgument(2, $version);
     $container->getDefinition('cache.adapter.filesystem')->replaceArgument(2, $config['directory']);
     foreach (array('doctrine', 'psr6', 'redis') as $name) {
         if (isset($config[$name = 'default_' . $name . '_provider'])) {
             $container->setAlias('cache.' . $name, Compiler\CachePoolPass::getServiceProvider($container, $config[$name]));
         }
     }
     foreach (array('app', 'system') as $name) {
         $config['pools']['cache.' . $name] = array('adapter' => $config[$name], 'public' => true);
     }
     foreach ($config['pools'] as $name => $pool) {
         $definition = new DefinitionDecorator($pool['adapter']);
         $definition->setPublic($pool['public']);
         unset($pool['adapter'], $pool['public']);
         $definition->addTag('cache.pool', $pool);
         $container->setDefinition($name, $definition);
     }
     if (method_exists(PropertyAccessor::class, 'createCache')) {
         $propertyAccessDefinition = $container->register('cache.property_access', AdapterInterface::class);
         $propertyAccessDefinition->setPublic(false);
         $propertyAccessDefinition->setFactory(array(PropertyAccessor::class, 'createCache'));
         $propertyAccessDefinition->setArguments(array(null, null, $version, new Reference('logger', ContainerInterface::IGNORE_ON_INVALID_REFERENCE)));
         $propertyAccessDefinition->addTag('cache.pool', array('clearer' => 'cache.default_clearer'));
         $propertyAccessDefinition->addTag('monolog.logger', array('channel' => 'cache'));
     }
     $this->addClassesToCompile(array('Symfony\\Component\\Cache\\Adapter\\ApcuAdapter', 'Symfony\\Component\\Cache\\Adapter\\FilesystemAdapter', 'Symfony\\Component\\Cache\\CacheItem'));
 }
 /**
  * Loads doctrine listeners to handle indexing of new or updated objects.
  *
  * @param array            $typeConfig
  * @param ContainerBuilder $container
  * @param string           $objectPersisterId
  * @param string           $indexName
  * @param string           $typeName
  *
  * @return string
  */
 private function loadTypeListener(array $typeConfig, ContainerBuilder $container, $objectPersisterId, $indexName, $typeName)
 {
     if (isset($typeConfig['listener']['service'])) {
         return $typeConfig['listener']['service'];
     }
     /* Note: listener services may conflict with "prototype.driver", if the
      * index and type names were "prototype" and a driver, respectively.
      */
     $abstractListenerId = sprintf('fos_elastica.listener.prototype.%s', $typeConfig['driver']);
     $listenerId = sprintf('fos_elastica.listener.%s.%s', $indexName, $typeName);
     $listenerDef = new DefinitionDecorator($abstractListenerId);
     $listenerDef->replaceArgument(0, new Reference($objectPersisterId));
     $listenerDef->replaceArgument(2, array('identifier' => $typeConfig['identifier'], 'indexName' => $indexName, 'typeName' => $typeName));
     $listenerDef->replaceArgument(3, $typeConfig['listener']['logger'] ? new Reference($typeConfig['listener']['logger']) : null);
     $tagName = null;
     switch ($typeConfig['driver']) {
         case 'orm':
             $tagName = 'doctrine.event_listener';
             break;
         case 'phpcr':
             $tagName = 'doctrine_phpcr.event_listener';
             break;
         case 'mongodb':
             $tagName = 'doctrine_mongodb.odm.event_listener';
             break;
     }
     if (null !== $tagName) {
         foreach ($this->getDoctrineEvents($typeConfig) as $event) {
             $listenerDef->addTag($tagName, array('event' => $event));
         }
     }
     $container->setDefinition($listenerId, $listenerDef);
     return $listenerId;
 }
Esempio n. 20
0
 /**
  * Register logger subscriber
  *
  * @param string $handlerKey
  * @param ContainerBuilder $container
  */
 private function registerLoggerSubscriber($handlerKey, ContainerBuilder $container)
 {
     $eventDispatcherId = 'api.handler.' . $handlerKey . '.event_dispatcher';
     $subscriberId = 'api.handler.' . $handlerKey . '.subscriber.logger';
     $subscriberDefinition = new DefinitionDecorator('api.subscriber.logger_abstract');
     $subscriberDefinition->addTag('monolog.logger', ['channel' => $this->getLoggerChannelForHandler($handlerKey)]);
     $container->setDefinition($subscriberId, $subscriberDefinition);
     $container->getDefinition($eventDispatcherId)->addMethodCall('addSubscriber', [new Reference($subscriberId)]);
 }
 /**
  * Loads doctrine listeners to handle indexing of new or updated objects.
  *
  * @param array $typeConfig
  * @param ContainerBuilder $container
  * @param string $objectPersisterId
  * @param string $indexName
  * @param string $typeName
  * @return string
  */
 private function loadTypeListener(array $typeConfig, ContainerBuilder $container, $objectPersisterId, $indexName, $typeName)
 {
     if (isset($typeConfig['listener']['service'])) {
         return $typeConfig['listener']['service'];
     }
     /* Note: listener services may conflict with "prototype.driver", if the
      * index and type names were "prototype" and a driver, respectively.
      */
     $abstractListenerId = sprintf('fos_elastica.listener.prototype.%s', $typeConfig['driver']);
     $listenerId = sprintf('fos_elastica.listener.%s.%s', $indexName, $typeName);
     $listenerDef = new DefinitionDecorator($abstractListenerId);
     $listenerDef->replaceArgument(0, new Reference($objectPersisterId));
     $listenerDef->replaceArgument(1, $this->getDoctrineEvents($typeConfig));
     $listenerConfig = array('identifier' => $typeConfig['identifier'], 'indexName' => $indexName, 'typeName' => $typeName);
     if ($typeConfig['listener']['logger']) {
         $listenerDef->replaceArgument(4, new Reference($typeConfig['listener']['logger']));
     }
     switch ($typeConfig['driver']) {
         case 'orm':
             $listenerDef->addTag('doctrine.event_subscriber');
             break;
         case 'mongodb':
             $listenerDef->addTag('doctrine_mongodb.odm.event_subscriber');
             break;
     }
     if ($typeConfig['listener']['async']) {
         $listenerDef->setPublic(true);
         $listenerDef->addTag('kernel.event_listener', array('event' => 'kernel.terminate', 'method' => 'onKernelTerminate'));
         $listenerDef->addTag('kernel.event_listener', array('event' => 'console.terminate', 'method' => 'onConsoleTerminate'));
         $listenerConfig['async'] = true;
         $listenerConfig['defer'] = true;
     }
     $listenerDef->replaceArgument(3, $listenerConfig);
     $container->setDefinition($listenerId, $listenerDef);
     return $listenerId;
 }
 private function loadPublishers(array $config, ContainerBuilder $container)
 {
     foreach ($config as $name => $publisherConfig) {
         $transport = $publisherConfig['transport']['type'];
         $parameters = $publisherConfig['transport']['parameters'];
         switch ($transport) {
             case 'amqp':
                 $publisher = new DefinitionDecorator('event_band.transport.amqp.publisher');
                 $publisher->replaceArgument(0, new Reference(self::getAmqpDriverId($parameters['connection'])))->replaceArgument(1, new Reference(self::getAmqpConverterId($parameters['converter'])))->replaceArgument(2, $parameters['exchange'])->replaceArgument(3, new Reference(self::getRouterId($parameters['router'])))->replaceArgument(4, $parameters['persistent'])->replaceArgument(5, $parameters['mandatory'])->replaceArgument(6, $parameters['immediate']);
                 $container->setDefinition(self::getPublisherId($name), $publisher);
                 break;
             default:
                 throw new \Exception('Not implemented');
         }
         $listener = new DefinitionDecorator('event_band.publish_listener');
         $listener->replaceArgument(0, new Reference(self::getPublisherId($name)))->replaceArgument(1, $publisherConfig['propagation']);
         foreach ($publisherConfig['events'] as $event) {
             $listener->addTag('event_band.subscription', ['event' => $event, 'priority' => $publisherConfig['priority']]);
         }
         $container->setDefinition(self::getListenerId($name), $listener);
     }
 }
 /**
  * Creates a subscriber definition.
  *
  * @param string       $adapterName    The adatper name.
  * @param string       $subscriberName The subscriber name.
  * @param array|string $configuration  The configuration.
  *
  * @return \Symfony\Component\DependencyInjection\DefinitionDecorator The subscriber definition.
  */
 private function createSubscriberDefinition($adapterName, $subscriberName, $configuration, ContainerBuilder $container)
 {
     $parent = self::createServiceName('subscriber.' . $subscriberName);
     $subscriber = new DefinitionDecorator($parent);
     $subscriber->setClass($container->getDefinition($parent)->getClass());
     $subscriber->addTag(RegisterListenerCompilerPass::SUBSCRIBER_TAG, array('adapter' => $adapterName));
     switch ($subscriberName) {
         case 'basic_auth':
             $this->configureBasicAuthSubscriberDefinition($subscriber, $configuration, $adapterName, $container);
             break;
         case 'cookie':
             $this->configureCookieSubscriberDefinition($subscriber, $configuration);
             break;
         case 'history':
             $this->configureHistorySubscriberDefinition($subscriber, $configuration);
             break;
         case 'logger':
             $this->configureLoggerSubscriberDefinition($subscriber, $configuration);
             break;
         case 'redirect':
             $this->configureRedirectSubscriberDefinition($subscriber, $configuration, $adapterName, $container);
             break;
         case 'retry':
             $this->configureRetrySubscriberDefinition($subscriber, $adapterName, $container);
             break;
         case 'stopwatch':
             $this->configureStopwatchSubscriberDefinition($subscriber, $configuration);
             break;
     }
     return $subscriber;
 }
Esempio n. 24
0
 /**
  * Loads the configured indexes.
  *
  * @param array $indexes An array of indexes configurations
  * @param ContainerBuilder $container A ContainerBuilder instance
  * @throws \InvalidArgumentException
  * @return array
  */
 private function loadIndexes(array $indexes, ContainerBuilder $container)
 {
     $confManager = $container->getDefinition('nemrod.elastica.config_manager');
     $indexRegistry = $container->getDefinition('nemrod.elastica.index_registry');
     foreach ($indexes as $name => $index) {
         $indexId = sprintf('nemrod.elastica.index.%s', $name);
         $indexName = isset($index['index_name']) ? $index['index_name'] : $name;
         $indexDef = new DefinitionDecorator('nemrod.elastica.index.abstract');
         $indexDef->replaceArgument(0, $indexName);
         $indexDef->addTag('nemrod.elastica.index', array('name' => $name));
         if (isset($index['client'])) {
             $clientId = 'nemrod.elastica.client.' . $index['client'];
             $indexDef->setFactory(array(new Reference($clientId), 'getIndex'));
         }
         $container->setDefinition($indexId, $indexDef);
         $reference = new Reference($indexId);
         $this->indexConfigs[$name] = array('elasticsearch_name' => $indexName, 'reference' => $reference, 'name' => $name, 'settings' => $index['settings']);
         $confManager->addMethodCall('setIndexConfigurationArray', array($name, $this->indexConfigs[$name]));
         $indexRegistry->addMethodCall('registerIndex', array($name, $reference));
     }
 }
Esempio n. 25
0
 /**
  * Loads the configuration.
  *
  * @param array            $configs   An array of configuration settings
  * @param ContainerBuilder $container A ContainerBuilder instance
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $loader->load('assetic.xml');
     $loader->load('templating_twig.xml');
     $loader->load('templating_php.xml');
     $def = $container->getDefinition('assetic.parameter_bag');
     if (method_exists($def, 'setFactory')) {
         // to be inlined in assetic.xml when dependency on Symfony DependencyInjection is bumped to 2.6
         $def->setFactory(array(new Reference('service_container'), 'getParameterBag'));
     } else {
         // to be removed when dependency on Symfony DependencyInjection is bumped to 2.6
         $def->setFactoryService('service_container');
         $def->setFactoryMethod('getParameterBag');
     }
     $processor = new Processor();
     $configuration = $this->getConfiguration($configs, $container);
     $config = $processor->processConfiguration($configuration, $configs);
     $container->setParameter('assetic.debug', $config['debug']);
     $container->setParameter('assetic.use_controller', $config['use_controller']['enabled']);
     $container->setParameter('assetic.enable_profiler', $config['use_controller']['profiler']);
     $container->setParameter('assetic.read_from', $config['read_from']);
     $container->setParameter('assetic.write_to', $config['write_to']);
     $container->setParameter('assetic.variables', $config['variables']);
     $container->setParameter('assetic.java.bin', $config['java']);
     $container->setParameter('assetic.node.bin', $config['node']);
     $container->setParameter('assetic.node.paths', $config['node_paths']);
     $container->setParameter('assetic.ruby.bin', $config['ruby']);
     $container->setParameter('assetic.scss.bin', $config['scss']);
     // register formulae
     $formulae = array();
     foreach ($config['assets'] as $name => $formula) {
         $formulae[$name] = array($formula['inputs'], $formula['filters'], $formula['options']);
     }
     if ($formulae) {
         $container->getDefinition('assetic.config_resource')->replaceArgument(0, $formulae);
     } else {
         $container->removeDefinition('assetic.config_loader');
         $container->removeDefinition('assetic.config_resource');
     }
     // register filters
     foreach ($config['filters'] as $name => $filter) {
         if (isset($filter['resource'])) {
             $loader->load($container->getParameterBag()->resolveValue($filter['resource']));
             unset($filter['resource']);
         } else {
             $loader->load('filters/' . $name . '.xml');
         }
         if (isset($filter['file'])) {
             $container->getDefinition('assetic.filter.' . $name)->setFile($filter['file']);
             unset($filter['file']);
         }
         if (isset($filter['apply_to'])) {
             if (!is_array($filter['apply_to'])) {
                 $filter['apply_to'] = array($filter['apply_to']);
             }
             foreach ($filter['apply_to'] as $i => $pattern) {
                 $worker = new DefinitionDecorator('assetic.worker.ensure_filter');
                 $worker->replaceArgument(0, '/' . $pattern . '/');
                 $worker->replaceArgument(1, new Reference('assetic.filter.' . $name));
                 $worker->addTag('assetic.factory_worker');
                 $container->setDefinition('assetic.filter.' . $name . '.worker' . $i, $worker);
             }
             unset($filter['apply_to']);
         }
         foreach ($filter as $key => $value) {
             $container->setParameter('assetic.filter.' . $name . '.' . $key, $value);
         }
     }
     // twig functions
     $container->setParameter('assetic.twig_extension.functions', $config['twig']['functions']);
     // choose dynamic or static
     if ($useController = $container->getParameterBag()->resolveValue($container->getParameterBag()->get('assetic.use_controller'))) {
         $loader->load('controller.xml');
         $container->getDefinition('assetic.helper.dynamic')->addTag('templating.helper', array('alias' => 'assetic'));
         $container->removeDefinition('assetic.helper.static');
     } else {
         $container->getDefinition('assetic.helper.static')->addTag('templating.helper', array('alias' => 'assetic'));
         $container->removeDefinition('assetic.helper.dynamic');
     }
     $container->setParameter('assetic.bundles', $config['bundles']);
     $this->addClassesToCompile(array('Symfony\\Bundle\\AsseticBundle\\DefaultValueSupplier', 'Symfony\\Bundle\\AsseticBundle\\Factory\\AssetFactory'));
     if ($config['workers']['cache_busting']['enabled']) {
         $container->getDefinition('assetic.worker.cache_busting')->addTag('assetic.factory_worker');
     }
 }
Esempio n. 26
0
 private function registerCacheConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
 {
     foreach ($config['pools'] as $name => $poolConfig) {
         $poolDefinition = new DefinitionDecorator($poolConfig['adapter']);
         $poolDefinition->setPublic($poolConfig['public']);
         unset($poolConfig['adapter'], $poolConfig['public']);
         $poolDefinition->addTag('cache.pool', $poolConfig);
         $container->setDefinition('cache.pool.' . $name, $poolDefinition);
     }
     $this->addClassesToCompile(array('Psr\\Cache\\CacheItemInterface', 'Psr\\Cache\\CacheItemPoolInterface', 'Symfony\\Component\\Cache\\Adapter\\AdapterInterface', 'Symfony\\Component\\Cache\\Adapter\\AbstractAdapter', 'Symfony\\Component\\Cache\\CacheItem'));
 }
 /**
  * Loads the configuration.
  *
  * @param array            $configs   An array of configuration settings
  * @param ContainerBuilder $container A ContainerBuilder instance
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     $bundles = $container->getParameter('kernel.bundles');
     $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $loader->load('assetic.xml');
     $loader->load('templating_twig.xml');
     $loader->load('templating_php.xml');
     $processor = new Processor();
     $configuration = new MainConfiguration(array_keys($bundles));
     $config = $processor->processConfiguration($configuration, $configs);
     $container->setParameter('assetic.debug', $config['debug']);
     $container->setParameter('assetic.use_controller', $config['use_controller']);
     $container->setParameter('assetic.read_from', $config['read_from']);
     $container->setParameter('assetic.write_to', $config['write_to']);
     $container->setParameter('assetic.java.bin', $config['java']);
     $container->setParameter('assetic.node.bin', $config['node']);
     $container->setParameter('assetic.sass.bin', $config['sass']);
     // register formulae
     $formulae = array();
     foreach ($config['assets'] as $name => $formula) {
         $formulae[$name] = array($formula['inputs'], $formula['filters'], $formula['options']);
     }
     if ($formulae) {
         $container->getDefinition('assetic.config_resource')->replaceArgument(0, $formulae);
     } else {
         $container->removeDefinition('assetic.config_loader');
         $container->removeDefinition('assetic.config_resource');
     }
     // register filters
     foreach ($config['filters'] as $name => $filter) {
         if (isset($filter['resource'])) {
             $loader->load($container->getParameterBag()->resolveValue($filter['resource']));
             unset($filter['resource']);
         } else {
             $loader->load('filters/' . $name . '.xml');
         }
         if (isset($filter['file'])) {
             $container->getDefinition('assetic.filter.' . $name)->setFile($filter['file']);
             unset($filter['file']);
         }
         if (isset($filter['apply_to'])) {
             if (!is_array($filter['apply_to'])) {
                 $filter['apply_to'] = array($filter['apply_to']);
             }
             foreach ($filter['apply_to'] as $i => $pattern) {
                 $worker = new DefinitionDecorator('assetic.worker.ensure_filter');
                 $worker->replaceArgument(0, '/' . $pattern . '/');
                 $worker->replaceArgument(1, new Reference('assetic.filter.' . $name));
                 $worker->addTag('assetic.factory_worker');
                 $container->setDefinition('assetic.filter.' . $name . '.worker' . $i, $worker);
             }
             unset($filter['apply_to']);
         }
         foreach ($filter as $key => $value) {
             $container->setParameter('assetic.filter.' . $name . '.' . $key, $value);
         }
     }
     // twig functions
     $container->setParameter('assetic.twig_extension.functions', $config['twig']['functions']);
     // choose dynamic or static
     if ($container->getParameterBag()->resolveValue($container->getParameterBag()->get('assetic.use_controller'))) {
         $loader->load('controller.xml');
         $container->getDefinition('assetic.helper.dynamic')->addTag('templating.helper', array('alias' => 'assetic'));
         $container->removeDefinition('assetic.helper.static');
     } else {
         $loader->load('asset_writer.xml');
         $container->getDefinition('assetic.helper.static')->addTag('templating.helper', array('alias' => 'assetic'));
         $container->removeDefinition('assetic.helper.dynamic');
     }
     // bundle and kernel resources
     foreach ($container->getParameterBag()->resolveValue($config['bundles']) as $bundle) {
         $rc = new \ReflectionClass($bundles[$bundle]);
         foreach (array('twig', 'php') as $engine) {
             $container->setDefinition('assetic.' . $engine . '_directory_resource.' . $bundle, new DirectoryResourceDefinition($bundle, $engine, array($container->getParameter('kernel.root_dir') . '/Resources/' . $bundle . '/views', dirname($rc->getFileName()) . '/Resources/views')));
         }
     }
     foreach (array('twig', 'php') as $engine) {
         $container->setDefinition('assetic.' . $engine . '_directory_resource.kernel', new DirectoryResourceDefinition('', $engine, array($container->getParameter('kernel.root_dir') . '/Resources/views')));
     }
 }
 /**
  * Loads the configuration.
  *
  * @param array            $configs   An array of configuration settings
  * @param ContainerBuilder $container A ContainerBuilder instance
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     $parameterBag = $container->getParameterBag();
     $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $loader->load('assetic.xml');
     $loader->load('templating_twig.xml');
     $loader->load('templating_php.xml');
     $config = self::processConfigs($configs, $container->getParameter('kernel.debug'), array_keys($container->getParameter('kernel.bundles')));
     $container->setParameter('assetic.debug', $config['debug']);
     $container->setParameter('assetic.use_controller', $config['use_controller']);
     $container->setParameter('assetic.read_from', $config['read_from']);
     $container->setParameter('assetic.write_to', $config['write_to']);
     $container->setParameter('assetic.java.bin', $config['java']);
     $container->setParameter('assetic.node.bin', $config['node']);
     $container->setParameter('assetic.sass.bin', $config['sass']);
     // register formulae
     $formulae = array();
     foreach ($config['assets'] as $name => $formula) {
         $formulae[$name] = array($formula['inputs'], $formula['filters'], $formula['options']);
     }
     if ($formulae) {
         $container->getDefinition('assetic.config_resource')->replaceArgument(0, $formulae);
     } else {
         $container->removeDefinition('assetic.config_loader');
         $container->removeDefinition('assetic.config_resource');
     }
     // register filters
     foreach ($config['filters'] as $name => $filter) {
         if (isset($filter['resource'])) {
             $loader->load($parameterBag->resolveValue($filter['resource']));
             unset($filter['resource']);
         } else {
             $loader->load('filters/' . $name . '.xml');
         }
         if (isset($filter['file'])) {
             $container->getDefinition('assetic.filter.' . $name)->setFile($filter['file']);
             unset($filter['file']);
         }
         if (isset($filter['apply_to'])) {
             if (!is_array($filter['apply_to'])) {
                 $filter['apply_to'] = array($filter['apply_to']);
             }
             foreach ($filter['apply_to'] as $i => $pattern) {
                 $worker = new DefinitionDecorator('assetic.worker.ensure_filter');
                 $worker->replaceArgument(0, '/' . $pattern . '/');
                 $worker->replaceArgument(1, new Reference('assetic.filter.' . $name));
                 $worker->addTag('assetic.factory_worker');
                 $container->setDefinition('assetic.filter.' . $name . '.worker' . $i, $worker);
             }
             unset($filter['apply_to']);
         }
         foreach ($filter as $key => $value) {
             $container->setParameter('assetic.filter.' . $name . '.' . $key, $value);
         }
     }
     // twig functions
     $container->setParameter('assetic.twig_extension.functions', $config['twig']['functions']);
     // choose dynamic or static
     if ($parameterBag->resolveValue($parameterBag->get('assetic.use_controller'))) {
         $loader->load('controller.xml');
         $container->getDefinition('assetic.helper.dynamic')->addTag('templating.helper', array('alias' => 'assetic'));
         $container->removeDefinition('assetic.helper.static');
     } else {
         $loader->load('asset_writer.xml');
         $container->getDefinition('assetic.helper.static')->addTag('templating.helper', array('alias' => 'assetic'));
         $container->removeDefinition('assetic.helper.dynamic');
     }
     // register config resources
     self::registerFormulaResources($container, $parameterBag->resolveValue($config['bundles']));
 }
 /**
  * {@inheritDoc}
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     $configuration = new Configuration();
     $config = $this->processConfiguration($configuration, $configs);
     $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $loader->load('services.yml');
     $loader->load('factories.yml');
     $loader->load('builders.yml');
     $profileRegistry = $container->getDefinition('giftcards.encryption.profile.registry');
     foreach ($config['profiles'] as $profile => $profileConfig) {
         $profileRegistry->addMethodCall('set', array($profile, new Definition('Giftcards\\Encryption\\Profile\\Profile', array($profileConfig['cipher'], $profileConfig['key_name']))));
     }
     $container->getDefinition('giftcards.encryption.encryptor')->replaceArgument(4, $config['default_profile']);
     if (count($config['keys']['fallbacks'])) {
         $container->register('giftcards.encryption.key_source.fallback', 'Giftcards\\Encryption\\Key\\FallbackSource')->setArguments(array($config['keys']['fallbacks'], new Reference('giftcards.encryption.key_source')));
         $container->register('giftcards.encryption.key_source.fallback.circular_guard', 'Giftcards\\Encryption\\Key\\CircularGuardSource')->setArguments(array(new Reference('giftcards.encryption.key_source.fallback')));
         $container->getDefinition('giftcards.encryption.key_source.chain')->addMethodCall('addServiceId', array('giftcards.encryption.key_source.fallback.circular_guard'));
     }
     if (count($config['keys']['map'])) {
         $container->register('giftcards.encryption.key_source.mapping', 'Giftcards\\Encryption\\Key\\MappingSource')->setArguments(array($config['keys']['map'], new Reference('giftcards.encryption.key_source')));
         $container->register('giftcards.encryption.key_source.mapping.circular_guard', 'Giftcards\\Encryption\\Key\\CircularGuardSource')->setArguments(array(new Reference('giftcards.encryption.key_source.mapping')));
         $container->getDefinition('giftcards.encryption.key_source.chain')->addMethodCall('addServiceId', array('giftcards.encryption.key_source.mapping.circular_guard'));
     }
     if (count($config['keys']['combine'])) {
         $container->register('giftcards.encryption.key_source.combining', 'Giftcards\\Encryption\\Key\\CombiningSource')->setArguments(array($config['keys']['combine'], new Reference('giftcards.encryption.key_source')));
         $container->register('giftcards.encryption.key_source.combining.circular_guard', 'Giftcards\\Encryption\\Key\\CircularGuardSource')->setArguments(array(new Reference('giftcards.encryption.key_source.combining')));
         $container->getDefinition('giftcards.encryption.key_source.chain')->addMethodCall('addServiceId', array('giftcards.encryption.key_source.combining.circular_guard'));
     }
     if ($config['keys']['cache']) {
         $container->register('giftcards.encryption.key_source.caching', 'Giftcards\\Encryption\\Key\\CachingSource')->setArguments(array(new Definition('Doctrine\\Common\\Cache\\ArrayCache'), new Reference((string) $container->getAlias('giftcards.encryption.key_source'))));
         $container->setAlias('giftcards.encryption.key_source', 'giftcards.encryption.key_source.caching');
     }
     foreach ($config['keys']['sources'] as $name => $sourceConfig) {
         $serviceId = sprintf('giftcards.encryption.key_source.%s', $name);
         $container->setDefinition($serviceId, new DefinitionDecorator('giftcards.encryption.abstract_key_source'))->replaceArgument(0, $sourceConfig['type'])->replaceArgument(1, $sourceConfig['options'])->addTag('giftcards.encryption.key_source', array('prefix' => $sourceConfig['prefix'], 'add_circular_guard' => $sourceConfig['add_circular_guard']));
     }
     foreach ($config['cipher_texts']['rotators'] as $name => $rotatorConfig) {
         $serviceId = sprintf('giftcards.encryption.cipher_text_rotator.%s', $name);
         $container->setDefinition($serviceId, new DefinitionDecorator('giftcards.encryption.abstract_cipher_text_rotator'))->replaceArgument(0, $rotatorConfig['type'])->replaceArgument(1, $rotatorConfig['options'])->addTag('giftcards.encryption.cipher_text_rotator', array('alias' => $name));
     }
     foreach ($config['cipher_texts']['serializers'] as $name => $serializerConfig) {
         $serviceId = sprintf('giftcards.encryption.cipher_text_serializer.%s', $name);
         $container->setDefinition($serviceId, new DefinitionDecorator('giftcards.encryption.abstract_cipher_text_serializer'))->replaceArgument(0, $serializerConfig['type'])->replaceArgument(1, $serializerConfig['options'])->addTag('giftcards.encryption.cipher_text_serializer', array('priority' => $serializerConfig['priority']));
     }
     foreach ($config['cipher_texts']['deserializers'] as $name => $deserializerConfig) {
         $serviceId = sprintf('giftcards.encryption.cipher_text_deserializer.%s', $name);
         $container->setDefinition($serviceId, new DefinitionDecorator('giftcards.encryption.abstract_cipher_text_deserializer'))->replaceArgument(0, $deserializerConfig['type'])->replaceArgument(1, $deserializerConfig['options'])->addTag('giftcards.encryption.cipher_text_deserializer', array('priority' => $deserializerConfig['priority']));
     }
     if ($config['doctrine']['encrypted_properties']['enabled']) {
         $loader->load('doctrine_encrypted_properties.yml');
         foreach ($config['doctrine']['encrypted_properties']['orm']['connections'] as $connection) {
             $listener = new DefinitionDecorator('giftcards.encryption.listener.abstract_encrypted_listener');
             $listener->addTag('doctrine.event_subscriber', array('connection' => $connection));
             $container->setDefinition(sprintf('giftcards.encryption.listener.encrypted_listener.orm.%s', $connection), $listener);
         }
         foreach ($config['doctrine']['encrypted_properties']['odm']['connections'] as $connection) {
             $listener = new DefinitionDecorator('giftcards.encryption.listener.abstract_encrypted_listener');
             $listener->addTag('doctrine_mongodb.odm.event_subscriber', array('connection' => $connection));
             $container->setDefinition(sprintf('giftcards.encryption.listener.encrypted_listener.odm.%s', $connection), $listener);
         }
     }
 }