diff --git a/core/modules/jsonapi/src/Normalizer/ConfigEntityDenormalizer.php b/core/modules/jsonapi/src/Normalizer/ConfigEntityDenormalizer.php index 95a6f30469bc3b38fa38405c553741316febb27d..d803f6e3008bea2b495068387c0ab17ec2ab4e02 100644 --- a/core/modules/jsonapi/src/Normalizer/ConfigEntityDenormalizer.php +++ b/core/modules/jsonapi/src/Normalizer/ConfigEntityDenormalizer.php @@ -16,11 +16,6 @@ */ final class ConfigEntityDenormalizer extends EntityDenormalizerBase { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = ConfigEntityInterface::class; - /** * {@inheritdoc} */ diff --git a/core/modules/jsonapi/src/Normalizer/ContentEntityDenormalizer.php b/core/modules/jsonapi/src/Normalizer/ContentEntityDenormalizer.php index f513e787bf0b47d35c9bba58605666fb672e0eaf..112c02212a412fd7a1b4089dc812711808636278 100644 --- a/core/modules/jsonapi/src/Normalizer/ContentEntityDenormalizer.php +++ b/core/modules/jsonapi/src/Normalizer/ContentEntityDenormalizer.php @@ -17,11 +17,6 @@ */ final class ContentEntityDenormalizer extends EntityDenormalizerBase { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = ContentEntityInterface::class; - /** * Prepares the input data to create the entity. * diff --git a/core/modules/jsonapi/src/Normalizer/DataNormalizer.php b/core/modules/jsonapi/src/Normalizer/DataNormalizer.php index 67217fceb2a7eb41fcd2be0146eb98de369e600b..7c3a039552e23af2c829db2330ab77e0d12521b4 100644 --- a/core/modules/jsonapi/src/Normalizer/DataNormalizer.php +++ b/core/modules/jsonapi/src/Normalizer/DataNormalizer.php @@ -12,11 +12,6 @@ */ class DataNormalizer extends NormalizerBase { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = Data::class; - /** * {@inheritdoc} */ diff --git a/core/modules/jsonapi/src/Normalizer/EntityAccessDeniedHttpExceptionNormalizer.php b/core/modules/jsonapi/src/Normalizer/EntityAccessDeniedHttpExceptionNormalizer.php index beedcc24be0289e6ff0b638bbc0986da72710cd7..0b608f48b22a385bc994865ade122cdbddeefa7a 100644 --- a/core/modules/jsonapi/src/Normalizer/EntityAccessDeniedHttpExceptionNormalizer.php +++ b/core/modules/jsonapi/src/Normalizer/EntityAccessDeniedHttpExceptionNormalizer.php @@ -23,11 +23,6 @@ */ class EntityAccessDeniedHttpExceptionNormalizer extends HttpExceptionNormalizer { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = EntityAccessDeniedHttpException::class; - /** * {@inheritdoc} */ diff --git a/core/modules/jsonapi/src/Normalizer/EntityReferenceFieldNormalizer.php b/core/modules/jsonapi/src/Normalizer/EntityReferenceFieldNormalizer.php index 79561f22c74e34398b61bac455529621347e86fa..0c379138f251f4382b38ffe1460a94d496fde11e 100644 --- a/core/modules/jsonapi/src/Normalizer/EntityReferenceFieldNormalizer.php +++ b/core/modules/jsonapi/src/Normalizer/EntityReferenceFieldNormalizer.php @@ -24,11 +24,6 @@ */ class EntityReferenceFieldNormalizer extends FieldNormalizer { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = EntityReferenceFieldItemListInterface::class; - /** * {@inheritdoc} */ diff --git a/core/modules/jsonapi/src/Normalizer/FieldItemNormalizer.php b/core/modules/jsonapi/src/Normalizer/FieldItemNormalizer.php index 0dcca6bff3ce66d3256f65df0faf0494f6c9a447..82fbd0ecde28e83db6d7ff546e7b6dde2e67b023 100644 --- a/core/modules/jsonapi/src/Normalizer/FieldItemNormalizer.php +++ b/core/modules/jsonapi/src/Normalizer/FieldItemNormalizer.php @@ -29,13 +29,6 @@ class FieldItemNormalizer extends NormalizerBase implements DenormalizerInterfac use SerializedColumnNormalizerTrait; - /** - * The interface or class that this Normalizer supports. - * - * @var string - */ - protected $supportedInterfaceOrClass = FieldItemInterface::class; - /** * The entity type manager. * diff --git a/core/modules/jsonapi/src/Normalizer/FieldNormalizer.php b/core/modules/jsonapi/src/Normalizer/FieldNormalizer.php index 159f7eb381234db46bd937f38d66f27a6452a694..fd1fd1bb60190af86c6c73d7d7e593d2b961c451 100644 --- a/core/modules/jsonapi/src/Normalizer/FieldNormalizer.php +++ b/core/modules/jsonapi/src/Normalizer/FieldNormalizer.php @@ -20,13 +20,6 @@ */ class FieldNormalizer extends NormalizerBase implements DenormalizerInterface { - /** - * The interface or class that this Normalizer supports. - * - * @var string - */ - protected $supportedInterfaceOrClass = FieldItemListInterface::class; - /** * {@inheritdoc} */ diff --git a/core/modules/jsonapi/src/Normalizer/HttpExceptionNormalizer.php b/core/modules/jsonapi/src/Normalizer/HttpExceptionNormalizer.php index 3ba7ea111d0ce85581d8316b9e061145ba2da141..73700aa0fd2aaa2bd9675bc15559d21f17669a98 100644 --- a/core/modules/jsonapi/src/Normalizer/HttpExceptionNormalizer.php +++ b/core/modules/jsonapi/src/Normalizer/HttpExceptionNormalizer.php @@ -21,13 +21,6 @@ */ class HttpExceptionNormalizer extends NormalizerBase { - /** - * The interface or class that this Normalizer supports. - * - * @var string - */ - protected $supportedInterfaceOrClass = HttpException::class; - /** * The current user making the request. * diff --git a/core/modules/jsonapi/src/Normalizer/JsonApiDocumentTopLevelNormalizer.php b/core/modules/jsonapi/src/Normalizer/JsonApiDocumentTopLevelNormalizer.php index 5df231f449d9c4993227289cf22db861ba88d7cb..d12ec670f41ee185c05a2394163d0818c38867c1 100644 --- a/core/modules/jsonapi/src/Normalizer/JsonApiDocumentTopLevelNormalizer.php +++ b/core/modules/jsonapi/src/Normalizer/JsonApiDocumentTopLevelNormalizer.php @@ -35,11 +35,6 @@ */ class JsonApiDocumentTopLevelNormalizer extends NormalizerBase implements DenormalizerInterface, NormalizerInterface { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = JsonApiDocumentTopLevel::class; - /** * The entity type manager. * diff --git a/core/modules/jsonapi/src/Normalizer/LinkCollectionNormalizer.php b/core/modules/jsonapi/src/Normalizer/LinkCollectionNormalizer.php index acd299766a9b9c92eb16190587407512a310fe67..96a50bc3e446e4a283476a5eb9624a7c756adb6d 100644 --- a/core/modules/jsonapi/src/Normalizer/LinkCollectionNormalizer.php +++ b/core/modules/jsonapi/src/Normalizer/LinkCollectionNormalizer.php @@ -47,11 +47,6 @@ class LinkCollectionNormalizer extends NormalizerBase { */ const LINK_CONTEXT = 'jsonapi_links_object_context'; - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = LinkCollection::class; - /** * A random string to use when hashing links. * diff --git a/core/modules/jsonapi/src/Normalizer/RelationshipNormalizer.php b/core/modules/jsonapi/src/Normalizer/RelationshipNormalizer.php index 09fd83168f5afb152eb46f9b24ebbb80c125a0ef..90e2d79cb689a62d607b57c9f645bb92943834fa 100644 --- a/core/modules/jsonapi/src/Normalizer/RelationshipNormalizer.php +++ b/core/modules/jsonapi/src/Normalizer/RelationshipNormalizer.php @@ -12,11 +12,6 @@ */ class RelationshipNormalizer extends NormalizerBase { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = Relationship::class; - /** * {@inheritdoc} */ diff --git a/core/modules/jsonapi/src/Normalizer/ResourceIdentifierNormalizer.php b/core/modules/jsonapi/src/Normalizer/ResourceIdentifierNormalizer.php index a7d66623f0c29fefdeb8766afaaa28ad006e5412..87454df8d750df22ad10c8b46632dfacf6ef6ba2 100644 --- a/core/modules/jsonapi/src/Normalizer/ResourceIdentifierNormalizer.php +++ b/core/modules/jsonapi/src/Normalizer/ResourceIdentifierNormalizer.php @@ -23,11 +23,6 @@ */ class ResourceIdentifierNormalizer extends NormalizerBase implements DenormalizerInterface { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = ResourceIdentifier::class; - /** * The entity field manager. * diff --git a/core/modules/jsonapi/src/Normalizer/ResourceObjectNormalizer.php b/core/modules/jsonapi/src/Normalizer/ResourceObjectNormalizer.php index 53671cd2b9307bdf1cb3fa3c1572aceb03e34c8b..dfcbc3ca9b2e346e2b3a28f5b86fe28a24d9263b 100644 --- a/core/modules/jsonapi/src/Normalizer/ResourceObjectNormalizer.php +++ b/core/modules/jsonapi/src/Normalizer/ResourceObjectNormalizer.php @@ -22,11 +22,6 @@ */ class ResourceObjectNormalizer extends NormalizerBase { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = ResourceObject::class; - /** * The entity normalization cacher. * diff --git a/core/modules/jsonapi/src/Normalizer/UnprocessableHttpEntityExceptionNormalizer.php b/core/modules/jsonapi/src/Normalizer/UnprocessableHttpEntityExceptionNormalizer.php index 9a155296d8de99fb3f89c2f1a142199e069ed610..5635c24fe6fb98b0ba032e96248ddb6f99fc441f 100644 --- a/core/modules/jsonapi/src/Normalizer/UnprocessableHttpEntityExceptionNormalizer.php +++ b/core/modules/jsonapi/src/Normalizer/UnprocessableHttpEntityExceptionNormalizer.php @@ -23,13 +23,6 @@ */ class UnprocessableHttpEntityExceptionNormalizer extends HttpExceptionNormalizer { - /** - * The interface or class that this Normalizer supports. - * - * @var string - */ - protected $supportedInterfaceOrClass = UnprocessableHttpEntityException::class; - /** * {@inheritdoc} */ diff --git a/core/modules/jsonapi/tests/modules/jsonapi_test_data_type/src/Normalizer/StringNormalizer.php b/core/modules/jsonapi/tests/modules/jsonapi_test_data_type/src/Normalizer/StringNormalizer.php index 90cf00e2e9b0dd76f544f34d1170393616e15702..5694d161a543796e2769ea8c96ee369d5cd8abf8 100644 --- a/core/modules/jsonapi/tests/modules/jsonapi_test_data_type/src/Normalizer/StringNormalizer.php +++ b/core/modules/jsonapi/tests/modules/jsonapi_test_data_type/src/Normalizer/StringNormalizer.php @@ -11,11 +11,6 @@ */ class StringNormalizer extends NormalizerBase implements DenormalizerInterface { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = StringData::class; - /** * {@inheritdoc} */ @@ -33,8 +28,8 @@ public function denormalize($data, $class, $format = NULL, array $context = []): /** * {@inheritdoc} */ - public function hasCacheableSupportsMethod(): bool { - return TRUE; + public function getSupportedTypes(?string $format): array { + return [StringData::class => TRUE]; } } diff --git a/core/modules/jsonapi/tests/modules/jsonapi_test_data_type/src/Normalizer/TraversableObjectNormalizer.php b/core/modules/jsonapi/tests/modules/jsonapi_test_data_type/src/Normalizer/TraversableObjectNormalizer.php index daca730a4b3254fff21965e68ceb389eaaa1f80d..b2b493cb4cafc7f3a4eb0e2dd1774c78218ebd79 100644 --- a/core/modules/jsonapi/tests/modules/jsonapi_test_data_type/src/Normalizer/TraversableObjectNormalizer.php +++ b/core/modules/jsonapi/tests/modules/jsonapi_test_data_type/src/Normalizer/TraversableObjectNormalizer.php @@ -10,11 +10,6 @@ */ class TraversableObjectNormalizer extends NormalizerBase { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = TraversableObject::class; - /** * {@inheritdoc} */ @@ -25,8 +20,8 @@ public function normalize($object, $format = NULL, array $context = []): array|s /** * {@inheritdoc} */ - public function hasCacheableSupportsMethod(): bool { - return TRUE; + public function getSupportedTypes(?string $format): array { + return [TraversableObject::class => TRUE]; } } diff --git a/core/modules/jsonapi/tests/modules/jsonapi_test_field_type/src/Normalizer/StringNormalizer.php b/core/modules/jsonapi/tests/modules/jsonapi_test_field_type/src/Normalizer/StringNormalizer.php index 1c6f306a4e5d360e7ea8a28ad53c578c04b62460..20d901e11bbbed12c47833da27f5454e6428abe8 100644 --- a/core/modules/jsonapi/tests/modules/jsonapi_test_field_type/src/Normalizer/StringNormalizer.php +++ b/core/modules/jsonapi/tests/modules/jsonapi_test_field_type/src/Normalizer/StringNormalizer.php @@ -11,11 +11,6 @@ */ class StringNormalizer extends FieldItemNormalizer implements DenormalizerInterface { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = StringItem::class; - /** * {@inheritdoc} */ @@ -34,4 +29,11 @@ protected function constructValue($data, $context) { return $data; } + /** + * {@inheritdoc} + */ + public function getSupportedTypes(?string $format): array { + return [StringItem::class => TRUE]; + } + } diff --git a/core/modules/layout_builder/src/Normalizer/LayoutEntityDisplayNormalizer.php b/core/modules/layout_builder/src/Normalizer/LayoutEntityDisplayNormalizer.php index 21fafe0f64eeaed83c35aafe5731a4733d320874..a992b46ecd4bac629b1137b42a8ddc8921f21a6b 100644 --- a/core/modules/layout_builder/src/Normalizer/LayoutEntityDisplayNormalizer.php +++ b/core/modules/layout_builder/src/Normalizer/LayoutEntityDisplayNormalizer.php @@ -13,11 +13,6 @@ */ class LayoutEntityDisplayNormalizer extends ConfigEntityNormalizer { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = LayoutEntityDisplayInterface::class; - /** * {@inheritdoc} */ @@ -33,8 +28,10 @@ protected static function getDataWithoutInternals(array $data) { /** * {@inheritdoc} */ - public function hasCacheableSupportsMethod(): bool { - return TRUE; + public function getSupportedTypes(?string $format): array { + return [ + LayoutEntityDisplayInterface::class => TRUE, + ]; } } diff --git a/core/modules/serialization/src/Normalizer/ComplexDataNormalizer.php b/core/modules/serialization/src/Normalizer/ComplexDataNormalizer.php index 3c950308c7191be4e4e5e0d4434a5845a05924fb..008216b60f620ce8abce4f51e1453c097c45ba8e 100644 --- a/core/modules/serialization/src/Normalizer/ComplexDataNormalizer.php +++ b/core/modules/serialization/src/Normalizer/ComplexDataNormalizer.php @@ -17,11 +17,6 @@ */ class ComplexDataNormalizer extends NormalizerBase { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = ComplexDataInterface::class; - /** * {@inheritdoc} */ diff --git a/core/modules/serialization/src/Normalizer/ConfigEntityNormalizer.php b/core/modules/serialization/src/Normalizer/ConfigEntityNormalizer.php index 6c24a270f67ff9db9c687a9a22f742765a6af1b5..589e92dcd3cec2bc40ff5c756d3a8eb0ce70dda9 100644 --- a/core/modules/serialization/src/Normalizer/ConfigEntityNormalizer.php +++ b/core/modules/serialization/src/Normalizer/ConfigEntityNormalizer.php @@ -9,11 +9,6 @@ */ class ConfigEntityNormalizer extends EntityNormalizer { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = ConfigEntityInterface::class; - /** * {@inheritdoc} */ diff --git a/core/modules/serialization/src/Normalizer/ContentEntityNormalizer.php b/core/modules/serialization/src/Normalizer/ContentEntityNormalizer.php index 7f8055eef90cd00ffcac2a0c2c7c130ef5b53f5c..94ecc50a8ba582bbea3d5c399ac548745481bd03 100644 --- a/core/modules/serialization/src/Normalizer/ContentEntityNormalizer.php +++ b/core/modules/serialization/src/Normalizer/ContentEntityNormalizer.php @@ -10,11 +10,6 @@ */ class ContentEntityNormalizer extends EntityNormalizer { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = ContentEntityInterface::class; - /** * {@inheritdoc} */ diff --git a/core/modules/serialization/src/Normalizer/DateTimeIso8601Normalizer.php b/core/modules/serialization/src/Normalizer/DateTimeIso8601Normalizer.php index 9139853b4460b8d38aeb1bd8b4b36fc5ad092dfe..12e79be415b53d3e44be392541afc7b8a1a90142 100644 --- a/core/modules/serialization/src/Normalizer/DateTimeIso8601Normalizer.php +++ b/core/modules/serialization/src/Normalizer/DateTimeIso8601Normalizer.php @@ -29,11 +29,6 @@ class DateTimeIso8601Normalizer extends DateTimeNormalizer { 'date-only' => 'Y-m-d', ]; - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = DateTimeIso8601::class; - /** * {@inheritdoc} */ diff --git a/core/modules/serialization/src/Normalizer/DateTimeNormalizer.php b/core/modules/serialization/src/Normalizer/DateTimeNormalizer.php index 85e256641725b9d7926ac923fc59150b1802fc64..c1fdf1fb1834ed9f4ddbbbb8ba8c003e90baee4c 100644 --- a/core/modules/serialization/src/Normalizer/DateTimeNormalizer.php +++ b/core/modules/serialization/src/Normalizer/DateTimeNormalizer.php @@ -29,11 +29,6 @@ class DateTimeNormalizer extends NormalizerBase implements DenormalizerInterface 'ISO 8601' => \DateTime::ISO8601, ]; - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = DateTimeInterface::class; - /** * The system's date configuration. * diff --git a/core/modules/serialization/src/Normalizer/EntityNormalizer.php b/core/modules/serialization/src/Normalizer/EntityNormalizer.php index 25557776622dead3e95a52b7d2da174bcaabbeed..d20e3b68a63f0b197d9aa18f569791bdbc7ea2ee 100644 --- a/core/modules/serialization/src/Normalizer/EntityNormalizer.php +++ b/core/modules/serialization/src/Normalizer/EntityNormalizer.php @@ -16,11 +16,6 @@ class EntityNormalizer extends ComplexDataNormalizer implements DenormalizerInte use FieldableEntityNormalizerTrait; - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = EntityInterface::class; - /** * Constructs an EntityNormalizer object. * diff --git a/core/modules/serialization/src/Normalizer/EntityReferenceFieldItemNormalizer.php b/core/modules/serialization/src/Normalizer/EntityReferenceFieldItemNormalizer.php index 8a0277f39a52a4b967288eafaf1e340ac4c26aee..086f772e4802f6580f9e7356194dbd0ecaaf69ee 100644 --- a/core/modules/serialization/src/Normalizer/EntityReferenceFieldItemNormalizer.php +++ b/core/modules/serialization/src/Normalizer/EntityReferenceFieldItemNormalizer.php @@ -15,11 +15,6 @@ class EntityReferenceFieldItemNormalizer extends FieldItemNormalizer { use EntityReferenceFieldItemNormalizerTrait; - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = EntityReferenceItem::class; - /** * The entity repository. * diff --git a/core/modules/serialization/src/Normalizer/FieldItemNormalizer.php b/core/modules/serialization/src/Normalizer/FieldItemNormalizer.php index a12ebddc57264b8ee50680f438864826f38c8e65..90efb55bc5dcf1ebe4728b291d1fb7804aa616f1 100644 --- a/core/modules/serialization/src/Normalizer/FieldItemNormalizer.php +++ b/core/modules/serialization/src/Normalizer/FieldItemNormalizer.php @@ -14,11 +14,6 @@ class FieldItemNormalizer extends ComplexDataNormalizer implements DenormalizerI use FieldableEntityNormalizerTrait; use SerializedColumnNormalizerTrait; - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = FieldItemInterface::class; - /** * {@inheritdoc} */ diff --git a/core/modules/serialization/src/Normalizer/FieldNormalizer.php b/core/modules/serialization/src/Normalizer/FieldNormalizer.php index e1067f7bcec56a30ca3cc335544d31fea5be4874..06b545982696cf897d5a312d2e8462adae728f46 100644 --- a/core/modules/serialization/src/Normalizer/FieldNormalizer.php +++ b/core/modules/serialization/src/Normalizer/FieldNormalizer.php @@ -18,11 +18,6 @@ */ class FieldNormalizer extends ListNormalizer implements DenormalizerInterface { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = FieldItemListInterface::class; - /** * {@inheritdoc} */ diff --git a/core/modules/serialization/src/Normalizer/ListNormalizer.php b/core/modules/serialization/src/Normalizer/ListNormalizer.php index f333944cbcb258a50fdac76a556f4e92ecdccbfc..44a2ef742ec8fd071672abde1d4e5f8ca7b92f7d 100644 --- a/core/modules/serialization/src/Normalizer/ListNormalizer.php +++ b/core/modules/serialization/src/Normalizer/ListNormalizer.php @@ -15,11 +15,6 @@ */ class ListNormalizer extends NormalizerBase { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = ListInterface::class; - /** * {@inheritdoc} */ @@ -34,8 +29,10 @@ public function normalize($object, $format = NULL, array $context = []): array|s /** * {@inheritdoc} */ - public function hasCacheableSupportsMethod(): bool { - return TRUE; + public function getSupportedTypes(?string $format): array { + return [ + ListInterface::class => TRUE, + ]; } } diff --git a/core/modules/serialization/src/Normalizer/MarkupNormalizer.php b/core/modules/serialization/src/Normalizer/MarkupNormalizer.php index 167fbd6f0e32199abec0ef39909afe9c0bf23829..f7ba6bb1e58d6c34dc3d395ebff2396deab453c5 100644 --- a/core/modules/serialization/src/Normalizer/MarkupNormalizer.php +++ b/core/modules/serialization/src/Normalizer/MarkupNormalizer.php @@ -9,11 +9,6 @@ */ class MarkupNormalizer extends NormalizerBase { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = MarkupInterface::class; - /** * {@inheritdoc} */ diff --git a/core/modules/serialization/src/Normalizer/NormalizerBase.php b/core/modules/serialization/src/Normalizer/NormalizerBase.php index c3c344b5ca3c6ebb56ff26329e99fcc2bf26859a..ff0a13fc1c79527e4ef0946856f7ceebc25aa3ca 100644 --- a/core/modules/serialization/src/Normalizer/NormalizerBase.php +++ b/core/modules/serialization/src/Normalizer/NormalizerBase.php @@ -13,13 +13,6 @@ abstract class NormalizerBase implements SerializerAwareInterface, CacheableNorm use SerializerAwareTrait; - /** - * The interface or class that this Normalizer supports. - * - * @var string|array - */ - protected $supportedInterfaceOrClass; - /** * List of formats which supports (de-)normalization. * @@ -37,7 +30,13 @@ public function supportsNormalization($data, string $format = NULL, array $conte return FALSE; } - $supported = (array) $this->supportedInterfaceOrClass; + if (property_exists($this, 'supportedInterfaceOrClass')) { + @trigger_error('Defining ' . static::class . '::supportedInterfaceOrClass property is deprecated in drupal:10.2.0 and is removed from drupal:11.0.0. Use getSupportedTypes() instead. See https://www.drupal.org/node/3359695', E_USER_DEPRECATED); + $supported = (array) $this->supportedInterfaceOrClass; + } + else { + $supported = array_keys($this->getSupportedTypes($format)); + } return (bool) array_filter($supported, function ($name) use ($data) { return $data instanceof $name; @@ -57,7 +56,13 @@ public function supportsDenormalization($data, string $type, string $format = NU return FALSE; } - $supported = (array) $this->supportedInterfaceOrClass; + if (property_exists($this, 'supportedInterfaceOrClass')) { + @trigger_error('Defining ' . static::class . '::supportedInterfaceOrClass property is deprecated in drupal:10.2.0 and is removed from drupal:11.0.0. Use getSupportedTypes() instead. See https://www.drupal.org/node/3359695', E_USER_DEPRECATED); + $supported = (array) $this->supportedInterfaceOrClass; + } + else { + $supported = array_keys($this->getSupportedTypes($format)); + } $subclass_check = function ($name) use ($type) { return (class_exists($name) || interface_exists($name)) && is_subclass_of($type, $name, TRUE); diff --git a/core/modules/serialization/src/Normalizer/NullNormalizer.php b/core/modules/serialization/src/Normalizer/NullNormalizer.php index 2479711b4bb8fe5eaf96def27d6e37b3be5cb859..63d7c24e728398221d954dbaf96fe4fb57c56d47 100644 --- a/core/modules/serialization/src/Normalizer/NullNormalizer.php +++ b/core/modules/serialization/src/Normalizer/NullNormalizer.php @@ -7,6 +7,13 @@ */ class NullNormalizer extends NormalizerBase { + /** + * The interface or class that this Normalizer supports. + * + * @var string[] + */ + protected array $supportedTypes = ['*' => FALSE]; + /** * Constructs a NullNormalizer object. * @@ -14,7 +21,7 @@ class NullNormalizer extends NormalizerBase { * The supported interface(s) or class(es). */ public function __construct($supported_interface_of_class) { - $this->supportedInterfaceOrClass = $supported_interface_of_class; + $this->supportedTypes = [$supported_interface_of_class => TRUE]; } /** @@ -24,4 +31,11 @@ public function normalize($object, $format = NULL, array $context = []): array|s return NULL; } + /** + * {@inheritdoc} + */ + public function getSupportedTypes(?string $format): array { + return $this->supportedTypes; + } + } diff --git a/core/modules/serialization/src/Normalizer/PrimitiveDataNormalizer.php b/core/modules/serialization/src/Normalizer/PrimitiveDataNormalizer.php index 78ec3e187559bb3d13898f509eea0ac50cf4e3bf..785104ef1404a928f8080398a72ac254a298b787 100644 --- a/core/modules/serialization/src/Normalizer/PrimitiveDataNormalizer.php +++ b/core/modules/serialization/src/Normalizer/PrimitiveDataNormalizer.php @@ -12,11 +12,6 @@ class PrimitiveDataNormalizer extends NormalizerBase { use SerializedColumnNormalizerTrait; - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = PrimitiveInterface::class; - /** * {@inheritdoc} */ diff --git a/core/modules/serialization/src/Normalizer/TimestampItemNormalizer.php b/core/modules/serialization/src/Normalizer/TimestampItemNormalizer.php index d0cda8ceec678c20c70f6175ca263df86d9be148..2cfdd63ee0254e7584695e70948042e5cfa3fe0e 100644 --- a/core/modules/serialization/src/Normalizer/TimestampItemNormalizer.php +++ b/core/modules/serialization/src/Normalizer/TimestampItemNormalizer.php @@ -16,11 +16,6 @@ */ class TimestampItemNormalizer extends FieldItemNormalizer { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = TimestampItem::class; - /** * {@inheritdoc} */ diff --git a/core/modules/serialization/src/Normalizer/TimestampNormalizer.php b/core/modules/serialization/src/Normalizer/TimestampNormalizer.php index 77c95469f4916c6cbfd34d35521fe2ad91191ee9..abc9f2ba8079b68b149f6c34e1312f5f1318861e 100644 --- a/core/modules/serialization/src/Normalizer/TimestampNormalizer.php +++ b/core/modules/serialization/src/Normalizer/TimestampNormalizer.php @@ -24,11 +24,6 @@ class TimestampNormalizer extends DateTimeNormalizer { 'RFC 3339' => \DateTime::RFC3339, ]; - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = Timestamp::class; - /** * {@inheritdoc} */ diff --git a/core/modules/serialization/src/Normalizer/TypedDataNormalizer.php b/core/modules/serialization/src/Normalizer/TypedDataNormalizer.php index 41ac788da7f560641f3c77ac2bf09fb40c6a14cc..f0572bb1bf3642e03ccf813e874e6fa0926a5c87 100644 --- a/core/modules/serialization/src/Normalizer/TypedDataNormalizer.php +++ b/core/modules/serialization/src/Normalizer/TypedDataNormalizer.php @@ -9,11 +9,6 @@ */ class TypedDataNormalizer extends NormalizerBase { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = TypedDataInterface::class; - /** * {@inheritdoc} */ diff --git a/core/modules/serialization/tests/modules/field_normalization_test/src/Normalization/TextItemSillyNormalizer.php b/core/modules/serialization/tests/modules/field_normalization_test/src/Normalization/TextItemSillyNormalizer.php index 620693bd65725e295e2cf9e13005ecc7590844d1..855b70d753cdc693bd46df333f3d7d3a05d2eee1 100644 --- a/core/modules/serialization/tests/modules/field_normalization_test/src/Normalization/TextItemSillyNormalizer.php +++ b/core/modules/serialization/tests/modules/field_normalization_test/src/Normalization/TextItemSillyNormalizer.php @@ -10,11 +10,6 @@ */ class TextItemSillyNormalizer extends FieldItemNormalizer { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = TextItemBase::class; - /** * {@inheritdoc} */ @@ -33,4 +28,11 @@ protected function constructValue($data, $context) { return $value; } + /** + * {@inheritdoc} + */ + public function getSupportedTypes(?string $format): array { + return [TextItemBase::class => TRUE]; + } + } diff --git a/core/modules/serialization/tests/modules/test_datatype_boolean_emoji_normalizer/src/Normalizer/BooleanNormalizer.php b/core/modules/serialization/tests/modules/test_datatype_boolean_emoji_normalizer/src/Normalizer/BooleanNormalizer.php index 7b132e47a913f8cf4e9141a0d8f6a99a631340f6..7cbda9aef2aa208f71c70a74e81dbd1c5de4b2da 100644 --- a/core/modules/serialization/tests/modules/test_datatype_boolean_emoji_normalizer/src/Normalizer/BooleanNormalizer.php +++ b/core/modules/serialization/tests/modules/test_datatype_boolean_emoji_normalizer/src/Normalizer/BooleanNormalizer.php @@ -11,11 +11,6 @@ */ class BooleanNormalizer extends NormalizerBase implements DenormalizerInterface { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = BooleanData::class; - /** * {@inheritdoc} */ @@ -36,8 +31,8 @@ public function denormalize($data, $class, $format = NULL, array $context = []): /** * {@inheritdoc} */ - public function hasCacheableSupportsMethod(): bool { - return TRUE; + public function getSupportedTypes(?string $format): array { + return [BooleanData::class => TRUE]; } } diff --git a/core/modules/serialization/tests/modules/test_fieldtype_boolean_emoji_normalizer/src/Normalizer/BooleanItemNormalizer.php b/core/modules/serialization/tests/modules/test_fieldtype_boolean_emoji_normalizer/src/Normalizer/BooleanItemNormalizer.php index b06e062263bdf0e1880dbdd517fdc511afc2ab1f..067e7129a41adaede7f65add20e2cbe4de9dfa6f 100644 --- a/core/modules/serialization/tests/modules/test_fieldtype_boolean_emoji_normalizer/src/Normalizer/BooleanItemNormalizer.php +++ b/core/modules/serialization/tests/modules/test_fieldtype_boolean_emoji_normalizer/src/Normalizer/BooleanItemNormalizer.php @@ -11,11 +11,6 @@ */ class BooleanItemNormalizer extends FieldItemNormalizer implements DenormalizerInterface { - /** - * {@inheritdoc} - */ - protected $supportedInterfaceOrClass = BooleanItem::class; - /** * {@inheritdoc} */ @@ -43,4 +38,11 @@ protected function constructValue($data, $context) { return $data; } + /** + * {@inheritdoc} + */ + public function getSupportedTypes(?string $format): array { + return [BooleanItem::class => TRUE]; + } + } diff --git a/core/modules/serialization/tests/src/Unit/Normalizer/NormalizerBaseTest.php b/core/modules/serialization/tests/src/Unit/Normalizer/NormalizerBaseTest.php index 63b9bf714d333a79b5300d76336a023a0db9eeb6..0a568093ba5b9bf8c83307294dce6025779ea7dc 100644 --- a/core/modules/serialization/tests/src/Unit/Normalizer/NormalizerBaseTest.php +++ b/core/modules/serialization/tests/src/Unit/Normalizer/NormalizerBaseTest.php @@ -68,6 +68,13 @@ public function providerTestSupportsNormalization() { */ abstract class TestNormalizerBase extends NormalizerBase { + /** + * The interface or class that this Normalizer supports. + * + * @var string[] + */ + protected array $supportedTypes = ['*' => FALSE]; + /** * Sets the protected supportedInterfaceOrClass property. * @@ -75,7 +82,14 @@ abstract class TestNormalizerBase extends NormalizerBase { * The class name to set. */ public function setSupportedInterfaceOrClass($supported_interface_or_class) { - $this->supportedInterfaceOrClass = $supported_interface_or_class; + $this->supportedTypes = [$supported_interface_or_class => FALSE]; + } + + /** + * {@inheritdoc} + */ + public function getSupportedTypes(?string $format): array { + return $this->supportedTypes; } }