Ver Fonte

fixes some bugs as per review

Johannes M. Schmitt há 12 anos atrás
pai
commit
55bbcf031a

+ 11 - 6
src/JMS/Serializer/Metadata/Driver/DoctrineTypeDriver.php

@@ -20,6 +20,7 @@ namespace JMS\Serializer\Metadata\Driver;
 
 use Doctrine\Common\Persistence\ManagerRegistry;
 use JMS\Serializer\Metadata\ClassMetadata;
+use JMS\Serializer\Metadata\PropertyMetadata;
 use Metadata\Driver\DriverInterface;
 use Doctrine\ORM\Mapping\ClassMetadataInfo;
 
@@ -82,17 +83,21 @@ class DoctrineTypeDriver implements DriverInterface
             return $classMetadata;
         }
 
-        if (empty($classMetadata->discriminatorMap) && ! $classMetadata->discriminatorDisabled
-                && ! empty($doctrineMetadata->discriminatorMap) && $doctrineMetadata->isRootEntity()) {
-            $classMetadata->setDiscriminator(
-                $doctrineMetadata->discriminatorColumn['name'],
-                $doctrineMetadata->discriminatorMap
-            );
+        if ($doctrineMetadata instanceof ClassMetadataInfo) {
+            if (empty($classMetadata->discriminatorMap) && ! $classMetadata->discriminatorDisabled
+                    && ! empty($doctrineMetadata->discriminatorMap) && $doctrineMetadata->isRootEntity()) {
+                $classMetadata->setDiscriminator(
+                    $doctrineMetadata->discriminatorColumn['name'],
+                    $doctrineMetadata->discriminatorMap
+                );
+            }
         }
 
         // We base our scan on the internal driver's property list so that we
         // respect any internal white/blacklisting like in the AnnotationDriver
         foreach ($classMetadata->propertyMetadata as $propertyMetadata) {
+            /** @var $propertyMetadata PropertyMetadata */
+
             // If the inner driver provides a type, don't guess anymore.
             if ($propertyMetadata->type) {
                 continue;

+ 1 - 1
src/JMS/Serializer/Metadata/Driver/YamlDriver.php

@@ -237,7 +237,7 @@ class YamlDriver extends AbstractFileDriver
         if (is_string($config)) {
             $config = array($config);
         } elseif (!is_array($config)) {
-            throw new RuntimeException(sprintf('callback methods expects a string, or an array of strings that represent method names, but got %s.', json_encode($cConfig['pre_serialize'])));
+            throw new RuntimeException(sprintf('callback methods expects a string, or an array of strings that represent method names, but got %s.', json_encode($config['pre_serialize'])));
         }
 
         $methods = array();