浏览代码

Made mandatory to have at least one entity manager when using the ORM and one connection when using DBAL

Christophe Coevoet 14 年之前
父节点
当前提交
527749ca3f
共有 19 个文件被更改,包括 65 次插入40 次删除
  1. 10 3
      src/Symfony/Bundle/DoctrineBundle/DependencyInjection/Configuration.php
  2. 1 2
      src/Symfony/Bundle/DoctrineBundle/DependencyInjection/DoctrineExtension.php
  3. 13 13
      src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/AbstractDoctrineExtensionTest.php
  4. 1 1
      src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_service_multiple_connections.xml
  5. 1 1
      src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_service_single_connection.xml
  6. 2 1
      src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_types.xml
  7. 3 1
      src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_imports_import.xml
  8. 1 1
      src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_multiple_em_bundle_mappings.xml
  9. 7 3
      src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_multiple_entity_managers.xml
  10. 1 0
      src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_simple_single_entity_manager.xml
  11. 3 4
      src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_single_entity_manager.xml
  12. 1 0
      src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/dbal_service_multiple_connections.yml
  13. 1 0
      src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/dbal_service_single_connection.yml
  14. 4 1
      src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/dbal_types.yml
  15. 2 0
      src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_imports_import.yml
  16. 1 2
      src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_multiple_em_bundle_mappings.yml
  17. 8 4
      src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_service_multiple_entity_managers.yml
  18. 2 1
      src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_service_simple_single_entity_manager.yml
  19. 3 2
      src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_service_single_entity_manager.yml

+ 10 - 3
src/Symfony/Bundle/DoctrineBundle/DependencyInjection/Configuration.php

@@ -44,6 +44,10 @@ class Configuration
     {
         $node
             ->arrayNode('dbal')
+                ->beforeNormalization()
+                    ->ifNull()
+                    ->then(function($v) { return array (); }) // Let use the default values with the subsequent closure.
+                ->end()
                 ->beforeNormalization()
                     ->ifTrue(function($v){ return is_array($v) && !array_key_exists('connections', $v) && !array_key_exists('connection', $v); })
                     ->then(function($v) {
@@ -61,7 +65,7 @@ class Configuration
                         return $v;
                     })
                 ->end()
-                ->scalarNode('default_connection')->cannotBeEmpty()->defaultValue('default')->end()
+                ->scalarNode('default_connection')->isRequired()->cannotBeEmpty()->end()
                 ->fixXmlConfig('type')
                 ->arrayNode('types')
                     ->useAttributeAsKey('name')
@@ -82,6 +86,7 @@ class Configuration
     {
         $node = new NodeBuilder('connections', 'array');
         $node
+            ->requiresAtLeastOneElement()
             ->useAttributeAsKey('name')
             ->prototype('array')
                 ->scalarNode('dbname')->end()
@@ -132,8 +137,7 @@ class Configuration
                         return $v;
                     })
                 ->end()
-                ->scalarNode('default_entity_manager')->cannotBeEmpty()->defaultValue('default')->end()
-                ->scalarNode('default_connection')->cannotBeEmpty()->defaultValue('default')->end()
+                ->scalarNode('default_entity_manager')->isRequired()->cannotBeEmpty()->end()
                 ->booleanNode('auto_generate_proxy_classes')->defaultFalse()->end()
                 ->scalarNode('proxy_dir')->defaultValue('%kernel.cache_dir%/doctrine/orm/Proxies')->end()
                 ->scalarNode('proxy_namespace')->defaultValue('Proxies')->end()
