Skip to content
Snippets Groups Projects
Verified Commit 244a7eeb authored by Dave Long's avatar Dave Long
Browse files

Issue #3441388 by quietone: Remove deprecated code in Drupal\Component\Serialization

parent 2ec4959d
No related branches found
No related tags found
27 merge requests!11131[10.4.x-only-DO-NOT-MERGE]: Issue ##2842525 Ajax attached to Views exposed filter form does not trigger callbacks,!9470[10.3.x-only-DO-NOT-MERGE]: #3331771 Fix file_get_contents(): Passing null to parameter,!8540Issue #3457061: Bootstrap Modal dialog Not closing after 10.3.0 Update,!8528Issue #3456871 by Tim Bozeman: Support NULL services,!8373Issue #3427374 by danflanagan8, Vighneshh: taxonomy_tid ViewsArgumentDefault...,!3878Removed unused condition head title for views,!3818Issue #2140179: $entity->original gets stale between updates,!3742Issue #3328429: Create item list field formatter for displaying ordered and unordered lists,!3731Claro: role=button on status report items,!3651Issue #3347736: Create new SDC component for Olivero (header-search),!3531Issue #3336994: StringFormatter always displays links to entity even if the user in context does not have access,!3355Issue #3209129: Scrolling problems when adding a block via layout builder,!3154Fixes #2987987 - CSRF token validation broken on routes with optional parameters.,!3133core/modules/system/css/components/hidden.module.css,!2964Issue #2865710 : Dependencies from only one instance of a widget are used in display modes,!2812Issue #3312049: [Followup] Fix Drupal.Commenting.FunctionComment.MissingReturnType returns for NULL,!2794Issue #3100732: Allow specifying `meta` data on JSON:API objects,!2378Issue #2875033: Optimize joins and table selection in SQL entity query implementation,!2062Issue #3246454: Add weekly granularity to views date sort,!1105Issue #3025039: New non translatable field on translatable content throws error,!1073issue #3191727: Focus states on mobile second level navigation items fixed,!10223132456: Fix issue where views instances are emptied before an ajax request is complete,!877Issue #2708101: Default value for link text is not saved,!617Issue #3043725: Provide a Entity Handler for user cancelation,!579Issue #2230909: Simple decimals fail to pass validation,!560Move callback classRemove outside of the loop,!555Issue #3202493
Pipeline #149284 canceled
Pipeline: drupal

