Tolerance\Bridge\Symfony\Bundle\ToleranceBundle\DependencyInjection\ToleranceExtension::load PHP Method

load() public method

public load ( array $configs, ContainerBuilder $container )
$configs array
$container Symfony\Component\DependencyInjection\ContainerBuilder
    public function load(array $configs, ContainerBuilder $container)
    {
        $configuration = new Configuration();
        $config = $this->processConfiguration($configuration, $configs);
        $container->setParameter('tolerance.aop.enabled', $config['aop']);
        $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
        $loader->load('waiter.xml');
        if ($config['aop']['enabled']) {
            $loader->load('operations/aop.xml');
            $this->loadAop($container, $config['aop']);
        }
        if ($config['operation_runner_listener']) {
            $loader->load('operations/listeners.xml');
        }
        if ($config['tracer']['enabled']) {
            $loader->load('tracer.xml');
            $container->setParameter('tolerance.tracer.service_name', $config['tracer']['service_name']);
            if (array_key_exists('zipkin', $config['tracer'])) {
                if (array_key_exists('http', $config['tracer']['zipkin'])) {
                    $container->setParameter('tolerance.tracer.zipkin.http.base_url', $config['tracer']['zipkin']['http']['base_url']);
                    $tracer = 'tolerance.tracer.zipkin.http';
                }
            }
            if (!isset($tracer)) {
                throw new \InvalidArgumentException('No tracer configured');
            }
            if (null !== ($runner = $config['tracer']['operation_runner'])) {
                $container->getDefinition($tracer)->addTag('tolerance.operation_wrapper', ['runner' => $runner, 'methods' => 'trace']);
            }
            $container->setAlias('tolerance.tracer', $tracer);
            if ($container->getParameter('kernel.debug')) {
                $loader->load('tracer/debug.xml');
            }
            if (interface_exists('GuzzleHttp\\ClientInterface')) {
                if (version_compare(ClientInterface::VERSION, '6.0') >= 0) {
                    $loader->load('tracer/guzzle/6.x.xml');
                } else {
                    $loader->load('tracer/guzzle/4.x-5.x.xml');
                }
            }
            if ($config['tracer']['rabbitmq']['enabled']) {
                $container->setParameter('tolerance.tracer.rabbitmq.enabled', true);
                $container->setParameter('tolerance.tracer.rabbitmq.consumers', $config['tracer']['rabbitmq']['consumers']);
            }
        }
        foreach ($config['operation_runners'] as $name => $operationRunner) {
            $name = sprintf('tolerance.operation_runners.%s', $name);
            $this->createOperationRunnerDefinition($container, $name, $operationRunner);
        }
        if (array_key_exists('metrics', $config)) {
            $loader->load('metrics.xml');
            $this->createMetricCollectors($container, $config['metrics']['collectors']);
            $this->createMetricPublishers($container, $config['metrics']['publishers']);
            // Configure the metrics command
            $container->getDefinition('tolerance.metrics.command.collect_and_publish')->replaceArgument(0, new Reference($config['metrics']['command']['collector']))->replaceArgument(1, new Reference($config['metrics']['command']['publisher']));
            // Configure the request listeners
            if (array_key_exists('request', $config['metrics'])) {
                $this->configureRequestListeners($container, $config['metrics']);
            }
        }
    }

Usage Example

Ejemplo n.º 1
0
 /**
  * @expectedException \RuntimeException
  */
 public function test_it_throws_an_exception_if_aop_without_jms_bundle()
 {
     $definitionArgument = Argument::type('Symfony\\Component\\DependencyInjection\\Definition');
     $builder = $this->createBuilder();
     $builder->setDefinition(Argument::any(), $definitionArgument)->willReturn(null);
     $builder->setParameter(Argument::any(), Argument::any())->shouldBeCalled();
     $this->extension->load(['tolerance' => ['aop' => null]], $builder->reveal());
 }
All Usage Examples Of Tolerance\Bridge\Symfony\Bundle\ToleranceBundle\DependencyInjection\ToleranceExtension::load