Skip to content

Commit 527749c

Browse files
committed
Made mandatory to have at least one entity manager when using the ORM and one connection when using DBAL
1 parent a9a300e commit 527749c

19 files changed

+65
-40
lines changed

src/Symfony/Bundle/DoctrineBundle/DependencyInjection/Configuration.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ private function addDbalSection(NodeBuilder $node)
4444
{
4545
$node
4646
->arrayNode('dbal')
47+
->beforeNormalization()
48+
->ifNull()
49+
->then(function($v) { return array (); }) // Let use the default values with the subsequent closure.
50+
->end()
4751
->beforeNormalization()
4852
->ifTrue(function($v){ return is_array($v) && !array_key_exists('connections', $v) && !array_key_exists('connection', $v); })
4953
->then(function($v) {
@@ -61,7 +65,7 @@ private function addDbalSection(NodeBuilder $node)
6165
return $v;
6266
})
6367
->end()
64-
->scalarNode('default_connection')->cannotBeEmpty()->defaultValue('default')->end()
68+
->scalarNode('default_connection')->isRequired()->cannotBeEmpty()->end()
6569
->fixXmlConfig('type')
6670
->arrayNode('types')
6771
->useAttributeAsKey('name')
@@ -82,6 +86,7 @@ private function getDbalConnectionsNode()
8286
{
8387
$node = new NodeBuilder('connections', 'array');
8488
$node
89+
->requiresAtLeastOneElement()
8590
->useAttributeAsKey('name')
8691
->prototype('array')
8792
->scalarNode('dbname')->end()
@@ -132,8 +137,7 @@ private function addOrmSection(NodeBuilder $node)
132137
return $v;
133138
})
134139
->end()
135-
->scalarNode('default_entity_manager')->cannotBeEmpty()->defaultValue('default')->end()
136-
->scalarNode('default_connection')->cannotBeEmpty()->defaultValue('default')->end()
140+
->scalarNode('default_entity_manager')->isRequired()->cannotBeEmpty()->end()
137141
->booleanNode('auto_generate_proxy_classes')->defaultFalse()->end()
138142
->scalarNode('proxy_dir')->defaultValue('%kernel.cache_dir%/doctrine/orm/Proxies')->end()
139143
->scalarNode('proxy_namespace')->defaultValue('Proxies')->end()
@@ -147,6 +151,7 @@ private function getOrmEntityManagersNode()
147151
{
148152
$node = new NodeBuilder('entity_managers', 'array');
149153
$node
154+
->requiresAtLeastOneElement()
150155
->useAttributeAsKey('name')
151156
->prototype('array')
152157
->addDefaultsIfNotSet()
@@ -157,6 +162,8 @@ private function getOrmEntityManagersNode()
157162
->scalarNode('class_metadata_factory_name')->defaultValue('%doctrine.orm.class_metadata_factory_name%')->end()
158163
->fixXmlConfig('mapping')
159164
->arrayNode('mappings')
165+
->isRequired()
166+
->requiresAtLeastOneElement()
160167
->useAttributeAsKey('name')
161168
->prototype('array')
162169
->beforeNormalization()

src/Symfony/Bundle/DoctrineBundle/DependencyInjection/DoctrineExtension.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,7 @@ protected function ormLoad(array $config, ContainerBuilder $container)
140140
{
141141
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
142142
$loader->load('orm.xml');
143-
144-
$options = array('default_entity_manager', 'default_connection', 'auto_generate_proxy_classes', 'proxy_dir', 'proxy_namespace');
143+
$options = array('default_entity_manager', 'auto_generate_proxy_classes', 'proxy_dir', 'proxy_namespace');
145144
foreach ($options as $key) {
146145
$container->setParameter('doctrine.orm.'.$key, $config[$key]);
147146
}

src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/AbstractDoctrineExtensionTest.php

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ public function testSingleEntityManagerConfiguration()
186186
$container = $this->getContainer();
187187
$loader = new DoctrineExtension();
188188

189-
$loader->load(array(array('dbal' => array(), 'orm' => array())), $container);
189+
$loader->load(array(array('dbal' => array(), 'orm' => array('mappings' => array('YamlBundle' => array())))), $container);
190190

191191
$definition = $container->getDefinition('doctrine.dbal.default_connection');
192192
$this->assertEquals('Doctrine\DBAL\Connection', $definition->getClass());
@@ -208,8 +208,6 @@ public function testLoadSimpleSingleConnection()
208208
$loader = new DoctrineExtension();
209209
$container->registerExtension($loader);
210210

211-
$loader->load(array(array('dbal' => array(), 'orm' => array())), $container);
212-
213211
$this->loadFromFile($container, 'orm_service_simple_single_entity_manager');
214212

215213
$container->getCompilerPassConfig()->setOptimizationPasses(array());
@@ -269,6 +267,8 @@ public function testLoadSingleConnection()
269267
'password' => 'sqlite_s3cr3t',
270268
'dbname' => 'sqlite_db',
271269
'memory' => true,
270+
'logging' => false,
271+
'charset' => 'UTF-8'
272272
),
273273
new Reference('doctrine.dbal.default_connection.configuration'),
274274
new Reference('doctrine.dbal.default_connection.event_manager')
@@ -307,9 +307,9 @@ public function testLoadMultipleConnections()
307307
$this->assertEquals('doctrine.dbal.conn1_connection.configuration', (string) $args[1]);
308308
$this->assertEquals('doctrine.dbal.conn1_connection.event_manager', (string) $args[2]);
309309

310-
$this->assertEquals('doctrine.orm.dm2_entity_manager', (string) $container->getAlias('doctrine.orm.entity_manager'));
310+
$this->assertEquals('doctrine.orm.em2_entity_manager', (string) $container->getAlias('doctrine.orm.entity_manager'));
311311

312-
$definition = $container->getDefinition('doctrine.orm.dm1_entity_manager');
312+
$definition = $container->getDefinition('doctrine.orm.em1_entity_manager');
313313
$this->assertEquals('%doctrine.orm.entity_manager_class%', $definition->getClass());
314314
$this->assertEquals('%doctrine.orm.entity_manager_class%', $definition->getFactoryClass());
315315
$this->assertEquals('create', $definition->getFactoryMethod());
@@ -319,7 +319,7 @@ public function testLoadMultipleConnections()
319319
$this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[0]);
320320
$this->assertEquals('doctrine.dbal.conn1_connection', (string) $arguments[0]);
321321
$this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[1]);
322-
$this->assertEquals('doctrine.orm.dm1_configuration', (string) $arguments[1]);
322+
$this->assertEquals('doctrine.orm.em1_configuration', (string) $arguments[1]);
323323

