Skip to content

Commit 5729058

Browse files
authored
Merge pull request #1152 from vincentchalamon/master
[RFR] Improve autowiring
2 parents 3e9432d + c1db5bc commit 5729058

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@
1313

1414
namespace ApiPlatform\Core\Bridge\Symfony\Bundle\DependencyInjection;
1515

16+
use ApiPlatform\Core\Bridge\Doctrine\Orm\Extension\QueryCollectionExtensionInterface;
17+
use ApiPlatform\Core\Bridge\Doctrine\Orm\Extension\QueryItemExtensionInterface;
18+
use ApiPlatform\Core\DataProvider\CollectionDataProviderInterface;
19+
use ApiPlatform\Core\DataProvider\ItemDataProviderInterface;
1620
use Doctrine\Common\Annotations\Annotation;
1721
use Doctrine\ORM\Version;
1822
use phpDocumentor\Reflection\DocBlockFactoryInterface;
@@ -80,6 +84,15 @@ public function load(array $configs, ContainerBuilder $container)
8084
$loader->load('data_provider.xml');
8185
$loader->load('filter.xml');
8286

87+
$container->registerForAutoconfiguration(ItemDataProviderInterface::class)
88+
->addTag('api_platform.item_data_provider');
89+
$container->registerForAutoconfiguration(CollectionDataProviderInterface::class)
90+
->addTag('api_platform.collection_data_provider');
91+
$container->registerForAutoconfiguration(QueryItemExtensionInterface::class)
92+
->addTag('api_platform.doctrine.orm.query_extension.item');
93+
$container->registerForAutoconfiguration(QueryCollectionExtensionInterface::class)
94+
->addTag('api_platform.doctrine.orm.query_extension.collection');
95+
8396
if (interface_exists(ValidatorInterface::class)) {
8497
$loader->load('validator.xml');
8598
}

tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,19 @@
1313

1414
namespace ApiPlatform\Core\Tests\Bridge\Symfony\Bundle\DependencyInjection;
1515

16+
use ApiPlatform\Core\Bridge\Doctrine\Orm\Extension\QueryCollectionExtensionInterface;
17+
use ApiPlatform\Core\Bridge\Doctrine\Orm\Extension\QueryItemExtensionInterface;
1618
use ApiPlatform\Core\Bridge\Symfony\Bundle\DependencyInjection\ApiPlatformExtension;
19+
use ApiPlatform\Core\DataProvider\CollectionDataProviderInterface;
20+
use ApiPlatform\Core\DataProvider\ItemDataProviderInterface;
1721
use ApiPlatform\Core\Exception\InvalidArgumentException;
1822
use Doctrine\Bundle\DoctrineBundle\DoctrineBundle;
1923
use FOS\UserBundle\FOSUserBundle;
2024
use Nelmio\ApiDocBundle\NelmioApiDocBundle;
2125
use Prophecy\Argument;
2226
use Symfony\Bundle\SecurityBundle\SecurityBundle;
2327
use Symfony\Component\Config\FileLocator;
28+
use Symfony\Component\DependencyInjection\ChildDefinition;
2429
use Symfony\Component\DependencyInjection\ContainerBuilder;
2530
use Symfony\Component\DependencyInjection\Definition;
2631
use Symfony\Component\DependencyInjection\DefinitionDecorator;
@@ -223,6 +228,24 @@ private function getContainerBuilderProphecy()
223228
});
224229

225230
$containerBuilderProphecy = $this->prophesize(ContainerBuilder::class);
231+
$childDefinitionProphecy = $this->prophesize(ChildDefinition::class);
232+
233+
$containerBuilderProphecy->registerForAutoconfiguration(ItemDataProviderInterface::class)
234+
->willReturn($childDefinitionProphecy)->shouldBeCalledTimes(1);
235+
$childDefinitionProphecy->addTag('api_platform.item_data_provider')->shouldBeCalledTimes(1);
236+
237+
$containerBuilderProphecy->registerForAutoconfiguration(CollectionDataProviderInterface::class)
238+
->willReturn($childDefinitionProphecy)->shouldBeCalledTimes(1);
239+
$childDefinitionProphecy->addTag('api_platform.collection_data_provider')->shouldBeCalledTimes(1);
240+
241+
$containerBuilderProphecy->registerForAutoconfiguration(QueryItemExtensionInterface::class)
242+
->willReturn($childDefinitionProphecy)->shouldBeCalledTimes(1);
243+
$childDefinitionProphecy->addTag('api_platform.doctrine.orm.query_extension.item')->shouldBeCalledTimes(1);
244+
245+
$containerBuilderProphecy->registerForAutoconfiguration(QueryCollectionExtensionInterface::class)
246+
->willReturn($childDefinitionProphecy)->shouldBeCalledTimes(1);
247+
$childDefinitionProphecy->addTag('api_platform.doctrine.orm.query_extension.collection')->shouldBeCalledTimes(1);
248+
226249
$containerBuilderProphecy->getParameter('kernel.bundles')->willReturn([
227250
'DoctrineBundle' => DoctrineBundle::class,
228251
])->shouldBeCalled();

0 commit comments

Comments
 (0)