Skip to content

Commit

Permalink
refactors extensions to call XXXLoad only once with all config sections
Browse files Browse the repository at this point in the history
  • Loading branch information
schmittjoh authored and fabpot committed Jan 21, 2011
1 parent bd6bc4d commit 8d19136
Show file tree
Hide file tree
Showing 16 changed files with 146 additions and 77 deletions.
Expand Up @@ -29,6 +29,20 @@
*/
class DoctrineExtension extends AbstractDoctrineExtension
{
public function dbalLoad(array $configs, ContainerBuilder $container)
{
foreach ($configs as $config) {
$this->doDbalLoad($config, $container);
}
}

public function ormLoad(array $configs, ContainerBuilder $container)
{
foreach ($configs as $config) {
$this->doOrmLoad($config, $container);
}
}

/**
* Loads the DBAL configuration.
*
Expand All @@ -39,7 +53,7 @@ class DoctrineExtension extends AbstractDoctrineExtension
* @param array $config An array of configuration settings
* @param ContainerBuilder $container A ContainerBuilder instance
*/
public function dbalLoad($config, ContainerBuilder $container)
protected function doDbalLoad($config, ContainerBuilder $container)
{
$this->loadDbalDefaults($config, $container);
$this->loadDbalConnections($config, $container);
Expand All @@ -55,7 +69,7 @@ public function dbalLoad($config, ContainerBuilder $container)
* @param array $config An array of configuration settings
* @param ContainerBuilder $container A ContainerBuilder instance
*/
public function ormLoad($config, ContainerBuilder $container)
protected function doOrmLoad($config, ContainerBuilder $container)
{
$this->loadOrmDefaults($config, $container);
$this->loadOrmEntityManagers($config, $container);
Expand Down
4 changes: 2 additions & 2 deletions src/Symfony/Bundle/DoctrineBundle/Tests/ContainerTest.php
Expand Up @@ -26,15 +26,15 @@ public function getContainer()
)));
$loader = new DoctrineExtension();
$container->registerExtension($loader);
$loader->dbalLoad(array(
$loader->dbalLoad(array(array(
'connections' => array(
'default' => array(
'driver' => 'pdo_mysql',
'charset' => 'UTF-8',
'platform-service' => 'my.platform',
)
)
), $container);
)), $container);
$loader->ormLoad(array('bundles' => array('YamlBundle' => array())), $container);

$container->setDefinition('my.platform', new \Symfony\Component\DependencyInjection\Definition('Doctrine\DBAL\Platforms\MySqlPlatform'));
Expand Down
Expand Up @@ -28,27 +28,27 @@ public function testDbalLoad()
$container = $this->getContainer();
$loader = new DoctrineExtension();

$loader->dbalLoad(array(), $container);
$loader->dbalLoad(array(array()), $container);
$this->assertEquals('Symfony\\Bundle\\DoctrineBundle\\DataCollector\\DoctrineDataCollector', $container->getParameter('doctrine.data_collector.class'), '->dbalLoad() loads the dbal.xml file if not already loaded');

// doctrine.dbal.default_connection
$this->assertEquals('default', $container->getParameter('doctrine.dbal.default_connection'), '->dbalLoad() overrides existing configuration options');
$loader->dbalLoad(array('default_connection' => 'foo'), $container);
$loader->dbalLoad(array(array('default_connection' => 'foo')), $container);
$this->assertEquals('foo', $container->getParameter('doctrine.dbal.default_connection'), '->dbalLoad() overrides existing configuration options');
$loader->dbalLoad(array(), $container);
$loader->dbalLoad(array(array()), $container);
$this->assertEquals('foo', $container->getParameter('doctrine.dbal.default_connection'), '->dbalLoad() overrides existing configuration options');

$container = $this->getContainer();
$loader = new DoctrineExtension();
$loader->dbalLoad(array('password' => 'foo'), $container);
$loader->dbalLoad(array(array('password' => 'foo')), $container);

$arguments = $container->getDefinition('doctrine.dbal.default_connection')->getArguments();
$config = $arguments[0];

$this->assertEquals('foo', $config['password']);
$this->assertEquals('root', $config['user']);

$loader->dbalLoad(array('user' => 'foo'), $container);
$loader->dbalLoad(array(array('user' => 'foo')), $container);
$this->assertEquals('foo', $config['password']);
$this->assertEquals('root', $config['user']);
}
Expand All @@ -61,7 +61,7 @@ public function testDbalLoadFromXmlMultipleConnections()

