Skip to content

Commit 4296466

Browse files
authored
New resource loader (#997)
| Q | A | --------------- | ----- | Bug fix? | no | New feature? | yes | BC breaks? | no | Deprecations? | no | Related tickets | | License | MIT This work have ben reviewed via multiple PRs. #985 #986 #987 It reworks the routing system to allow more routing system than the attributes one in the near future.
2 parents ad2f372 + 2fa38d2 commit 4296466

26 files changed

+771
-98
lines changed

psalm.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,20 @@
4646
<DeprecatedClass>
4747
<errorLevel type="info">
4848
<referencedClass name="Doctrine\ORM\Event\LifecycleEventArgs" /> <!-- deprecated in doctrine/orm 2.14 -->
49+
</errorLevel>
50+
<errorLevel type="suppress">
4951
<referencedClass name="Sylius\Component\Resource\Exception\VariantWithNoOptionsValuesException" />
5052
<referencedClass name="Sylius\Resource\Exception\VariantWithNoOptionsValuesException" />
53+
<referencedClass name="Sylius\Resource\Symfony\Routing\Factory\AttributesOperationRouteFactory" />
5154
</errorLevel>
5255
</DeprecatedClass>
5356

57+
<DeprecatedInterface>
58+
<errorLevel type="suppress">
59+
<referencedClass name="Sylius\Resource\Symfony\Routing\Factory\AttributesOperationRouteFactoryInterface" />
60+
</errorLevel>
61+
</DeprecatedInterface>
62+
5463
<DeprecatedMethod>
5564
<errorLevel type="suppress">
5665
<referencedMethod name="Symfony\Component\EventDispatcher\Event::isPropagationStopped" />

src/Bundle/Resources/config/services/metadata.xml

Lines changed: 3 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -12,98 +12,7 @@
1212
-->
1313

1414
<container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
15-
<services>
16-
<service id="sylius.cache.metadata.resource_collection" parent="cache.system" public="false">
17-
<tag name="cache.pool" />
18-
</service>
19-
20-
<service id="sylius.resource_metadata_collection.factory.attributes" class="Sylius\Resource\Metadata\Resource\Factory\AttributesResourceMetadataCollectionFactory">
21-
<argument type="service" id="sylius.resource_registry" />
22-
<argument type="service" id="sylius.routing.factory.operation_route_name_factory" />
23-
</service>
24-
<service id="Sylius\Resource\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface" alias="sylius.resource_metadata_collection.factory.attributes" />
25-
<service id="sylius.resource_metadata_collection.factory" alias="sylius.resource_metadata_collection.factory.attributes" />
26-
27-
<service id="sylius.resource_metadata_collection.factory.state_machine"
28-
class="Sylius\Resource\Metadata\Resource\Factory\StateMachineResourceMetadataCollectionFactory"
29-
decorates="sylius.resource_metadata_collection.factory.attributes"
30-
decoration-priority="300"
31-
>
32-
<argument type="service" id="sylius.resource_registry" />
33-
<argument type="service" id=".inner" />
34-
<argument>%sylius.state_machine_component.default%</argument>
35-
</service>
36-
37-
<service id="sylius.resource_metadata_collection.factory.doctrine"
38-
class="Sylius\Resource\Doctrine\Common\Metadata\Resource\Factory\DoctrineResourceMetadataCollectionFactory"
39-
decorates="sylius.resource_metadata_collection.factory"
40-
decoration-priority="200"
41-
>
42-
<argument type="service" id="sylius.resource_registry" />
43-
<argument type="service" id=".inner" />
44-
</service>
45-
46-
<service id="sylius.resource_metadata_collection.factory.redirect"
47-
class="Sylius\Resource\Metadata\Resource\Factory\RedirectResourceMetadataCollectionFactory"
48-
decorates="sylius.resource_metadata_collection.factory"
49-
decoration-priority="200"
50-
>
51-
<argument type="service" id="sylius.routing.factory.operation_route_name_factory" />
52-
<argument type="service" id=".inner" />
53-
</service>
54-
55-
<service id="sylius.resource_metadata_collection.factory.vars"
56-
class="Sylius\Resource\Metadata\Resource\Factory\VarsResourceMetadataCollectionFactory"
57-
decorates="sylius.resource_metadata_collection.factory"
58-
>
59-
<argument type="service" id=".inner" />
60-
</service>
61-
62-
<service id="sylius.resource_metadata_collection.factory.provider"
63-
class="Sylius\Resource\Metadata\Resource\Factory\ProviderResourceMetadataCollectionFactory"
64-
decorates="sylius.resource_metadata_collection.factory"
65-
>
66-
<argument type="service" id=".inner" />
67-
</service>
68-
69-
<service id="sylius.resource_metadata_collection.factory.resource_factory"
70-
class="Sylius\Resource\Metadata\Resource\Factory\FactoryResourceMetadataCollectionFactory"
71-
decorates="sylius.resource_metadata_collection.factory"
72-
>
73-
<argument type="service" id="sylius.resource_registry" />
74-
<argument type="service" id=".inner" />
75-
</service>
76-
77-
<service id="sylius.resource_metadata_collection.factory.event_short_name"
78-
class="Sylius\Resource\Metadata\Resource\Factory\EventShortNameResourceMetadataCollectionFactory"
79-
decorates="sylius.resource_metadata_collection.factory"
80-
>
81-
<argument type="service" id=".inner" />
82-
</service>
83-
84-
<service id="sylius.resource_metadata_collection.factory.templates_dir"
85-
class="Sylius\Resource\Metadata\Resource\Factory\TemplatesDirResourceMetadataCollectionFactory"
86-
decorates="sylius.resource_metadata_collection.factory.attributes"
87-
>
88-
<argument type="service" id=".inner" />
89-
<argument>%sylius.resource.settings%</argument>
90-
</service>
91-
92-
<service id="sylius.resource_metadata_collection.factory.cached"
93-
class="Sylius\Resource\Metadata\Resource\Factory\CachedResourceMetadataCollectionFactory"
94-
decorates="sylius.resource_metadata_collection.factory.attributes"
95-
decoration-priority="-10"
96-
>
97-
<argument type="service" id="sylius.cache.metadata.resource_collection" />
98-
<argument type="service" id=".inner" />
99-
</service>
100-
101-
<service id="sylius.resource_metadata_operation.initiator.http_operation" class="Sylius\Resource\Metadata\Operation\HttpOperationInitiator">
102-
<argument type="service" id="sylius.resource_registry" />
103-
<argument type="service" id="sylius.resource_metadata_collection.factory" />
104-
</service>
105-
<service id="Sylius\Resource\Metadata\Operation\HttpOperationInitiatorInterface" alias="sylius.resource_metadata_operation.initiator.http_operation" />
106-
107-
<service id="sylius.repository_argument_resolver.request" class="Sylius\Resource\Symfony\Request\RepositoryArgumentResolver" />
108-
</services>
15+
<imports>
16+
<import resource="metadata/**/**.xml" />
17+
</imports>
10918
</container>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<!--
4+
5+
This file is part of the Sylius package.
6+
7+
(c) Sylius Sp. z o.o.
8+
9+
For the full copyright and license information, please view the LICENSE
10+
file that was distributed with this source code.
11+
12+
-->
13+
14+
<container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
15+
<services>
16+
<service id="sylius.repository_argument_resolver.request" class="Sylius\Resource\Symfony\Request\RepositoryArgumentResolver" />
17+
</services>
18+
</container>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<!--
4+
5+
This file is part of the Sylius package.
6+
7+
(c) Sylius Sp. z o.o.
8+
9+
For the full copyright and license information, please view the LICENSE
10+
file that was distributed with this source code.
11+
12+
-->
13+
14+
<container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
15+
<services>
16+
<service id="sylius.metadata.resource_class_list.factory" alias="sylius.metadata.resource_class_list.factory.attributes" />
17+
<service id="Sylius\Resource\Metadata\Resource\Factory\ResourceClassListFactoryInterface" alias="sylius.metadata.resource_class_list.factory" />
18+
19+
<service id="sylius.metadata.resource_class_list.factory.attributes"
20+
class="Sylius\Resource\Metadata\Resource\Factory\AttributesResourceClassListFactory"
21+
>
22+
<argument>%sylius.resource.mapping%</argument>
23+
</service>
24+
<service id="Sylius\Resource\Metadata\Resource\Factory\AttributesResourceClassListFactory" alias="sylius.metadata.resource_class_list.factory.attributes" />
25+
</services>
26+
</container>
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<!--
4+
5+
This file is part of the Sylius package.
6+
7+
(c) Sylius Sp. z o.o.
8+
9+
For the full copyright and license information, please view the LICENSE
10+
file that was distributed with this source code.
11+
12+
-->
13+
14+
<container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
15+
<services>
16+
<service id="sylius.cache.metadata.resource_collection" parent="cache.system" public="false">
17+
<tag name="cache.pool" />
18+
</service>
19+
20+
<service id="sylius.resource_metadata_collection.factory.attributes" class="Sylius\Resource\Metadata\Resource\Factory\AttributesResourceMetadataCollectionFactory">
21+
<argument type="service" id="sylius.resource_registry" />
22+
<argument type="service" id="sylius.routing.factory.operation_route_name_factory" />
23+
</service>
24+
<service id="Sylius\Resource\Metadata\Resource\Factory\ResourceMetadataCollectionFactoryInterface" alias="sylius.resource_metadata_collection.factory.attributes" />
25+
<service id="sylius.resource_metadata_collection.factory" alias="sylius.resource_metadata_collection.factory.attributes" />
26+
27+
<service id="sylius.resource_metadata_collection.factory.state_machine"
28+
class="Sylius\Resource\Metadata\Resource\Factory\StateMachineResourceMetadataCollectionFactory"
29+
decorates="sylius.resource_metadata_collection.factory.attributes"
30+
decoration-priority="300"
31+
>
32+
<argument type="service" id="sylius.resource_registry" />
33+
<argument type="service" id=".inner" />
34+
<argument>%sylius.state_machine_component.default%</argument>
35+
</service>
36+
37+
<service id="sylius.resource_metadata_collection.factory.doctrine"
38+
class="Sylius\Resource\Doctrine\Common\Metadata\Resource\Factory\DoctrineResourceMetadataCollectionFactory"
39+
decorates="sylius.resource_metadata_collection.factory"
40+
decoration-priority="200"
41+
>
42+
<argument type="service" id="sylius.resource_registry" />
43+
<argument type="service" id=".inner" />
44+
</service>
45+
46+
<service id="sylius.resource_metadata_collection.factory.redirect"
47+
class="Sylius\Resource\Metadata\Resource\Factory\RedirectResourceMetadataCollectionFactory"
48+
decorates="sylius.resource_metadata_collection.factory"
49+
decoration-priority="200"
50+
>
51+
<argument type="service" id="sylius.routing.factory.operation_route_name_factory" />
52+
<argument type="service" id=".inner" />
53+
</service>
54+
55+
<service id="sylius.resource_metadata_collection.factory.vars"
56+
class="Sylius\Resource\Metadata\Resource\Factory\VarsResourceMetadataCollectionFactory"
57+
decorates="sylius.resource_metadata_collection.factory"
58+
>
59+
<argument type="service" id=".inner" />
60+
</service>
61+
62+
<service id="sylius.resource_metadata_collection.factory.provider"
63+
class="Sylius\Resource\Metadata\Resource\Factory\ProviderResourceMetadataCollectionFactory"
64+
decorates="sylius.resource_metadata_collection.factory"
65+
>
66+
<argument type="service" id=".inner" />
67+
</service>
68+
69+
<service id="sylius.resource_metadata_collection.factory.resource_factory"
70+
class="Sylius\Resource\Metadata\Resource\Factory\FactoryResourceMetadataCollectionFactory"
71+
decorates="sylius.resource_metadata_collection.factory"
72+
>
73+
<argument type="service" id="sylius.resource_registry" />
74+
<argument type="service" id=".inner" />
75+
</service>
76+
77+
<service id="sylius.resource_metadata_collection.factory.event_short_name"
78+
class="Sylius\Resource\Metadata\Resource\Factory\EventShortNameResourceMetadataCollectionFactory"
79+
decorates="sylius.resource_metadata_collection.factory"
80+
>
81+
<argument type="service" id=".inner" />
82+
</service>
83+
84+
<service id="sylius.resource_metadata_collection.factory.templates_dir"
85+
class="Sylius\Resource\Metadata\Resource\Factory\TemplatesDirResourceMetadataCollectionFactory"
86+
decorates="sylius.resource_metadata_collection.factory.attributes"
87+
>
88+
<argument type="service" id=".inner" />
89+
<argument>%sylius.resource.settings%</argument>
90+
</service>
91+
92+
<service id="sylius.resource_metadata_collection.factory.cached"
93+
class="Sylius\Resource\Metadata\Resource\Factory\CachedResourceMetadataCollectionFactory"
94+
decorates="sylius.resource_metadata_collection.factory.attributes"
95+
decoration-priority="-10"
96+
>
97+
<argument type="service" id="sylius.cache.metadata.resource_collection" />
98+
<argument type="service" id=".inner" />
99+
</service>
100+
</services>
101+
</container>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<!--
4+
5+
This file is part of the Sylius package.
6+
7+
(c) Sylius Sp. z o.o.
8+
9+
For the full copyright and license information, please view the LICENSE
10+
file that was distributed with this source code.
11+
12+
-->
13+
14+
<container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
15+
<services>
16+
<service id="sylius.resource_metadata_operation.initiator.http_operation" class="Sylius\Resource\Metadata\Operation\HttpOperationInitiator">
17+
<argument type="service" id="sylius.resource_registry" />
18+
<argument type="service" id="sylius.resource_metadata_collection.factory" />
19+
</service>
20+
<service id="Sylius\Resource\Metadata\Operation\HttpOperationInitiatorInterface" alias="sylius.resource_metadata_operation.initiator.http_operation" />
21+
</services>
22+
</container>

src/Bundle/Resources/config/services/routing.xml

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
-->
1313

1414
<container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
15+
<imports>
16+
<import resource="routing/**/**.xml" />
17+
</imports>
18+
1519
<services>
1620
<defaults public="true" />
1721

@@ -22,6 +26,7 @@
2226
</argument>
2327
<argument>%kernel.environment%</argument>
2428
<tag name="routing.loader" />
29+
<deprecated package="sylius/resource" version="1.13">The "%service_id%" service is deprecated since sylius/resource-bundle 1.13 and will be removed in sylius/resource-bundle 2.0. Use "sylius.symfony.routing.loader.resource" instead.</deprecated>
2530
</service>
2631
<service id="Sylius\Bundle\ResourceBundle\Routing\ResourceLoader" alias="sylius.routing.loader.resource" public="false" />
2732

@@ -37,6 +42,7 @@
3742
<argument type="service" id="sylius.routing.factory.route_attributes" />
3843
<argument type="service" id="sylius.routing.factory.attributes_operation_route" />
3944
<tag name="routing.route_loader" />
45+
<deprecated package="sylius/resource" version="1.13">The "%service_id%" service is deprecated since sylius/resource-bundle 1.13 and will be removed in sylius/resource-bundle 2.0. Use "sylius.symfony.routing.loader.resource" instead.</deprecated>
4046
</service>
4147
<service id="Sylius\Bundle\ResourceBundle\Routing\RoutesAttributesLoader" alias="sylius.routing.loader.routes_attributes" public="false" />
4248

@@ -99,12 +105,19 @@
99105
<service id="sylius.routing.factory.route_attributes" class="Sylius\Bundle\ResourceBundle\Routing\RouteAttributesFactory" public="false" />
100106
<service id="Sylius\Bundle\ResourceBundle\Routing\RouteAttributesFactoryInterface" alias="sylius.routing.factory.route_attributes" />
101107

102-
<service id="sylius.routing.factory.attributes_operation_route" class="Sylius\Resource\Symfony\Routing\Factory\AttributesOperationRouteFactory" public="false">
108+
<service id="sylius.routing.factory.attributes_operation_route"
109+
class="Sylius\Resource\Symfony\Routing\Factory\AttributesOperationRouteFactory"
110+
public="false"
111+
>
103112
<argument type="service" id="sylius.resource_registry" />
104113
<argument type="service" id="sylius.routing.factory.operation_route" />
105114
<argument type="service" id="sylius.resource_metadata_collection.factory.attributes" />
115+
<deprecated package="sylius/resource-bundle" version="1.13">The "%service_id%" service is deprecated since sylius/resource-bundle 1.13 and will be removed in sylius/resource-bundle 2.0. Use "sylius.routing.resource.route_collection_factory" instead.</deprecated>
116+
</service>
117+
<service id="Sylius\Resource\Symfony\Routing\Factory\AttributesOperationRouteFactoryInterface"
118+
alias="sylius.routing.factory.attributes_operation_route">
119+
<deprecated package="sylius/resource-bundle" version="1.13">The "%alias_id%" service is deprecated since sylius/resource-bundle 1.13 and will be removed in sylius/resource-bundle 2.0. Use "sylius.routing.resource.route_collection_factory" instead.</deprecated>
106120
</service>
107-
<service id="Sylius\Resource\Symfony\Routing\Factory\AttributesOperationRouteFactoryInterface" alias="sylius.routing.factory.attributes_operation_route" />
108121

109122
<service id="sylius.routing.factory.operation_route" class="Sylius\Resource\Symfony\Routing\Factory\OperationRouteFactory" public="false">
110123
<argument type="service" id="sylius.routing.factory.operation_route_path_factory" />
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<!--
4+
5+
This file is part of the Sylius package.
6+
7+
(c) Sylius Sp. z o.o.
8+
9+
For the full copyright and license information, please view the LICENSE
10+
file that was distributed with this source code.
11+
12+
-->
13+
14+
<container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
15+
<services>
16+
<service id="sylius.symfony.routing.loader.resource" class="Sylius\Resource\Symfony\Routing\Loader\ResourceLoader">
17+
<argument type="service" id="sylius.metadata.resource_class_list.factory" />
18+
<argument type="service" id="sylius.routing.resource.route_collection_factory" />
19+
<tag name="routing.route_loader" />
20+
</service>
21+
<service id="Sylius\Resource\Symfony\Routing\Loader\ResourceLoader" alias="sylius.symfony.routing.loader.resource" />
22+
</services>
23+
</container>

0 commit comments

Comments
 (0)