324324
$definition = $container->getDefinition('doctrine.dbal.conn2_connection');
325325
$this->assertEquals('Doctrine\DBAL\Connection', $definition->getClass());
@@ -331,7 +331,7 @@ public function testLoadMultipleConnections()
331331
$this->assertEquals('doctrine.dbal.conn2_connection.configuration', (string) $args[1]);
332332
$this->assertEquals('doctrine.dbal.conn2_connection.event_manager', (string) $args[2]);
333333

334-
$definition = $container->getDefinition('doctrine.orm.dm2_entity_manager');
334+
$definition = $container->getDefinition('doctrine.orm.em2_entity_manager');
335335
$this->assertEquals('%doctrine.orm.entity_manager_class%', $definition->getClass());
336336
$this->assertEquals('%doctrine.orm.entity_manager_class%', $definition->getFactoryClass());
337337
$this->assertEquals('create', $definition->getFactoryMethod());
@@ -341,15 +341,15 @@ public function testLoadMultipleConnections()
341341
$this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[0]);
342342
$this->assertEquals('doctrine.dbal.conn2_connection', (string) $arguments[0]);
343343
$this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[1]);
344-
$this->assertEquals('doctrine.orm.dm2_configuration', (string) $arguments[1]);
344+
$this->assertEquals('doctrine.orm.em2_configuration', (string) $arguments[1]);
345345

