setFactoryService() public method

{@inheritDoc}
public setFactoryService ( $service )
 private function loadAmqpTransport(array $config, ContainerBuilder $container)
 {
     $this->loader->load('transport/amqp/amqp.xml');
     $this->loader->load(sprintf('transport/amqp/%s.xml', $config['driver']));
     if (class_exists('JMS\\AopBundle\\JMSAopBundle')) {
         $this->loader->load('transport/amqp/tracer.xml');
     }
     $camelizeKey = function (array $config) {
         $camelized = [];
         foreach ($config as $key => $value) {
             $camelized[lcfirst(ContainerBuilder::camelize($key))] = $value;
         }
         return $camelized;
     };
     $definitions = [];
     foreach ($config['connections'] as $name => $connectionConfig) {
         $exchanges = $connectionConfig['exchanges'];
         unset($connectionConfig['exchanges']);
         $queues = $connectionConfig['queues'];
         unset($connectionConfig['queues']);
         $amqp = new DefinitionDecorator('event_band.transport.amqp.definition');
         $amqp->addMethodCall('connection', [$camelizeKey($connectionConfig)]);
         foreach ($exchanges as $exchange => $exchangeConfig) {
             $exchangeType = $exchangeConfig['type'];
             unset($exchangeConfig['type']);
             $amqp->addMethodCall($exchangeType . 'Exchange', [$exchange, $camelizeKey($exchangeConfig)]);
         }
         foreach ($queues as $queue => $queueConfig) {
             $amqp->addMethodCall('queue', [$queue, $camelizeKey($queueConfig)]);
         }
         $definitionId = self::getTransportDefinitionId('amqp', $name);
         $container->setDefinition($definitionId, $amqp);
         $definitions[$name] = $definitionId;
         $connection = new DefinitionDecorator('event_band.transport.amqp.connection_definition');
         $connection->setFactoryService($definitionId);
         $connectionId = self::getAmqpConnectionDefinitionId($name);
         $container->setDefinition($connectionId, $connection);
         $factory = new DefinitionDecorator(sprintf('event_band.transport.amqp.connection_factory.%s', $config['driver']));
         $factory->addMethodCall('setDefinition', [new Reference($connectionId)]);
         $container->setDefinition(self::getAmqpLibConnectionFactoryId($name), $factory);
         $driver = new DefinitionDecorator('event_band.transport.amqp.driver.' . $config['driver']);
         $driver->replaceArgument(0, new Reference($this->getAmqpLibConnectionFactoryId($name)));
         $container->setDefinition($this->getAmqpDriverId($name), $driver);
         $configurator = new DefinitionDecorator('event_band.transport.amqp.configurator');
         $configurator->replaceArgument(0, new Reference($this->getAmqpDriverId($name)));
         $container->setDefinition(self::getTypedTransportConfiguratorId('amqp', $name), $configurator);
         $container->getDefinition(self::getTransportConfiguratorId())->addMethodCall('registerConfigurator', ['amqp.' . $name, new Reference(self::getTypedTransportConfiguratorId('amqp', $name))]);
     }
     $container->setParameter('event_band.transport_definitions', array_merge($container->getParameter('event_band.transport_definitions'), ['amqp' => $definitions]));
     foreach ($config['converters'] as $name => $converterConfig) {
         $definition = new DefinitionDecorator('event_band.transport.amqp.converter.serialize');
         $definition->replaceArgument(0, new Reference(self::getSerializerId($converterConfig['parameters']['serializer'])));
         $container->setDefinition(self::getAmqpConverterId($name), $definition);
     }
 }
 /**
  * Loads the configured types.
  *
  * @param array $types
  * @param ContainerBuilder $container
  * @param array $indexConfig
  */
 private function loadTypes(array $types, ContainerBuilder $container, array $indexConfig)
 {
     $indexableCallbacks = array();
     foreach ($types as $name => $type) {
         $indexName = $indexConfig['name'];
         $typeId = sprintf('%s.%s', $indexConfig['reference'], $name);
         $typeDef = new DefinitionDecorator('fos_elastica.type_prototype');
         $typeDef->replaceArgument(0, $name);
         $typeDef->setFactoryService($indexConfig['reference']);
         $container->setDefinition($typeId, $typeDef);
         $typeConfig = array('name' => $name, 'mapping' => array(), 'config' => array());
         foreach (array('dynamic_templates', 'index_analyzer', 'properties', 'search_analyzer', '_all', '_boost', '_id', '_parent', '_routing', '_source', '_timestamp', '_ttl') as $field) {
             if (isset($type[$field])) {
                 $typeConfig['mapping'][$field] = $type[$field];
             }
         }
         foreach (array('persistence', 'serializer') as $field) {
             $typeConfig['config'][$field] = array_key_exists($field, $type) ? $type[$field] : null;
         }
         $this->indexConfigs[$indexName]['types'][$name] = $typeConfig;
         if (isset($type['persistence'])) {
             $this->loadTypePersistenceIntegration($type['persistence'], $container, new Reference($typeId), $indexName, $name);
             $typeConfig['persistence'] = $type['persistence'];
         }
         if (isset($type['indexable_callback'])) {
             $indexableCallbacks[sprintf('%s/%s', $indexName, $name)] = $type['indexable_callback'];
         }
         if ($container->hasDefinition('fos_elastica.serializer_callback_prototype')) {
             $typeSerializerId = sprintf('%s.serializer.callback', $typeId);
             $typeSerializerDef = new DefinitionDecorator('fos_elastica.serializer_callback_prototype');
             if (isset($type['serializer']['groups'])) {
                 $typeSerializerDef->addMethodCall('setGroups', array($type['serializer']['groups']));
             }
             if (isset($type['serializer']['version'])) {
                 $typeSerializerDef->addMethodCall('setVersion', array($type['serializer']['version']));
             }
             $typeDef->addMethodCall('setSerializer', array(array(new Reference($typeSerializerId), 'serialize')));
             $container->setDefinition($typeSerializerId, $typeSerializerDef);
         }
     }
     $indexable = $container->getDefinition('fos_elastica.indexable');
     $indexable->replaceArgument(0, $indexableCallbacks);
 }
 /**
  * @throws \LogicException
  */
 public function generate()
 {
     $pageflowAnnotation = $this->reader->getClassAnnotation($this->controllerClass, 'PHPMentors\\PageflowerBundle\\Annotation\\Pageflow');
     if ($pageflowAnnotation === null) {
         throw new \LogicException(sprintf('Annotation "%s" is not found in class "%s".', 'PHPMentors\\PageflowerBundle\\Annotation\\Pageflow', $this->controllerClass->getName()));
     }
     $pageflowBuilderDefinition = new DefinitionDecorator('phpmentors_pageflower.pageflow_builder');
     $pageflowBuilderDefinition->setArguments(array($this->controllerServiceId));
     $statesFound = false;
     $transitionsFound = false;
     foreach ($pageflowAnnotation->value as $annotation) {
         if ($annotation instanceof States) {
             if ($statesFound) {
                 throw new \LogicException(sprintf('Annotation "%s" must be specified only once.', get_class($annotation)));
             }
             $statesFound = true;
             foreach ($annotation->value as $state) {
                 if ($state instanceof AnnotationInterface) {
                     if ($state->value === null || strlen($state->value) == 0) {
                         throw new \LogicException(sprintf('The value for annotation "%s" cannot be empty.', get_class($state)));
                     }
                     if ($state instanceof Start) {
                         $pageflowBuilderDefinition->addMethodCall('addState', array($state->value));
                         $pageflowBuilderDefinition->addMethodCall('setStartState', array($state->value));
                         $this->states[] = $state->value;
                     } elseif ($state instanceof End) {
                         $pageflowBuilderDefinition->addMethodCall('addState', array($state->value));
                         $pageflowBuilderDefinition->addMethodCall('setEndState', array($state->value, StateInterface::STATE_FINAL));
                         $this->states[] = $state->value;
                     } else {
                         throw new \LogicException(sprintf('State "%s" must be encapsulated with one of [ %s ], "%s" is specified.', $state->value, implode(', ', array('PHPMentors\\PageflowerBundle\\Annotation\\Start', 'PHPMentors\\PageflowerBundle\\Annotation\\End')), get_class($state)));
                     }
                 } else {
                     if ($state === null || strlen($state) == 0) {
                         throw new \LogicException(sprintf('The value for annotation "%s" cannot be empty.', get_class($annotation)));
                     }
                     $pageflowBuilderDefinition->addMethodCall('addState', array($state));
                     $this->states[] = $state;
                 }
             }
         } elseif ($annotation instanceof Transitions) {
             if ($transitionsFound) {
                 throw new \LogicException(sprintf('Annotation "%s" must be specified only once.', get_class($annotation)));
             }
             $transitionsFound = true;
             foreach ($annotation->value as $transition) {
                 if (is_array($transition) && count($transition) == 2 && is_string($transition[0]) && is_string($transition[1])) {
                     foreach (array($transition[0], $transition[1]) as $state) {
                         if ($state === null || strlen($state) == 0) {
                             throw new \LogicException(sprintf('The value for annotation "%s" cannot be empty.', get_class($annotation)));
                         }
                         if (!in_array($state, $this->states)) {
                             throw new \LogicException(sprintf('The value for annotation "%s" must be one of [ %s ], "%s" is specified.', get_class($annotation), implode(', ', $this->states), $state));
                         }
                     }
                     $pageflowBuilderDefinition->addMethodCall('addTransition', array($transition[0], $transition[1], $transition[1]));
                 } else {
                     throw new \LogicException(sprintf('The value for annotation "%s" must be string array, "%s" is specified.', get_class($annotation), var_export($transition, true)));
                 }
             }
         } else {
             throw new \LogicException(sprintf('The value for annotation "%s" must be one of [ %s ], "%s" is specified.', get_class($pageflowAnnotation), implode(', ', array('"PHPMentors\\PageflowerBundle\\Annotation\\States"', '"PHPMentors\\PageflowerBundle\\Annotation\\Transitions"')), is_object($annotation) ? get_class($annotation) : $annotation));
         }
     }
     $pageflowBuilderServiceId = 'phpmentors_pageflower.pageflow_builder.' . $this->controllerServiceId;
     $this->container->setDefinition($pageflowBuilderServiceId, $pageflowBuilderDefinition);
     $pageflowDefinition = new DefinitionDecorator('phpmentors_pageflower.pageflow');
     $pageflowDefinition->setFactoryService($pageflowBuilderServiceId);
     $pageflowServiceId = 'phpmentors_pageflower.pageflow.' . $this->controllerServiceId;
     $this->container->setDefinition($pageflowServiceId, $pageflowDefinition);
     $this->container->getDefinition('phpmentors_pageflower.pageflow_repository')->addMethodCall('add', array(new Reference($pageflowServiceId)));
     $this->container->addClassResource($this->controllerClass);
 }
 /**
  * @param array            $config
  * @param ContainerBuilder $container
  * @param LoaderInterface  $loader
  */
 private function registerExecutorConfiguration(array $config, ContainerBuilder $container, LoaderInterface $loader)
 {
     $loader->load('executor.xml');
     $defaultExecutor = isset($config['default']) ? $config['default'] : null;
     foreach ($config['executorList'] as $name => $executorConf) {
         $def = new DefinitionDecorator($executorConf['parent_service']);
         $def->replaceArgument(0, $executorConf['server'])->replaceArgument(1, $executorConf['request_handler'])->replaceArgument(2, new Reference($executorConf['exception_handler_service']))->addTag(AddExecutorPass::TAG_NAME, array('default' => $name == $defaultExecutor, 'alias' => $name));
         if (!empty($executorConf['use_factory'])) {
             $def->setFactoryService(new Reference('syrma.web_container.executor.factory'));
             $def->setFactoryMethod('create');
         }
         $container->setDefinition(sprintf('syrma.web_container.executor.dynamic.%s', $name), $def);
     }
 }
Esempio n. 5
0
 /**
  * @param string $builderName
  * @param string $definitionName
  * @return Definition
  */
 protected function getProcessDefinition($builderName, $definitionName)
 {
     $process = new DefinitionDecorator('pmd_state_machine.process.definition');
     $process->setFactoryService($builderName)->setFactoryMethod('getDefinition')->addTag('pmd_state_machine.definition', array('alias' => $definitionName));
     return $process;
 }