Skip to content

Commit

Permalink
Merge branch 'fix_controller_resolver_injection' of git://github.com/…
Browse files Browse the repository at this point in the history
…podhy/Symplify into podhy-fix_controller_resolver_injection
  • Loading branch information
TomasVotruba committed Dec 1, 2016
2 parents e4a76f0 + abce6d2 commit 6d712ff
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ final class DecorateControllerResolverPass implements CompilerPassInterface
* @var string
*/
const CONTROLLER_RESOLVER_SERVICE_NAME = 'controller_resolver';
/**
* @var string
*/
const SERVICE_NAME = 'symplify.controller_resolver';

/**
* @var ControllerClassMapInterface
Expand All @@ -36,19 +40,19 @@ public function __construct(ControllerClassMapInterface $controllerClassMap)

public function process(ContainerBuilder $containerBuilder)
{
$controllerResolverServiceName = $this->getCurrentControllerResolverServiceName($containerBuilder);
$decoratedControllerResolverServiceName = $this->getCurrentControllerResolverServiceName($containerBuilder);

$definition = new Definition(ControllerResolver::class, [
new Reference($controllerResolverServiceName . '.inner'),
new Reference(self::SERVICE_NAME . '.inner'),
new Reference('service_container'),
new Reference('controller_name_converter'),
]);

$definition->setDecoratedService($controllerResolverServiceName, null, 1);
$definition->setDecoratedService($decoratedControllerResolverServiceName, null, 1);
$definition->addMethodCall('setControllerClassMap', [$this->controllerClassMap->getControllers()]);
$definition->setAutowiringTypes([ControllerResolverInterface::class]);

$containerBuilder->setDefinition('symplify.controller_resolver', $definition);
$containerBuilder->setDefinition(self::SERVICE_NAME, $definition);
}

private function getCurrentControllerResolverServiceName(ContainerBuilder $containerBuilder) : string
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

namespace Symplify\ControllerAutowire\tests\DependencyInjection\Compiler;

use PHPUnit\Framework\TestCase;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symplify\ControllerAutowire\DependencyInjection\Compiler\DecorateControllerResolverPass;
use Symplify\ControllerAutowire\DependencyInjection\ControllerClassMap;

class DecorateControllerResolverPassTest extends TestCase
{
/**
* @var ControllerClassMap
*/
private $controllerClassMap;

protected function setUp()
{
$this->controllerClassMap = new ControllerClassMap();
}

public function testInjectionOfOldDecoratedService()
{
$containerBuilder = new ContainerBuilder();

$resolver = new DecorateControllerResolverPass($this->controllerClassMap);
$resolver->process($containerBuilder);

$definition = $containerBuilder->getDefinition('symplify.controller_resolver');
$this->assertSame('symplify.controller_resolver.inner', (string) $definition->getArgument(0));
}
}

0 comments on commit 6d712ff

Please sign in to comment.