From 0a9046946ed7ff874a5f64fd96a97c5c3dc00d8e Mon Sep 17 00:00:00 2001 From: Thomas Rieschl Date: Tue, 12 Sep 2023 21:08:41 +0200 Subject: [PATCH] Avoid using deprecated methods MongoDB ODM 2.2 deprecated `Doctrine\ODM\MongoDB\Configuration::getMetadataCacheImpl()` and `Doctrine\ODM\MongoDB\Configuration::setMetadataCacheImpl()` in favor of Configuration::getMetadataCache and `Configuration::setMetadataCache()`, respectively which use a PSR-6 compliant cache instead of doctrine/cache. I refrained from allowing to pass a PSR-6 `CacheItemPoolInterface` directly for now, because it's currently unlikely that a cache pulled from `doctrine.cache.[name]` service key will return a PSR-6 cache. Such a change would probably also require changes in doctrine-module and doctrine-orm-module. If you want me to implement that forward compatibility layer right away it's also ok for me. Signed-off-by: Thomas Rieschl --- composer.json | 1 + src/Service/ConfigurationFactory.php | 4 +++- tests/Doctrine/ConfigurationFactoryTest.php | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 49c62a8..412ada1 100644 --- a/composer.json +++ b/composer.json @@ -47,6 +47,7 @@ "require": { "php": "~8.0.0 || ~8.1.0 || ~8.2.0", "ext-mongodb": "*", + "doctrine/cache": "^1.11 || ^2.0", "doctrine/doctrine-laminas-hydrator": "^3.3.0", "doctrine/doctrine-module": "^6.0.4", "doctrine/event-manager": "^1.2.0 || ^2.0.0", diff --git a/src/Service/ConfigurationFactory.php b/src/Service/ConfigurationFactory.php index fbf941c..861ccd7 100644 --- a/src/Service/ConfigurationFactory.php +++ b/src/Service/ConfigurationFactory.php @@ -4,6 +4,7 @@ namespace DoctrineMongoODMModule\Service; +use Doctrine\Common\Cache\Psr6\CacheAdapter; use Doctrine\ODM\MongoDB\Configuration; use Doctrine\ODM\MongoDB\Types\Type; use DoctrineMongoODMModule\Options; @@ -68,7 +69,8 @@ public function __invoke(ContainerInterface $container, $requestedName, array|nu } // caching - $config->setMetadataCacheImpl($container->get($configurationOptions->getMetadataCache())); + $cache = $container->get($configurationOptions->getMetadataCache()); + $config->setMetadataCache(CacheAdapter::wrap($cache)); // Register filters foreach ($configurationOptions->getFilters() as $alias => $class) { diff --git a/tests/Doctrine/ConfigurationFactoryTest.php b/tests/Doctrine/ConfigurationFactoryTest.php index 3842df9..92eb731 100644 --- a/tests/Doctrine/ConfigurationFactoryTest.php +++ b/tests/Doctrine/ConfigurationFactoryTest.php @@ -5,6 +5,7 @@ namespace DoctrineMongoODMModuleTest\Doctrine; use Doctrine\Common\Cache\Cache; +use Doctrine\Common\Cache\Psr6\CacheAdapter; use Doctrine\ODM\MongoDB\APM\CommandLoggerInterface; use Doctrine\ODM\MongoDB\Configuration as Config; use Doctrine\ODM\MongoDB\PersistentCollection\PersistentCollectionFactory; @@ -99,7 +100,7 @@ public function testCreation(): void $this->assertInstanceOf(Config::class, $config); - $this->assertSame($metadataCache, $config->getMetadataCacheImpl()); + $this->assertEquals(CacheAdapter::wrap($metadataCache), $config->getMetadataCache()); $this->assertSame($mappingDriver, $config->getMetadataDriverImpl()); $this->assertSame(Config::AUTOGENERATE_EVAL, $config->getAutoGenerateProxyClasses());