$loadXml = new XmlFileLoader($container, __DIR__.'/Fixtures/config/xml');
$loadXml->load('dbal_service_multiple_connections.xml');
$loader->dbalLoad(array(), $container);
$loader->dbalLoad(array(array()), $container);

$container->getCompilerPassConfig()->setOptimizationPasses(array());
$container->getCompilerPassConfig()->setRemovingPasses(array());
Expand Down Expand Up @@ -95,7 +95,7 @@ public function testDbalLoadFromXmlSingleConnections()

$loadXml = new XmlFileLoader($container, __DIR__.'/Fixtures/config/xml');
$loadXml->load('dbal_service_single_connection.xml');
$loader->dbalLoad(array(), $container);
$loader->dbalLoad(array(array()), $container);

$container->getCompilerPassConfig()->setOptimizationPasses(array());
$container->getCompilerPassConfig()->setRemovingPasses(array());
Expand All @@ -116,8 +116,8 @@ public function testDependencyInjectionConfigurationDefaults()
$container = $this->getContainer();
$loader = new DoctrineExtension();

$loader->dbalLoad(array(), $container);
$loader->ormLoad(array('mappings' => array('YamlBundle' => array())), $container);
$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array('mappings' => array('YamlBundle' => array()))), $container);

$this->assertEquals('Doctrine\DBAL\Connection', $container->getParameter('doctrine.dbal.connection_class'));
$this->assertEquals('Doctrine\ORM\Configuration', $container->getParameter('doctrine.orm.configuration_class'));
Expand All @@ -144,8 +144,8 @@ public function testDependencyInjectionConfigurationDefaults()
'mappings' => array('YamlBundle' => array()),
);

$loader->dbalLoad(array(), $container);
$loader->ormLoad($config, $container);
$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array($config), $container);

$this->assertEquals('MyProxies', $container->getParameter('doctrine.orm.proxy_namespace'));
$this->assertEquals(true, $container->getParameter('doctrine.orm.auto_generate_proxy_classes'));
Expand Down Expand Up @@ -193,8 +193,8 @@ public function testSingleEntityManagerConfiguration()
$container = $this->getContainer();
$loader = new DoctrineExtension();

$loader->dbalLoad(array(), $container);
$loader->ormLoad(array(), $container);
$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array()), $container);

$definition = $container->getDefinition('doctrine.dbal.default_connection');
$this->assertEquals('Doctrine\DBAL\DriverManager', $definition->getClass());
Expand All @@ -215,8 +215,8 @@ public function testLoadSimpleSingleConnection()
$loader = new DoctrineExtension();
$container->registerExtension($loader);

$loader->dbalLoad(array(), $container);
$loader->ormLoad(array(), $container);
$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array()), $container);

$this->loadFromFile($container, 'orm_service_simple_single_entity_manager');

Expand Down Expand Up @@ -358,8 +358,8 @@ public function testBundleEntityAliases()
$container = $this->getContainer();
$loader = new DoctrineExtension();

$loader->dbalLoad(array(), $container);
$loader->ormLoad(array('mappings' => array('YamlBundle' => array())), $container);
$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array('mappings' => array('YamlBundle' => array()))), $container);

$definition = $container->getDefinition('doctrine.orm.default_configuration');
$this->assertDICDefinitionMethodCallOnce($definition, 'setEntityNamespaces',
Expand All @@ -372,8 +372,8 @@ public function testOverwriteEntityAliases()
$container = $this->getContainer();
$loader = new DoctrineExtension();

$loader->dbalLoad(array(), $container);
$loader->ormLoad(array('mappings' => array('YamlBundle' => array('alias' => 'yml'))), $container);
$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array('mappings' => array('YamlBundle' => array('alias' => 'yml')))), $container);

$definition = $container->getDefinition('doctrine.orm.default_configuration');
$this->assertDICDefinitionMethodCallOnce($definition, 'setEntityNamespaces',
Expand All @@ -386,8 +386,8 @@ public function testYamlBundleMappingDetection()
$container = $this->getContainer('YamlBundle');
$loader = new DoctrineExtension();

$loader->dbalLoad(array(), $container);
$loader->ormLoad(array('mappings' => array('YamlBundle' => array())), $container);
$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array('mappings' => array('YamlBundle' => array()))), $container);

