Completed
Pull Request — master (#67)
by Ross
05:39
created

CommandHandlerPass::abortIfInvalidBusId()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 6
rs 9.4285
cc 2
eloc 3
nc 2
nop 2
1
<?php
2
3
namespace League\Tactician\Bundle\DependencyInjection\Compiler;
4
5
use League\Tactician\Bundle\DependencyInjection\Compiler\BusBuilder\BusBuilder;
6
use League\Tactician\Bundle\DependencyInjection\Compiler\BusBuilder\BusBuildersFromConfigFile;
7
use League\Tactician\Bundle\DependencyInjection\HandlerMapping\HandlerMapping;
8
use League\Tactician\Bundle\DependencyInjection\HandlerMapping\Routing;
9
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
10
use Symfony\Component\DependencyInjection\ContainerBuilder;
11
12
/**
13
 * This compiler pass maps Handler DI tags to specific commands.
14
 */
15
class CommandHandlerPass implements CompilerPassInterface
16
{
17
    /**
18
     * @var HandlerMapping
19
     */
20
    private $handlerMapping;
21
22
    public function __construct(HandlerMapping $mappingStrategy)
23
    {
24
        $this->handlerMapping = $mappingStrategy;
25
    }
26
27
    public function process(ContainerBuilder $container)
28
    {
29
        $builders = BusBuildersFromConfigFile::convert($container->getExtensionConfig('tactician')[0]);
30
31
        $routing = $this->handlerMapping->build(
32
            $container,
33
            new Routing($builders->getBusIds())
34
        );
35
36
        // Register the completed builders in our container
37
        foreach ($builders as $builder) {
38
            /** @var BusBuilder $builder */
39
            $builder->registerInContainer($container, $routing->commandToServiceMapping($builder->id()));
40
        }
41
42
        // Setup default aliases
43
        $container->setAlias('tactician.commandbus', $builders->defaultBus()->serviceId());
44
        $container->setAlias('tactician.handler.locator.symfony', $builders->defaultBus()->locatorServiceId());
45
        $container->setAlias('tactician.middleware.command_handler', $builders->defaultBus()->commandHandlerMiddlewareId());
46
    }
47
}
48