Selaa lähdekoodia

[mapping] fixed a bug where when entity generator together with extensions is used, metadata fails to be red, references #60

gediminasm 14 vuotta sitten
vanhempi
commit
0261165cb3
1 muutettua tiedostoa jossa 16 lisäystä ja 13 poistoa
  1. 16 13
      lib/Gedmo/Mapping/ExtensionMetadataFactory.php

+ 16 - 13
lib/Gedmo/Mapping/ExtensionMetadataFactory.php

@@ -6,6 +6,7 @@ use Doctrine\Common\Persistence\ObjectManager;
 use Doctrine\Common\Persistence\Mapping\ClassMetadata;
 use Gedmo\Mapping\Driver\File as FileDriver;
 use Gedmo\Mapping\Driver\AnnotationDriverInterface;
+use Doctrine\ORM\Tools\DisconnectedClassMetadataFactory;
 
 /**
  * The extension metadata factory is responsible for extension driver
@@ -75,21 +76,23 @@ final class ExtensionMetadataFactory
         $config = $supperclass = array();
         $useObjectName = $meta->name;
         // collect metadata from inherited classes
-        foreach (array_reverse(class_parents($meta->name)) as $parentClass) {
-            // read only inherited mapped classes
-            if ($this->objectManager->getMetadataFactory()->hasMetadataFor($parentClass)) {
-                $class = $this->objectManager->getClassMetadata($parentClass);
-                $partial = array();
-                $this->driver->readExtendedMetadata($class, $partial);
-                if ($class->isMappedSuperclass) {
-                    $supperclass += $partial;
-                } elseif (!$class->isInheritanceTypeNone()) {
-                    $this->driver->validateFullMetadata($class, $supperclass + $partial);
-                    if ($partial) {
-                        $useObjectName = $class->name;
+        if (!$this->objectManager->getMetadataFactory() instanceof DisconnectedClassMetadataFactory) {
+            foreach (array_reverse(class_parents($meta->name)) as $parentClass) {
+                // read only inherited mapped classes
+                if ($this->objectManager->getMetadataFactory()->hasMetadataFor($parentClass)) {
+                    $class = $this->objectManager->getClassMetadata($parentClass);
+                    $partial = array();
+                    $this->driver->readExtendedMetadata($class, $partial);
+                    if ($class->isMappedSuperclass) {
+                        $supperclass += $partial;
+                    } elseif (!$class->isInheritanceTypeNone()) {
+                        $this->driver->validateFullMetadata($class, $supperclass + $partial);
+                        if ($partial) {
+                            $useObjectName = $class->name;
+                        }
                     }
+                    $config += $partial;
                 }
-                $config += $partial;
             }
         }
         $this->driver->readExtendedMetadata($meta, $config);