Merge remote branch 'stof/doctrine_simplify'

* stof/doctrine_simplify:
  Removed the short syntax in DoctrineBundle
  [DoctrineAbstractBundle] Removed obsolete code as the normalization is now done by the Configuration classes
  [DoctrineMongoDBBundle] Removed the short syntax for the configuration
This commit is contained in:
Fabien Potencier 2011-03-10 21:35:33 +01:00
commit 363c3f38a1
21 changed files with 198 additions and 289 deletions

View File

@ -43,19 +43,7 @@ abstract class AbstractDoctrineExtension extends Extension
protected function loadMappingInformation(array $objectManager, $container) protected function loadMappingInformation(array $objectManager, $container)
{ {
if (isset($objectManager['mappings'])) { if (isset($objectManager['mappings'])) {
// fix inconsistency between yaml and xml naming
if (isset($objectManager['mappings']['mapping'])) {
if (isset($objectManager['mappings']['mapping'][0])) {
$objectManager['mappings'] = $objectManager['mappings']['mapping'];
} else {
$objectManager['mappings'] = array($objectManager['mappings']['mapping']);
}
}
foreach ($objectManager['mappings'] as $mappingName => $mappingConfig) { foreach ($objectManager['mappings'] as $mappingName => $mappingConfig) {
if (is_string($mappingConfig)) {
$mappingConfig = array('type' => $mappingConfig);
}
if (!isset($mappingConfig['dir'])) { if (!isset($mappingConfig['dir'])) {
$mappingConfig['dir'] = false; $mappingConfig['dir'] = false;
} }
@ -75,12 +63,6 @@ abstract class AbstractDoctrineExtension extends Extension
$mappingConfig['is_bundle'] = !file_exists($mappingConfig['dir']); $mappingConfig['is_bundle'] = !file_exists($mappingConfig['dir']);
} }
if (isset($mappingConfig['name'])) {
$mappingName = $mappingConfig['name'];
} else if ($mappingConfig === null) {
$mappingConfig = array();
}
if ($mappingConfig['is_bundle']) { if ($mappingConfig['is_bundle']) {
$bundle = null; $bundle = null;
foreach ($container->getParameter('kernel.bundles') as $name => $class) { foreach ($container->getParameter('kernel.bundles') as $name => $class) {

View File

@ -51,24 +51,8 @@ class Configuration
->arrayNode('dbal') ->arrayNode('dbal')
->beforeNormalization() ->beforeNormalization()
->ifNull() ->ifNull()
->then(function($v) { return array (); }) // Let use the default values with the subsequent closure. // Define a default connection using the default values
->end() ->then(function($v) { return array ('default_connection' => 'default', 'connections' => array('default' => array())); })
->beforeNormalization()
->ifTrue(function($v){ return is_array($v) && !array_key_exists('connections', $v) && !array_key_exists('connection', $v); })
->then(function($v) {
$connection = array ();
$keys = array ('dbname', 'host', 'port', 'user', 'password', 'driver', 'driver_class', 'options', 'path', 'memory', 'unix_socket', 'wrapper_class', 'platform_service', 'charset', 'logging');
foreach ($keys as $key) {
if (array_key_exists($key, $v)) {
$connection[$key] = $v[$key];
unset($v[$key]);
}
}
$defaultConnection = isset($v['default_connection']) ? (string) $v['default_connection'] : 'default';
$v['connections'] = array ($defaultConnection => $connection);
$v['default_connection'] = $defaultConnection;
return $v;
})
->end() ->end()
->scalarNode('default_connection')->isRequired()->cannotBeEmpty()->end() ->scalarNode('default_connection')->isRequired()->cannotBeEmpty()->end()
->fixXmlConfig('type') ->fixXmlConfig('type')
@ -125,23 +109,6 @@ class Configuration
{ {
$node $node
->arrayNode('orm') ->arrayNode('orm')
->beforeNormalization()
->ifTrue(function($v){ return is_array($v) && !array_key_exists('entity_managers', $v) && !array_key_exists('entity_manager', $v); })
->then(function($v) {
$entityManager = array ();
$keys = array ('result_cache_driver', 'result-cache-driver', 'metadata_cache_driver', 'metadata-cache-driver', 'query_cache_driver', 'query-cache-driver', 'mappings', 'mapping', 'connection');
foreach ($keys as $key) {
if (array_key_exists($key, $v)) {
$entityManager[$key] = $v[$key];
unset($v[$key]);
}
}
$defaultEntityManager = isset($v['default_entity_manager']) ? (string) $v['default_entity_manager'] : 'default';
$v['entity_managers'] = array ($defaultEntityManager => $entityManager);
$v['default_entity_manager'] = $defaultEntityManager;
return $v;
})
->end()
->scalarNode('default_entity_manager')->isRequired()->cannotBeEmpty()->end() ->scalarNode('default_entity_manager')->isRequired()->cannotBeEmpty()->end()
->booleanNode('auto_generate_proxy_classes')->defaultFalse()->end() ->booleanNode('auto_generate_proxy_classes')->defaultFalse()->end()
->scalarNode('proxy_dir')->defaultValue('%kernel.cache_dir%/doctrine/orm/Proxies')->end() ->scalarNode('proxy_dir')->defaultValue('%kernel.cache_dir%/doctrine/orm/Proxies')->end()

View File

@ -40,7 +40,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
$container = $this->getContainer(); $container = $this->getContainer();
$loader = new DoctrineExtension(); $loader = new DoctrineExtension();
$loader->load(array(array('dbal' => array('password' => 'foo')), array(), array('dbal' => array('default_connection' => 'foo')), array()), $container); $loader->load(array(array('dbal' => array('connections' => array('default'=> array('password' => 'foo')))), array(), array('dbal' => array('default_connection' => 'foo')), array()), $container);
$arguments = $container->getDefinition('doctrine.dbal.default_connection')->getArguments(); $arguments = $container->getDefinition('doctrine.dbal.default_connection')->getArguments();
$config = $arguments[0]; $config = $arguments[0];
@ -112,7 +112,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
$container = $this->getContainer(); $container = $this->getContainer();
$loader = new DoctrineExtension(); $loader = new DoctrineExtension();
$loader->load(array(array('dbal' => array(), 'orm' => array('mappings' => array('YamlBundle' => array())))), $container); $loader->load(array(array('dbal' => null, 'orm' => array('default_entity_manager' => 'default', 'entity_managers' => array('default' => array('mappings' => array('YamlBundle' => array())))))), $container);
$this->assertFalse($container->getParameter('doctrine.orm.auto_generate_proxy_classes')); $this->assertFalse($container->getParameter('doctrine.orm.auto_generate_proxy_classes'));
$this->assertEquals('Doctrine\ORM\Configuration', $container->getParameter('doctrine.orm.configuration_class')); $this->assertEquals('Doctrine\ORM\Configuration', $container->getParameter('doctrine.orm.configuration_class'));
@ -134,11 +134,16 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
$config = array( $config = array(
'proxy_namespace' => 'MyProxies', 'proxy_namespace' => 'MyProxies',
'auto_generate_proxy_classes' => true, 'auto_generate_proxy_classes' => true,
'default_entity_manager' => 'default',
'entity_managers' => array(
'default' => array(
'mappings' => array('YamlBundle' => array()), 'mappings' => array('YamlBundle' => array()),
)
)
); );
$container = $this->getContainer(); $container = $this->getContainer();
$loader->load(array(array('dbal' => array(), 'orm' => $config)), $container); $loader->load(array(array('dbal' => null, 'orm' => $config)), $container);
$definition = $container->getDefinition('doctrine.dbal.default_connection'); $definition = $container->getDefinition('doctrine.dbal.default_connection');
$this->assertEquals('Doctrine\DBAL\Connection', $definition->getClass()); $this->assertEquals('Doctrine\DBAL\Connection', $definition->getClass());
@ -186,7 +191,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
$container = $this->getContainer(); $container = $this->getContainer();
$loader = new DoctrineExtension(); $loader = new DoctrineExtension();
$loader->load(array(array('dbal' => array(), 'orm' => array('mappings' => array('YamlBundle' => array())))), $container); $loader->load(array(array('dbal' => null, 'orm' => array('default_entity_manager' => 'default', 'entity_managers' => array('default' => array('mappings' => array('YamlBundle' => array())))))), $container);
$definition = $container->getDefinition('doctrine.dbal.default_connection'); $definition = $container->getDefinition('doctrine.dbal.default_connection');
$this->assertEquals('Doctrine\DBAL\Connection', $definition->getClass()); $this->assertEquals('Doctrine\DBAL\Connection', $definition->getClass());
@ -357,7 +362,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
$container = $this->getContainer(); $container = $this->getContainer();
$loader = new DoctrineExtension(); $loader = new DoctrineExtension();
$loader->load(array(array('orm' => array('mappings' => array('YamlBundle' => array())))), $container); $loader->load(array(array('orm' => array('default_entity_manager' => 'default', 'entity_managers' => array('default' => array('mappings' => array('YamlBundle' => array())))))), $container);
$definition = $container->getDefinition('doctrine.orm.default_configuration'); $definition = $container->getDefinition('doctrine.orm.default_configuration');
$this->assertDICDefinitionMethodCallOnce($definition, 'setEntityNamespaces', $this->assertDICDefinitionMethodCallOnce($definition, 'setEntityNamespaces',
@ -370,7 +375,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
$container = $this->getContainer(); $container = $this->getContainer();
$loader = new DoctrineExtension(); $loader = new DoctrineExtension();
$loader->load(array(array('orm' => array('mappings' => array('YamlBundle' => array('alias' => 'yml'))))), $container); $loader->load(array(array('orm' => array('default_entity_manager' => 'default', 'entity_managers' => array('default' => array('mappings' => array('YamlBundle' => array('alias' => 'yml'))))))), $container);
$definition = $container->getDefinition('doctrine.orm.default_configuration'); $definition = $container->getDefinition('doctrine.orm.default_configuration');
$this->assertDICDefinitionMethodCallOnce($definition, 'setEntityNamespaces', $this->assertDICDefinitionMethodCallOnce($definition, 'setEntityNamespaces',
@ -383,7 +388,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
$container = $this->getContainer('YamlBundle'); $container = $this->getContainer('YamlBundle');
$loader = new DoctrineExtension(); $loader = new DoctrineExtension();
$loader->load(array(array('orm' => array('mappings' => array('YamlBundle' => array())))), $container); $loader->load(array(array('orm' => array('default_entity_manager' => 'default', 'entity_managers' => array('default' => array('mappings' => array('YamlBundle' => array())))))), $container);
$definition = $container->getDefinition('doctrine.orm.default_metadata_driver'); $definition = $container->getDefinition('doctrine.orm.default_metadata_driver');
$this->assertDICDefinitionMethodCallOnce($definition, 'addDriver', array( $this->assertDICDefinitionMethodCallOnce($definition, 'addDriver', array(
@ -397,7 +402,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
$container = $this->getContainer('XmlBundle'); $container = $this->getContainer('XmlBundle');
$loader = new DoctrineExtension(); $loader = new DoctrineExtension();
$loader->load(array(array('orm' => array('mappings' => array('XmlBundle' => array())))), $container); $loader->load(array(array('orm' => array('default_entity_manager' => 'default', 'entity_managers' => array('default' => array('mappings' => array('XmlBundle' => array())))))), $container);
$definition = $container->getDefinition('doctrine.orm.default_metadata_driver'); $definition = $container->getDefinition('doctrine.orm.default_metadata_driver');
$this->assertDICDefinitionMethodCallOnce($definition, 'addDriver', array( $this->assertDICDefinitionMethodCallOnce($definition, 'addDriver', array(
@ -411,7 +416,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
$container = $this->getContainer('AnnotationsBundle'); $container = $this->getContainer('AnnotationsBundle');
$loader = new DoctrineExtension(); $loader = new DoctrineExtension();
$loader->load(array(array('orm' => array('mappings' => array('AnnotationsBundle' => array())))), $container); $loader->load(array(array('orm' => array('default_entity_manager' => 'default', 'entity_managers' => array('default' => array('mappings' => array('AnnotationsBundle' => array())))))), $container);
$definition = $container->getDefinition('doctrine.orm.default_metadata_driver'); $definition = $container->getDefinition('doctrine.orm.default_metadata_driver');
$this->assertDICDefinitionMethodCallOnce($definition, 'addDriver', array( $this->assertDICDefinitionMethodCallOnce($definition, 'addDriver', array(
@ -427,12 +432,16 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
$loader->load(array(array('orm' => array( $loader->load(array(array('orm' => array(
'auto_generate_proxy_classes' => true, 'auto_generate_proxy_classes' => true,
'mappings' => array('AnnotationsBundle' => array()) 'default_entity_manager' => 'default',
)), 'entity_managers' => array(
'default' => array('mappings' => array('AnnotationsBundle' => array()))
))),
array('orm' => array( array('orm' => array(
'auto_generate_proxy_classes' => false, 'auto_generate_proxy_classes' => false,
'mappings' => array('XmlBundle' => array()) 'default_entity_manager' => 'default',
))), $container); 'entity_managers' => array(
'default' => array('mappings' => array('XmlBundle' => array()))
)))), $container);
$definition = $container->getDefinition('doctrine.orm.default_metadata_driver'); $definition = $container->getDefinition('doctrine.orm.default_metadata_driver');
$this->assertDICDefinitionMethodCallAt(0, $definition, 'addDriver', array( $this->assertDICDefinitionMethodCallAt(0, $definition, 'addDriver', array(
@ -619,7 +628,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
$container = $this->getContainer('AnnotationsBundle', 'Vendor'); $container = $this->getContainer('AnnotationsBundle', 'Vendor');
$loader = new DoctrineExtension(); $loader = new DoctrineExtension();
$loader->load(array(array('orm' => array('mappings' => array('AnnotationsBundle' => array())))), $container); $loader->load(array(array('orm' => array('default_entity_manager' => 'default', 'entity_managers' => array('default' => array('mappings' => array('AnnotationsBundle' => array())))))), $container);
$calls = $container->getDefinition('doctrine.orm.default_metadata_driver')->getMethodCalls(); $calls = $container->getDefinition('doctrine.orm.default_metadata_driver')->getMethodCalls();
$this->assertEquals('doctrine.orm.default_annotation_metadata_driver', (string) $calls[0][1][0]); $this->assertEquals('doctrine.orm.default_annotation_metadata_driver', (string) $calls[0][1][0]);

View File

@ -9,9 +9,11 @@
<config> <config>
<orm <orm
auto-generate-proxy-classes="false" auto-generate-proxy-classes="false"
metadata-cache-driver="apc" default-entity-manager="default"
> >
<entity-manager name="default" metadata-cache-driver="apc">
<mapping name="YamlBundle" /> <mapping name="YamlBundle" />
</entity-manager>
</orm> </orm>
</config> </config>
</srv:container> </srv:container>

View File

@ -8,7 +8,8 @@
<config> <config>
<dbal /> <dbal />
<orm> <orm default-entity-manager="default">
<entity-manager name="default">
<metadata-cache-driver type="memcache"> <metadata-cache-driver type="memcache">
<class>Doctrine\Common\Cache\MemcacheCache</class> <class>Doctrine\Common\Cache\MemcacheCache</class>
<host>localhost</host> <host>localhost</host>
@ -16,6 +17,7 @@
<instance-class>Memcache</instance-class> <instance-class>Memcache</instance-class>
</metadata-cache-driver> </metadata-cache-driver>
<mapping name="YamlBundle" /> <mapping name="YamlBundle" />
</entity-manager>
</orm> </orm>
</config> </config>
</srv:container> </srv:container>

View File

@ -7,13 +7,15 @@
http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd"> http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd">
<config> <config>
<orm> <orm default-entity-manager="default">
<entity-manager name="default">
<mapping name="AnnotationsBundle" /> <mapping name="AnnotationsBundle" />
<mapping name="YamlBundle" dir="Resources/config/doctrine/metadata" alias="yml" /> <mapping name="YamlBundle" dir="Resources/config/doctrine/metadata" alias="yml" />
<mapping name="manual" type="xml" prefix="Fixtures\Bundles\XmlBundle" <mapping name="manual" type="xml" prefix="Fixtures\Bundles\XmlBundle"
dir="%kernel.root_dir%/../src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/Bundles/XmlBundle/Resources/config/doctrine/metadata" dir="%kernel.root_dir%/../src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/Bundles/XmlBundle/Resources/config/doctrine/metadata"
alias="TestAlias" alias="TestAlias"
/> />
</entity-manager>
</orm> </orm>
</config> </config>
</srv:container> </srv:container>

View File

@ -1,6 +1,9 @@
doctrine: doctrine:
orm: orm:
auto_generate_proxy_classes: false auto_generate_proxy_classes: false
default_entity_manager: default
entity_managers:
default:
metadata_cache_driver: apc metadata_cache_driver: apc
mappings: mappings:
YamlBundle: ~ YamlBundle: ~

View File

@ -1,6 +1,9 @@
doctrine: doctrine:
dbal: ~ dbal: ~
orm: orm:
default_entity_manager: default
entity_managers:
default:
mappings: mappings:
YamlBundle: ~ YamlBundle: ~
metadata_cache_driver: metadata_cache_driver:

View File

@ -1,5 +1,8 @@
doctrine: doctrine:
orm: orm:
default_entity_manager: default
entity_managers:
default:
mappings: mappings:
AnnotationsBundle: ~ AnnotationsBundle: ~
YamlBundle: YamlBundle:

View File

@ -62,7 +62,7 @@ class TestCase extends \PHPUnit_Framework_TestCase
'connections' => array( 'connections' => array(
'default' => array( 'default' => array(
'driver' => 'pdo_mysql', 'driver' => 'pdo_mysql',
'charset' => 'UTF-8', 'charset' => 'UTF8',
'platform-service' => 'my.platform', 'platform-service' => 'my.platform',
) )
), ),
@ -71,10 +71,15 @@ class TestCase extends \PHPUnit_Framework_TestCase
'test' => 'Symfony\Bundle\DoctrineBundle\Tests\DependencyInjection\TestType', 'test' => 'Symfony\Bundle\DoctrineBundle\Tests\DependencyInjection\TestType',
), ),
), 'orm' => array( ), 'orm' => array(
'default_entity_manager' => 'default',
'entity_managers' => array (
'default' => array(
'mappings' => array('YamlBundle' => array( 'mappings' => array('YamlBundle' => array(
'type' => 'yml', 'type' => 'yml',
'dir' => __DIR__ . "/DependencyInjection/Fixtures/Bundles/YamlBundle/Resources/config/doctrine/metadata/orm", 'dir' => __DIR__ . "/DependencyInjection/Fixtures/Bundles/YamlBundle/Resources/config/doctrine/metadata/orm",
'prefix' => 'Fixtures\Bundles\YamlBundle', 'prefix' => 'Fixtures\Bundles\YamlBundle',
)
)
))) )))
)), $container); )), $container);

View File

@ -23,9 +23,7 @@ class Configuration
$treeBuilder = new TreeBuilder(); $treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('doctrine_mongo_db', 'array'); $rootNode = $treeBuilder->root('doctrine_mongo_db', 'array');
$this->addSingleDocumentManagerSection($rootNode);
$this->addDocumentManagersSection($rootNode); $this->addDocumentManagersSection($rootNode);
$this->addSingleConnectionSection($rootNode);
$this->addConnectionsSection($rootNode); $this->addConnectionsSection($rootNode);
$rootNode $rootNode
@ -33,26 +31,14 @@ class Configuration
->scalarNode('auto_generate_proxy_classes')->defaultValue(false)->end() ->scalarNode('auto_generate_proxy_classes')->defaultValue(false)->end()
->scalarNode('hydrator_namespace')->defaultValue('Hydrators')->end() ->scalarNode('hydrator_namespace')->defaultValue('Hydrators')->end()
->scalarNode('auto_generate_hydrator_classes')->defaultValue(false)->end() ->scalarNode('auto_generate_hydrator_classes')->defaultValue(false)->end()
->scalarNode('default_document_manager')->defaultValue('default')->end()
->scalarNode('default_connection')->defaultValue('default')->end()
->scalarNode('default_database')->defaultValue('default')->end()
; ;
return $treeBuilder->buildTree(); 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_database')->defaultValue('default')->end()
->builder($this->getMetadataCacheDriverNode())
->fixXmlConfig('mapping')
->builder($this->getMappingsNode())
;
}
/** /**
* Configures the "document_managers" section * Configures the "document_managers" section
*/ */
@ -63,10 +49,9 @@ class Configuration
->arrayNode('document_managers') ->arrayNode('document_managers')
->useAttributeAsKey('id') ->useAttributeAsKey('id')
->prototype('array') ->prototype('array')
->performNoDeepMerging() //->performNoDeepMerging()
->treatNullLike(array()) ->treatNullLike(array())
->builder($this->getMetadataCacheDriverNode()) ->builder($this->getMetadataCacheDriverNode())
->scalarNode('default_database')->end()
->scalarNode('connection')->end() ->scalarNode('connection')->end()
->scalarNode('database')->end() ->scalarNode('database')->end()
->fixXmlConfig('mapping') ->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 * Adds the configuration for the "connections" key
*/ */
@ -102,7 +72,7 @@ class Configuration
->useAttributeAsKey('id') ->useAttributeAsKey('id')
->prototype('array') ->prototype('array')
->performNoDeepMerging() ->performNoDeepMerging()
->builder($this->addConnectionServerNode()) ->scalarNode('server')->defaultNull()->end()
->builder($this->addConnectionOptionsNode()) ->builder($this->addConnectionOptionsNode())
->end() ->end()
->end() ->end()
@ -143,20 +113,6 @@ class Configuration
return $node; 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. * Adds the NodeBuilder for the "options" key of a connection.
*/ */

View File

@ -77,26 +77,9 @@ class DoctrineMongoDBExtension extends AbstractDoctrineExtension
// set some options as parameters and unset them // set some options as parameters and unset them
$config = $this->overrideParameters($config, $container); $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 // load the connections
$this->loadConnections($config['connections'], $container); $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 // load the document managers
$this->loadDocumentManagers( $this->loadDocumentManagers(
$config['document_managers'], $config['document_managers'],

View File

@ -30,7 +30,7 @@ class ContainerTest extends TestCase
$container->registerExtension($loader); $container->registerExtension($loader);
$configs = array(); $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); $loader->load($configs, $container);
return $container; return $container;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -7,14 +7,11 @@ doctrine_mongo_db:
default_document_manager: default_dm_name default_document_manager: default_dm_name
default_database: default_db_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 default_connection: conn1
connections:
conn1:
server: http://server server: http://server
options: options:
connect: true connect: true
@ -23,19 +20,20 @@ doctrine_mongo_db:
replicaSet: true replicaSet: true
username: username_val username: username_val
password: password_val password: password_val
connections:
conn1: ~
conn2: conn2:
server: http://server2 server: http://server2
document_managers:
dm1:
mappings: mappings:
FooBundle: annotations FooBundle: annotations
metadata_cache_driver:
document_managers: type: memcache
dm1: ~ class: fooClass
host: host_val
port: 1234
instance_class: instance_val
dm2: dm2:
default_database: dm2_default_db
connection: dm2_connection connection: dm2_connection
database: db1 database: db1
mappings: mappings:
@ -46,4 +44,3 @@ doctrine_mongo_db:
alias: alias_val alias: alias_val
is_bundle: false is_bundle: false
metadata_cache_driver: apc metadata_cache_driver: apc

View File

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

View File

@ -1,7 +1,11 @@
doctrine_mongo_db: doctrine_mongo_db:
connections:
default:
server: mongodb://localhost:27017 server: mongodb://localhost:27017
default_database: mydb
options: { connect: true } options: { connect: true }
default_database: mydb
document_managers:
default:
metadata_cache_driver: metadata_cache_driver:
type: memcache type: memcache
class: Doctrine\Common\Cache\MemcacheCache class: Doctrine\Common\Cache\MemcacheCache