/**
  * {@inheritdoc}
  */
 protected function handle(JobInterface $job)
 {
     try {
         parent::handle($job);
         $this->container->get('cqrs.command_bus')->dispatchNow($job);
     } catch (\Exception $e) {
         $this->output->writeln(sprintf('<style name="error">%s</style>', $e->getMessage()));
     }
 }
 /**
  * Load extension.
  *
  * @param array            $configs
  * @param ContainerBuilder $container
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     if ($container->has('request')) {
         new RequestFacade($container->get('request'));
     }
     /** @var KernelInterface $kernel */
     $kernel = $container->get('kernel');
     $routes = $this->buildRouteCollection($configs['router']['routes']);
     $container->register('route_collection', $routes, true);
     $kernel->addListenerOnce(KernelEvents::REQUEST, array(new RouterListener($routes, $configs['router']['prefix']), 'onRequest'));
     Log::$APP_LOG = $configs['log']['name'];
     $container->register('log', $this->buildLog($configs['log']), true);
     $container->setDefinition('template', new Definition('Borobudur\\Bundle\\FrameworkBundle\\Template\\TemplateCompiler'))->addArgument(new Reference('container'))->addArgument($configs['template']['app_path'])->share();
     $container->setDefinition('acl', new Definition('Borobudur\\Acl\\Acl'))->addArgument(isset($configs['acl']) && isset($configs['acl']['policies']) ? $configs['acl']['policies'] : null)->share();
 }
 /**
  * Build response from service.
  *
  * @param string $serviceId
  *
  * @return mixed
  */
 private function getServiceController($serviceId)
 {
     if (!$this->container->has($serviceId)) {
         throw new RuntimeException(sprintf('Service "%s" is undefined.', $serviceId));
     }
     return $this->container->getDi()->create($this->container->get($serviceId));
 }
 /**
  * Execute console.
  *
  * @param AbstractInput $input
  * @param Output        $output
  */
 protected function execute(AbstractInput $input, Output $output)
 {
     /** @var RouteCollection $routeCollection */
     $routeCollection = $this->container->get('route_collection');
     $table = new Table($output);
     $table->setHeaders(array(new Table\TableHeader('Name'), new Table\TableHeader('Method'), new Table\TableHeader('Path'), new Table\TableHeader('Action'), new Table\TableHeader('Domain'), new Table\TableHeader('Schema'), new Table\TableHeader('Middleware')));
     foreach ($routeCollection->dump() as $name => $route) {
         $middleware = array();
         $r = $routeCollection->get($name);
         if ($r->hasBag('middlewares')) {
             $middleware = $this->buildMiddlewareString($r->getBag('middlewares')->all());
         }
         $table->addRow(array(new Table\TableCell($name), new Table\TableCell(strtoupper(empty($route['methods']) ? 'any' : implode('|', $route['methods']))), new Table\TableCell($route['path']), new Table\TableCell($route['handler']), new Table\TableCell(empty($route['domain']) ? 'ANY' : $route['domain']), new Table\TableCell(implode('|', $route['schemas'])), new Table\TableCell($middleware)));
     }
     $table->write();
 }
 /**
  * Initialize extension.
  *
  * @param Configuration    $config
  * @param ContainerBuilder $container
  */
 public function initialize(Configuration $config, ContainerBuilder $container)
 {
     $this->config = $config;
     $this->container = $container;
     $this->resource = $container->get('resource');
     $this->loader = new FileLoader();
 }
 /**
  * Load service from array.
  *
  * @param array $services
  */
 public function load(array $services)
 {
     foreach ($services as $id => $service) {
         if ('services' === $id) {
             $this->load($service);
             continue;
         }
         if (is_int($id) || !$this->isArrayService($service)) {
             continue;
         }
         $this->container->setDefinition($id, $this->buildDefinitionFromArray($id, $service));
         // Build service immediately when eager is true.
         if (isset($service['eager']) && true === $service['eager']) {
             $this->container->get($id);
         }
     }
 }
 /**
  * Constructor.
  *
  * @param array            $paths
  * @param ContainerBuilder $container
  * @param string           $appPath
  */
 public function __construct($paths = array(), ContainerBuilder $container, $appPath)
 {
     parent::__construct($paths);
     $this->locator = new TemplateFileLocator($container->get('kernel')->getBundleManager(), $appPath);
 }
 /**
  * Generate route path.
  *
  * @param string $name
  * @param array  $params
  *
  * @return RequestContext
  */
 public function generateRoute($name, array $params = array())
 {
     return $this->container->get('router')->generateRoute($name, $params)->getPath();
 }
 /**
  * Get configuration.
  *
  * @return Configuration
  */
 public function getConfiguration()
 {
     return $this->container->get('config');
 }
 /**
  * {@inheritdoc}
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     $container->load($this->loadResource('Resources/config/services.yml'));
     $container->get('cqrs.event_bus')->registers($this->loadResource('Resources/config/messages/event.yml'));
 }
 /**
  * Constructor.
  *
  * @param ContainerBuilder $container
  * @param string           $appPath
  */
 public function __construct(ContainerBuilder $container, $appPath)
 {
     $this->container = $container;
     $this->locator = new TemplateFileLocator($this->container->get('kernel')->getBundleManager(), $appPath);
 }
 /**
  * @return AbstractKernel
  */
 private function getKernel()
 {
     return $this->container->get('kernel');
 }
 /**
  * Build storage.
  *
  * @param ContainerBuilder $container
  * @param array            $configs
  */
 private function buildStorage(ContainerBuilder $container, array $configs)
 {
     $readModelStorage = $this->buildReadModelStorage($configs['read_model']['storage']);
     $readModelDefinition = new AbstractDefinition(get_class($readModelStorage), 'Borobudur\\Cqrs\\ReadModel\\Storage\\StorageInterface');
     $container->register('cqrs.read_model_storage', $readModelStorage);
     $container->setDefinition('cqrs.read_model_storage', $readModelDefinition);
     if (true === $configs['snapshot']['enable']) {
         $snapshot = $this->buildSnapshot($configs['snapshot']['storage']);
         $snapshotDefinition = new AbstractDefinition(get_class($snapshot), 'Borobudur\\EventSourcing\\Snapshot\\SnapshotInterface');
         $container->register('cqrs.snapshot', $snapshot);
         $container->setDefinition('cqrs.snapshot', $snapshotDefinition);
         $container->get('cqrs.snapshot')->setSnapshotPeriodical($configs['snapshot']['periodically']);
     }
     $eventStore = $this->buildEventStore($configs['event_store']['storage']);
     $eventStoreDefinition = new AbstractDefinition(get_class($eventStore), 'Borobudur\\EventSourcing\\Storage\\StorageInterface');
     $container->register('cqrs.event_store', $eventStore);
     $container->setDefinition('cqrs.event_store', $eventStoreDefinition);
     if (true === $configs['snapshot']['enable']) {
         $container->get('cqrs.event_store')->attachSnapshot($container->get('cqrs.snapshot'));
     }
     $container->register('cqrs.uow_transaction', new UnitOfWorkTransaction(array($container->get('cqrs.read_model_storage'), $container->get('cqrs.event_store'))));
 }
 public function testDefineAbstractServiceFromArray()
 {
     $services = array('iqbal' => array('class' => 'Borobudur\\DependencyInjection\\Test\\Iqbal', 'abstract' => 'Borobudur\\DependencyInjection\\Test\\WarriorInterface'), 'battle' => array('class' => 'Borobudur\\DependencyInjection\\Test\\Battle'));
     $container = new ContainerBuilder();
     $container->load($services);
     $battle = $container->get('battle');
     $this->assertEquals('iqbal', $battle->warrior->getName());
     $this->assertEquals('fighter', $battle->warrior->getType());
 }