From a50411ad1de80f5845b5af4525faf00c5311c25d Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Thu, 18 May 2023 11:39:01 +0100 Subject: [PATCH] Issue #3360124 by andypost, elber: Deprecate ::supportedInterfaceOrClass property on normalizer/denormalizers --- .../Normalizer/ConfigEntityDenormalizer.php | 5 ---- .../Normalizer/ContentEntityDenormalizer.php | 5 ---- .../jsonapi/src/Normalizer/DataNormalizer.php | 5 ---- ...ityAccessDeniedHttpExceptionNormalizer.php | 5 ---- .../EntityReferenceFieldNormalizer.php | 5 ---- .../src/Normalizer/FieldItemNormalizer.php | 7 ------ .../src/Normalizer/FieldNormalizer.php | 7 ------ .../Normalizer/HttpExceptionNormalizer.php | 7 ------ .../JsonApiDocumentTopLevelNormalizer.php | 5 ---- .../Normalizer/LinkCollectionNormalizer.php | 5 ---- .../src/Normalizer/RelationshipNormalizer.php | 5 ---- .../ResourceIdentifierNormalizer.php | 5 ---- .../Normalizer/ResourceObjectNormalizer.php | 5 ---- ...ocessableHttpEntityExceptionNormalizer.php | 7 ------ .../src/Normalizer/StringNormalizer.php | 9 ++------ .../TraversableObjectNormalizer.php | 9 ++------ .../src/Normalizer/StringNormalizer.php | 12 ++++++---- .../LayoutEntityDisplayNormalizer.php | 11 ++++----- .../src/Normalizer/ComplexDataNormalizer.php | 5 ---- .../src/Normalizer/ConfigEntityNormalizer.php | 5 ---- .../Normalizer/ContentEntityNormalizer.php | 5 ---- .../Normalizer/DateTimeIso8601Normalizer.php | 5 ---- .../src/Normalizer/DateTimeNormalizer.php | 5 ---- .../src/Normalizer/EntityNormalizer.php | 5 ---- .../EntityReferenceFieldItemNormalizer.php | 5 ---- .../src/Normalizer/FieldItemNormalizer.php | 5 ---- .../src/Normalizer/FieldNormalizer.php | 5 ---- .../src/Normalizer/ListNormalizer.php | 11 ++++----- .../src/Normalizer/MarkupNormalizer.php | 5 ---- .../src/Normalizer/NormalizerBase.php | 23 +++++++++++-------- .../src/Normalizer/NullNormalizer.php | 16 ++++++++++++- .../Normalizer/PrimitiveDataNormalizer.php | 5 ---- .../Normalizer/TimestampItemNormalizer.php | 5 ---- .../src/Normalizer/TimestampNormalizer.php | 5 ---- .../src/Normalizer/TypedDataNormalizer.php | 5 ---- .../Normalization/TextItemSillyNormalizer.php | 12 ++++++---- .../src/Normalizer/BooleanNormalizer.php | 9 ++------ .../src/Normalizer/BooleanItemNormalizer.php | 12 ++++++---- .../Unit/Normalizer/NormalizerBaseTest.php | 16 ++++++++++++- 39 files changed, 79 insertions(+), 209 deletions(-) diff --git a/core/modules/jsonapi/src/Normalizer/ConfigEntityDenormalizer.php b/core/modules/jsonapi/src/Normalizer/ConfigEntityDenormalizer.php index 95a6f30469bc..d803f6e3008b 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 f513e787bf0b..112c02212a41 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 67217fceb2a7..7c3a039552e2 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 beedcc24be02..0b608f48b22a 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 79561f22c74e..0c379138f251 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 0dcca6bff3ce..82fbd0ecde28 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 159f7eb38123..fd1fd1bb6019 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 3ba7ea111d0c..73700aa0fd2a 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 5df231f449d9..d12ec670f41e 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 acd299766a9b..96a50bc3e446 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 09fd83168f5a..90e2d79cb689 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 a7d66623f0c2..87454df8d750 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 53671cd2b930..dfcbc3ca9b2e 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 9a155296d8de..5635c24fe6fb 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 90cf00e2e9b0..5694d161a543 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 daca730a4b32..b2b493cb4caf 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 1c6f306a4e5d..20d901e11bbb 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 21fafe0f64ee..a992b46ecd4b 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 3c950308c719..008216b60f62 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 6c24a270f67f..589e92dcd3ce 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 7f8055eef90c..94ecc50a8ba5 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 9139853b4460..12e79be415b5 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 85e256641725..c1fdf1fb1834 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 25557776622d..d20e3b68a63f 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 8a0277f39a52..086f772e4802 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 a12ebddc5726..90efb55bc5dc 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 e1067f7bcec5..06b545982696 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 f333944cbcb2..44a2ef742ec8 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 167fbd6f0e32..f7ba6bb1e58d 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 c3c344b5ca3c..ff0a13fc1c79 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 2479711b4bb8..63d7c24e7283 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 78ec3e187559..785104ef1404 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 d0cda8ceec67..2cfdd63ee025 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 77c95469f491..abc9f2ba8079 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 41ac788da7f5..f0572bb1bf36 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 620693bd6572..855b70d753cd 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 7b132e47a913..7cbda9aef2aa 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 b06e062263bd..067e7129a41a 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 63b9bf714d33..0a568093ba5b 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; } } -- GitLab