[FrameworkBundle] Add cache configuration for PropertyInfo
This commit is contained in:
parent
7ef80ff2ff
commit
17f6225d0f
@ -99,7 +99,6 @@ use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
|
||||
use Symfony\Component\Serializer\Encoder\DecoderInterface;
|
||||
use Symfony\Component\Serializer\Encoder\EncoderInterface;
|
||||
use Symfony\Component\Serializer\Mapping\ClassDiscriminatorFromClassMetadata;
|
||||
use Symfony\Component\Serializer\Mapping\Factory\CacheClassMetadataFactory;
|
||||
use Symfony\Component\Serializer\Normalizer\ConstraintViolationListNormalizer;
|
||||
use Symfony\Component\Serializer\Normalizer\DateIntervalNormalizer;
|
||||
use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
|
||||
@ -1505,18 +1504,8 @@ class FrameworkExtension extends Extension
|
||||
$chainLoader->replaceArgument(0, $serializerLoaders);
|
||||
$container->getDefinition('serializer.mapping.cache_warmer')->replaceArgument(0, $serializerLoaders);
|
||||
|
||||
if (!$container->getParameter('kernel.debug')) {
|
||||
$cacheMetadataFactory = new Definition(
|
||||
CacheClassMetadataFactory::class,
|
||||
[
|
||||
new Reference('serializer.mapping.cache_class_metadata_factory.inner'),
|
||||
new Reference('serializer.mapping.cache.symfony'),
|
||||
]
|
||||
);
|
||||
$cacheMetadataFactory->setPublic(false);
|
||||
$cacheMetadataFactory->setDecoratedService('serializer.mapping.class_metadata_factory');
|
||||
|
||||
$container->setDefinition('serializer.mapping.cache_class_metadata_factory', $cacheMetadataFactory);
|
||||
if ($container->getParameter('kernel.debug')) {
|
||||
$container->removeDefinition('serializer.mapping.cache_class_metadata_factory');
|
||||
}
|
||||
|
||||
if (isset($config['name_converter']) && $config['name_converter']) {
|
||||
@ -1551,6 +1540,10 @@ class FrameworkExtension extends Extension
|
||||
$definition->addTag('property_info.description_extractor', ['priority' => -1000]);
|
||||
$definition->addTag('property_info.type_extractor', ['priority' => -1001]);
|
||||
}
|
||||
|
||||
if ($container->getParameter('kernel.debug')) {
|
||||
$container->removeDefinition('property_info.cache');
|
||||
}
|
||||
}
|
||||
|
||||
private function registerLockConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
|
||||
|
@ -36,6 +36,10 @@
|
||||
<tag name="cache.pool" />
|
||||
</service>
|
||||
|
||||
<service id="cache.property_info" parent="cache.system" public="false">
|
||||
<tag name="cache.pool" />
|
||||
</service>
|
||||
|
||||
<service id="cache.messenger.restart_workers_signal" parent="cache.app" public="false">
|
||||
<tag name="cache.pool" />
|
||||
</service>
|
||||
|
@ -21,6 +21,11 @@
|
||||
<service id="Symfony\Component\PropertyInfo\PropertyListExtractorInterface" alias="property_info" />
|
||||
<service id="Symfony\Component\PropertyInfo\PropertyInitializableExtractorInterface" alias="property_info" />
|
||||
|
||||
<service id="property_info.cache" decorates="property_info" class="Symfony\Component\PropertyInfo\PropertyInfoCacheExtractor">
|
||||
<argument type="service" id="property_info.cache.inner" />
|
||||
<argument type="service" id="cache.property_info" />
|
||||
</service>
|
||||
|
||||
<!-- Extractor -->
|
||||
<service id="property_info.reflection_extractor" class="Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor">
|
||||
<tag name="property_info.list_extractor" priority="-1000" />
|
||||
|
@ -104,6 +104,11 @@
|
||||
<argument type="service" id="cache.serializer" />
|
||||
</service>
|
||||
|
||||
<service id="serializer.mapping.cache_class_metadata_factory" decorates="serializer.mapping.class_metadata_factory" class="Symfony\Component\Serializer\Mapping\Factory\CacheClassMetadataFactory">
|
||||
<argument type="service" id="serializer.mapping.cache_class_metadata_factory.inner" />
|
||||
<argument type="service" id="serializer.mapping.cache.symfony" />
|
||||
</service>
|
||||
|
||||
<!-- Encoders -->
|
||||
<service id="serializer.encoder.xml" class="Symfony\Component\Serializer\Encoder\XmlEncoder">
|
||||
<tag name="serializer.encoder" />
|
||||
|
@ -1357,6 +1357,22 @@ abstract class FrameworkExtensionTest extends TestCase
|
||||
$this->assertTrue($container->has('property_info'));
|
||||
}
|
||||
|
||||
public function testPropertyInfoCacheActivated()
|
||||
{
|
||||
$container = $this->createContainerFromFile('property_info');
|
||||
|
||||
$this->assertTrue($container->hasDefinition('property_info.cache'));
|
||||
|
||||
$cache = $container->getDefinition('property_info.cache')->getArgument(1);
|
||||
$this->assertEquals(new Reference('cache.property_info'), $cache);
|
||||
}
|
||||
|
||||
public function testPropertyInfoCacheDisabled()
|
||||
{
|
||||
$container = $this->createContainerFromFile('property_info', ['kernel.debug' => true, 'kernel.container_class' => __CLASS__]);
|
||||
$this->assertFalse($container->hasDefinition('property_info.cache'));
|
||||
}
|
||||
|
||||
public function testEventDispatcherService()
|
||||
{
|
||||
$container = $this->createContainer(['kernel.charset' => 'UTF-8', 'kernel.secret' => 'secret']);
|
||||
|
Reference in New Issue
Block a user