diff --git a/core/lib/Drupal/Core/CoreBundle.php b/core/lib/Drupal/Core/CoreBundle.php index d315a15..c5c5296 100644 --- a/core/lib/Drupal/Core/CoreBundle.php +++ b/core/lib/Drupal/Core/CoreBundle.php @@ -234,8 +234,7 @@ public function build(ContainerBuilder $container) { $container->register('serializer.normalizer.list', 'Drupal\Core\Serialization\ListNormalizer')->addTag('normalizer'); $container->register('serializer.normalizer.typed_data', 'Drupal\Core\Serialization\TypedDataNormalizer')->addTag('normalizer'); $container->register('serializer.encoder.json', 'Drupal\Core\Serialization\JsonEncoder')->addTag('encoder'); - $container->register('serializer.encoder.xml', 'Drupal\Core\Serialization\XmlEncoder')->addTag('encoder') - ->addArgument(new Reference('serializer')); + $container->register('serializer.encoder.xml', 'Drupal\Core\Serialization\XmlEncoder')->addTag('encoder'); $container->register('flood', 'Drupal\Core\Flood\DatabaseBackend') ->addArgument(new Reference('database')); diff --git a/core/lib/Drupal/Core/Serialization/XmlEncoder.php b/core/lib/Drupal/Core/Serialization/XmlEncoder.php index b0737bd..dd9d7bf 100644 --- a/core/lib/Drupal/Core/Serialization/XmlEncoder.php +++ b/core/lib/Drupal/Core/Serialization/XmlEncoder.php @@ -11,6 +11,7 @@ use Symfony\Component\Serializer\Encoder\DecoderInterface; use Symfony\Component\Serializer\Encoder\XmlEncoder as BaseXmlEncoder; use Symfony\Component\Serializer\SerializerInterface; +use Symfony\Component\Serializer\Encoder\SerializerAwareEncoder; /** * Adds XML to the support for serialization. @@ -18,7 +19,7 @@ * This acts as a wrapper class for Symfony's XmlEncoder so that it is not * implementing NormalizationAwareInterface, and can be normalized externally. */ -class XmlEncoder implements EncoderInterface, DecoderInterface { +class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, DecoderInterface { /** * The formats that this Encoder supports. @@ -28,13 +29,6 @@ class XmlEncoder implements EncoderInterface, DecoderInterface { static protected $format = 'xml'; /** - * The serializer to use. This will normalize data. - * - * @var \Symfony\Component\Serializer\SerializerInterface. - */ - protected $serializer; - - /** * An instance of the Symfony XmlEncoder to perform the actual serialization. * * @var \Symfony\Component\Serializer\Encoder\XmlEncoder @@ -44,8 +38,7 @@ class XmlEncoder implements EncoderInterface, DecoderInterface { /** * Constucts the XmlEncoder object, creating a BaseXmlEncoder class also. */ - public function __construct(SerializerInterface $serializer) { - $this->serializer = $serializer; + public function __construct() { $this->baseEncoder = new BaseXmlEncoder(); } @@ -53,7 +46,7 @@ public function __construct(SerializerInterface $serializer) { * Implements \Symfony\Component\Serializer\Encoder\EncoderInterface::encode(). */ public function encode($data, $format){ - $normalized = $this->serializer->normalize($data, 'xml'); + $normalized = $this->serializer->normalize($data, $format); return $this->baseEncoder->encode($normalized, $format); } diff --git a/core/modules/system/lib/Drupal/system/Tests/Serialization/EntitySerializationTest.php b/core/modules/system/lib/Drupal/system/Tests/Serialization/EntitySerializationTest.php index 797314e..c866549 100644 --- a/core/modules/system/lib/Drupal/system/Tests/Serialization/EntitySerializationTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Serialization/EntitySerializationTest.php @@ -127,7 +127,8 @@ public function testSerialize() { $this->assertIdentical($actual, $expected, 'Entity serializes to JSON when ajax is requested.'); // Test 'xml'. The expected output should match that of Symfony's XmlEncoder. $base_encoder = new BaseXmlEncoder(); - $expected = $base_encoder->encode($this->entity, 'xml'); + // We need to pass the normalized array structure to this. + $expected = $base_encoder->encode($serializer->normalize($this->entity), 'xml'); $actual = $serializer->serialize($this->entity, 'xml'); $this->assertIdentical($actual, $expected, 'Entity serializes to XML when xml is requested.'); }