Skip to content

Commit 9d9e8ec

Browse files
authored
Merge pull request #1813 from soyuka/bump-deps
Bump requirements to use tagged services
2 parents 9d62eba + 7a8ec35 commit 9d9e8ec

18 files changed

+39
-250
lines changed

composer.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@
3333
"behat/symfony2-extension": "^2.1.1",
3434
"behatch/contexts": "^3.0@dev",
3535
"doctrine/annotations": "^1.2",
36-
"doctrine/doctrine-bundle": "^1.6.3",
36+
"doctrine/doctrine-bundle": "^1.8",
3737
"doctrine/orm": "^2.5.2",
38-
"friendsofsymfony/user-bundle": "^2.0",
38+
"friendsofsymfony/user-bundle": "^2.1",
3939
"guzzlehttp/guzzle": "^6.0",
4040
"justinrainbow/json-schema": "^5.0",
4141
"nelmio/api-doc-bundle": "^2.13.3",
@@ -47,28 +47,28 @@
4747
"sensio/framework-extra-bundle": "^3.0.11 || ^4.0",
4848
"symfony/asset": "^3.3 || ^4.0",
4949
"symfony/cache": "^3.3 || ^4.0",
50-
"symfony/config": "^3.3 || ^4.0",
51-
"symfony/console": "^3.3 || ^4.0",
50+
"symfony/config": "^3.4 || ^4.0",
51+
"symfony/console": "^3.4 || ^4.0",
5252
"symfony/debug": "^2.8 || ^3.0 || ^4.0",
53-
"symfony/dependency-injection": "^3.3 || ^4.0",
53+
"symfony/dependency-injection": "^3.4 || ^4.0",
5454
"symfony/doctrine-bridge": "^2.8.12 || ^3.0 || ^4.0",
55-
"symfony/event-dispatcher": "^3.3 || ^4.0",
55+
"symfony/event-dispatcher": "^3.4 || ^4.0",
5656
"symfony/expression-language": "^2.8 || ^3.0 || ^4.0",
5757
"symfony/finder": "^3.3 || ^4.0",
5858
"symfony/form": "^3.3 || ^4.0",
5959
"symfony/framework-bundle": "^3.3 || ^4.0",
6060
"symfony/phpunit-bridge": "^3.3 || ^4.0",
6161
"symfony/routing": "^3.3 || ^4.0",
6262
"symfony/security": "^3.0 || ^4.0",
63-
"symfony/security-bundle": "^3.0 || ^4.0",
64-
"symfony/twig-bundle": "^3.1 || ^4.0",
63+
"symfony/security-bundle": "^3.4 || ^4.0",
64+
"symfony/twig-bundle": "^3.4 || ^4.0",
6565
"symfony/validator": "^3.3 || ^4.0",
6666
"symfony/web-profiler-bundle": "^3.3 || ^4.0",
6767
"symfony/yaml": "^3.3 || ^4.0",
6868
"webonyx/graphql-php": "^0.10.2"
6969
},
7070
"conflict": {
71-
"symfony/dependency-injection": "<3.3"
71+
"symfony/dependency-injection": "<3.4"
7272
},
7373
"suggest": {
7474
"friendsofsymfony/user-bundle": "To use the FOSUserBundle bridge.",

src/Bridge/Doctrine/Orm/CollectionDataProvider.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
*
2828
* @author Kévin Dunglas <[email protected]>
2929
* @author Samuel ROZE <[email protected]>
30+
* @final
3031
*/
3132
class CollectionDataProvider implements ContextAwareCollectionDataProviderInterface, RestrictedDataProviderInterface
3233
{
@@ -36,7 +37,7 @@ class CollectionDataProvider implements ContextAwareCollectionDataProviderInterf
3637
/**
3738
* @param QueryCollectionExtensionInterface[]|ContextAwareQueryCollectionExtensionInterface[] $collectionExtensions
3839
*/
39-
public function __construct(ManagerRegistry $managerRegistry, array $collectionExtensions = [])
40+
public function __construct(ManagerRegistry $managerRegistry, /* iterable */ $collectionExtensions = [])
4041
{
4142
$this->managerRegistry = $managerRegistry;
4243
$this->collectionExtensions = $collectionExtensions;

src/Bridge/Doctrine/Orm/ItemDataProvider.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
*
3333
* @author Kévin Dunglas <[email protected]>
3434
* @author Samuel ROZE <[email protected]>
35+
* @final
3536
*/
3637
class ItemDataProvider implements ItemDataProviderInterface, RestrictedDataProviderInterface
3738
{
@@ -46,7 +47,7 @@ class ItemDataProvider implements ItemDataProviderInterface, RestrictedDataProvi
4647
* @param PropertyMetadataFactoryInterface $propertyMetadataFactory
4748
* @param QueryItemExtensionInterface[] $itemExtensions
4849
*/
49-
public function __construct(ManagerRegistry $managerRegistry, PropertyNameCollectionFactoryInterface $propertyNameCollectionFactory, PropertyMetadataFactoryInterface $propertyMetadataFactory, array $itemExtensions = [])
50+
public function __construct(ManagerRegistry $managerRegistry, PropertyNameCollectionFactoryInterface $propertyNameCollectionFactory, PropertyMetadataFactoryInterface $propertyMetadataFactory, /* iterable */ $itemExtensions = [])
5051
{
5152
$this->managerRegistry = $managerRegistry;
5253
$this->propertyNameCollectionFactory = $propertyNameCollectionFactory;

src/Bridge/Doctrine/Orm/SubresourceDataProvider.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ final class SubresourceDataProvider implements SubresourceDataProviderInterface
5050
* @param QueryCollectionExtensionInterface[] $collectionExtensions
5151
* @param QueryItemExtensionInterface[] $itemExtensions
5252
*/
53-
public function __construct(ManagerRegistry $managerRegistry, PropertyNameCollectionFactoryInterface $propertyNameCollectionFactory, PropertyMetadataFactoryInterface $propertyMetadataFactory, array $collectionExtensions = [], array $itemExtensions = [])
53+
public function __construct(ManagerRegistry $managerRegistry, PropertyNameCollectionFactoryInterface $propertyNameCollectionFactory, PropertyMetadataFactoryInterface $propertyMetadataFactory, /* iterable */ $collectionExtensions = [], /* iterable */ $itemExtensions = [])
5454
{
5555
$this->managerRegistry = $managerRegistry;
5656
$this->propertyNameCollectionFactory = $propertyNameCollectionFactory;

src/Bridge/Symfony/Bundle/ApiPlatformBundle.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@
1414
namespace ApiPlatform\Core\Bridge\Symfony\Bundle;
1515

1616
use ApiPlatform\Core\Bridge\Symfony\Bundle\DependencyInjection\Compiler\AnnotationFilterPass;
17-
use ApiPlatform\Core\Bridge\Symfony\Bundle\DependencyInjection\Compiler\DataPersisterPass;
1817
use ApiPlatform\Core\Bridge\Symfony\Bundle\DependencyInjection\Compiler\DataProviderPass;
19-
use ApiPlatform\Core\Bridge\Symfony\Bundle\DependencyInjection\Compiler\DoctrineQueryExtensionPass;
2018
use ApiPlatform\Core\Bridge\Symfony\Bundle\DependencyInjection\Compiler\FilterPass;
2119
use Symfony\Component\DependencyInjection\ContainerBuilder;
2220
use Symfony\Component\HttpKernel\Bundle\Bundle;
@@ -35,10 +33,8 @@ public function build(ContainerBuilder $container)
3533
{
3634
parent::build($container);
3735

38-
$container->addCompilerPass(new DataPersisterPass());
3936
$container->addCompilerPass(new DataProviderPass());
4037
$container->addCompilerPass(new AnnotationFilterPass());
4138
$container->addCompilerPass(new FilterPass());
42-
$container->addCompilerPass(new DoctrineQueryExtensionPass());
4339
}
4440
}

src/Bridge/Symfony/Bundle/DependencyInjection/Compiler/DataPersisterPass.php

Lines changed: 0 additions & 43 deletions
This file was deleted.

src/Bridge/Symfony/Bundle/DependencyInjection/Compiler/DataProviderPass.php

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
use ApiPlatform\Core\Api\OperationType;
1717
use ApiPlatform\Core\DataProvider\SerializerAwareDataProviderInterface;
1818
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
19-
use Symfony\Component\DependencyInjection\Compiler\PriorityTaggedServiceTrait;
2019
use Symfony\Component\DependencyInjection\ContainerBuilder;
2120
use Symfony\Component\DependencyInjection\Reference;
2221

@@ -30,37 +29,25 @@
3029
*/
3130
final class DataProviderPass implements CompilerPassInterface
3231
{
33-
use PriorityTaggedServiceTrait;
34-
3532
/**
3633
* {@inheritdoc}
3734
*/
3835
public function process(ContainerBuilder $container)
3936
{
4037
foreach (OperationType::TYPES as $type) {
41-
$this->registerDataProviders($container, $type);
38+
$this->addSerializerLocator($container, $type);
4239
}
4340
}
4441

45-
/**
46-
* The priority sorting algorithm has been backported from Symfony 3.2.
47-
*
48-
* @see https://github.com/symfony/symfony/blob/master/src/Symfony/Component/DependencyInjection/Compiler/PriorityTaggedServiceTrait.php
49-
*
50-
* @param ContainerBuilder $container
51-
* @param string $type
52-
*/
53-
private function registerDataProviders(ContainerBuilder $container, string $type)
42+
private function addSerializerLocator(ContainerBuilder $container, string $type)
5443
{
55-
$services = $this->findAndSortTaggedServices("api_platform.{$type}_data_provider", $container);
44+
$services = $container->findTaggedServiceIds("api_platform.{$type}_data_provider", true);
5645

57-
foreach ($services as $reference) {
58-
$definition = $container->getDefinition((string) $reference);
46+
foreach ($services as $id => $tags) {
47+
$definition = $container->getDefinition((string) $id);
5948
if (is_a($definition->getClass(), SerializerAwareDataProviderInterface::class, true)) {
6049
$definition->addMethodCall('setSerializerLocator', [new Reference('api_platform.serializer_locator')]);
6150
}
6251
}
63-
64-
$container->getDefinition("api_platform.{$type}_data_provider")->addArgument($services);
6552
}
6653
}

src/Bridge/Symfony/Bundle/DependencyInjection/Compiler/DoctrineQueryExtensionPass.php

Lines changed: 0 additions & 54 deletions
This file was deleted.

src/Bridge/Symfony/Bundle/Resources/config/data_persister.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
66

77
<services>
8-
<service id="api_platform.data_persister" class="ApiPlatform\Core\DataPersister\ChainDataPersister" public="false" />
8+
<service id="api_platform.data_persister" class="ApiPlatform\Core\DataPersister\ChainDataPersister" public="false">
9+
<argument type="tagged" tag="api_platform.data_persister" />
10+
</service>
911
<service id="ApiPlatform\Core\DataPersister\DataPersisterInterface" alias="api_platform.data_persister" />
1012
</services>
1113

src/Bridge/Symfony/Bundle/Resources/config/data_provider.xml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,19 @@
1212
</argument>
1313
</service>
1414

15-
<service id="api_platform.item_data_provider" class="ApiPlatform\Core\DataProvider\ChainItemDataProvider" />
15+
<service id="api_platform.item_data_provider" class="ApiPlatform\Core\DataProvider\ChainItemDataProvider">
16+
<argument type="tagged" tag="api_platform.item_data_provider" />
17+
</service>
1618
<service id="ApiPlatform\Core\DataProvider\ItemDataProviderInterface" alias="api_platform.item_data_provider" />
1719

18-
<service id="api_platform.collection_data_provider" class="ApiPlatform\Core\DataProvider\ChainCollectionDataProvider" />
20+
<service id="api_platform.collection_data_provider" class="ApiPlatform\Core\DataProvider\ChainCollectionDataProvider">
21+
<argument type="tagged" tag="api_platform.collection_data_provider" />
22+
</service>
1923
<service id="ApiPlatform\Core\DataProvider\CollectionDataProviderInterface" alias="api_platform.collection_data_provider" />
2024

21-
<service id="api_platform.subresource_data_provider" class="ApiPlatform\Core\DataProvider\ChainSubresourceDataProvider" />
25+
<service id="api_platform.subresource_data_provider" class="ApiPlatform\Core\DataProvider\ChainSubresourceDataProvider">
26+
<argument type="tagged" tag="api_platform.subresource_data_provider" />
27+
</service>
2228
<service id="ApiPlatform\Core\DataProvider\SubresourceDataProviderInterface" alias="api_platform.subresource_data_provider" />
2329
</services>
2430

0 commit comments

Comments
 (0)