setDefinition() public method

Sets a service definition.
public setDefinition ( string $id, Definition $definition ) : Definition
$id string The service identifier
$definition Definition A Definition instance
return Definition the service definition
 public function load(array $configs, ContainerBuilder $container)
 {
     $xml = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $xml->load('services.xml');
     $configuration = new Configuration();
     $config = $this->processConfiguration($configuration, $configs);
     foreach ($configs as $subConfig) {
         $config = array_merge($config, $subConfig);
     }
     $definition = $container->getDefinition('goetas_webservices.xsd2php.naming_convention.' . $config['naming_strategy']);
     $container->setDefinition('goetas_webservices.xsd2php.naming_convention', $definition);
     $schemaReader = $container->getDefinition('goetas_webservices.xsd2php.schema_reader');
     foreach ($config['known_locations'] as $namespace => $location) {
         $schemaReader->addMethodCall('addKnownSchemaLocation', [$namespace, $location]);
     }
     foreach (['php', 'jms'] as $type) {
         $definition = $container->getDefinition('goetas_webservices.xsd2php.path_generator.' . $type . '.' . $config['path_generator']);
         $container->setDefinition('goetas_webservices.xsd2php.path_generator.' . $type, $definition);
         $pathGenerator = $container->getDefinition('goetas_webservices.xsd2php.path_generator.' . $type);
         $pathGenerator->addMethodCall('setTargets', [$config['destinations_' . $type]]);
         $converter = $container->getDefinition('goetas_webservices.xsd2php.converter.' . $type);
         foreach ($config['namespaces'] as $xml => $php) {
             $converter->addMethodCall('addNamespace', [$xml, self::sanitizePhp($php)]);
         }
         foreach ($config['aliases'] as $xml => $data) {
             foreach ($data as $type => $php) {
                 $converter->addMethodCall('addAliasMapType', [$xml, $type, self::sanitizePhp($php)]);
             }
         }
     }
     $container->setParameter('goetas_webservices.xsd2php.config', $config);
 }
 /**
  * {@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');
     $container->setParameter('eo_airbrake.api_key', $config['api_key']);
     $container->setParameter('eo_airbrake.async', $config['async']);
     $container->setParameter('eo_airbrake.host', $config['host']);
     $container->setParameter('eo_airbrake.secure', $config['secure']);
     // Exception Listener
     if ($config['api_key']) {
         // Airbreak Configuration
         $class = $container->getParameter('eo_airbrake.configuration.class');
         $definition = new Definition($class, array($config['api_key'], $config['async'], $container->getParameter('kernel.environment'), $config['host'], $config['secure']));
         $container->setDefinition('eo_airbrake.configuration', $definition);
         // Airbreak Client
         $class = $container->getParameter('eo_airbrake.client.class');
         $definition = new Definition($class, array(new Reference('eo_airbrake.configuration')));
         $container->setDefinition('eo_airbrake.client', $definition);
         // Exception Listener
         $class = $container->getParameter('eo_airbrake.exception_listener.class');
         $definition = new Definition($class, array(new Reference('eo_airbrake.client'), $config['ignored_exceptions']));
         $definition->addTag('kernel.event_listener', array('event' => 'kernel.exception', 'method' => 'onKernelException'));
         $container->setDefinition('php_airbrake.exception_listener', $definition);
         // PHP Shutdown Listener
         $class = $container->getParameter('eo_airbrake.shutdown_listener.class');
         $definition = new Definition($class, array(new Reference('eo_airbrake.client')));
         $definition->addTag('kernel.event_listener', array('event' => 'kernel.controller', 'method' => 'register'));
         $container->setDefinition('php_airbrake.shutdown_listener', $definition);
     }
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     $analysis = $container->getParameter('es.analysis');
     $connections = $container->getParameter('es.connections');
     $managers = $container->getParameter('es.managers');
     $collector = $container->get('es.metadata_collector');
     foreach ($managers as $managerName => $manager) {
         if (!isset($connections[$manager['connection']])) {
             throw new InvalidConfigurationException('There is no ES connection with the name: ' . $manager['connection']);
         }
         $managerName = strtolower($managerName);
         $connection = $connections[$manager['connection']];
         $managerDefinition = new Definition($container->getParameter('es.manager.class'), [$managerName, $connection, $analysis, $manager]);
         $managerDefinition->setFactory([new Reference('es.manager_factory'), 'createManager']);
         $container->setDefinition(sprintf('es.manager.%s', $managerName), $managerDefinition);
         // Make es.manager.default as es.manager service.
         if ($managerName === 'default') {
             $container->setAlias('es.manager', 'es.manager.default');
         }
         $mappings = $collector->getMappings($manager['mappings']);
         // Building repository services.
         foreach ($mappings as $repositoryType => $repositoryDetails) {
             $repositoryDefinition = new Definition($container->getParameter('es.repository.class'), [$repositoryDetails['bundle'] . ':' . $repositoryDetails['class']]);
             $repositoryDefinition->setFactory([new Reference(sprintf('es.manager.%s', $managerName)), 'getRepository']);
             $repositoryId = sprintf('es.manager.%s.%s', $managerName, $repositoryType);
             if (strtolower(substr($repositoryType, -8)) === 'document') {
                 $container->setAlias(sprintf('es.manager.%s.%s', $managerName, substr($repositoryType, 0, strlen($repositoryType) - 8)), $repositoryId);
             }
             $container->setDefinition($repositoryId, $repositoryDefinition);
         }
     }
 }
 public function process(ContainerBuilder $container)
 {
     if (!($container->hasDefinition('fragment.listener') && $container->hasDefinition('ezpublish.decorated_fragment_renderer'))) {
         return null;
     }
     $fragmentListenerDef = $container->findDefinition('fragment.listener');
     $fragmentListenerDef->setFactoryService('ezpublish.fragment_listener.factory')->setFactoryMethod('buildFragmentListener')->addArgument('%fragment.listener.class%');
     // Looping over all fragment renderers to decorate them
     // This is to make sure they are siteaccess aware (siteaccess is serialized in rendered path).
     foreach ($container->findTaggedServiceIds('kernel.fragment_renderer') as $id => $attributes) {
         $renamedId = "{$id}.inner";
         $definition = $container->getDefinition($id);
         $public = $definition->isPublic();
         $tags = $definition->getTags();
         $definition->setPublic(false);
         $container->setDefinition($renamedId, $definition);
         $decoratedDef = new DefinitionDecorator('ezpublish.decorated_fragment_renderer');
         $decoratedDef->setArguments(array(new Reference($renamedId)));
         $decoratedDef->setPublic($public);
         $decoratedDef->setTags($tags);
         // Special treatment for inline fragment renderer, to fit ESI renderer constructor type hinting (forced to InlineFragmentRenderer)
         if ($id === 'fragment.renderer.inline') {
             $decoratedDef->setClass($container->getParameter('ezpublish.decorated_fragment_renderer.inline.class'));
         }
         $container->setDefinition($id, $decoratedDef);
     }
 }
Example #5
0
 private function createAndRegisterDefinitions(array $config = array())
 {
     foreach ($config as $commandName => $commandOptions) {
         $definition = $this->generateCommandDefinition($commandName, $commandOptions);
         $this->container->setDefinition('phpzone.shell.' . $commandName, $definition);
     }
 }
 protected function loadManagers($config, ContainerBuilder $container)
 {
     $baseDefinition = $container->getDefinition('kcs.api_connector.request_manager.abstract');
     foreach ($config as $name => $managerConfig) {
         $definition = clone $baseDefinition;
         $definition->setAbstract(false);
         switch ($managerConfig['transport']) {
             case 'guzzle':
                 $definition->replaceArgument(0, new Reference('kcs.api_connector.guzzle_transport'));
                 break;
             case 'custom':
                 $service_name = 'kcs.api_connector.custom_transport.' . $name;
                 $transport_definition = new Definition($managerConfig['transport_class']);
                 $container->setDefinition($service_name, $transport_definition);
                 $definition->replaceArgument(0, new Reference($service_name));
         }
         $definition->replaceArgument(2, $managerConfig['base_url']);
         $auth = isset($managerConfig['authenticator']) ? $managerConfig['authenticator'] : AnonymousAuthenticator::class;
         if (!class_exists($auth)) {
             $auth = new Reference($auth);
         }
         $definition->addMethodCall('setDefaultAuthenticator', [$auth]);
         $container->setDefinition('kcs.api_connector.request_manager.' . $name, $definition);
     }
 }
 private function createBusDefinition($id, $priority)
 {
     $definition = new Definition('stdClass');
     $definition->addTag($this->middlewareTag, array('priority' => $priority));
     $this->container->setDefinition($id, $definition);
     return $definition;
 }
 /**
  * You can modify the container here before it is dumped to PHP code.
  *
  * @param ContainerBuilder $container
  */
 public function process(ContainerBuilder $container)
 {
     // get applications configuration array
     $applications = $container->getParameter(DreamCommerceShopAppstoreExtension::ALIAS . '.apps');
     // create definition for application registry
     $applicationsDefinition = new Definition('DreamCommerce\\ShopAppstoreBundle\\Handler\\ApplicationRegistry');
     // configuration for every app
     foreach ($applications as $app => $data) {
         $definition = new Definition('DreamCommerce\\ShopAppstoreBundle\\Handler\\Application');
         $definition->addArgument($app);
         $definition->addArgument($data['app_id']);
         $definition->addArgument($data['app_secret']);
         $definition->addArgument($data['appstore_secret']);
         // if logger is instantiated, use it
         $definition->addArgument(new Reference(DreamCommerceShopAppstoreExtension::ALIAS . '.logger', ContainerInterface::NULL_ON_INVALID_REFERENCE));
         // ignore SSL errors?
         $definition->addArgument($container->getParameter(DreamCommerceShopAppstoreExtension::ALIAS . '.skip_ssl'));
         // application version
         $definition->addArgument($data['minimal_version']);
         // user agent, todo: make calls consistent, eg. logger argument -> call like this
         $definition->addMethodCall('setUserAgent', [$data['user_agent']]);
         // defined application webhooks configuration
         $definition->addMethodCall('setWebhooks', [$data['webhooks']]);
         $app = DreamCommerceShopAppstoreExtension::ALIAS . '.app.' . $app;
         // append definition
         $container->setDefinition($app, $definition);
         // add application to the registry
         $applicationsDefinition->addMethodCall('register', array(new Reference($app)));
     }
     // append applications registry to the container
     $container->setDefinition(DreamCommerceShopAppstoreExtension::ALIAS . '.apps', $applicationsDefinition);
 }
