Forráskód Böngészése

[mapping] adapt new metadata reflection mapping

gedi 13 éve
szülő
commit
11a03ca9eb

+ 13 - 1
bin/vendors.php

@@ -33,8 +33,20 @@ $deps22x = array(
     array('Symfony/Component/Finder', 'http://github.com/symfony/Finder.git', 'v2.0.7'),
     array('Symfony/Component/Yaml', 'http://github.com/symfony/Yaml.git', 'v2.0.7'),
 );
+$deps23x = array(
+    array('doctrine-orm', 'http://github.com/doctrine/doctrine2.git', '1d46d2b9af'),
+    array('doctrine-dbal', 'http://github.com/doctrine/dbal.git', '71477a2ad6'),
+    array('doctrine-common', 'http://github.com/doctrine/common.git', '38c854c37d'),
+    array('doctrine-mongodb', 'http://github.com/doctrine/mongodb.git', '5e7ae5fd72'),
+    array('doctrine-mongodb-odm', 'http://github.com/doctrine/mongodb-odm.git', 'fb2447c01c'),
 
-foreach ($deps22x as $dep) {
+    array('Symfony/Component/ClassLoader', 'http://github.com/symfony/ClassLoader.git', 'v2.0.7'),
+    array('Symfony/Component/Console', 'http://github.com/symfony/Console.git', 'v2.0.7'),
+    array('Symfony/Component/Finder', 'http://github.com/symfony/Finder.git', 'v2.0.7'),
+    array('Symfony/Component/Yaml', 'http://github.com/symfony/Yaml.git', 'v2.0.7'),
+);
+
+foreach ($deps23x as $dep) {
     list($name, $url, $rev) = $dep;
 
     echo "> Installing/Updating $name\n";

+ 6 - 0
lib/Gedmo/Timestampable/Mapping/Driver/Annotation.php

@@ -63,6 +63,12 @@ class Annotation implements AnnotationDriverInterface
      */
     public function readExtendedMetadata($meta, array &$config) {
         $class = $meta->getReflectionClass();
+        if (!$class) {
+            // based on recent doctrine 2.3.0-DEV
+            // this happens when running annotation driver in combination with
+            // static reflection services. This is not the nicest fix
+            $class = new \ReflectionClass($meta->name);
+        }
         // property annotations
         foreach ($class->getProperties() as $property) {
             if ($meta->isMappedSuperclass && !$property->isPrivate() ||

+ 15 - 1
lib/Gedmo/Tree/Strategy/ORM/Closure.php

@@ -8,6 +8,7 @@ use Gedmo\Tree\Strategy;
 use Doctrine\ORM\EntityManager;
 use Doctrine\ORM\Proxy\Proxy;
 use Gedmo\Tree\TreeListener;
+use Doctrine\ORM\Version;
 
 /**
  * This strategy makes tree act like
@@ -61,6 +62,7 @@ class Closure implements Strategy
     {
         $config = $this->listener->getConfiguration($em, $meta->name);
         $closureMetadata = $em->getClassMetadata($config['closure']);
+        $cmf = $em->getMetadataFactory();
 
         if (!$closureMetadata->hasAssociation('ancestor')) {
             // create ancestor mapping
@@ -84,6 +86,12 @@ class Closure implements Strategy
                 'fetch' => ClassMetadataInfo::FETCH_LAZY
             );
             $closureMetadata->mapManyToOne($ancestorMapping);
+            if (Version::compare('2.3.0') >= 0) {
+                $closureMetadata->reflFields['ancestor'] = $cmf
+                    ->getReflectionService()
+                    ->getAccessibleProperty($closureMetadata->name, 'ancestor')
+                ;
+            }
         }
 
         if (!$closureMetadata->hasAssociation('descendant')) {
@@ -108,6 +116,12 @@ class Closure implements Strategy
                 'fetch' => ClassMetadataInfo::FETCH_LAZY
             );
             $closureMetadata->mapManyToOne($descendantMapping);
+            if (Version::compare('2.3.0') >= 0) {
+                $closureMetadata->reflFields['descendant'] = $cmf
+                    ->getReflectionService()
+                    ->getAccessibleProperty($closureMetadata->name, 'descendant')
+                ;
+            }
         }
         // create unique index on ancestor and descendant
         $indexName = substr(strtoupper("IDX_" . md5($closureMetadata->name)), 0, 20);
@@ -119,7 +133,7 @@ class Closure implements Strategy
         $closureMetadata->table['indexes'][$indexName] = array(
             'columns' => array('depth')
         );
-        if ($cacheDriver = $em->getMetadataFactory()->getCacheDriver()) {
+        if ($cacheDriver = $cmf->getCacheDriver()) {
             $cacheDriver->save($closureMetadata->name."\$CLASSMETADATA", $closureMetadata, null);
         }
     }

+ 1 - 0
tests/Gedmo/Mapping/ExtensionODMTest.php

@@ -19,6 +19,7 @@ class ExtensionODMTest extends BaseTestCaseMongoODM
     {
         parent::setUp();
 
+        require_once __DIR__.'/Mock/Extension/Encoder/Mapping/Annotations.php';
         $evm = new EventManager;
         $this->encoderListener = new EncoderListener;
         $evm->addEventSubscriber($this->encoderListener);

+ 1 - 0
tests/Gedmo/Mapping/ExtensionORMTest.php

@@ -19,6 +19,7 @@ class ExtensionORMTest extends BaseTestCaseORM
     {
         parent::setUp();
 
+        require_once __DIR__.'/Mock/Extension/Encoder/Mapping/Annotations.php';
         $evm = new EventManager;
         $this->encoderListener = new EncoderListener;
         $evm->addEventSubscriber($this->encoderListener);

+ 5 - 0
tests/Gedmo/Mapping/MetadataFactory/ForcedMetadataTest.php

@@ -2,6 +2,7 @@
 
 use Doctrine\ORM\Mapping\ClassMetadata;
 use Mapping\Fixture\Unmapped\Timestampable;
+use Doctrine\ORM\Version;
 
 /**
 * These are mapping tests for tree extension
@@ -56,6 +57,7 @@ class ForcedMetadataTest extends \PHPUnit_Framework_TestCase
         $metadata->mapField($created);
         $metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_IDENTITY);
         $metadata->setIdGenerator(new \Doctrine\ORM\Id\IdentityGenerator(null));
+        $metadata->setPrimaryTable(array('name' => 'temp_test'));
         $cmf->setMetadataFor('Mapping\Fixture\Unmapped\Timestampable', $metadata);
 
         // trigger loadClassMetadata event
@@ -63,6 +65,9 @@ class ForcedMetadataTest extends \PHPUnit_Framework_TestCase
         $eventArgs = new \Doctrine\ORM\Event\LoadClassMetadataEventArgs($metadata, $this->em);
         $evm->dispatchEvent(\Doctrine\ORM\Events::loadClassMetadata, $eventArgs);
 
+        if (Version::compare('2.3.0') >= 0) {
+            $metadata->wakeupReflection($cmf->getReflectionService());
+        }
         $schemaTool = new \Doctrine\ORM\Tools\SchemaTool($this->em);
         $schemaTool->dropSchema(array());
         $schemaTool->createSchema(array(