From 3899a0c5ceee489118b973d341b47ea409a23559 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Mon, 13 Jun 2016 15:13:05 +0200 Subject: [PATCH] Switch to the new Symfony cache infrastructure --- .../ApiPlatformExtension.php | 32 ----------------- .../DependencyInjection/Configuration.php | 17 --------- .../Bundle/Resources/config/metadata.xml | 20 +++-------- .../ApiPlatformExtensionTest.php | 36 ++++--------------- .../DependencyInjection/ConfigurationTest.php | 8 ----- 5 files changed, 10 insertions(+), 103 deletions(-) diff --git a/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php b/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php index b74598fbc53..e8b56c9b38f 100644 --- a/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php +++ b/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php @@ -85,7 +85,6 @@ public function load(array $configs, ContainerBuilder $container) $this->enableJsonLd($loader); $this->registerAnnotationLoaders($container); $this->registerFileLoaders($container); - $this->setUpMetadataCaching($container, $config); if (!interface_exists('phpDocumentor\Reflection\DocBlockFactoryInterface')) { $container->removeDefinition('api_platform.metadata.resource.metadata_factory.php_doc'); @@ -175,35 +174,4 @@ private function registerFileLoaders(ContainerBuilder $container) $container->getDefinition('api_platform.metadata.resource.name_collection_factory.xml')->replaceArgument(0, $xmlResources); $container->getDefinition('api_platform.metadata.resource.metadata_factory.xml')->replaceArgument(0, $xmlResources); } - - /** - * Sets up metadata caching. - * - * @param ContainerBuilder $container - * @param array $config - */ - private function setUpMetadataCaching(ContainerBuilder $container, array $config) - { - $container->setAlias('api_platform.metadata.resource.cache', $config['metadata']['resource']['cache']); - $container->setAlias('api_platform.metadata.property.cache', $config['metadata']['property']['cache']); - - if (!class_exists('Symfony\Component\Cache\Adapter\ArrayAdapter')) { - $container->removeDefinition('api_platform.metadata.resource.cache.array'); - $container->removeDefinition('api_platform.metadata.resource.cache.apcu'); - $container->removeDefinition('api_platform.metadata.property.cache.array'); - $container->removeDefinition('api_platform.metadata.property.cache.apcu'); - } - - if (!$container->has($config['metadata']['resource']['cache'])) { - $container->removeAlias('api_platform.metadata.resource.cache'); - $container->removeDefinition('api_platform.metadata.resource.name_collection_factory.cached'); - $container->removeDefinition('api_platform.metadata.resource.metadata_factory.cached'); - } - - if (!$container->has($config['metadata']['property']['cache'])) { - $container->removeAlias('api_platform.metadata.property.cache'); - $container->removeDefinition('api_platform.metadata.property.name_collection_factory.cached'); - $container->removeDefinition('api_platform.metadata.property.metadata_factory.cached'); - } - } } diff --git a/src/Bridge/Symfony/Bundle/DependencyInjection/Configuration.php b/src/Bridge/Symfony/Bundle/DependencyInjection/Configuration.php index 6bc6b6f4928..ce73047c2fb 100644 --- a/src/Bridge/Symfony/Bundle/DependencyInjection/Configuration.php +++ b/src/Bridge/Symfony/Bundle/DependencyInjection/Configuration.php @@ -87,23 +87,6 @@ public function getConfigTreeBuilder() ->end() ->end() ->end() - ->arrayNode('metadata') - ->addDefaultsIfNotSet() - ->children() - ->arrayNode('resource') - ->addDefaultsIfNotSet() - ->children() - ->scalarNode('cache')->defaultValue('api_platform.metadata.resource.cache.array')->cannotBeEmpty()->info('Cache service for resource metadata.')->end() - ->end() - ->end() - ->arrayNode('property') - ->addDefaultsIfNotSet() - ->children() - ->scalarNode('cache')->defaultValue('api_platform.metadata.property.cache.array')->cannotBeEmpty()->info('Cache service for property metadata.')->end() - ->end() - ->end() - ->end() - ->end() ->end(); return $treeBuilder; diff --git a/src/Bridge/Symfony/Bundle/Resources/config/metadata.xml b/src/Bridge/Symfony/Bundle/Resources/config/metadata.xml index 7954c56ca42..b51c971d786 100644 --- a/src/Bridge/Symfony/Bundle/Resources/config/metadata.xml +++ b/src/Bridge/Symfony/Bundle/Resources/config/metadata.xml @@ -116,24 +116,12 @@ - - 0 - false + + - - api_platform_metadata_resource - 0 - - - - 0 - false - - - - api_platform_metadata_property - 0 + + diff --git a/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php b/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php index 7e9cbe70e4f..3cae8250506 100644 --- a/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php +++ b/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php @@ -12,6 +12,7 @@ namespace ApiPlatform\Core\Tests\Symfony\Bridge\Bundle\DependencyInjection; use ApiPlatform\Core\Bridge\Symfony\Bundle\DependencyInjection\ApiPlatformExtension; +use Doctrine\Bundle\DoctrineBundle\DoctrineBundle; use Prophecy\Argument; use Symfony\Component\Config\Resource\ResourceInterface; use Symfony\Component\DependencyInjection\Alias; @@ -33,9 +34,10 @@ class ApiPlatformExtensionTest extends \PHPUnit_Framework_TestCase 'description' => 'description', ], ]; + private $extension; - public function setUp() + protected function setUp() { $this->extension = new ApiPlatformExtension(); } @@ -152,25 +154,6 @@ public function testEnableNelmioApiDoc() $this->extension->load(array_merge_recursive(self::DEFAULT_CONFIG, ['api_platform' => ['enable_nelmio_api_doc' => true]]), $containerBuilder); } - public function testSetApcuMetadataCache() - { - $containerBuilderProphecy = $this->getContainerBuilderProphecy(); - $containerBuilderProphecy->setAlias('api_platform.metadata.resource.cache', 'api_platform.metadata.resource.cache.apcu')->shouldBeCalled(); - $containerBuilderProphecy->setAlias('api_platform.metadata.resource.cache', 'api_platform.metadata.resource.cache.array')->shouldNotBeCalled(); - $containerBuilderProphecy->setAlias('api_platform.metadata.property.cache', 'api_platform.metadata.property.cache.apcu')->shouldBeCalled(); - $containerBuilderProphecy->setAlias('api_platform.metadata.property.cache', 'api_platform.metadata.property.cache.array')->shouldNotBeCalled(); - $containerBuilderProphecy->has('api_platform.metadata.resource.cache.apcu')->willReturn(true)->shouldBeCalled(); - $containerBuilderProphecy->has('api_platform.metadata.resource.cache.array')->shouldNotBeCalled(); - $containerBuilderProphecy->has('api_platform.metadata.property.cache.apcu')->willReturn(true)->shouldBeCalled(); - $containerBuilderProphecy->has('api_platform.metadata.property.cache.array')->shouldNotBeCalled(); - $containerBuilder = $containerBuilderProphecy->reveal(); - - $this->extension->load(array_merge_recursive(self::DEFAULT_CONFIG, ['api_platform' => ['metadata' => [ - 'resource' => ['cache' => 'api_platform.metadata.resource.cache.apcu'], - 'property' => ['cache' => 'api_platform.metadata.property.cache.apcu'], - ]]]), $containerBuilder); - } - private function getContainerBuilderProphecy() { $definitionArgument = Argument::that(function ($argument) { @@ -179,7 +162,7 @@ private function getContainerBuilderProphecy() $containerBuilderProphecy = $this->prophesize(ContainerBuilder::class); $containerBuilderProphecy->getParameter('kernel.bundles')->willReturn([ - 'DoctrineBundle' => 'Doctrine\Bundle\DoctrineBundle\DoctrineBundle', + 'DoctrineBundle' => DoctrineBundle::class, ])->shouldBeCalled(); $parameters = [ @@ -259,8 +242,7 @@ private function getContainerBuilderProphecy() 'api_platform.metadata.resource.metadata_factory.short_name', 'api_platform.metadata.resource.metadata_factory.operation', 'api_platform.metadata.resource.metadata_factory.cached', - 'api_platform.metadata.resource.cache.array', - 'api_platform.metadata.resource.cache.apcu', + 'api_platform.metadata.resource.cache', 'api_platform.metadata.property.name_collection_factory.property_info', 'api_platform.metadata.property.name_collection_factory.cached', 'api_platform.metadata.property.metadata_factory.annotation', @@ -268,8 +250,7 @@ private function getContainerBuilderProphecy() 'api_platform.metadata.property.metadata_factory.serializer', 'api_platform.metadata.property.metadata_factory.validator', 'api_platform.metadata.property.metadata_factory.cached', - 'api_platform.metadata.property.cache.array', - 'api_platform.metadata.property.cache.apcu', + 'api_platform.metadata.property.cache', 'api_platform.negotiator', 'api_platform.route_loader', 'api_platform.router', @@ -328,17 +309,12 @@ private function getContainerBuilderProphecy() $aliases = [ 'api_platform.routing.resource_path_generator' => 'api_platform.routing.resource_path_generator.underscore', 'api_platform.metadata.resource.name_collection_factory' => 'api_platform.metadata.resource.name_collection_factory.annotation', - 'api_platform.metadata.resource.cache' => 'api_platform.metadata.resource.cache.array', - 'api_platform.metadata.property.cache' => 'api_platform.metadata.property.cache.array', ]; foreach ($aliases as $alias => $service) { $containerBuilderProphecy->setAlias($alias, $service)->shouldBeCalled(); } - $containerBuilderProphecy->has('api_platform.metadata.resource.cache.array')->willReturn(true)->shouldBeCalled(); - $containerBuilderProphecy->has('api_platform.metadata.property.cache.array')->willReturn(true)->shouldBeCalled(); - return $containerBuilderProphecy; } } diff --git a/tests/Bridge/Symfony/Bundle/DependencyInjection/ConfigurationTest.php b/tests/Bridge/Symfony/Bundle/DependencyInjection/ConfigurationTest.php index 8ea30afb1df..df2f69c0588 100644 --- a/tests/Bridge/Symfony/Bundle/DependencyInjection/ConfigurationTest.php +++ b/tests/Bridge/Symfony/Bundle/DependencyInjection/ConfigurationTest.php @@ -53,14 +53,6 @@ public function testDefaultConfig() 'items_per_page_parameter_name' => 'itemsPerPage', ], ], - 'metadata' => [ - 'resource' => [ - 'cache' => 'api_platform.metadata.resource.cache.array', - ], - 'property' => [ - 'cache' => 'api_platform.metadata.property.cache.array', - ], - ], ], $config); } }