#149293

    ......@@ -51,17 +51,4 @@ public static function getFileExtension() {
    return 'yml';
    }
    /**
    * Determines which implementation to use for parsing YAML.
    *
    * @deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. There is no
    * replacement.
    *
    * @see https://www.drupal.org/node/3415489
    */
    protected static function getSerializer() {
    @trigger_error('Calling ' . __METHOD__ . '() is deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. There is no replacement. See https://www.drupal.org/node/3415489', E_USER_DEPRECATED);
    return YamlSymfony::class;
    }
    }
    <?php
    namespace Drupal\Component\Serialization;
    @trigger_error('The ' . __NAMESPACE__ . '\YamlSymfony is deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. Use \Drupal\Component\Serialization\Yaml instead. See https://www.drupal.org/node/3415489', E_USER_DEPRECATED);
    use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
    use Symfony\Component\Yaml\Parser;
    use Symfony\Component\Yaml\Dumper;
    use Symfony\Component\Yaml\Yaml as SymfonyYaml;
    /**
    * Default serialization for YAML using the Symfony component.
    *
    * @deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. Use
    * \Drupal\Component\Serialization\Yaml instead.
    *
    * @see https://www.drupal.org/node/3415489
    */
    class YamlSymfony implements SerializationInterface {
    /**
    * {@inheritdoc}
    */
    public static function encode($data) {
    @trigger_error('Calling ' . __METHOD__ . '() is deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. Use \Drupal\Component\Serialization\Yaml::encode() instead. See https://www.drupal.org/node/3415489', E_USER_DEPRECATED);
    try {
    // Set the indentation to 2 to match Drupal's coding standards.
    $yaml = new Dumper(2);
    return $yaml->dump($data, PHP_INT_MAX, 0, SymfonyYaml::DUMP_EXCEPTION_ON_INVALID_TYPE | SymfonyYaml::DUMP_MULTI_LINE_LITERAL_BLOCK);
    }
    catch (\Exception $e) {
    throw new InvalidDataTypeException($e->getMessage(), $e->getCode(), $e);
    }
    }
    /**
    * {@inheritdoc}
    */
    public static function decode($raw) {
    @trigger_error('Calling ' . __METHOD__ . '() is deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. Use \Drupal\Component\Serialization\Yaml::decode() instead. See https://www.drupal.org/node/3415489', E_USER_DEPRECATED);
    try {
    $yaml = new Parser();
    // Make sure we have a single trailing newline. A very simple config like
    // 'foo: bar' with no newline will fail to parse otherwise.
    return $yaml->parse($raw, SymfonyYaml::PARSE_EXCEPTION_ON_INVALID_TYPE | SymfonyYaml::PARSE_CUSTOM_TAGS);
    }
    catch (\Exception $e) {
    throw new InvalidDataTypeException($e->getMessage(), $e->getCode(), $e);
    }
    }
    /**
    * {@inheritdoc}
    */
    public static function getFileExtension() {
    @trigger_error('Calling ' . __METHOD__ . '() is deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. Use \Drupal\Component\Serialization\Yaml::getFileExtension() instead. See https://www.drupal.org/node/3415489', E_USER_DEPRECATED);
    return 'yml';
    }
    }
    <?php
    declare(strict_types=1);
    namespace Drupal\Tests\Component\Serialization;
    use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
    use Drupal\Component\Serialization\YamlSymfony;
    use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait;
    use Symfony\Component\Yaml\Tag\TaggedValue;
    /**
    * Tests the YamlSymfony serialization implementation.
    *
    * @group Drupal
    * @group Serialization
    * @group legacy
    * @coversDefaultClass \Drupal\Component\Serialization\YamlSymfony
    */
    class YamlSymfonyTest extends YamlTestBase {
    use ExpectDeprecationTrait;
    /**
    * Tests encoding and decoding basic data structures.
    *
    * @covers ::encode
    * @covers ::decode
    * @dataProvider providerEncodeDecodeTests
    */
    public function testEncodeDecode($data) {
    $this->expectDeprecation("Calling Drupal\Component\Serialization\YamlSymfony::encode() is deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. Use \Drupal\Component\Serialization\Yaml::encode() instead. See https://www.drupal.org/node/3415489");
    $this->expectDeprecation("Calling Drupal\Component\Serialization\YamlSymfony::decode() is deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. Use \Drupal\Component\Serialization\Yaml::decode() instead. See https://www.drupal.org/node/3415489");
    $this->assertEquals($data, YamlSymfony::decode(YamlSymfony::encode($data)));
    }
    /**
    * Tests decoding YAML node anchors.
    *
    * @covers ::decode
    * @dataProvider providerDecodeTests
    */
    public function testDecode($string, $data) {
    $this->expectDeprecation("Calling Drupal\Component\Serialization\YamlSymfony::decode() is deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. Use \Drupal\Component\Serialization\Yaml::decode() instead. See https://www.drupal.org/node/3415489");
    $this->assertEquals($data, YamlSymfony::decode($string));
    }
    /**
    * Tests our encode settings.
    *
    * @covers ::encode
    */
    public function testEncode() {
    $this->expectDeprecation("Calling Drupal\Component\Serialization\YamlSymfony::encode() is deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. Use \Drupal\Component\Serialization\Yaml::encode() instead. See https://www.drupal.org/node/3415489");
    // cSpell:disable
    $this->assertEquals('foo:
    bar: \'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien ex, venenatis vitae nisi eu, posuere luctus dolor. Nullam convallis\'
    ', YamlSymfony::encode(['foo' => ['bar' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien ex, venenatis vitae nisi eu, posuere luctus dolor. Nullam convallis']]));
    // cSpell:enable
    }
    /**
    * @covers ::getFileExtension
    */
    public function testGetFileExtension() {
    $this->expectDeprecation("Calling Drupal\Component\Serialization\YamlSymfony::getFileExtension() is deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. Use \Drupal\Component\Serialization\Yaml::getFileExtension() instead. See https://www.drupal.org/node/3415489");
    $this->assertEquals('yml', YamlSymfony::getFileExtension());
    }
    /**
    * Tests that invalid YAML throws an exception.
    *
    * @covers ::decode
    */
    public function testError() {
    $this->expectDeprecation("Calling Drupal\Component\Serialization\YamlSymfony::decode() is deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. Use \Drupal\Component\Serialization\Yaml::decode() instead. See https://www.drupal.org/node/3415489");
    $this->expectException(InvalidDataTypeException::class);
    YamlSymfony::decode('foo: [ads');
    }
    /**
    * Ensures that php object support is disabled.
    *
    * @covers ::encode
    */
    public function testEncodeObjectSupportDisabled() {
    $this->expectDeprecation("Calling Drupal\Component\Serialization\YamlSymfony::encode() is deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. Use \Drupal\Component\Serialization\Yaml::encode() instead. See https://www.drupal.org/node/3415489");
    $this->expectException(InvalidDataTypeException::class);
    $this->expectExceptionMessage('Object support when dumping a YAML file has been disabled.');
    $object = new \stdClass();
    $object->foo = 'bar';
    YamlSymfony::encode([$object]);
    }
    /**
    * Ensures that decoding PHP objects does not work in Symfony.
    *
    * @covers ::decode
    */
    public function testDecodeObjectSupportDisabled(): void {
    $this->expectDeprecation("Calling Drupal\Component\Serialization\YamlSymfony::decode() is deprecated in drupal:10.3.0 and is removed from drupal:11.0.0. Use \Drupal\Component\Serialization\Yaml::decode() instead. See https://www.drupal.org/node/3415489");
    $this->expectException(InvalidDataTypeException::class);
    $this->expectExceptionMessageMatches('/^Object support when parsing a YAML file has been disabled/');
    $yaml = <<<YAML
    obj: !php/object "O:8:\"stdClass\":1:{s:3:\"foo\";s:3:\"bar\";}"
    YAML;
    YamlSymfony::decode($yaml);
    }
    /**
    * Tests that YAML custom tags are supported and parsed.
    *
    * @covers ::decode
    *
    * @dataProvider taggedValuesProvider
    */
    public function testCustomTagSupport($expected, $yaml) {
    try {
    $this->assertEquals($expected, YamlSymfony::decode($yaml));
    }
    catch (InvalidDataTypeException $e) {
    $message = 'Custom tag support is not enabled. Enable the `Yaml::PARSE_CUSTOM_TAGS` flag to prevent the %s exception.';
    $this->fail(sprintf($message, InvalidDataTypeException::class));
    }
    }
    /**
    * Data provider for testCustomTagSupport().
    *
    * @return array
    * A list of test data.
    */
    public function taggedValuesProvider() {
    return [
    'sequences' => [
    [
    new TaggedValue('foo', ['yaml']),
    new TaggedValue('quz', ['bar']),
    ],
    <<<YAML
    - !foo
    - yaml
    - !quz [bar]
    YAML
    ],
    'mappings' => [
    new TaggedValue('foo', [
    'foo' => new TaggedValue('quz', ['bar']),
    'quz' => new TaggedValue('foo', ['quz' => 'bar']),
    ]),
    <<<YAML
    !foo
    foo: !quz [bar]
    quz: !foo
    quz: bar
    YAML
    ],
    'inline' => [
    [
    new TaggedValue('foo', [
    'foo',
    'bar',
    ]),
    new TaggedValue('quz',
    [
    'foo' => 'bar',
    'quz' => new TaggedValue('bar', ['one' => 'bar']),
    ]),
    ],
    <<<YAML
    - !foo [foo, bar]
    - !quz {foo: bar, quz: !bar {one: bar}}
    YAML
    ],
    ];
    }
    }
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment