소스 검색

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