浏览代码

updated Annotations integration

Johannes Schmitt 14 年之前
父节点
当前提交
8d8f1d7eb6

+ 2 - 2
autoload.php.dist

@@ -8,12 +8,12 @@ $loader = new UniversalClassLoader();
 $loader->registerNamespaces(array(
     'Symfony\\Tests'   => __DIR__.'/tests',
     'Symfony'          => __DIR__.'/src',
-    'Doctrine\\Common' => array(__DIR__.'/vendor/annotations/compat-src', __DIR__.'/vendor/doctrine-common/lib'),
+    'Doctrine\\Common' => __DIR__.'/vendor/doctrine-common/lib',
     'Doctrine\\DBAL'   => __DIR__.'/vendor/doctrine-dbal/lib',
     'Doctrine'         => __DIR__.'/vendor/doctrine/lib',
     'Assetic'          => __DIR__.'/vendor/assetic/src',
     'Monolog'          => __DIR__.'/vendor/monolog/src',
-    'Annotations'      => __DIR__.'/vendor/annotations/src',
+    'Annotations'      => array(__DIR__.'/vendor/annotations/src', __DIR__.'/vendor/annotations/doctrine-compat-src'),
 ));
 $loader->registerPrefixes(array(
     'Swift_' => __DIR__.'/vendor/swiftmailer/lib/classes',

+ 4 - 2
src/Symfony/Bundle/DoctrineBundle/Resources/config/orm.xml

@@ -21,7 +21,7 @@
         <!-- metadata -->
         <parameter key="doctrine.orm.metadata.driver_chain.class">Doctrine\ORM\Mapping\Driver\DriverChain</parameter>
         <parameter key="doctrine.orm.metadata.annotation.class">Doctrine\ORM\Mapping\Driver\AnnotationDriver</parameter>
-        <parameter key="doctrine.orm.metadata.annotation_reader.class">Doctrine\Common\Annotations\AnnotationReader</parameter>
+        <parameter key="doctrine.orm.metadata.annotation_reader.class">Annotations\DoctrineReader</parameter>
         <parameter key="doctrine.orm.metadata.xml.class">Doctrine\ORM\Mapping\Driver\XmlDriver</parameter>
         <parameter key="doctrine.orm.metadata.yml.class">Doctrine\ORM\Mapping\Driver\YamlDriver</parameter>
         <parameter key="doctrine.orm.metadata.php.class">Doctrine\ORM\Mapping\Driver\PHPDriver</parameter>
@@ -37,7 +37,9 @@
 
     <services>
         <!--- Annotation Metadata Reader Service -->
-        <service id="doctrine.orm.metadata.annotation_reader" class="%doctrine.orm.metadata.annotation_reader.class%" public="false" />
+        <service id="doctrine.orm.metadata.annotation_reader" class="%doctrine.orm.metadata.annotation_reader.class%" public="false">
+            <argument type="service" id="annotation_reader" />
+        </service>
 
         <service id="doctrine.orm.proxy_cache_warmer" class="%doctrine.orm.proxy_cache_warmer.class%" public="false">
             <tag name="kernel.cache_warmer" />

+ 3 - 1
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/AbstractDoctrineExtensionTest.php

@@ -119,10 +119,12 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
         $this->assertEquals('Doctrine\Common\Cache\XcacheCache', $container->getParameter('doctrine.orm.cache.xcache.class'));
         $this->assertEquals('Doctrine\ORM\Mapping\Driver\DriverChain', $container->getParameter('doctrine.orm.metadata.driver_chain.class'));
         $this->assertEquals('Doctrine\ORM\Mapping\Driver\AnnotationDriver', $container->getParameter('doctrine.orm.metadata.annotation.class'));
-        $this->assertEquals('Doctrine\Common\Annotations\AnnotationReader', $container->getParameter('doctrine.orm.metadata.annotation_reader.class'));
         $this->assertEquals('Doctrine\ORM\Mapping\Driver\XmlDriver', $container->getParameter('doctrine.orm.metadata.xml.class'));
         $this->assertEquals('Doctrine\ORM\Mapping\Driver\YamlDriver', $container->getParameter('doctrine.orm.metadata.yml.class'));
 
+        $class = new \ReflectionClass($container->getParameter('doctrine.orm.metadata.annotation_reader.class'));
+        $this->assertTrue($class->getName() === 'Doctrine\Common\Annotations\AnnotationReader' || $class->isSubClassOf('Doctrine\Common\Annotations\AnnotationReader'));
+
         $config = array(
             'proxy_namespace' => 'MyProxies',
             'auto_generate_proxy_classes' => true,

+ 6 - 0
src/Symfony/Bundle/DoctrineBundle/Tests/TestCase.php

@@ -11,6 +11,8 @@
 
 namespace Symfony\Bundle\DoctrineBundle\Tests;
 
+use Annotations\Reader;
+
 use Doctrine\ORM\EntityManager;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
@@ -25,6 +27,9 @@ class TestCase extends \PHPUnit_Framework_TestCase
         if (!class_exists('Doctrine\\Common\\Version')) {
             $this->markTestSkipped('Doctrine is not available.');
         }
+        if (!class_exists('Annotations\Reader')) {
+            $this->markTestSkipped('Annotations is not available.');
+        }
     }
 
     /**
@@ -56,6 +61,7 @@ class TestCase extends \PHPUnit_Framework_TestCase
             'kernel.cache_dir'   => sys_get_temp_dir(),
             'kernel.root_dir'    => __DIR__ . "/../../../../" // src dir
         )));
+        $container->set('annotation_reader', new Reader());
         $loader = new DoctrineExtension();
         $container->registerExtension($loader);
         $loader->load(array(array(