$definition = $container->getDefinition('doctrine.orm.default_metadata_driver');
$this->assertDICDefinitionMethodCallOnce($definition, 'addDriver', array(
Expand All @@ -401,8 +401,8 @@ public function testXmlBundleMappingDetection()
$container = $this->getContainer('XmlBundle');
$loader = new DoctrineExtension();

$loader->dbalLoad(array(), $container);
$loader->ormLoad(array('mappings' => array('XmlBundle' => array())), $container);
$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array('mappings' => array('XmlBundle' => array()))), $container);

$definition = $container->getDefinition('doctrine.orm.default_metadata_driver');
$this->assertDICDefinitionMethodCallOnce($definition, 'addDriver', array(
Expand All @@ -416,8 +416,8 @@ public function testAnnotationsBundleMappingDetection()
$container = $this->getContainer('AnnotationsBundle');
$loader = new DoctrineExtension();

$loader->dbalLoad(array(), $container);
$loader->ormLoad(array('mappings' => array('AnnotationsBundle' => array())), $container);
$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array('mappings' => array('AnnotationsBundle' => array()))), $container);

$definition = $container->getDefinition('doctrine.orm.default_metadata_driver');
$this->assertDICDefinitionMethodCallOnce($definition, 'addDriver', array(
Expand All @@ -431,15 +431,15 @@ public function testMultipleOrmLoadCalls()
$container = $this->getContainer(array('XmlBundle', 'AnnotationsBundle'));
$loader = new DoctrineExtension();

$loader->dbalLoad(array(), $container);
$loader->ormLoad(array(
'auto_generate_proxy_dir' => true,
'mappings' => array('AnnotationsBundle' => array())
), $container);
$loader->ormLoad(array(
'auto_generate_proxy_dir' => false,
'mappings' => array('XmlBundle' => array())
), $container);
$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array(
'auto_generate_proxy_dir' => true,
'mappings' => array('AnnotationsBundle' => array())
),
array(
'auto_generate_proxy_dir' => false,
'mappings' => array('XmlBundle' => array())
)), $container);

