Explorar el Código

[DoctrineMongoDBBundle] Removing the "doctrine.odm.mongodb.metadata_cache_driver" parameter.

This information was set entirely in the DI extension options and then added as a parameter only to be later consumed by the DI extension class.

In other words, this should never have been a parameter, or at least it's never been used and treated like a parameter.
Ryan Weaver hace 14 años
padre
commit
bdd23369e2

+ 17 - 14
src/Symfony/Bundle/DoctrineMongoDBBundle/DependencyInjection/DoctrineMongoDBExtension.php

@@ -64,10 +64,16 @@ class DoctrineMongoDBExtension extends AbstractDoctrineExtension
         // Load DoctrineMongoDBBundle/Resources/config/mongodb.xml
         $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
         $loader->load('mongodb.xml');
+
         $processor = new Processor();
         $configuration = new Configuration();
         $config = $processor->process($configuration->getConfigTree(), $configs);
 
+        // can't currently default this correctly in Configuration
+        if (!isset($config['metadata_cache_driver'])) {
+            $config['metadata_cache_driver'] = array('type' => 'array');
+        }
+
         $this->loadDefaults($config, $container);
         $this->loadConnections($config, $container);
         $this->loadDocumentManagers($config, $container);
@@ -97,10 +103,6 @@ class DoctrineMongoDBExtension extends AbstractDoctrineExtension
                 $container->setParameter('doctrine.odm.mongodb.'.$key, $config[$key]);
             }
         }
-
-        if (isset($config['metadata_cache_driver'])) {
-            $container->setParameter('doctrine.odm.mongodb.metadata_cache_driver', $config['metadata_cache_driver']['type']);
-        }
     }
 
     /**
@@ -114,7 +116,7 @@ class DoctrineMongoDBExtension extends AbstractDoctrineExtension
         $documentManagers = $this->getDocumentManagers($config, $container);
         foreach ($documentManagers as $name => $documentManager) {
             $documentManager['name'] = $name;
-            $this->loadDocumentManager($documentManager, $container);
+            $this->loadDocumentManager($documentManager, $container, $config['metadata_cache_driver']);
         }
         $container->setParameter('doctrine.odm.mongodb.document_managers', array_keys($documentManagers));
     }
@@ -123,9 +125,10 @@ class DoctrineMongoDBExtension extends AbstractDoctrineExtension
      * Loads a document manager configuration.
      *
      * @param array $documentManager        A document manager configuration array
-     * @param ContainerBuilder $container A ContainerBuilder instance
+     * @param ContainerBuilder $container   A ContainerBuilder instance
+     * @param array $defaultMetadataCache   The default metadata cache configuration array
      */
-    protected function loadDocumentManager(array $documentManager, ContainerBuilder $container)
+    protected function loadDocumentManager(array $documentManager, ContainerBuilder $container, $defaultMetadataCache)
     {
         $defaultDocumentManager = $container->getParameter('doctrine.odm.mongodb.default_document_manager');
         $defaultDatabase = isset($documentManager['default_database']) ? $documentManager['default_database'] : $container->getParameter('doctrine.odm.mongodb.default_database');
@@ -139,7 +142,7 @@ class DoctrineMongoDBExtension extends AbstractDoctrineExtension
         }
 
         $this->loadDocumentManagerBundlesMappingInformation($documentManager, $odmConfigDef, $container);
-        $this->loadDocumentManagerMetadataCacheDriver($documentManager, $container);
+        $this->loadDocumentManagerMetadataCacheDriver($documentManager, $container, $defaultMetadataCache);
 
         $methods = array(
             'setMetadataCacheImpl' => new Reference(sprintf('doctrine.odm.mongodb.%s_metadata_cache', $documentManager['name'])),
@@ -220,14 +223,14 @@ class DoctrineMongoDBExtension extends AbstractDoctrineExtension
     /**
      * Loads the configured document manager metadata cache driver.
      *
-     * @param array $config        A configured document manager array
-     * @param ContainerBuilder $container A ContainerBuilder instance
+     * @param array $config                 A configured document manager array
+     * @param ContainerBuilder $container   A ContainerBuilder instance
+     * @param array $defaultMetadataCache   The default metadata cache configuration array
      */
-    protected function loadDocumentManagerMetadataCacheDriver(array $documentManager, ContainerBuilder $container)
+    protected function loadDocumentManagerMetadataCacheDriver(array $documentManager, ContainerBuilder $container, $defaultMetadataCache)
     {
-        $metadataCacheDriver = $container->getParameter('doctrine.odm.mongodb.metadata_cache_driver');
-        $dmMetadataCacheDriver = isset($documentManager['metadata_cache_driver']) ? $documentManager['metadata_cache_driver'] : $metadataCacheDriver;
-        $type = is_array($dmMetadataCacheDriver) ? $dmMetadataCacheDriver['type'] : $dmMetadataCacheDriver;
+        $dmMetadataCacheDriver = isset($documentManager['metadata_cache_driver']) ? $documentManager['metadata_cache_driver'] : $defaultMetadataCache;
+        $type = $dmMetadataCacheDriver['type'];
 
         if ('memcache' === $type) {
             $memcacheClass = isset($dmMetadataCacheDriver['class']) ? $dmMetadataCacheDriver['class'] : sprintf('%%doctrine.odm.mongodb.cache.%s_class%%', $type);

+ 0 - 1
src/Symfony/Bundle/DoctrineMongoDBBundle/Tests/DependencyInjection/AbstractMongoDBExtensionTest.php

@@ -321,7 +321,6 @@ abstract class AbstractMongoDBExtensionTest extends TestCase
         $container->getCompilerPassConfig()->setRemovingPasses(array());
         $container->compile();
 
-        $this->assertEquals('apc', $container->getParameter('doctrine.odm.mongodb.metadata_cache_driver'));
         $this->assertTrue($container->getParameter('doctrine.odm.mongodb.auto_generate_proxy_classes'));
     }
 

+ 0 - 1
src/Symfony/Bundle/DoctrineMongoDBBundle/Tests/DependencyInjection/Fixtures/config/xml/odm_imports_import.xml

@@ -8,7 +8,6 @@
 
     <doctrine:mongodb
         auto-generate-proxy-classes="false"
-        metadata-cache-driver="apc"
     >
     </doctrine:mongodb>
 </container>

+ 0 - 1
src/Symfony/Bundle/DoctrineMongoDBBundle/Tests/DependencyInjection/Fixtures/config/yml/odm_imports_import.yml

@@ -1,3 +1,2 @@
 doctrine_mongo_db:
   auto_generate_proxy_classes: false
-  metadata_cache_driver: apc