Example #9
0
 /**
  * {@inheritdoc}
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     $configuration = new Configuration();
     $config = $this->processConfiguration($configuration, $configs);
     if ($config['cache']) {
         $container->setAlias('vesax.seo.metadata_cache', 'doctrine_cache.providers.' . $config['cache']);
     }
     if ($config['redirects']['enabled']) {
         $container->setDefinition('vesax.seo.redirect_matcher', new Definition('Vesax\\SEOBundle\\Matcher\\RedirectRuleMatcher'));
         $redirectListenerDefinition = new Definition('Vesax\\SEOBundle\\EventListener\\RedirectListener', [new Reference('vesax.seo.redirect_rule_repository'), new Reference('vesax.seo.redirect_matcher'), new Reference('vesax.seo.metadata_cache', ContainerInterface::NULL_ON_INVALID_REFERENCE)]);
         $redirectListenerDefinition->addTag('kernel.event_listener', ['event' => 'kernel.exception', 'method' => 'onException']);
         if (!$config['redirects']['not_found_only']) {
             $redirectListenerDefinition->addTag('kernel.event_listener', ['event' => 'kernel.request', 'method' => 'onRequest', 'priority' => 99]);
         }
         $container->setDefinition('vesax.seo.redirect_listener', $redirectListenerDefinition);
         $redirectAdminDefinition = new Definition('Vesax\\SEOBundle\\Admin\\RedirectRuleAdmin', [null, "Vesax\\SEOBundle\\Entity\\RedirectRule", "SonataAdminBundle:CRUD"]);
         $redirectAdminDefinition->addTag('sonata.admin', ['manager_type' => 'orm', 'group' => 'SEO', 'label' => 'Redirect Rules']);
         $container->setDefinition('vesax.seo.admin.rediect_rule', $redirectAdminDefinition);
     }
     if ($config['robots']) {
         $menuListenerDefinition = new Definition('Vesax\\SEOBundle\\EventListener\\ConfigureAdminMenuListener');
         $menuListenerDefinition->addTag('kernel.event_listener', ['event' => 'sonata.admin.event.configure.menu.sidebar', 'method' => 'configureMenu']);
         $container->setDefinition('vesax.seo.admin.menu_listener', $menuListenerDefinition);
     }
     if ($config['meta']) {
         $metaAdminDefinition = new Definition('Vesax\\SEOBundle\\Admin\\RuleAdmin', [null, Rule::class, 'SonataAdminBundle:CRUD']);
         $metaAdminDefinition->addTag('sonata.admin', ['manager_type' => 'orm', 'group' => 'SEO', 'label' => 'Page Rules']);
         $container->setDefinition('vesax.seo.admin.rule', $metaAdminDefinition);
     }
     $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $loader->load('services.yml');
 }
 /**
  * Returns a definition for an asset package.
  *
  * @param ContainerBuilder $container   Container
  * @param array            $httpUrls    SSL assets_base_urls
  * @param array            $sslUrls     assets_base_urls
  * @param string           $rootDir     Directory where to look for reved assets
  * @param string           $summaryFile Grunt filerev summary file
  * @param string           $cacheDir    Kernel cache dir
  * @param bool             $debug       Debug mode?
  * @param string           $name        Package name
  *
  * @return DefinitionDecorator
  */
 private function createPackageDefinition(ContainerBuilder $container, array $httpUrls, array $sslUrls, $rootDir, $summaryFile, $cacheDir, $debug, $name = null)
 {
     if (!$httpUrls) {
         $package = new DefinitionDecorator('grunt.filerev.templating.asset.path_package');
         $package->setPublic(false)->setScope('request')->replaceArgument(1, $rootDir)->replaceArgument(2, $summaryFile)->replaceArgument(3, $cacheDir)->replaceArgument(4, $debug);
         return $package;
     }
     if ($httpUrls == $sslUrls) {
         $package = new DefinitionDecorator('grunt.filerev.templating.asset.url_package');
         $package->setPublic(false)->replaceArgument(0, $sslUrls)->replaceArgument(1, $rootDir)->replaceArgument(2, $summaryFile)->replaceArgument(3, $cacheDir)->replaceArgument(4, $debug);
         return $package;
     }
     $prefix = $name ? 'templating.asset.package.' . $name : 'templating.asset.default_package';
     $httpPackage = new DefinitionDecorator('grunt.filerev.templating.asset.url_package');
     $httpPackage->replaceArgument(0, $httpUrls)->replaceArgument(1, $rootDir)->replaceArgument(2, $summaryFile)->replaceArgument(3, $cacheDir)->replaceArgument(4, $debug);
     $container->setDefinition($prefix . '.http', $httpPackage);
     if ($sslUrls) {
         $sslPackage = new DefinitionDecorator('grunt.filerev.templating.asset.url_package');
         $sslPackage->replaceArgument(0, $sslUrls)->replaceArgument(1, $rootDir)->replaceArgument(2, $summaryFile)->replaceArgument(3, $cacheDir)->replaceArgument(4, $debug);
     } else {
         $sslPackage = new DefinitionDecorator('grunt.filerev.templating.asset.path_package');
         $sslPackage->setScope('request')->replaceArgument(1, $rootDir)->replaceArgument(2, $summaryFile)->replaceArgument(3, $cacheDir)->replaceArgument(4, $debug);
     }
     $container->setDefinition($prefix . '.ssl', $sslPackage);
     $package = new DefinitionDecorator('templating.asset.request_aware_package');
     $package->setPublic(false)->setScope('request')->replaceArgument(1, $prefix . '.http')->replaceArgument(2, $prefix . '.ssl');
     return $package;
 }
