Explorar el Código

[DoctrineMongoDBBundle] Removed the short syntax for the configuration

Christophe Coevoet hace 14 años
padre
commit
e3e60f1a68

+ 5 - 49
src/Symfony/Bundle/DoctrineMongoDBBundle/DependencyInjection/Configuration.php

@@ -23,9 +23,7 @@ class Configuration
         $treeBuilder = new TreeBuilder();
         $rootNode = $treeBuilder->root('doctrine_mongo_db', 'array');
 
-        $this->addSingleDocumentManagerSection($rootNode);
         $this->addDocumentManagersSection($rootNode);
-        $this->addSingleConnectionSection($rootNode);
         $this->addConnectionsSection($rootNode);
 
         $rootNode
@@ -33,24 +31,12 @@ class Configuration
             ->scalarNode('auto_generate_proxy_classes')->defaultValue(false)->end()
             ->scalarNode('hydrator_namespace')->defaultValue('Hydrators')->end()
             ->scalarNode('auto_generate_hydrator_classes')->defaultValue(false)->end()
-        ;
-
-        return $treeBuilder->buildTree();
-    }
-
-    /**
-     * Builds the nodes responsible for the config that supports the single
-     * document manager.
-     */
-    private function addSingleDocumentManagerSection(NodeBuilder $rootNode)
-    {
-        $rootNode
             ->scalarNode('default_document_manager')->defaultValue('default')->end()
+            ->scalarNode('default_connection')->defaultValue('default')->end()
             ->scalarNode('default_database')->defaultValue('default')->end()
-            ->builder($this->getMetadataCacheDriverNode())
-            ->fixXmlConfig('mapping')
-            ->builder($this->getMappingsNode())
         ;
+
+        return $treeBuilder->buildTree();
     }
 
     /**
@@ -63,10 +49,9 @@ class Configuration
             ->arrayNode('document_managers')
                 ->useAttributeAsKey('id')
                 ->prototype('array')
-                    ->performNoDeepMerging()
+                    //->performNoDeepMerging()
                     ->treatNullLike(array())
                     ->builder($this->getMetadataCacheDriverNode())
-                    ->scalarNode('default_database')->end()
                     ->scalarNode('connection')->end()
                     ->scalarNode('database')->end()
                     ->fixXmlConfig('mapping')
@@ -76,21 +61,6 @@ class Configuration
         ;
     }
 
-    /**
-     * Configures the single-connection section:
-     *   * default_connection
-     *   * server
-     *   * options
-     */
-    private function addSingleConnectionSection(NodeBuilder $rootNode)
-    {
-        $rootNode
-            ->scalarNode('default_connection')->defaultValue('default')->end()
-            ->builder($this->addConnectionServerNode())
-            ->builder($this->addConnectionOptionsNode())
-        ;
-    }
-
     /**
      * Adds the configuration for the "connections" key
      */
@@ -102,7 +72,7 @@ class Configuration
                 ->useAttributeAsKey('id')
                 ->prototype('array')
                     ->performNoDeepMerging()
-                    ->builder($this->addConnectionServerNode())
+                    ->scalarNode('server')->defaultNull()->end()
                     ->builder($this->addConnectionOptionsNode())
                 ->end()
             ->end()
@@ -143,20 +113,6 @@ class Configuration
         return $node;
     }
 
-    /**
-     * Adds the NodeBuilder for the "server" key of a connection.
-     */
-    private function addConnectionServerNode()
-    {
-        $node = new NodeBuilder('server', 'scalar');
-
-        $node
-            ->defaultValue(null)
-        ->end();
-
-        return $node;
-    }
-
     /**
      * Adds the NodeBuilder for the "options" key of a connection.
      */

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

@@ -77,26 +77,9 @@ class DoctrineMongoDBExtension extends AbstractDoctrineExtension
         // set some options as parameters and unset them
         $config = $this->overrideParameters($config, $container);
 
-        // if no "connections" were given, setup the default connection
-        if (!isset($config['connections']) || !$config['connections']) {
-            $defaultName = $config['default_connection'];
-            $config['connections'] = array($defaultName => array(
-                'server'    => $config['server'],
-                'options'   => $config['options'],
-            ));
-        }
         // load the connections
         $this->loadConnections($config['connections'], $container);
 