346-
$definition = $container->getDefinition('doctrine.orm.dm1_metadata_cache');
346+
$definition = $container->getDefinition('doctrine.orm.em1_metadata_cache');
347347
$this->assertEquals('%doctrine.orm.cache.xcache_class%', $definition->getClass());
348348

349-
$definition = $container->getDefinition('doctrine.orm.dm1_query_cache');
349+
$definition = $container->getDefinition('doctrine.orm.em1_query_cache');
350350
$this->assertEquals('%doctrine.orm.cache.array_class%', $definition->getClass());
351351

352-
$definition = $container->getDefinition('doctrine.orm.dm1_result_cache');
352+
$definition = $container->getDefinition('doctrine.orm.em1_result_cache');
353353
$this->assertEquals('%doctrine.orm.cache.array_class%', $definition->getClass());
354354
}
355355

@@ -469,10 +469,10 @@ public function testEntityManagerMetadataCacheDriverConfiguration()
469469
$container->getCompilerPassConfig()->setRemovingPasses(array());
470470
$container->compile();
471471

472-
$definition = $container->getDefinition('doctrine.orm.dm1_metadata_cache');
472+
$definition = $container->getDefinition('doctrine.orm.em1_metadata_cache');
473473
$this->assertDICDefinitionClass($definition, '%doctrine.orm.cache.xcache_class%');
474474

475-
$definition = $container->getDefinition('doctrine.orm.dm2_metadata_cache');
475+
$definition = $container->getDefinition('doctrine.orm.em2_metadata_cache');
476476
$this->assertDICDefinitionClass($definition, '%doctrine.orm.cache.apc_class%');
477477
}
478478

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd">
88

99
<config>
10-
<dbal>
10+
<dbal default-connection="mysql">
1111
<connection
1212
name="mysql"
1313
dbname="mysql_db"

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd">
88

99
<config>
10-
<dbal>
10+
<dbal default-connection="mysql">
1111
<connection
1212
name="mysql"
1313
dbname="mysql_db"

src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_types.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@
77
http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd">
88

99
<config>
10-
<dbal>
10+
<dbal default-connection="default">
1111
<type name="test" class="Symfony\Bundle\DoctrineBundle\Tests\DependencyInjection\TestType" />
12+
<connection name="default" />
1213
</dbal>
1314
</config>
1415
</srv:container>

src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_imports_import.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
<orm
1111
auto-generate-proxy-classes="false"
1212
metadata-cache-driver="apc"
13-
/>
13+
>
14+
<mapping name="YamlBundle" />
15+
</orm>
1416
</config>
1517
</srv:container>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd">
88

99
<config>
10-
<orm default-entity-manager="dm2" default-connection="conn1">
10+
<orm default-entity-manager="em2">
1111
<entity-manager name="em1">
1212
<mapping name="AnnotationsBundle" />
1313
</entity-manager>

src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_multiple_entity_managers.xml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,13 @@
2828
memory="true" />
2929
</dbal>
3030

31-
<orm default-entity-manager="dm2" default-connection="conn1" auto-generate-proxy-classes="true">
32-
<entity-manager name="dm1" metadata-cache-driver="xcache" connection="conn1" />
33-
<entity-manager name="dm2" connection="conn2" metadata-cache-driver="apc" />
31+
<orm default-entity-manager="em2" auto-generate-proxy-classes="true">
32+
<entity-manager name="em1" metadata-cache-driver="xcache" connection="conn1">
33+
<mapping name="YamlBundle" />
34+
</entity-manager>
35+
<entity-manager name="em2" connection="conn2" metadata-cache-driver="apc">
36+
<mapping name="YamlBundle" />
37+
</entity-manager>
3438
</orm>
3539
</config>
3640
</srv:container>

src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_simple_single_entity_manager.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
<port>11211</port>
1616
<instance-class>Memcache</instance-class>
1717
</metadata-cache-driver>
18+
<mapping name="YamlBundle" />
1819
</orm>
1920
</config>
2021
</srv:container>

0 commit comments

Comments
 (0)