diff --git a/CmfRoutingBundle.php b/CmfRoutingBundle.php
index 5d8e3279..2ad34291 100644
--- a/CmfRoutingBundle.php
+++ b/CmfRoutingBundle.php
@@ -2,12 +2,13 @@
namespace Symfony\Cmf\Bundle\RoutingBundle;
+use Doctrine\Bundle\PHPCRBundle\DependencyInjection\Compiler\DoctrinePhpcrMappingsPass;
+use Symfony\Component\DependencyInjection\Definition;
use Symfony\Component\HttpKernel\Bundle\Bundle;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Cmf\Bundle\RoutingBundle\DependencyInjection\Compiler\ChainRouterPass;
use Symfony\Cmf\Bundle\RoutingBundle\DependencyInjection\Compiler\RouteEnhancerPass;
use Symfony\Cmf\Bundle\RoutingBundle\DependencyInjection\Compiler\SetRouterPass;
-use Symfony\Cmf\Bundle\RoutingBundle\DependencyInjection\Compiler\RoutePass;
/**
* Bundle class
@@ -23,6 +24,27 @@ public function build(ContainerBuilder $container)
$container->addCompilerPass(new ChainRouterPass());
$container->addCompilerPass(new RouteEnhancerPass());
$container->addCompilerPass(new SetRouterPass());
- $container->addCompilerPass(new RoutePass());
+ $container->addCompilerPass($this->buildBasePhpcrCompilerPass());
+ }
+
+ /**
+ * Build the compiler pass for the symfony core routing component. The
+ * factory method uses the SymfonyFileLocator which will look at the
+ * namespace and thus not work here.
+ *
+ * @return DoctrinePhpcrMappingsPass
+ */
+ private function buildBasePhpcrCompilerPass()
+ {
+ $arguments = array(array(realpath(__DIR__ . '/Resources/config/doctrine')), '.phpcr.xml');
+ $locator = new Definition('Doctrine\Common\Persistence\Mapping\Driver\DefaultFileLocator', $arguments);
+ $driver = new Definition('Doctrine\ODM\PHPCR\Mapping\Driver\XmlDriver', array($locator));
+
+ return new DoctrinePhpcrMappingsPass(
+ $driver,
+ array('Symfony\Component\Routing'),
+ array('cmf_routing.manager_name'),
+ false // TODO: once we have config for orm or phpcr-odm, configure the enabled parameter
+ );
}
}
diff --git a/DependencyInjection/CmfRoutingExtension.php b/DependencyInjection/CmfRoutingExtension.php
index 713b725a..5b9c219b 100644
--- a/DependencyInjection/CmfRoutingExtension.php
+++ b/DependencyInjection/CmfRoutingExtension.php
@@ -110,11 +110,6 @@ private function setupDynamicRouter(array $config, ContainerBuilder $container,
$contentRepository->replaceArgument(0, new Reference($config['manager_registry']));
$container->setParameter($this->getAlias() . '.manager_name', $config['manager_name']);
- // @todo - remove these lines when Compiler/RoutePass no longer depends on the manager_registry factory.
- $managerRegistry = $container->getDefinition($this->getAlias() . '.manager_registry');
- $managerRegistry->setFactoryService(new Reference($config['manager_registry']));
- $managerRegistry->replaceArgument(0, $config['manager_name']);
-
$dynamic = $container->getDefinition($this->getAlias().'.dynamic_router');
// if any mappings are defined, set the respective route enhancer
diff --git a/DependencyInjection/Compiler/RoutePass.php b/DependencyInjection/Compiler/RoutePass.php
deleted file mode 100644
index 2c5cc050..00000000
--- a/DependencyInjection/Compiler/RoutePass.php
+++ /dev/null
@@ -1,41 +0,0 @@
-
- */
-class RoutePass implements CompilerPassInterface
-{
- /**
- * @param ContainerBuilder $container
- */
- public function process(ContainerBuilder $container)
- {
- if (!$container->hasDefinition('cmf_routing.manager_registry')) {
- return;
- }
-
- $managerRegistry = $container->getDefinition('cmf_routing.manager_registry');
- $managerName = $managerRegistry->getArgument(0);
- $chainDriverDefService = sprintf('doctrine_phpcr.odm.%s_metadata_driver', $managerName);
- if (!$container->hasDefinition($chainDriverDefService)) {
- return;
- }
-
- $mappingService = 'cmf_routing.phpcr_mapping.core_route';
- $arguments = array('Symfony\Component\Routing' => realpath(__DIR__.'/../../Resources/config/doctrine'));
- $mappingDriverDef = new Definition('Doctrine\ODM\PHPCR\Mapping\Driver\XmlDriver', $arguments);
- $container->setDefinition($mappingService, $mappingDriverDef);
-
- $chainDriverDef = $container->getDefinition($chainDriverDefService);
- $chainDriverDef->addMethodCall('addDriver', array(new Reference($mappingService), 'Symfony\Component\Routing'));
- }
-}
diff --git a/Resources/config/cmf_routing.xml b/Resources/config/cmf_routing.xml
index 63a49693..091a1825 100644
--- a/Resources/config/cmf_routing.xml
+++ b/Resources/config/cmf_routing.xml
@@ -83,14 +83,6 @@
-
-
-
-
-
%cmf_routing.route_entity_class%
diff --git a/Resources/config/doctrine/RedirectRoute.phpcr.xml b/Resources/config/doctrine/RedirectRoute.phpcr.xml
index 3d65e2c8..f8a29837 100644
--- a/Resources/config/doctrine/RedirectRoute.phpcr.xml
+++ b/Resources/config/doctrine/RedirectRoute.phpcr.xml
@@ -1,13 +1,17 @@
-
+
-
-
-
-
-
+
+
+
+
+
diff --git a/Resources/config/doctrine/Route.phpcr.xml b/Resources/config/doctrine/Route.phpcr.xml
index 25d20c10..b48cf277 100644
--- a/Resources/config/doctrine/Route.phpcr.xml
+++ b/Resources/config/doctrine/Route.phpcr.xml
@@ -1,17 +1,22 @@
-
+
+
-
-
-
+
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/Resources/config/doctrine/Symfony.Component.Routing.Route.dcm.xml b/Resources/config/doctrine/Symfony.Component.Routing.Route.dcm.xml
deleted file mode 100644
index f804808f..00000000
--- a/Resources/config/doctrine/Symfony.Component.Routing.Route.dcm.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/Resources/config/doctrine/Symfony.Component.Routing.Route.phpcr.xml b/Resources/config/doctrine/Symfony.Component.Routing.Route.phpcr.xml
new file mode 100644
index 00000000..58278261
--- /dev/null
+++ b/Resources/config/doctrine/Symfony.Component.Routing.Route.phpcr.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+