From 81db364e42b6bc8c0ea4b9920c8714f2cb40bd23 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo <1102197+priyadi@users.noreply.github.com> Date: Wed, 24 Apr 2024 11:40:05 +0700 Subject: [PATCH] fix: property info caching if another bundle is decorating cache --- CHANGELOG.md | 4 +++ config/non-debug.php | 36 +++++++++++++++++++ config/services.php | 13 ------- .../CompilerPass/DebugPass.php | 5 --- .../RekalogikaMapperExtension.php | 2 ++ 5 files changed, 42 insertions(+), 18 deletions(-) create mode 100644 config/non-debug.php diff --git a/CHANGELOG.md b/CHANGELOG.md index a62b3d3..53edc99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # CHANGELOG +## 1.1.2 + +* fix: property info caching if another bundle is decorating cache ([#47](https://github.com/rekalogika/mapper/issues/47)) + ## 1.1.1 * fix: Fix missing `kernel.reset` tags. diff --git a/config/non-debug.php b/config/non-debug.php new file mode 100644 index 0000000..2fac799 --- /dev/null +++ b/config/non-debug.php @@ -0,0 +1,36 @@ + + * + * For the full copyright and license information, please view the LICENSE file + * that was distributed with this source code. + */ + +use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; +use Symfony\Component\PropertyInfo\PropertyInfoCacheExtractor; + +use function Symfony\Component\DependencyInjection\Loader\Configurator\service; + +return static function (ContainerConfigurator $containerConfigurator): void { + $services = $containerConfigurator->services(); + + dump(123); + + $services + ->set('rekalogika.mapper.cache.property_info') + ->parent('cache.system') + ->tag('cache.pool'); + + $services + ->set('rekalogika.mapper.property_info.cache', PropertyInfoCacheExtractor::class) + ->decorate('rekalogika.mapper.property_info') + ->args([ + service('rekalogika.mapper.property_info.cache.inner'), + service('rekalogika.mapper.cache.property_info') + ]); +}; diff --git a/config/services.php b/config/services.php index 48ff1f4..0dad9fc 100644 --- a/config/services.php +++ b/config/services.php @@ -98,19 +98,6 @@ ]); - $services - ->set('rekalogika.mapper.cache.property_info') - ->parent('cache.system') - ->tag('cache.pool'); - - $services - ->set('rekalogika.mapper.property_info.cache', PropertyInfoCacheExtractor::class) - ->decorate('rekalogika.mapper.property_info') - ->args([ - service('rekalogika.mapper.property_info.cache.inner'), - service('rekalogika.mapper.cache.property_info') - ]); - # transformers $services diff --git a/src/DependencyInjection/CompilerPass/DebugPass.php b/src/DependencyInjection/CompilerPass/DebugPass.php index 74a0d5f..4abdf2d 100644 --- a/src/DependencyInjection/CompilerPass/DebugPass.php +++ b/src/DependencyInjection/CompilerPass/DebugPass.php @@ -27,11 +27,6 @@ { public function process(ContainerBuilder $container): void { - // remove property info cache - - $container->removeDefinition('rekalogika.mapper.cache.property_info'); - $container->removeDefinition('rekalogika.mapper.property_info.cache'); - // decorates all transformers using TraceableTransformer $dataCollector = new Reference('rekalogika.mapper.data_collector'); diff --git a/src/DependencyInjection/RekalogikaMapperExtension.php b/src/DependencyInjection/RekalogikaMapperExtension.php index 562468e..bdfa44c 100644 --- a/src/DependencyInjection/RekalogikaMapperExtension.php +++ b/src/DependencyInjection/RekalogikaMapperExtension.php @@ -49,6 +49,8 @@ public function load(array $configs, ContainerBuilder $container): void if ($debug) { $loader->load('debug.php'); + } else { + $loader->load('non-debug.php'); } // autoconfiguration