$definition = $container->getDefinition('doctrine.orm.default_metadata_driver');
$this->assertDICDefinitionMethodCallAt(0, $definition, 'addDriver', array(
Expand Down Expand Up @@ -611,8 +611,8 @@ public function testAnnotationsBundleMappingDetectionWithVendorNamespace()
$container = $this->getContainer('AnnotationsBundle', 'Vendor');
$loader = new DoctrineExtension();

$loader->dbalLoad(array(), $container);
$loader->ormLoad(array('mappings' => array('AnnotationsBundle' => array())), $container);
$loader->dbalLoad(array(array()), $container);
$loader->ormLoad(array(array('mappings' => array('AnnotationsBundle' => array()))), $container);

$calls = $container->getDefinition('doctrine.orm.default_metadata_driver')->getMethodCalls();
$this->assertEquals('doctrine.orm.default_annotation_metadata_driver', (string) $calls[0][1][0]);
Expand Down
Expand Up @@ -29,6 +29,13 @@
*/
class DoctrineMongoDBExtension extends AbstractDoctrineExtension
{
public function mongodbLoad(array $configs, ContainerBuilder $container)
{
foreach ($configs as $config) {
$this->doMongodbLoad($config, $container);
}
}

/**
* Loads the MongoDB ODM configuration.
*
Expand All @@ -39,7 +46,7 @@ class DoctrineMongoDBExtension extends AbstractDoctrineExtension
* @param array $config An array of configuration settings
* @param ContainerBuilder $container A ContainerBuilder instance
*/
public function mongodbLoad($config, ContainerBuilder $container)
protected function doMongodbLoad($config, ContainerBuilder $container)
{
$this->loadDefaults($config, $container);
$this->loadConnections($config, $container);
Expand Down
Expand Up @@ -28,7 +28,7 @@ public function testDependencyInjectionConfigurationDefaults()
$container = $this->getContainer();
$loader = new DoctrineMongoDBExtension();

$loader->mongodbLoad(array(), $container);
$loader->mongodbLoad(array(array()), $container);

$this->assertEquals('Doctrine\MongoDB\Connection', $container->getParameter('doctrine.odm.mongodb.connection_class'));
$this->assertEquals('Doctrine\ODM\MongoDB\Configuration', $container->getParameter('doctrine.odm.mongodb.configuration_class'));
Expand All @@ -55,7 +55,7 @@ public function testDependencyInjectionConfigurationDefaults()
'proxy_namespace' => 'MyProxies',
'auto_generate_proxy_classes' => true,
);
$loader->mongodbLoad($config, $container);
$loader->mongodbLoad(array($config), $container);

$this->assertEquals('MyProxies', $container->getParameter('doctrine.odm.mongodb.proxy_namespace'));
$this->assertEquals(true, $container->getParameter('doctrine.odm.mongodb.auto_generate_proxy_classes'));
Expand Down Expand Up @@ -85,7 +85,7 @@ public function testSingleDocumentManagerConfiguration()
'server' => 'mongodb://localhost:27017',
'options' => array('connect' => true)
);
$loader->mongodbLoad($config, $container);
$loader->mongodbLoad(array($config), $container);

$definition = $container->getDefinition('doctrine.odm.mongodb.default_connection');
$this->assertEquals('%doctrine.odm.mongodb.connection_class%', $definition->getClass());
Expand Down Expand Up @@ -215,7 +215,7 @@ public function testBundleDocumentAliases()
$container = $this->getContainer();
$loader = new DoctrineMongoDBExtension();

$loader->mongodbLoad(array('mappings' => array('YamlBundle' => array())), $container);
$loader->mongodbLoad(array(array('mappings' => array('YamlBundle' => array()))), $container);

$definition = $container->getDefinition('doctrine.odm.mongodb.default_configuration');
$calls = $definition->getMethodCalls();
Expand All @@ -228,7 +228,7 @@ public function testYamlBundleMappingDetection()
$container = $this->getContainer();
$loader = new DoctrineMongoDBExtension('YamlBundle');

$loader->mongodbLoad(array('mappings' => array('YamlBundle' => array())), $container);
$loader->mongodbLoad(array(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]);
Expand All @@ -240,7 +240,7 @@ public function testXmlBundleMappingDetection()
$container = $this->getContainer('XmlBundle');
$loader = new DoctrineMongoDBExtension();

$loader->mongodbLoad(array('mappings' => array('XmlBundle' => array())), $container);
$loader->mongodbLoad(array(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]);
Expand All @@ -252,7 +252,7 @@ public function testAnnotationsBundleMappingDetection()
$container = $this->getContainer('AnnotationsBundle');
$loader = new DoctrineMongoDBExtension();

$loader->mongodbLoad(array('mappings' => array('AnnotationsBundle' => array())), $container);
$loader->mongodbLoad(array(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]);
Expand Down Expand Up @@ -330,7 +330,7 @@ public function testRegistersValidatorNamespace()

$loader = new DoctrineMongoDBExtension();

$loader->mongodbLoad(array(), $container);
$loader->mongodbLoad(array(array()), $container);

$this->assertEquals(array(
'Namespace1\\',
Expand Down
Expand Up @@ -29,13 +29,20 @@
*/
class FrameworkExtension extends Extension
{
public function configLoad(array $configs, ContainerBuilder $container)
{
foreach ($configs as $config) {
$this->doConfigLoad($config, $container);
}
}

/**
* Loads the web configuration.
*
* @param array $config An array of configuration settings
* @param ContainerBuilder $container A ContainerBuilder instance
*/
public function configLoad(array $config, ContainerBuilder $container)
protected function doConfigLoad(array $config, ContainerBuilder $container)
{
$loader = new XmlFileLoader($container, __DIR__.'/../Resources/config');

Expand Down
Expand Up @@ -31,13 +31,27 @@ class SecurityExtension extends Extension
{
protected $requestMatchers = array();

public function configLoad(array $configs, ContainerBuilder $container)
{
foreach ($configs as $config) {
$this->doConfigLoad($config, $container);
}
}

public function aclLoad(array $configs, ContainerBuilder $container)
{
foreach ($configs as $config) {
$this->doAclLoad($config, $container);
}
}

/**
* Loads the web configuration.
*
* @param array $config An array of configuration settings
* @param ContainerBuilder $container A ContainerBuilder instance
*/
public function configLoad($config, ContainerBuilder $container)
protected function doConfigLoad($config, ContainerBuilder $container)
{
if (!$container->hasDefinition('security.context')) {
$loader = new XmlFileLoader($container, array(__DIR__.'/../Resources/config', __DIR__.'/Resources/config'));
Expand Down Expand Up @@ -615,7 +629,7 @@ protected function createRequestMatcher($container, $path = null, $host = null,
return $this->requestMatchers[$id] = new Reference($id);
}

public function aclLoad(array $config, ContainerBuilder $container)
protected function doAclLoad(array $config, ContainerBuilder $container)
{
if (!$container->hasDefinition('security.acl')) {
$loader = new XmlFileLoader($container, array(__DIR__.'/../Resources/config', __DIR__.'/Resources/config'));
Expand Down

0 comments on commit 8d19136

Please sign in to comment.