Skip to content

Commit cf27cb3

Browse files
authored
Merge pull request #577 from api-platform/cache
Switch to the new Symfony cache infrastructure
2 parents 2607346 + 3899a0c commit cf27cb3

File tree

5 files changed

+10
-103
lines changed

5 files changed

+10
-103
lines changed

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

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ public function load(array $configs, ContainerBuilder $container)
8585
$this->enableJsonLd($loader);
8686
$this->registerAnnotationLoaders($container);
8787
$this->registerFileLoaders($container);
88-
$this->setUpMetadataCaching($container, $config);
8988

9089
if (!interface_exists('phpDocumentor\Reflection\DocBlockFactoryInterface')) {
9190
$container->removeDefinition('api_platform.metadata.resource.metadata_factory.php_doc');
@@ -175,35 +174,4 @@ private function registerFileLoaders(ContainerBuilder $container)
175174
$container->getDefinition('api_platform.metadata.resource.name_collection_factory.xml')->replaceArgument(0, $xmlResources);
176175
$container->getDefinition('api_platform.metadata.resource.metadata_factory.xml')->replaceArgument(0, $xmlResources);
177176
}
178-
179-
/**
180-
* Sets up metadata caching.
181-
*
182-
* @param ContainerBuilder $container
183-
* @param array $config
184-
*/
185-
private function setUpMetadataCaching(ContainerBuilder $container, array $config)
186-
{
187-
$container->setAlias('api_platform.metadata.resource.cache', $config['metadata']['resource']['cache']);
188-
$container->setAlias('api_platform.metadata.property.cache', $config['metadata']['property']['cache']);
189-
190-
if (!class_exists('Symfony\Component\Cache\Adapter\ArrayAdapter')) {
191-
$container->removeDefinition('api_platform.metadata.resource.cache.array');
192-
$container->removeDefinition('api_platform.metadata.resource.cache.apcu');
193-
$container->removeDefinition('api_platform.metadata.property.cache.array');
194-
$container->removeDefinition('api_platform.metadata.property.cache.apcu');
195-
}
196-
197-
if (!$container->has($config['metadata']['resource']['cache'])) {
198-
$container->removeAlias('api_platform.metadata.resource.cache');
199-
$container->removeDefinition('api_platform.metadata.resource.name_collection_factory.cached');
200-
$container->removeDefinition('api_platform.metadata.resource.metadata_factory.cached');
201-
}
202-
203-
if (!$container->has($config['metadata']['property']['cache'])) {
204-
$container->removeAlias('api_platform.metadata.property.cache');
205-
$container->removeDefinition('api_platform.metadata.property.name_collection_factory.cached');
206-
$container->removeDefinition('api_platform.metadata.property.metadata_factory.cached');
207-
}
208-
}
209177
}

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

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -87,23 +87,6 @@ public function getConfigTreeBuilder()
8787
->end()
8888
->end()
8989
->end()
90-
->arrayNode('metadata')
91-
->addDefaultsIfNotSet()
92-
->children()
93-
->arrayNode('resource')
94-
->addDefaultsIfNotSet()
95-
->children()
96-
->scalarNode('cache')->defaultValue('api_platform.metadata.resource.cache.array')->cannotBeEmpty()->info('Cache service for resource metadata.')->end()
97-
->end()
98-
->end()
99-
->arrayNode('property')
100-
->addDefaultsIfNotSet()
101-
->children()
102-
->scalarNode('cache')->defaultValue('api_platform.metadata.property.cache.array')->cannotBeEmpty()->info('Cache service for property metadata.')->end()
103-
->end()
104-
->end()
105-
->end()
106-
->end()
10790
->end();
10891

10992
return $treeBuilder;

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

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -116,24 +116,12 @@
116116

117117
<!-- Cache -->
118118

119-
<service id="api_platform.metadata.resource.cache.array" class="Symfony\Component\Cache\Adapter\ArrayAdapter" public="false">
120-
<argument>0</argument>
121-
<argument>false</argument>
119+
<service id="api_platform.metadata.resource.cache" parent="cache.system" public="false">
120+
<tag name="cache.pool" />
122121
</service>
123122

124-
<service id="api_platform.metadata.resource.cache.apcu" class="Symfony\Component\Cache\Adapter\ApcuAdapter" public="false">
125-
<argument>api_platform_metadata_resource</argument>
126-
<argument>0</argument>
127-
</service>
128-
129-
<service id="api_platform.metadata.property.cache.array" class="Symfony\Component\Cache\Adapter\ArrayAdapter" public="false">
130-
<argument>0</argument>
131-
<argument>false</argument>
132-
</service>
133-
134-
<service id="api_platform.metadata.property.cache.apcu" class="Symfony\Component\Cache\Adapter\ApcuAdapter" public="false">
135-
<argument>api_platform_metadata_property</argument>
136-
<argument>0</argument>
123+
<service id="api_platform.metadata.property.cache" parent="cache.system" public="false">
124+
<tag name="cache.pool" />
137125
</service>
138126

139127
</services>

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

Lines changed: 6 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace ApiPlatform\Core\Tests\Symfony\Bridge\Bundle\DependencyInjection;
1313

1414
use ApiPlatform\Core\Bridge\Symfony\Bundle\DependencyInjection\ApiPlatformExtension;
15+
use Doctrine\Bundle\DoctrineBundle\DoctrineBundle;
1516
use Prophecy\Argument;
1617
use Symfony\Component\Config\Resource\ResourceInterface;
1718
use Symfony\Component\DependencyInjection\Alias;
@@ -33,9 +34,10 @@ class ApiPlatformExtensionTest extends \PHPUnit_Framework_TestCase
3334
'description' => 'description',
3435
],
3536
];
37+
3638
private $extension;
3739

