protected function loadDocumentManagerBundlesMappingInformation(array $documentManager, Definition $odmConfigDef, ContainerBuilder $container)
{
// configure metadata driver for each bundle based on the type of mapping files found
$mappingDriverDef = new Definition('%doctrine.odm.mongodb.metadata.driver_chain_class%');
$bundleDocumentMappings = array();
$bundleDirs = $container->getParameter('kernel.bundle_dirs');
$aliasMap = array();
foreach ($container->getParameter('kernel.bundles') as $className) {
$tmp = dirname(str_replace('\\', '/', $className));
$namespace = str_replace('/', '\\', dirname($tmp));
$class = basename($tmp);
if (!isset($bundleDirs[$namespace])) {
continue;
}
$type = $this->detectMetadataDriver($bundleDirs[$namespace].'/'.$class, $container);
if (is_dir($dir = $bundleDirs[$namespace].'/'.$class.'/Document')) {
if ($type === null) {
$type = 'annotation';
}
$aliasMap[$class] = $namespace.'\\'.$class.'\\Document';
}
if ($type !== null) {
$mappingDriverDef->addMethodCall('addDriver', array(
new Reference(sprintf('doctrine.odm.mongodb.metadata.%s', $type)),
$namespace.'\\'.$class.'\\Document'
)
);
}
}
$odmConfigDef->addMethodCall('setDocumentNamespaces', array($aliasMap));
$container->setDefinition('doctrine.odm.mongodb.metadata', $mappingDriverDef);
}