-        // if no "document_managers" were given, setup the default manager
-        if (!isset($config['document_managers']) || !$config['document_managers']) {
-            $defaultName = $config['default_document_manager'];
-            $config['document_managers'] = array($defaultName => array(
-                'mappings'          => $config['mappings'],
-                'default_database'  => $config['default_database'],
-                'metadata_cache_driver' => $config['metadata_cache_driver'],
-            ));
-        }
         // load the document managers
         $this->loadDocumentManagers(
             $config['document_managers'],

+ 1 - 1
src/Symfony/Bundle/DoctrineMongoDBBundle/Tests/ContainerTest.php

@@ -30,7 +30,7 @@ class ContainerTest extends TestCase
         $container->registerExtension($loader);
 
         $configs = array();
-        $configs[] = array('mappings' => array('YamlBundle' => array()));
+        $configs[] = array('connections' => array('default' => array()), 'document_managers' => array('default' => array('mappings' => array('YamlBundle' => array()))));
         $loader->load($configs, $container);
 
         return $container;

+ 13 - 6
src/Symfony/Bundle/DoctrineMongoDBBundle/Tests/DependencyInjection/AbstractMongoDBExtensionTest.php

@@ -51,6 +51,8 @@ abstract class AbstractMongoDBExtensionTest extends TestCase
         $config = array(
             'proxy_namespace' => 'MyProxies',
             'auto_generate_proxy_classes' => true,
+            'connections' => array('default' => array()),
+            'document_managers' => array('default' => array())
         );
         $loader->load(array($config), $container);
 
@@ -80,8 +82,13 @@ abstract class AbstractMongoDBExtensionTest extends TestCase
         $loader = new DoctrineMongoDBExtension();
 
         $config = array(
-            'server' => 'mongodb://localhost:27017',
-            'options' => array('connect' => true)
+            'connections' => array(
+                'default' => array(
+                    'server' => 'mongodb://localhost:27017',
+                    'options' => array('connect' => true)
+                )
+            ),
+            'document_managers' => array('default' => array())
         );
         $loader->load(array($config), $container);
 
@@ -218,7 +225,7 @@ abstract class AbstractMongoDBExtensionTest extends TestCase
         $container = $this->getContainer();
         $loader = new DoctrineMongoDBExtension();
 
-        $loader->load(array(array('mappings' => array('YamlBundle' => array()))), $container);
+        $loader->load(array(array('document_managers' => array('default' => array('mappings' => array('YamlBundle' => array()))))), $container);
 
         $definition = $container->getDefinition('doctrine.odm.mongodb.default_configuration');
         $calls = $definition->getMethodCalls();
@@ -231,7 +238,7 @@ abstract class AbstractMongoDBExtensionTest extends TestCase
         $container = $this->getContainer();
         $loader = new DoctrineMongoDBExtension('YamlBundle');
 
-        $loader->load(array(array('mappings' => array('YamlBundle' => array()))), $container);
+        $loader->load(array(array('document_managers' => array('default' => array('mappings' => array('YamlBundle' => array()))))), $container);
 
         $calls = $container->getDefinition('doctrine.odm.mongodb.default_metadata_driver')->getMethodCalls();
         $this->assertEquals('doctrine.odm.mongodb.default_yml_metadata_driver', (string) $calls[0][1][0]);
@@ -243,7 +250,7 @@ abstract class AbstractMongoDBExtensionTest extends TestCase
         $container = $this->getContainer('XmlBundle');
         $loader = new DoctrineMongoDBExtension();
 
-        $loader->load(array(array('mappings' => array('XmlBundle' => array()))), $container);
+        $loader->load(array(array('document_managers' => array('default' => array('mappings' => array('XmlBundle' => array()))))), $container);
 
         $calls = $container->getDefinition('doctrine.odm.mongodb.default_metadata_driver')->getMethodCalls();
         $this->assertEquals('doctrine.odm.mongodb.default_xml_metadata_driver', (string) $calls[0][1][0]);
@@ -255,7 +262,7 @@ abstract class AbstractMongoDBExtensionTest extends TestCase
         $container = $this->getContainer('AnnotationsBundle');
         $loader = new DoctrineMongoDBExtension();
 
-        $loader->load(array(array('mappings' => array('AnnotationsBundle' => array()))), $container);
+        $loader->load(array(array('document_managers' => array('default' => array('mappings' => array('AnnotationsBundle' => array()))))), $container);
 
         $calls = $container->getDefinition('doctrine.odm.mongodb.default_metadata_driver')->getMethodCalls();
         $this->assertEquals('doctrine.odm.mongodb.default_annotation_metadata_driver', (string) $calls[0][1][0]);

+ 28 - 47
src/Symfony/Bundle/DoctrineMongoDBBundle/Tests/DependencyInjection/ConfigurationTest.php

@@ -30,11 +30,8 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
             'auto_generate_proxy_classes'       => false,
             'default_document_manager'          => 'default',
             'default_database'                  => 'default',
-            'mappings'                          => array(),
             'document_managers'                 => array(),
             'default_connection'                => 'default',
-            'server'                            => null,
-            'options'                           => array(),
             'connections'                       => array(),
             'proxy_namespace'                   => 'Proxies',
             'hydrator_namespace'                => 'Hydrators',
@@ -70,44 +67,40 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
             'auto_generate_hydrator_classes'    => true,
             'default_document_manager'          => 'default_dm_name',
             'default_database'                  => 'default_db_name',
-            'metadata_cache_driver' => array(
-                'type'      => 'memcache',
-                'class'     => 'fooClass',
-                'host'      => 'host_val',
-                'port'      => 1234,
-                'instance_class' => 'instance_val',
-            ),
             'default_connection'                => 'conn1',
-            'server'                            => 'http://server',
-            'options'       => array(
-                'connect'   => true,
-                'persist'   => 'persist_val',
-                'timeout'   => 500,
-                'replicaSet' => true,
-                'username'  => 'username_val',
-                'password'  => 'password_val',
-            ),
             'connections'   => array(
                 'conn1'         => array(
-                    'server'    => null,
-                    'options'   => array(),
+                    'server'    => 'http://server',
+                    'options'   => array(
+                        'connect'   => true,
+                        'persist'   => 'persist_val',
+                        'timeout'   => 500,
+                        'replicaSet' => true,
+                        'username'  => 'username_val',
+                        'password'  => 'password_val',
+                    ),
                 ),
                 'conn2'         => array(
                     'server'    => 'http://server2',
                     'options'   => array(),
                 ),
             ),
-            'mappings'      => array(
-                'FooBundle'     => array(
-                    'type' => 'annotations',
-                ),
-            ),
             'document_managers' => array(
                 'dm1' => array(
-                    'mappings' => array(),
+                    'mappings' => array(
+                        'FooBundle'     => array(
+                            'type' => 'annotations',
+                        ),
+                    ),
+                    'metadata_cache_driver' => array(
+                        'type'      => 'memcache',
+                        'class'     => 'fooClass',
+                        'host'      => 'host_val',
+                        'port'      => 1234,
+                        'instance_class' => 'instance_val',
+                    ),
                 ),
                 'dm2' => array(
-                    'default_database' => 'dm2_default_db',
                     'connection' => 'dm2_connection',
                     'database' => 'db1',
                     'mappings' => array(
@@ -188,19 +181,19 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
         // the "options" array is totally replaced
         $cases[] = array(
             array(
-                array('options' => array('timeout' => 2000)),
-                array('options' => array('username' => 'foo')),
+                array('connections' => array('default' => array('options' => array('timeout' => 2000)))),
+                array('connections' => array('default' => array('options' => array('username' => 'foo')))),
             ),
-            array('options' => array('username' => 'foo')),
+            array('connections' => array('default' => array('options' => array('username' => 'foo'), 'server' => null))),
         );
 
         // mappings are merged non-recursively.
         $cases[] = array(
             array(
-                array('mappings' => array('foomap' => array('type' => 'val1'), 'barmap' => array('dir' => 'val2'))),
-                array('mappings' => array('barmap' => array('prefix' => 'val3'))),
+                array('document_managers' => array('default' => array('mappings' => array('foomap' => array('type' => 'val1'), 'barmap' => array('dir' => 'val2'))))),
+                array('document_managers' => array('default' => array('mappings' => array('barmap' => array('prefix' => 'val3'))))),
             ),
-            array('mappings' => array('foomap' => array('type' => 'val1'), 'barmap' => array('prefix' => 'val3'))),
+            array('document_managers' => array('default' => array('mappings' => array('foomap' => array('type' => 'val1'), 'barmap' => array('prefix' => 'val3'))))),
         );
 
         // connections are merged non-recursively.
@@ -218,7 +211,7 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
         // managers are merged non-recursively.
         $cases[] = array(
             array(
-                array('document_managers' => array('foodm' => array('database' => 'val1'), 'bardm' => array('default_database' => 'val2'))),
+                array('document_managers' => array('foodm' => array('database' => 'val1'), 'bardm' => array('database' => 'val2'))),
                 array('document_managers' => array('bardm' => array('database' => 'val3'))),
             ),
             array('document_managers' => array(
@@ -268,18 +261,6 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
                     'bar' => array('connection' => 'conn2', 'mappings' => array()),
                 ),
             ),
-            // mapping versus mappings (name is the identifier)
-            array(
-                array('mapping' => array(
-                    array('type' => 'yml', 'name' => 'foo'),
-                    array('type' => 'xml', 'name' => 'bar'),
-                )),
-                'mappings',
-                array(
-                    'foo' => array('type' => 'yml'),
-                    'bar' => array('type' => 'xml'),
-                ),
-            ),
             // mapping configuration that's beneath a specific document manager
             array(
                 array('document_manager' => array(

+ 7 - 8
src/Symfony/Bundle/DoctrineMongoDBBundle/Tests/DependencyInjection/Fixtures/config/xml/mongodb_service_multiple_connections.xml

@@ -7,24 +7,23 @@
                         http://symfony.com/schema/dic/doctrine/odm/mongodb http://symfony.com/schema/dic/doctrine/odm/mongodb/mongodb-1.0.xsd">
 
     <doctrine:mongodb
-            metadata-cache-driver="apc"
             default-document-manager="dm2"
             default-connection="conn1"
             proxy-namespace="Proxies"
             auto-generate-proxy-classes="true"
         >
         <doctrine:connection id="conn1" server="mongodb://localhost:27017">
-            <options>
-                <connect>true</connect>
-            </options>
+            <doctrine:options>
+                <doctrine:connect>true</doctrine:connect>
+            </doctrine:options>
         </doctrine:connection>
         <doctrine:connection id="conn2" server="mongodb://localhost:27017">
-            <options>
-                <connect>true</connect>
-            </options>
+            <doctrine:options>
+                <doctrine:connect>true</doctrine:connect>
+            </doctrine:options>
         </doctrine:connection>
 
         <doctrine:document-manager id="dm1" metadata-cache-driver="xcache" connection="conn1" />
-        <doctrine:document-manager id="dm2" connection="conn2" />
+        <doctrine:document-manager id="dm2" connection="conn2" metadata-cache-driver="apc" />
     </doctrine:mongodb>
 </container>

+ 14 - 10
src/Symfony/Bundle/DoctrineMongoDBBundle/Tests/DependencyInjection/Fixtures/config/xml/mongodb_service_simple_single_connection.xml

@@ -6,15 +6,19 @@
     xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
                         http://symfony.com/schema/dic/doctrine/odm/mongodb http://symfony.com/schema/dic/doctrine/odm/mongodb/mongodb-1.0.xsd">
 
-    <doctrine:mongodb server="mongodb://localhost:27017" default_database="mydb">
-        <metadata-cache-driver type="memcache">
-            <class>Doctrine\Common\Cache\MemcacheCache</class>
-            <host>localhost</host>
-            <port>11211</port>
-            <instance-class>Memcache</instance-class>
-        </metadata-cache-driver>
-        <options>
-            <connect>true</connect>
-        </options>
+    <doctrine:mongodb default_database="mydb">
+        <doctrine:connection server="mongodb://localhost:27017" id="default">
+            <doctrine:options>
+                <doctrine:connect>true</doctrine:connect>
+            </doctrine:options>
+        </doctrine:connection>
+        <doctrine:document-manager id="default" connection="default">
+            <doctrine:metadata-cache-driver type="memcache">
+                <doctrine:class>Doctrine\Common\Cache\MemcacheCache</doctrine:class>
+                <doctrine:host>localhost</doctrine:host>
+                <doctrine:port>11211</doctrine:port>
+                <doctrine:instance-class>Memcache</doctrine:instance-class>
+            </doctrine:metadata-cache-driver>
+        </doctrine:document-manager>
     </doctrine:mongodb>
 </container>

+ 9 - 9
src/Symfony/Bundle/DoctrineMongoDBBundle/Tests/DependencyInjection/Fixtures/config/xml/mongodb_service_single_connection.xml

@@ -9,18 +9,18 @@
     <doctrine:mongodb>
 
         <doctrine:connection id="default" server="mongodb://localhost:27017">
-            <options>
-                <connect>true</connect>
-            </options>
+            <doctrine:options>
+                <doctrine:connect>true</doctrine:connect>
+            </doctrine:options>
         </doctrine:connection>
 
         <doctrine:document-manager id="default" connection="default">
-            <metadata-cache-driver type="memcache">
-                <class>Doctrine\Common\Cache\MemcacheCache</class>
-                <host>localhost</host>
-                <port>11211</port>
-                <instance-class>Memcache</instance-class>
-            </metadata-cache-driver>
+            <doctrine:metadata-cache-driver type="memcache">
+                <doctrine:class>Doctrine\Common\Cache\MemcacheCache</doctrine:class>
+                <doctrine:host>localhost</doctrine:host>
+                <doctrine:port>11211</doctrine:port>
+                <doctrine:instance-class>Memcache</doctrine:instance-class>
+            </doctrine:metadata-cache-driver>
         </doctrine:document-manager>
 
     </doctrine:mongodb>

+ 18 - 21
src/Symfony/Bundle/DoctrineMongoDBBundle/Tests/DependencyInjection/Fixtures/config/yml/full.yml

@@ -7,35 +7,33 @@ doctrine_mongo_db:
 
     default_document_manager:  default_dm_name
     default_database:          default_db_name
-    metadata_cache_driver:
-        type:                  memcache
-        class:                 fooClass
-        host:                  host_val
-        port:                  1234
-        instance_class:        instance_val
 
     default_connection:        conn1
-    server:         http://server
-    options:
-        connect:    true
-        persist:    persist_val
-        timeout:    500
-        replicaSet: true
-        username:   username_val
-        password:   password_val
 
     connections:
-        conn1:      ~
+        conn1:
+            server:         http://server
+            options:
+                connect:    true
+                persist:    persist_val
+                timeout:    500
+                replicaSet: true
+                username:   username_val
+                password:   password_val
         conn2:
             server: http://server2
 
-    mappings:
-        FooBundle:   annotations
-
     document_managers:
-        dm1:        ~
+        dm1:
+            mappings:
+                FooBundle:   annotations
+            metadata_cache_driver:
+                type:                  memcache
+                class:                 fooClass
+                host:                  host_val
+                port:                  1234
+                instance_class:        instance_val
         dm2:
-            default_database: dm2_default_db
             connection:       dm2_connection
             database:         db1
             mappings:
@@ -46,4 +44,3 @@ doctrine_mongo_db:
                     alias:  alias_val
                     is_bundle: false
             metadata_cache_driver: apc
-        

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

@@ -1,7 +1,6 @@
 doctrine_mongo_db:
   default_document_manager: dm2
   default_connection: conn2
-  metadata_cache_driver: apc
   connections:
     conn1:
       server: mongodb://localhost:27017
@@ -17,3 +16,4 @@ doctrine_mongo_db:
       metadata_cache_driver: xcache
     dm2:
       connection: conn2
+      metadata_cache_driver: apc

+ 12 - 8
src/Symfony/Bundle/DoctrineMongoDBBundle/Tests/DependencyInjection/Fixtures/config/yml/mongodb_service_simple_single_connection.yml

@@ -1,10 +1,14 @@
 doctrine_mongo_db:
-  server: mongodb://localhost:27017
+  connections:
+    default:
+      server: mongodb://localhost:27017
+      options: { connect: true }
   default_database: mydb
-  options: { connect: true }
-  metadata_cache_driver:
-    type: memcache
-    class: Doctrine\Common\Cache\MemcacheCache
-    host: localhost
-    port: 11211
-    instance_class: Memcache
+  document_managers:
+    default:
+      metadata_cache_driver:
+        type: memcache
+        class: Doctrine\Common\Cache\MemcacheCache
+        host: localhost
+        port: 11211
+        instance_class: Memcache