Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / symfony / serializer / Encoder / ChainEncoder.php
index 5ee352ab27932546b89aaf54802576cbecda4fec..cfd8855bb81508a5de5983a78d36c1c5b2db2c95 100644 (file)
@@ -19,8 +19,10 @@ use Symfony\Component\Serializer\Exception\RuntimeException;
  * @author Jordi Boggiano <j.boggiano@seld.be>
  * @author Johannes M. Schmitt <schmittjoh@gmail.com>
  * @author Lukas Kahwe Smith <smith@pooteeweet.org>
+ *
+ * @final since version 3.3.
  */
-class ChainEncoder implements EncoderInterface
+class ChainEncoder implements EncoderInterface /*, ContextAwareEncoderInterface*/
 {
     protected $encoders = array();
     protected $encoderByFormat = array();
@@ -35,16 +37,18 @@ class ChainEncoder implements EncoderInterface
      */
     final public function encode($data, $format, array $context = array())
     {
-        return $this->getEncoder($format)->encode($data, $format, $context);
+        return $this->getEncoder($format, $context)->encode($data, $format, $context);
     }
 
     /**
      * {@inheritdoc}
      */
-    public function supportsEncoding($format)
+    public function supportsEncoding($format/*, array $context = array()*/)
     {
+        $context = func_num_args() > 1 ? func_get_arg(1) : array();
+
         try {
-            $this->getEncoder($format);
+            $this->getEncoder($format, $context);
         } catch (RuntimeException $e) {
             return false;
         }
@@ -56,19 +60,21 @@ class ChainEncoder implements EncoderInterface
      * Checks whether the normalization is needed for the given format.
      *
      * @param string $format
+     * @param array  $context
      *
      * @return bool
      */
-    public function needsNormalization($format)
+    public function needsNormalization($format/*, array $context = array()*/)
     {
-        $encoder = $this->getEncoder($format);
+        $context = func_num_args() > 1 ? func_get_arg(1) : array();
+        $encoder = $this->getEncoder($format, $context);
 
         if (!$encoder instanceof NormalizationAwareInterface) {
             return true;
         }
 
         if ($encoder instanceof self) {
-            return $encoder->needsNormalization($format);
+            return $encoder->needsNormalization($format, $context);
         }
 
         return false;
@@ -78,12 +84,13 @@ class ChainEncoder implements EncoderInterface
      * Gets the encoder supporting the format.
      *
      * @param string $format
+     * @param array  $context
      *
      * @return EncoderInterface
      *
      * @throws RuntimeException if no encoder is found
      */
-    private function getEncoder($format)
+    private function getEncoder($format, array $context)
     {
         if (isset($this->encoderByFormat[$format])
             && isset($this->encoders[$this->encoderByFormat[$format]])
@@ -92,7 +99,7 @@ class ChainEncoder implements EncoderInterface
         }
 
         foreach ($this->encoders as $i => $encoder) {
-            if ($encoder->supportsEncoding($format)) {
+            if ($encoder->supportsEncoding($format, $context)) {
                 $this->encoderByFormat[$format] = $i;
 
                 return $encoder;