Example #11
0
 public function testConfigure()
 {
     $prevDumper = $this->getDumpHandler();
     $container = new ContainerBuilder();
     $container->setDefinition('var_dumper.cloner', new Definition('Symfony\\Component\\HttpKernel\\Tests\\EventListener\\MockCloner'));
     $container->setDefinition('mock_dumper', new Definition('Symfony\\Component\\HttpKernel\\Tests\\EventListener\\MockDumper'));
     ob_start();
     $exception = null;
     $listener = new DumpListener($container, 'mock_dumper');
     try {
         $listener->configure();
         $lazyDumper = $this->getDumpHandler();
         VarDumper::dump('foo');
         $loadedDumper = $this->getDumpHandler();
         VarDumper::dump('bar');
         $this->assertSame('+foo-+bar-', ob_get_clean());
         $listenerReflector = new \ReflectionClass($listener);
         $lazyReflector = new \ReflectionFunction($lazyDumper);
         $loadedReflector = new \ReflectionFunction($loadedDumper);
         $this->assertSame($listenerReflector->getFilename(), $lazyReflector->getFilename());
         $this->assertSame($listenerReflector->getFilename(), $loadedReflector->getFilename());
         $this->assertGreaterThan($lazyReflector->getStartLine(), $loadedReflector->getStartLine());
     } catch (\Exception $exception) {
     }
     VarDumper::setHandler($prevDumper);
     if (null !== $exception) {
         throw $exception;
     }
 }