38-
public function setUp()
40+
protected function setUp()
3941
{
4042
$this->extension = new ApiPlatformExtension();
4143
}
@@ -152,25 +154,6 @@ public function testEnableNelmioApiDoc()
152154
$this->extension->load(array_merge_recursive(self::DEFAULT_CONFIG, ['api_platform' => ['enable_nelmio_api_doc' => true]]), $containerBuilder);
153155
}
154156

155-
public function testSetApcuMetadataCache()
156-
{
157-
$containerBuilderProphecy = $this->getContainerBuilderProphecy();
158-
$containerBuilderProphecy->setAlias('api_platform.metadata.resource.cache', 'api_platform.metadata.resource.cache.apcu')->shouldBeCalled();
159-
$containerBuilderProphecy->setAlias('api_platform.metadata.resource.cache', 'api_platform.metadata.resource.cache.array')->shouldNotBeCalled();
160-
$containerBuilderProphecy->setAlias('api_platform.metadata.property.cache', 'api_platform.metadata.property.cache.apcu')->shouldBeCalled();
161-
$containerBuilderProphecy->setAlias('api_platform.metadata.property.cache', 'api_platform.metadata.property.cache.array')->shouldNotBeCalled();
162-
$containerBuilderProphecy->has('api_platform.metadata.resource.cache.apcu')->willReturn(true)->shouldBeCalled();
163-
$containerBuilderProphecy->has('api_platform.metadata.resource.cache.array')->shouldNotBeCalled();
164-
$containerBuilderProphecy->has('api_platform.metadata.property.cache.apcu')->willReturn(true)->shouldBeCalled();
165-
$containerBuilderProphecy->has('api_platform.metadata.property.cache.array')->shouldNotBeCalled();
166-
$containerBuilder = $containerBuilderProphecy->reveal();
167-
168-
$this->extension->load(array_merge_recursive(self::DEFAULT_CONFIG, ['api_platform' => ['metadata' => [
169-
'resource' => ['cache' => 'api_platform.metadata.resource.cache.apcu'],
170-
'property' => ['cache' => 'api_platform.metadata.property.cache.apcu'],
171-
]]]), $containerBuilder);
172-
}
173-
174157
private function getContainerBuilderProphecy()
175158
{
176159
$definitionArgument = Argument::that(function ($argument) {
@@ -179,7 +162,7 @@ private function getContainerBuilderProphecy()
179162

180163
$containerBuilderProphecy = $this->prophesize(ContainerBuilder::class);
181164
$containerBuilderProphecy->getParameter('kernel.bundles')->willReturn([
182-
'DoctrineBundle' => 'Doctrine\Bundle\DoctrineBundle\DoctrineBundle',
165+
'DoctrineBundle' => DoctrineBundle::class,
183166
])->shouldBeCalled();
184167

185168
$parameters = [
@@ -259,17 +242,15 @@ private function getContainerBuilderProphecy()
259242
'api_platform.metadata.resource.metadata_factory.short_name',
260243
'api_platform.metadata.resource.metadata_factory.operation',
261244
'api_platform.metadata.resource.metadata_factory.cached',
262-
'api_platform.metadata.resource.cache.array',
263-
'api_platform.metadata.resource.cache.apcu',
245+
'api_platform.metadata.resource.cache',
264246
'api_platform.metadata.property.name_collection_factory.property_info',
265247
'api_platform.metadata.property.name_collection_factory.cached',
266248
'api_platform.metadata.property.metadata_factory.annotation',
267249
'api_platform.metadata.property.metadata_factory.property_info',
268250
'api_platform.metadata.property.metadata_factory.serializer',
269251
'api_platform.metadata.property.metadata_factory.validator',
270252
'api_platform.metadata.property.metadata_factory.cached',
271-
'api_platform.metadata.property.cache.array',
272-
'api_platform.metadata.property.cache.apcu',
253+
'api_platform.metadata.property.cache',
273254
'api_platform.negotiator',
274255
'api_platform.route_loader',
275256
'api_platform.router',
@@ -328,17 +309,12 @@ private function getContainerBuilderProphecy()
328309
$aliases = [
329310
'api_platform.routing.resource_path_generator' => 'api_platform.routing.resource_path_generator.underscore',
330311
'api_platform.metadata.resource.name_collection_factory' => 'api_platform.metadata.resource.name_collection_factory.annotation',
331-
'api_platform.metadata.resource.cache' => 'api_platform.metadata.resource.cache.array',
332-
'api_platform.metadata.property.cache' => 'api_platform.metadata.property.cache.array',
333312
];
334313

335314
foreach ($aliases as $alias => $service) {
336315
$containerBuilderProphecy->setAlias($alias, $service)->shouldBeCalled();
337316
}
338317

339-
$containerBuilderProphecy->has('api_platform.metadata.resource.cache.array')->willReturn(true)->shouldBeCalled();
340-
$containerBuilderProphecy->has('api_platform.metadata.property.cache.array')->willReturn(true)->shouldBeCalled();
341-
342318
return $containerBuilderProphecy;
343319
}
344320
}

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

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,6 @@ public function testDefaultConfig()
5353
'items_per_page_parameter_name' => 'itemsPerPage',
5454
],
5555
],
56-
'metadata' => [
57-
'resource' => [
58-
'cache' => 'api_platform.metadata.resource.cache.array',
59-
],
60-
'property' => [
61-
'cache' => 'api_platform.metadata.property.cache.array',
62-
],
63-
],
6456
], $config);
6557
}
6658
}

0 commit comments

Comments
 (0)