Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / symfony / serializer / Normalizer / ArrayDenormalizer.php
index 9217d51a95908161ee050c405fa81af69f1792e9..60ba68be251464d9068ba0d09efc03817a28c9ad 100644 (file)
@@ -13,7 +13,7 @@ namespace Symfony\Component\Serializer\Normalizer;
 
 use Symfony\Component\Serializer\Exception\BadMethodCallException;
 use Symfony\Component\Serializer\Exception\InvalidArgumentException;
-use Symfony\Component\Serializer\Exception\UnexpectedValueException;
+use Symfony\Component\Serializer\Exception\NotNormalizableValueException;
 use Symfony\Component\Serializer\SerializerAwareInterface;
 use Symfony\Component\Serializer\SerializerInterface;
 
@@ -21,6 +21,8 @@ use Symfony\Component\Serializer\SerializerInterface;
  * Denormalizes arrays of objects.
  *
  * @author Alexander M. Turek <me@derrabus.de>
+ *
+ * @final since version 3.3.
  */
 class ArrayDenormalizer implements DenormalizerInterface, SerializerAwareInterface
 {
@@ -31,16 +33,18 @@ class ArrayDenormalizer implements DenormalizerInterface, SerializerAwareInterfa
 
     /**
      * {@inheritdoc}
+     *
+     * @throws NotNormalizableValueException
      */
     public function denormalize($data, $class, $format = null, array $context = array())
     {
-        if ($this->serializer === null) {
+        if (null === $this->serializer) {
             throw new BadMethodCallException('Please set a serializer before calling denormalize()!');
         }
         if (!is_array($data)) {
             throw new InvalidArgumentException('Data expected to be an array, '.gettype($data).' given.');
         }
-        if (substr($class, -2) !== '[]') {
+        if ('[]' !== substr($class, -2)) {
             throw new InvalidArgumentException('Unsupported class: '.$class);
         }
 
@@ -50,7 +54,7 @@ class ArrayDenormalizer implements DenormalizerInterface, SerializerAwareInterfa
         $builtinType = isset($context['key_type']) ? $context['key_type']->getBuiltinType() : null;
         foreach ($data as $key => $value) {
             if (null !== $builtinType && !call_user_func('is_'.$builtinType, $key)) {
-                throw new UnexpectedValueException(sprintf('The type of the key "%s" must be "%s" ("%s" given).', $key, $builtinType, gettype($key)));
+                throw new NotNormalizableValueException(sprintf('The type of the key "%s" must be "%s" ("%s" given).', $key, $builtinType, gettype($key)));
             }
 
             $data[$key] = $serializer->denormalize($value, $class, $format, $context);
@@ -62,10 +66,12 @@ class ArrayDenormalizer implements DenormalizerInterface, SerializerAwareInterfa
     /**
      * {@inheritdoc}
      */
-    public function supportsDenormalization($data, $type, $format = null)
+    public function supportsDenormalization($data, $type, $format = null/*, array $context = array()*/)
     {
-        return substr($type, -2) === '[]'
-            && $this->serializer->supportsDenormalization($data, substr($type, 0, -2), $format);
+        $context = \func_num_args() > 3 ? func_get_arg(3) : array();
+
+        return '[]' === substr($type, -2)
+            && $this->serializer->supportsDenormalization($data, substr($type, 0, -2), $format, $context);
     }
 
     /**