Example #12
0
 /**
  * {@inheritDoc}
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     $configuration = new Configuration();
     $config = $this->processConfiguration($configuration, $configs);
     foreach ($config['renderer'] as $rendererName => $rendererConfiguration) {
         switch ($rendererConfiguration['type']) {
             default:
                 // case native
                 $class = 'Avisota\\Renderer\\NativeMessageRenderer';
                 $args = array();
         }
         $definition = new Definition($class, $args);
         $container->setDefinition('avisota.renderer.' . $rendererName, $definition);
     }
     foreach ($config['queue'] as $queueName => $queueConfiguration) {
         switch ($queueConfiguration['type']) {
             default:
                 // case simple
                 $class = 'Avisota\\Queue\\SimpleDatabaseQueue';
                 $args = array(new Reference('doctrine.dbal.default_connection'), $queueConfiguration['table']);
         }
         $definition = new Definition($class, $args);
         $container->setDefinition('avisota.queue.' . $queueName, $definition);
     }
     foreach ($config['transport'] as $transportName => $transportConfiguration) {
         switch ($transportConfiguration['type']) {
             default:
                 // case swift
                 $class = 'Avisota\\Transport\\SwiftTransport';
                 $args = array(new Reference($transportConfiguration['id']), new Reference('avisota.renderer.' . $transportConfiguration['renderer']));
         }
         $definition = new Definition($class, $args);
         $container->setDefinition('avisota.transport.' . $transportName, $definition);
     }
 }
 /**
  * Creates a new Guzzle client definition
  *
  * @param string           $name      Client name
  * @param array            $config    Client configuration
  * @param ContainerBuilder $container Service container
  *
  * @throws \LogicException
  */
 private function newGuzzleClient($name, array $config, ContainerBuilder $container)
 {
     $client = new Definition('Guzzle\\Service\\Description\\ServiceDescription');
     $client->setFactory(['Guzzle\\Service\\Description\\ServiceDescription', 'factory']);
     if (!isset($config['description']['name'])) {
         $config['description']['name'] = $name;
     }
     $client->addArgument($config['description']);
     // Add the service to the container
     $serviceName = sprintf('lsw_guzzle.%s', $name);
     $container->setDefinition($serviceName, $client);
     $client = new Definition('Guzzle\\Service\\Client');
     $client->setFactory(['Guzzle\\Service\\Client', 'factory']);
     $client->addArgument($config['config']);
     $client->addMethodCall('setDescription', array(new Reference($serviceName)));
     $client->addMethodCall('addSubscriber', array(new Reference('lsw_guzzle.log_plugin')));
     if (isset($config['config']['json_objects']) && $config['config']['json_objects']) {
         $client->addMethodCall('addSubscriber', array(new Reference('lsw_guzzle.json_objects_plugin')));
     }
     if ($container->hasDefinition('lsw_guzzle.command_history_plugin')) {
         $client->addMethodCall('addSubscriber', array(new Reference('lsw_guzzle.command_history_plugin')));
     }
     // Add the service to the container
     $serviceName = sprintf('guzzle.%s', $name);
     $container->setDefinition($serviceName, $client);
 }
 protected function handleConfiguration($config, ContainerBuilder $container)
 {
     if (!isset($config['features'])) {
         return;
     }
     if (!$container->hasDefinition('hotflo_feature_toggle.feature_container')) {
         return;
     }
     $featureToggleContainerDefinition = $container->findDefinition('hotflo_feature_toggle.feature_toggle_container');
     foreach ($config['toggles'] as $toggle => $properties) {
         if ($properties['type'] == 'service') {
             $container->setAlias('hotflo_feature_toggle.toggle.' . $toggle, $properties['service']);
         } else {
             if (!class_exists($properties['class'])) {
                 throw new InvalidConfigurationException(sprintf('Class \'%s\' not found.', $properties['class']));
             }
             $toggleDefinition = new Definition($properties['class']);
             $toggleDefinition->addArgument($properties['options']);
             $container->setDefinition('hotflo_feature_toggle.toggle.' . $toggle, $toggleDefinition);
         }
         $featureToggleContainerDefinition->addMethodCall('addFeatureToggle', [new Reference('hotflo_feature_toggle.toggle.' . $toggle), $toggle]);
     }
     $featureContainerDefinition = $container->findDefinition('hotflo_feature_toggle.feature_container');
     foreach ($config['features'] as $feature => $properties) {
         $featureDefinition = new Definition('JoshuaEstes\\Component\\FeatureToggle\\Feature');
         $featureDefinition->addArgument($properties['options']);
         $featureDefinition->addMethodCall('setKey', [$feature]);
         $featureDefinition->addMethodCall('setToggle', [new Reference('hotflo_feature_toggle.toggle.' . $properties['toggle'])]);
         $container->setDefinition('hotflo_feature_toggle.feature.' . $feature, $featureDefinition);
         $featureContainerDefinition->addMethodCall('addFeature', [new Reference('hotflo_feature_toggle.feature.' . $feature)]);
     }
 }