@@ -147,6 +151,7 @@ class Configuration
     {
         $node = new NodeBuilder('entity_managers', 'array');
         $node
+            ->requiresAtLeastOneElement()
             ->useAttributeAsKey('name')
             ->prototype('array')
                 ->addDefaultsIfNotSet()
@@ -157,6 +162,8 @@ class Configuration
                 ->scalarNode('class_metadata_factory_name')->defaultValue('%doctrine.orm.class_metadata_factory_name%')->end()
                 ->fixXmlConfig('mapping')
                 ->arrayNode('mappings')
+                    ->isRequired()
+                    ->requiresAtLeastOneElement()
                     ->useAttributeAsKey('name')
                     ->prototype('array')
                         ->beforeNormalization()

+ 1 - 2
src/Symfony/Bundle/DoctrineBundle/DependencyInjection/DoctrineExtension.php

@@ -140,8 +140,7 @@ class DoctrineExtension extends AbstractDoctrineExtension
     {
         $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
         $loader->load('orm.xml');
-
-        $options = array('default_entity_manager', 'default_connection', 'auto_generate_proxy_classes', 'proxy_dir', 'proxy_namespace');
+        $options = array('default_entity_manager', 'auto_generate_proxy_classes', 'proxy_dir', 'proxy_namespace');
         foreach ($options as $key) {
             $container->setParameter('doctrine.orm.'.$key, $config[$key]);
         }

+ 13 - 13
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/AbstractDoctrineExtensionTest.php

@@ -186,7 +186,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
         $container = $this->getContainer();
         $loader = new DoctrineExtension();
 
-        $loader->load(array(array('dbal' => array(), 'orm' => array())), $container);
+        $loader->load(array(array('dbal' => array(), 'orm' => array('mappings' => array('YamlBundle' => array())))), $container);
 
         $definition = $container->getDefinition('doctrine.dbal.default_connection');
         $this->assertEquals('Doctrine\DBAL\Connection', $definition->getClass());
@@ -208,8 +208,6 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
         $loader = new DoctrineExtension();
         $container->registerExtension($loader);
 
-        $loader->load(array(array('dbal' => array(), 'orm' => array())), $container);
-
         $this->loadFromFile($container, 'orm_service_simple_single_entity_manager');
 
         $container->getCompilerPassConfig()->setOptimizationPasses(array());
@@ -269,6 +267,8 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
                 'password' => 'sqlite_s3cr3t',
                 'dbname' => 'sqlite_db',
                 'memory' => true,
+                'logging' => false,
+                'charset' => 'UTF-8'
             ),
             new Reference('doctrine.dbal.default_connection.configuration'),
             new Reference('doctrine.dbal.default_connection.event_manager')
@@ -307,9 +307,9 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
         $this->assertEquals('doctrine.dbal.conn1_connection.configuration', (string) $args[1]);
         $this->assertEquals('doctrine.dbal.conn1_connection.event_manager', (string) $args[2]);
 
-        $this->assertEquals('doctrine.orm.dm2_entity_manager', (string) $container->getAlias('doctrine.orm.entity_manager'));
+        $this->assertEquals('doctrine.orm.em2_entity_manager', (string) $container->getAlias('doctrine.orm.entity_manager'));
 
-        $definition = $container->getDefinition('doctrine.orm.dm1_entity_manager');
+        $definition = $container->getDefinition('doctrine.orm.em1_entity_manager');
         $this->assertEquals('%doctrine.orm.entity_manager_class%', $definition->getClass());
         $this->assertEquals('%doctrine.orm.entity_manager_class%', $definition->getFactoryClass());
         $this->assertEquals('create', $definition->getFactoryMethod());
@@ -319,7 +319,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
         $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[0]);
         $this->assertEquals('doctrine.dbal.conn1_connection', (string) $arguments[0]);
         $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[1]);
-        $this->assertEquals('doctrine.orm.dm1_configuration', (string) $arguments[1]);
+        $this->assertEquals('doctrine.orm.em1_configuration', (string) $arguments[1]);
 
         $definition = $container->getDefinition('doctrine.dbal.conn2_connection');
         $this->assertEquals('Doctrine\DBAL\Connection', $definition->getClass());
@@ -331,7 +331,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
         $this->assertEquals('doctrine.dbal.conn2_connection.configuration', (string) $args[1]);
         $this->assertEquals('doctrine.dbal.conn2_connection.event_manager', (string) $args[2]);
 
-        $definition = $container->getDefinition('doctrine.orm.dm2_entity_manager');
+        $definition = $container->getDefinition('doctrine.orm.em2_entity_manager');
         $this->assertEquals('%doctrine.orm.entity_manager_class%', $definition->getClass());
         $this->assertEquals('%doctrine.orm.entity_manager_class%', $definition->getFactoryClass());
         $this->assertEquals('create', $definition->getFactoryMethod());
@@ -341,15 +341,15 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
         $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[0]);
         $this->assertEquals('doctrine.dbal.conn2_connection', (string) $arguments[0]);
         $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[1]);
