[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\DecoderInterface;
|
||||||
use Symfony\Component\Serializer\Encoder\EncoderInterface;
|
use Symfony\Component\Serializer\Encoder\EncoderInterface;
|
||||||
use Symfony\Component\Serializer\Mapping\ClassDiscriminatorFromClassMetadata;
|
use Symfony\Component\Serializer\Mapping\ClassDiscriminatorFromClassMetadata;
|
||||||
use Symfony\Component\Serializer\Mapping\Factory\CacheClassMetadataFactory;
|
|
||||||
use Symfony\Component\Serializer\Normalizer\ConstraintViolationListNormalizer;
|
use Symfony\Component\Serializer\Normalizer\ConstraintViolationListNormalizer;
|
||||||
use Symfony\Component\Serializer\Normalizer\DateIntervalNormalizer;
|
use Symfony\Component\Serializer\Normalizer\DateIntervalNormalizer;
|
||||||
use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
|
use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
|
||||||
@ -1505,18 +1504,8 @@ class FrameworkExtension extends Extension
|
|||||||
$chainLoader->replaceArgument(0, $serializerLoaders);
|
$chainLoader->replaceArgument(0, $serializerLoaders);
|
||||||
$container->getDefinition('serializer.mapping.cache_warmer')->replaceArgument(0, $serializerLoaders);
|
$container->getDefinition('serializer.mapping.cache_warmer')->replaceArgument(0, $serializerLoaders);
|
||||||
|
|
||||||
if (!$container->getParameter('kernel.debug')) {
|
if ($container->getParameter('kernel.debug')) {
|
||||||
$cacheMetadataFactory = new Definition(
|
$container->removeDefinition('serializer.mapping.cache_class_metadata_factory');
|
||||||
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 (isset($config['name_converter']) && $config['name_converter']) {
|
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.description_extractor', ['priority' => -1000]);
|
||||||
$definition->addTag('property_info.type_extractor', ['priority' => -1001]);
|
$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)
|
private function registerLockConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
|
||||||
|
@ -36,6 +36,10 @@
|
|||||||
<tag name="cache.pool" />
|
<tag name="cache.pool" />
|
||||||
</service>
|
</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">
|
<service id="cache.messenger.restart_workers_signal" parent="cache.app" public="false">
|
||||||
<tag name="cache.pool" />
|
<tag name="cache.pool" />
|
||||||
</service>
|
</service>
|
||||||
|
@ -21,6 +21,11 @@
|
|||||||
<service id="Symfony\Component\PropertyInfo\PropertyListExtractorInterface" alias="property_info" />
|
<service id="Symfony\Component\PropertyInfo\PropertyListExtractorInterface" alias="property_info" />
|
||||||
<service id="Symfony\Component\PropertyInfo\PropertyInitializableExtractorInterface" 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 -->
|
<!-- Extractor -->
|
||||||
<service id="property_info.reflection_extractor" class="Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor">
|
<service id="property_info.reflection_extractor" class="Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor">
|
||||||
<tag name="property_info.list_extractor" priority="-1000" />
|
<tag name="property_info.list_extractor" priority="-1000" />
|
||||||
|
@ -104,6 +104,11 @@
|
|||||||
<argument type="service" id="cache.serializer" />
|
<argument type="service" id="cache.serializer" />
|
||||||
</service>
|
</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 -->
|
<!-- Encoders -->
|
||||||
<service id="serializer.encoder.xml" class="Symfony\Component\Serializer\Encoder\XmlEncoder">
|
<service id="serializer.encoder.xml" class="Symfony\Component\Serializer\Encoder\XmlEncoder">
|
||||||
<tag name="serializer.encoder" />
|
<tag name="serializer.encoder" />
|
||||||
|
@ -1357,6 +1357,22 @@ abstract class FrameworkExtensionTest extends TestCase
|
|||||||
$this->assertTrue($container->has('property_info'));
|
$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()
|
public function testEventDispatcherService()
|
||||||
{
|
{
|
||||||
$container = $this->createContainer(['kernel.charset' => 'UTF-8', 'kernel.secret' => 'secret']);
|
$container = $this->createContainer(['kernel.charset' => 'UTF-8', 'kernel.secret' => 'secret']);
|
||||||
|
Reference in New Issue
Block a user