Example #15
0
 public function process(ContainerBuilder $container)
 {
     // log
     $definition = $container->findDefinition('csa_guzzle.subscriber.log');
     $logServiceId = $container->getParameter('csa_guzzle.subscriber.log.service');
     if ($container->hasDefinition($logServiceId)) {
         $definition->replaceArgument(0, new Reference($logServiceId));
     }
     $channel = $container->getParameter('csa_guzzle.subscriber.log.channel');
     if (!empty($channel)) {
         $definition->clearTag('monolog.logger');
         $definition->addTag('monolog.logger', array('channel' => $channel));
     }
     // Cache
     $cacheServiceId = $container->getParameter('csa_guzzle.subscriber.cache.service');
     if ($container->hasDefinition($cacheServiceId)) {
         $container->setDefinition('csa_guzzle.cache_storage', new Definition('%csa_guzzle.cache_storage.class%', array(new Reference($cacheServiceId), $container->getParameter('csa_guzzle.subscriber.cache.prefix'))));
         $cacheSubscriber = new Definition('%csa_guzzle.subscriber.cache.class%', array(new Reference('csa_guzzle.cache_storage'), $container->getParameter('csa_guzzle.subscriber.cache.enable')));
         $cacheSubscriber->addTag('csa_guzzle.subscriber');
         $container->setDefinition('csa_guzzle.subscriber.cache', $cacheSubscriber);
     }
     // get all Guzzle subscribers
     $subscribers = $container->findTaggedServiceIds('csa_guzzle.subscriber');
     if (!count($subscribers)) {
         return;
     }
     // Factory
     $factory = $container->findDefinition('csa_guzzle.client_factory');
     $arg = [];
     foreach ($subscribers as $subscriber => $options) {
         $arg[] = new Reference($subscriber);
     }
     $factory->replaceArgument(1, $arg);
 }
 /**
  * Creates needed search services for given connection name and parameters.
  *
  * @param ContainerBuilder $container
  * @param string $connectionName
  * @param array $connectionParams
  */
 private function configureSearchServices(ContainerBuilder $container, $connectionName, $connectionParams)
 {
     $alias = $this->getAlias();
     // Http client
     $httpClientId = static::HTTP_CLIENT_ID . ".{$connectionName}";
     $httpClientDef = new DefinitionDecorator(self::HTTP_CLIENT_ID);
     $httpClientDef->replaceArgument(0, $connectionParams['server']);
     $container->setDefinition($httpClientId, $httpClientDef);
     // Content search gateway
     $contentSearchGatewayDef = new DefinitionDecorator(self::CONTENT_SEARCH_GATEWAY_ID);
     $contentSearchGatewayDef->replaceArgument(0, new Reference($httpClientId));
     $contentSearchGatewayDef->replaceArgument(5, $connectionParams['index_name']);
     $contentSearchGatewayId = self::CONTENT_SEARCH_GATEWAY_ID . ".{$connectionName}";
     $container->setDefinition($contentSearchGatewayId, $contentSearchGatewayDef);
     // Location search gateway
     $locationSearchGatewayDef = new DefinitionDecorator(self::LOCATION_SEARCH_GATEWAY_ID);
     $locationSearchGatewayDef->replaceArgument(0, new Reference($httpClientId));
     $locationSearchGatewayDef->replaceArgument(5, $connectionParams['index_name']);
     $locationSearchGatewayId = self::LOCATION_SEARCH_GATEWAY_ID . ".{$connectionName}";
     $container->setDefinition($locationSearchGatewayId, $locationSearchGatewayDef);
     // Search handler
     $searchEngineDef = new DefinitionDecorator(self::MAIN_SEARCH_ENGINE_ID);
     $searchEngineDef->replaceArgument(0, new Reference($contentSearchGatewayId));
     $searchEngineDef->replaceArgument(1, new Reference($locationSearchGatewayId));
     $searchEngineDef->replaceArgument(4, $connectionParams['document_type_name']['content']);
     $searchEngineDef->replaceArgument(5, $connectionParams['document_type_name']['location']);
     $searchEngineId = self::MAIN_SEARCH_ENGINE_ID . ".{$connectionName}";
     $container->setDefinition($searchEngineId, $searchEngineDef);
     $container->setParameter("{$alias}.connection.{$connectionName}.engine_id", $searchEngineId);
 }
 public function testProcess()
 {
     // TEST 1
     // must work with no tagged services
     $containerBuilder = new ContainerBuilder();
     $compilerPass = new RepositoryCompilerPass();
     $compilerPass->process($containerBuilder);
     // TEST 2
     // must add repository tagged service into the repository pool
     $containerBuilder = new ContainerBuilder();
     $containerBuilder->setDefinition('lag.repository.repository_pool', new Definition());
     $repository = new Definition();
     $repository->addTag('doctrine.repository');
     $containerBuilder->setDefinition('repository1', $repository);
     $repository = new Definition();
     $repository->addTag('doctrine.repository');
     $containerBuilder->setDefinition('repository2', $repository);
     $compilerPass = new RepositoryCompilerPass();
     $compilerPass->process($containerBuilder);
     $methodCalls = $containerBuilder->getDefinition('lag.repository.repository_pool')->getMethodCalls();
     $this->assertCount(2, $methodCalls);
     foreach ($methodCalls as $call) {
         /** @var Reference $reference */
         $reference = $call[1][0];
         // test reference assignment
         $this->assertEquals('add', $call[0]);
         $this->assertInstanceOf('Symfony\\Component\\DependencyInjection\\Reference', $reference);
         $this->assertTrue(in_array($reference->__toString(), ['repository1', 'repository2']));
     }
 }
 private function createFilesystem($name, array $config, ContainerBuilder $container, array $adapters, array $caches)
 {
     if (!array_key_exists($config['adapter'], $adapters)) {
         throw new \LogicException(sprintf('The adapter \'%s\' is not defined.', $config['adapter']));
     }
     $adapter = $adapters[$config['adapter']];
     $id = sprintf('oneup_flysystem.%s_filesystem', $name);
     $cache = null;
     if (array_key_exists($config['cache'], $caches)) {
         $cache = $caches[$config['cache']];
         $container->setDefinition($adapter . '_cached', new DefinitionDecorator('oneup_flysystem.adapter.cached'))->replaceArgument(0, new Reference($adapter))->replaceArgument(1, new Reference($cache));
     }
     $tagParams = array('key' => $name);
     if ($config['mount']) {
         $tagParams['mount'] = $config['mount'];
     }
     $options = [];
     if (array_key_exists('visibility', $config)) {
         $options['visibility'] = $config['visibility'];
     }
     $container->setDefinition($id, new DefinitionDecorator('oneup_flysystem.filesystem'))->replaceArgument(0, new Reference($cache ? $adapter . '_cached' : $adapter))->replaceArgument(1, $options)->addTag('oneup_flysystem.filesystem', $tagParams);
     if (!empty($config['alias'])) {
         $container->getDefinition($id)->setPublic(false);
         $container->setAlias($config['alias'], $id);
     }
     // Attach Plugins
     $defFilesystem = $container->getDefinition($id);
     if (isset($config['plugins']) && is_array($config['plugins'])) {
         foreach ($config['plugins'] as $pluginId) {
             $defFilesystem->addMethodCall('addPlugin', array(new Reference($pluginId)));
         }
     }
     return new Reference($id);
 }
 /**
  * @dataProvider processProvider
  */
 public function testProcess($hasWarmer, $configIds)
 {
     $warmerId = 'yahoo_japan_config_cache.cache_warmer';
     $container = new ContainerBuilder();
     foreach ($configIds as $configId) {
         $definition = new Definition($configId);
         $definition->addTag(ConfigCache::TAG_CACHE_WARMER);
         $container->setDefinition($configId, $definition);
     }
     if ($hasWarmer) {
         $definition = new Definition($warmerId);
         $container->setDefinition($warmerId, $definition);
     }
     $pass = new CacheWarmerPass();
     $pass->process($container);
     foreach ($configIds as $index => $configId) {
         if ($hasWarmer) {
             $calls = $container->getDefinition($warmerId)->getMethodCalls();
             $this->assertTrue(isset($calls[$index][0]));
             // method name
             $this->assertSame('addConfig', $calls[$index][0]);
             $this->assertTrue(isset($calls[$index][1][0]));
             // argument
             $this->assertEquals(new Reference($configId), $calls[$index][1][0]);
         } else {
             $this->assertFalse($container->hasDefinition($warmerId));
         }
     }
 }
 /**
  * {@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');
         }
     }
 }
 /**
  * Configure the sitemap source manager.
  *
  * @param array            $config
  * @param ContainerBuilder $container
  */
 protected function configureSitemap(array $config, ContainerBuilder $container)
 {
     $source = $container->getDefinition('sonata.seo.sitemap.manager');
     if (method_exists($source, 'setShared')) {
         // Symfony 2.8+
         $source->setShared(false);
     } else {
         // For Symfony <2.8 compatibility
         $source->setScope(ContainerInterface::SCOPE_PROTOTYPE);
     }
     foreach ($config['doctrine_orm'] as $pos => $sitemap) {
         // define the connectionIterator
         $connectionIteratorId = 'sonata.seo.source.doctrine_connection_iterator_' . $pos;
         $connectionIterator = new Definition('%sonata.seo.exporter.database_source_iterator.class%', array(new Reference($sitemap['connection']), $sitemap['query']));
         $connectionIterator->setPublic(false);
         $container->setDefinition($connectionIteratorId, $connectionIterator);
         // define the sitemap proxy iterator
         $sitemapIteratorId = 'sonata.seo.source.doctrine_sitemap_iterator_' . $pos;
         $sitemapIterator = new Definition('%sonata.seo.exporter.sitemap_source_iterator.class%', array(new Reference($connectionIteratorId), new Reference('router'), $sitemap['route'], $sitemap['parameters']));
         $sitemapIterator->setPublic(false);
         $container->setDefinition($sitemapIteratorId, $sitemapIterator);
         $source->addMethodCall('addSource', array($sitemap['group'], new Reference($sitemapIteratorId), $sitemap['types']));
     }
     foreach ($config['services'] as $service) {
         $source->addMethodCall('addSource', array($service['group'], new Reference($service['id']), $service['types']));
     }
 }
 /**
  * @param \Symfony\Component\DependencyInjection\ContainerBuilder $container
  * @param $code
  * @param \Symfony\Component\DependencyInjection\Definition $formatter
  * @param array                                             $extensions
  *
  * @return string
  */
 public function createEnvironment(ContainerBuilder $container, $code, Definition $formatter, array $extensions)
 {
     $loader = new Definition('Twig_Loader_String');
     $loader->setPublic(false);
     $container->setDefinition(sprintf('sonata.formatter.twig.loader.%s', $code), $loader);
     $loaderSelector = new Definition('Sonata\\FormatterBundle\\Twig\\Loader\\LoaderSelector', array(new Reference(sprintf('sonata.formatter.twig.loader.%s', $code)), new Reference('twig.loader')));
     $loaderSelector->setPublic(false);
     $env = new Definition('Twig_Environment', array($loaderSelector, array('debug' => false, 'strict_variables' => false, 'charset' => 'UTF-8')));
     $env->setPublic(false);
     $container->setDefinition(sprintf('sonata.formatter.twig.env.%s', $code), $env);
     $sandboxPolicy = new Definition('Sonata\\FormatterBundle\\Twig\\SecurityPolicyContainerAware', array(new Reference('service_container'), $extensions));
     $sandboxPolicy->setPublic(false);
     $container->setDefinition(sprintf('sonata.formatter.twig.sandbox.%s.policy', $code), $sandboxPolicy);
     $sandbox = new Definition('Twig_Extension_Sandbox', array($sandboxPolicy, true));
     $sandbox->setPublic(false);
     $container->setDefinition(sprintf('sonata.formatter.twig.sandbox.%s', $code), $sandbox);
     $env->addMethodCall('addExtension', array(new Reference(sprintf('sonata.formatter.twig.sandbox.%s', $code))));
     foreach ($extensions as $extension) {
         $env->addMethodCall('addExtension', array(new Reference($extension)));
     }
     $lexer = new Definition('Twig_Lexer', array(new Reference(sprintf('sonata.formatter.twig.env.%s', $code)), array('tag_comment' => array('<#', '#>'), 'tag_block' => array('<%', '%>'), 'tag_variable' => array('<%=', '%>'))));
     $lexer->setPublic(false);
     $container->setDefinition(new Reference(sprintf('sonata.formatter.twig.lexer.%s', $code)), $lexer);
     $env->addMethodCall('setLexer', array(new Reference(sprintf('sonata.formatter.twig.lexer.%s', $code))));
     return sprintf('sonata.formatter.twig.env.%s', $code);
 }
 private function getContainer()
 {
     $container = new ContainerBuilder();
     $container->setDefinition('a', new Definition('Darsyn\\Bundle\\ServiceTemplatesBundle\\Test\\Fixtures\\A'));
     $container->setDefinition('b', new Definition('Darsyn\\Bundle\\ServiceTemplatesBundle\\Test\\Fixtures\\B'));
     return $container;
 }
 /**
  * @return ContainerBuilder
  */
 public static function createContainer($rootDir)
 {
     $container = new ContainerBuilder(new ParameterBag(array('kernel.root_dir' => $rootDir)));
     // synthetic services
     $container->setDefinition('autoloader', new Definition('Composer\\Autoload\\ClassLoader'))->setSynthetic(true);
     $container->setDefinition('input_interface', new Definition('Symfony\\Component\\Console\\Input\\InputInterface'))->setSynthetic(true);
     $container->setDefinition('output_interface', new Definition('Symfony\\Component\\Console\\Input\\InputInterface'))->setSynthetic(true);
     $container->setDefinition('question_helper', new Definition('Symfony\\Component\\Console\\Helper\\QuestionHelper'))->setSynthetic(true);
     $container->register('io_service', 'ShopwareCli\\Services\\IoService')->addArgument(new Reference('input_interface'))->addArgument(new Reference('output_interface'))->addArgument(new Reference('question_helper'));
     $container->register('process_executor', 'ShopwareCli\\Services\\ProcessExecutor')->addArgument(new Reference('output_interface'))->addArgument(getenv('SW_TIMEOUT') ?: self::DEFAULT_PROCESS_TIMEOUT);
     $container->register('git_identity_environment', 'ShopwareCli\\Services\\GitIdentityEnvironment')->addArgument(new Reference('path_provider'))->addArgument(new Reference('config'));
     $container->register('git_util', 'ShopwareCli\\Services\\GitUtil')->addArgument(new Reference('output_interface'))->addArgument(new Reference('git_identity_environment'))->addArgument(getenv('SW_TIMEOUT') ?: self::DEFAULT_PROCESS_TIMEOUT);
     $container->register('utilities', 'ShopwareCli\\Utilities')->addArgument(new Reference('io_service'));
     $container->register('xdg', '\\XdgBaseDir\\Xdg');
     $container->register('plugin_info', '\\Shopware\\PluginInfo\\PluginInfo');
     $container->register('directory_gateway', 'ShopwareCli\\Services\\PathProvider\\DirectoryGateway\\XdgGateway')->addArgument(new Reference('xdg'));
     $container->register('file_downloader', 'ShopwareCli\\Services\\StreamFileDownloader')->addArgument(new Reference('io_service'));
     $container->register('path_provider', 'ShopwareCli\\Services\\PathProvider\\PathProvider')->addArgument(new Reference('directory_gateway'));
     $container->register('cache', 'ShopwareCli\\Cache\\File')->addArgument($container->get('path_provider'));
     $container->register('rest_service_factory', 'ShopwareCli\\Services\\Rest\\RestServiceFactory')->addArgument(new Reference('service_container'));
     $container->register('config_file_collector', 'ShopwareCli\\ConfigFileCollector')->addArgument(new Reference('path_provider'));
     $container->register('config', 'ShopwareCli\\Config')->addArgument(new Reference('config_file_collector'));
     $container->register('extension_manager', 'ShopwareCli\\Application\\ExtensionManager')->addArgument(new Reference('autoloader'));
     $container->register('command_manager', 'ShopwareCli\\Application\\CommandManager')->addArgument(new Reference('extension_manager'))->addArgument(new Reference('service_container'));
     $container->register('openssl_verifier', 'ShopwareCli\\Services\\OpenSSLVerifier')->addArgument('%kernel.root_dir%/Resources/public.key');
     $container->register('shopware_info', 'ShopwareCli\\Services\\ShopwareInfo');
     return $container;
 }
 /**
  * {@inheritdoc}
  */
 public function load(ContainerBuilder $container, array $config)
 {
     $container->setDefinition(self::CLIENT_ID, new Definition('GuzzleHttp\\Client', [$config]));
     $definition = new Definition('Ingresse\\Behat\\ApiExtension\\Context\\Initializer\\ApiClientInitializer', [new Reference(self::CLIENT_ID), $config]);
     $definition->addTag(ContextExtension::INITIALIZER_TAG);
     $container->setDefinition('ingresse_api.context_initializer', $definition);
 }
 /**
  * @inheritDoc
  */
 public function createServiceDefinitions(array $data, ContainerBuilder $container, $prefix)
 {
     if (!isset($data['host'])) {
         throw new UrlResolveException("No host found in url");
     }
     $ssl = isset($data['ssl']) ? (bool) $data['ssl'] : false;
     $port = $ssl ? 443 : 80;
     if (isset($data['port'])) {
         if (!ctype_digit($data['port'])) {
             throw new UrlResolveException("Invalid port numer '{$data['port']}'");
         }
         $port = intval($data['port'], 10);
     }
     $host = $data['host'];
     $protocol = $ssl ? 'https' : 'http';
     $path = isset($data['path']) ? $data['path'] : '';
     $settings = ['baseUri' => "{$protocol}://{$host}:{$port}/{$path}"];
     if (isset($data['user'])) {
         $settings['userName'] = $data['user'];
     }
     if (isset($data['pass'])) {
         $settings['password'] = $data['pass'];
     }
     if (isset($data['proxy'])) {
         $settings['proxy'] = $data['proxy'];
     }
     $adapterPrefix = null;
     if (isset($data['prefix'])) {
         $adapterPrefix = $data['prefix'];
     }
     $container->setDefinition("{$prefix}.client", new Definition('Sabre\\DAV\\Client', [$settings]));
     $container->setDefinition("{$prefix}.adapter", new Definition('League\\Flysystem\\WebDAV\\WebDAVAdapter', [new Reference("{$prefix}.client"), $adapterPrefix]));
     return "{$prefix}.adapter";
 }
 /**
  * @var ContainerBuilder
  * @return \Symfony\Component\DependencyInjection\ContainerBuilder
  */
 public function createContainer()
 {
     $civicrm_base_path = dirname(dirname(__DIR__));
     $container = new ContainerBuilder();
     $container->setParameter('civicrm_base_path', $civicrm_base_path);
     $container->set(self::SELF, $this);
     // TODO Move configuration to an external file; define caching structure
     //    if (empty($configDirectories)) {
     //      throw new \Exception(__CLASS__ . ': Missing required properties (civicrmRoot, configDirectories)');
     //    }
     //    $locator = new FileLocator($configDirectories);
     //    $loaderResolver = new LoaderResolver(array(
     //      new YamlFileLoader($container, $locator)
     //    ));
     //    $delegatingLoader = new DelegatingLoader($loaderResolver);
     //    foreach (array('services.yml') as $file) {
     //      $yamlUserFiles = $locator->locate($file, NULL, FALSE);
     //      foreach ($yamlUserFiles as $file) {
     //        $delegatingLoader->load($file);
     //      }
     //    }
     $container->setDefinition('angular', new Definition('\\Civi\\Angular\\Manager', array()))->setFactoryService(self::SELF)->setFactoryMethod('createAngularManager');
     $container->setDefinition('dispatcher', new Definition('\\Symfony\\Component\\EventDispatcher\\EventDispatcher', array()))->setFactoryService(self::SELF)->setFactoryMethod('createEventDispatcher');
     $container->setDefinition('magic_function_provider', new Definition('\\Civi\\API\\Provider\\MagicFunctionProvider', array()));
     $container->setDefinition('civi_api_kernel', new Definition('\\Civi\\API\\Kernel', array(new Reference('dispatcher'), new Reference('magic_function_provider'))))->setFactoryService(self::SELF)->setFactoryMethod('createApiKernel');
     // Expose legacy singletons as services in the container.
     $singletons = array('resources' => 'CRM_Core_Resources', 'httpClient' => 'CRM_Utils_HttpClient');
     foreach ($singletons as $name => $class) {
         $container->setDefinition($name, new Definition($class))->setFactoryClass($class)->setFactoryMethod('singleton');
     }
     return $container;
 }
 /**
  * Process the adaptor config configuration.
  *
  * @param array $config
  * @param ContainerBuilder $container
  */
 protected function loadConfigs(array $config, ContainerBuilder $container)
 {
     foreach ($config['configs'] as $name => $arguments) {
         if (!$arguments['enabled']) {
             continue;
         }
         $id = 'integrated_channel.config.memory.' . $name;
         if ($container->hasDefinition($id)) {
             continue;
         }
         // first create the options and for that we need a unique service id
         do {
             $id_options = $id . '.options.' . uniqid();
         } while ($container->hasDefinition($id_options));
         $definition = new Definition('%integrated_channel.config.options.class%');
         $definition->setPublic(false);
         $definition->setArguments([$arguments['options']]);
         $container->setDefinition($id_options, $definition);
         // create the config it self
         $definition = new Definition('%integrated_channel.config.class%');
         $definition->setArguments([$name, $arguments['adaptor'], new Reference($id_options)]);
         if ($arguments['channel']) {
             foreach ($arguments['channel'] as $channel) {
                 $definition->addTag('integrated_channel.config', ['channel' => $channel]);
             }
         } else {
             $definition->addTag('integrated_channel.config');
         }
         $container->setDefinition($id, $definition);
     }
 }
 /**
  * {@inheritdoc}
  */
 public function create(ContainerBuilder $container, $id, $config, $userProvider, $defaultEntryPoint)
 {
     // authentication provider
     $authProviderId = 'oro_security.authentication.provider.organization_rememberme.' . $id;
     $container->setDefinition($authProviderId, new DefinitionDecorator('oro_security.authentication.provider.organization_rememberme'))->addArgument($config['key'])->addArgument($id);
     $templateId = 'oro_security.authentication.organization_rememberme.services.simplehash';
     $rememberMeServicesId = $templateId . '.' . $id;
     if ($container->hasDefinition('security.logout_listener.' . $id)) {
         $container->getDefinition('security.logout_listener.' . $id)->addMethodCall('addHandler', array(new Reference($rememberMeServicesId)));
     }
     $rememberMeServices = $container->setDefinition($rememberMeServicesId, new DefinitionDecorator($templateId));
     $rememberMeServices->replaceArgument(1, $config['key']);
     $rememberMeServices->replaceArgument(2, $id);
     if (isset($config['token_provider'])) {
         $rememberMeServices->addMethodCall('setTokenProvider', array(new Reference($config['token_provider'])));
     }
     // remember-me options
     $rememberMeServices->replaceArgument(3, array_intersect_key($config, $this->options));
     // attach to remember-me aware listeners
     $rememberMeServices->replaceArgument(0, $this->getUserProviders($container, $config, $id, $rememberMeServicesId));
     // remember-me listener
     $listenerId = 'oro_security.authentication.listener.organization_rememberme.' . $id;
     $listener = $container->setDefinition($listenerId, new DefinitionDecorator('oro_security.authentication.listener.organization_rememberme'));
     $listener->replaceArgument(1, new Reference($rememberMeServicesId));
     return array($authProviderId, $listenerId, $defaultEntryPoint);
 }
 /**
  * {@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');
     $loader->load('adapters.xml');
     if ($config['limit']) {
         $container->setParameter('chromedia_pager.pager.limit', $config['limit']);
     }
     if ($config['max_pages']) {
         $container->setParameter('chromedia_pager.pager.max_pages', $config['max_pages']);
     }
     if ($config['template']) {
         $container->setParameter('chromedia_pager.pager.template', $config['template']);
     }
     $pagerDef = $container->getDefinition('chromedia_pager.pager');
     $pagerDef->replaceArgument(0, null);
     // Add concrete pagers based on the same defintion (and defaults) as the main pager class
     $doctrineOrmPagerDef = clone $pagerDef;
     $doctrineOrmPagerDef->replaceArgument(0, new Reference('chromedia_pager.adapter.doctrine_orm'));
     $container->setDefinition('chromedia_pager.doctrine_orm_pager', $doctrineOrmPagerDef);
     $arrayPagerDef = clone $pagerDef;
     $arrayPagerDef->replaceArgument(0, new Reference('chromedia_pager.adapter.array'));
     $container->setDefinition('chromedia_pager.array_pager', $arrayPagerDef);
 }