-        $this->assertEquals('doctrine.orm.dm2_configuration', (string) $arguments[1]);
+        $this->assertEquals('doctrine.orm.em2_configuration', (string) $arguments[1]);
 
-        $definition = $container->getDefinition('doctrine.orm.dm1_metadata_cache');
+        $definition = $container->getDefinition('doctrine.orm.em1_metadata_cache');
         $this->assertEquals('%doctrine.orm.cache.xcache_class%', $definition->getClass());
 
-        $definition = $container->getDefinition('doctrine.orm.dm1_query_cache');
+        $definition = $container->getDefinition('doctrine.orm.em1_query_cache');
         $this->assertEquals('%doctrine.orm.cache.array_class%', $definition->getClass());
 
-        $definition = $container->getDefinition('doctrine.orm.dm1_result_cache');
+        $definition = $container->getDefinition('doctrine.orm.em1_result_cache');
         $this->assertEquals('%doctrine.orm.cache.array_class%', $definition->getClass());
     }
 
@@ -469,10 +469,10 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
         $container->getCompilerPassConfig()->setRemovingPasses(array());
         $container->compile();
 
-        $definition = $container->getDefinition('doctrine.orm.dm1_metadata_cache');
+        $definition = $container->getDefinition('doctrine.orm.em1_metadata_cache');
         $this->assertDICDefinitionClass($definition, '%doctrine.orm.cache.xcache_class%');
 
-        $definition = $container->getDefinition('doctrine.orm.dm2_metadata_cache');
+        $definition = $container->getDefinition('doctrine.orm.em2_metadata_cache');
         $this->assertDICDefinitionClass($definition, '%doctrine.orm.cache.apc_class%');
     }
 

+ 1 - 1
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_service_multiple_connections.xml

@@ -7,7 +7,7 @@
                         http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd">
 
     <config>
-        <dbal>
+        <dbal default-connection="mysql">
             <connection
                 name="mysql"
                 dbname="mysql_db"

+ 1 - 1
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_service_single_connection.xml

@@ -7,7 +7,7 @@
                         http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd">
 
     <config>
-        <dbal>
+        <dbal default-connection="mysql">
             <connection
                 name="mysql"
                 dbname="mysql_db"

+ 2 - 1
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_types.xml

@@ -7,8 +7,9 @@
                         http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd">
 
     <config>
-        <dbal>
+        <dbal default-connection="default">
             <type name="test" class="Symfony\Bundle\DoctrineBundle\Tests\DependencyInjection\TestType" />
+            <connection name="default" />
         </dbal>
     </config>
 </srv:container>

+ 3 - 1
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_imports_import.xml

@@ -10,6 +10,8 @@
         <orm
             auto-generate-proxy-classes="false"
             metadata-cache-driver="apc"
-        />
+        >
+            <mapping name="YamlBundle" />
+        </orm>
     </config>
 </srv:container>

+ 1 - 1
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_multiple_em_bundle_mappings.xml

@@ -7,7 +7,7 @@
                         http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd">
 
     <config>
-        <orm default-entity-manager="dm2" default-connection="conn1">
+        <orm default-entity-manager="em2">
             <entity-manager name="em1">
                 <mapping name="AnnotationsBundle" />
             </entity-manager>

+ 7 - 3
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_multiple_entity_managers.xml

@@ -28,9 +28,13 @@
                 memory="true" />
         </dbal>
 
-        <orm default-entity-manager="dm2" default-connection="conn1" auto-generate-proxy-classes="true">
-            <entity-manager name="dm1" metadata-cache-driver="xcache" connection="conn1" />
-            <entity-manager name="dm2" connection="conn2" metadata-cache-driver="apc" />
+        <orm default-entity-manager="em2" auto-generate-proxy-classes="true">
+            <entity-manager name="em1" metadata-cache-driver="xcache" connection="conn1">
+                <mapping name="YamlBundle" />
+            </entity-manager>
+            <entity-manager name="em2" connection="conn2" metadata-cache-driver="apc">
+                <mapping name="YamlBundle" />
+            </entity-manager>
         </orm>
     </config>
 </srv:container>

+ 1 - 0
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_simple_single_entity_manager.xml

@@ -15,6 +15,7 @@
                 <port>11211</port>
                 <instance-class>Memcache</instance-class>
             </metadata-cache-driver>
+            <mapping name="YamlBundle" />
         </orm>
     </config>
 </srv:container>

+ 3 - 4
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_single_entity_manager.xml

@@ -11,7 +11,7 @@
     </srv:parameters>
 
     <config>
-        <dbal>
+        <dbal default-connection="default">
             <connection
                 name="default"
                 driver="pdo_sqlite"
@@ -22,9 +22,7 @@
         </dbal>
 
         <orm
-                metadata-cache-driver="apc"
-                default-entity-manager="dm2"
-                default-connection="conn1"
+                default-entity-manager="default"
                 auto-generate-proxy-classes="true"
             >
             <entity-manager name="default" connection="default">
@@ -34,6 +32,7 @@
                     <port>11211</port>
                     <instance-class>Memcache</instance-class>
                 </metadata-cache-driver>
+                <mapping name="YamlBundle" />
             </entity-manager>
         </orm>
     </config>

+ 1 - 0
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/dbal_service_multiple_connections.yml

@@ -1,5 +1,6 @@
 doctrine:
     dbal:
+        default_connection: mysql
         connections:
             mysql:
                 dbname: mysql_db

+ 1 - 0
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/dbal_service_single_connection.yml

@@ -1,5 +1,6 @@
 doctrine:
     dbal:
+        default_connection: mysql
         connections:
             mysql:
                 dbname: mysql_db

+ 4 - 1
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/dbal_types.yml

@@ -1,4 +1,7 @@
 doctrine:
     dbal:
+        default_connection: default
         types:
-            test: Symfony\Bundle\DoctrineBundle\Tests\DependencyInjection\TestType
+            test: Symfony\Bundle\DoctrineBundle\Tests\DependencyInjection\TestType
+        connections:
+            default: ~

+ 2 - 0
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_imports_import.yml

@@ -2,3 +2,5 @@ doctrine:
     orm:
         auto_generate_proxy_classes: false
         metadata_cache_driver: apc
+        mappings:
+            YamlBundle: ~

+ 1 - 2
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_multiple_em_bundle_mappings.yml

@@ -1,8 +1,7 @@
 doctrine:
     orm:
+        default_entity_manager: em2
         entity_managers:
-            default_entity_manager: dm2
-            default_connection: conn1
             em1:
                 mappings:
                     AnnotationsBundle: ~

+ 8 - 4
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_service_multiple_entity_managers.yml

@@ -3,6 +3,7 @@ parameters:
 
 doctrine:
     dbal:
+        default_connection: conn1
         connections:
             conn1:
                 driver: pdo_sqlite
@@ -18,13 +19,16 @@ doctrine:
                 memory: true
 
     orm:
-        default_entity_manager: dm2
-        default_connection: conn1
+        default_entity_manager: em2
         auto_generate_proxy_classes: true
         entity_managers:
-            dm1:
+            em1:
                 metadata_cache_driver: xcache
                 connection: conn1
-            dm2:
+                mappings:
+                    YamlBundle: ~
+            em2:
                 metadata_cache_driver: apc
                 connection: conn2
+                mappings:
+                    YamlBundle: ~

+ 2 - 1
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_service_simple_single_entity_manager.yml

@@ -1,7 +1,8 @@
 doctrine:
     dbal: ~
-
     orm:
+        mappings:
+            YamlBundle: ~
         metadata_cache_driver:
             type: memcache
             class: Doctrine\Common\Cache\MemcacheCache

+ 3 - 2
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_service_single_entity_manager.yml

@@ -1,5 +1,6 @@
 doctrine:
     dbal:
+        default_connection: default
         connections:
             default:
                 driver: pdo_sqlite
@@ -9,14 +10,14 @@ doctrine:
                 memory: true
 
     orm:
-        metadata_cache_driver: apc
         default_entity_manager: dm2
-        default_connection: conn1
         proxy_namespace: Proxies
         auto_generate_proxy_classes: true
         entity_managers:
             default:
                 connection: default
+                mappings:
+                    YamlBundle: ~
                 metadata_cache_driver:
                     type: memcache
                     class: Doctrine\Common\Cache\MemcacheCache