diff --git a/core/lib/Drupal/Core/Cache/ConditionalCacheabilityMetadataBubblingTrait.php b/core/lib/Drupal/Core/Cache/ConditionalCacheabilityMetadataBubblingTrait.php index b8c4b33..8c91eba 100644 --- a/core/lib/Drupal/Core/Cache/ConditionalCacheabilityMetadataBubblingTrait.php +++ b/core/lib/Drupal/Core/Cache/ConditionalCacheabilityMetadataBubblingTrait.php @@ -14,7 +14,7 @@ trait ConditionalCacheabilityMetadataBubblingTrait { /** - * Bubbles cacheability metadata to the current render context. + * Bubbles cacheability metadata to the current render context, if any. * * This method does not bubble attachments. * diff --git a/core/modules/image/src/ImageServiceProvider.php b/core/modules/image/src/ImageServiceProvider.php index 51c25fa..04923cf 100644 --- a/core/modules/image/src/ImageServiceProvider.php +++ b/core/modules/image/src/ImageServiceProvider.php @@ -22,7 +22,6 @@ public function register(ContainerBuilder $container) { if (isset($modules['serialization'])) { // Add an ImageItem normalizer. $service_definition = new Definition(ImageItemNormalizer::class, [ - new Reference('entity_type.manager'), new Reference('renderer'), ]); // Priority should be higher than @@ -34,9 +33,8 @@ public function register(ContainerBuilder $container) { if (isset($modules['hal'])) { // Add an ImageItem normalizer. $service_definition = new Definition(ImageItemHalNormalizer::class, [ - new Reference('rest.link_manager'), + new Reference('serialization.link_manager'), new Reference('serializer.entity_resolver'), - new Reference('entity_type.manager'), new Reference('renderer'), ]); // Priority should be higher than diff --git a/core/modules/image/src/Normalizer/ImageItemHalNormalizer.php b/core/modules/image/src/Normalizer/ImageItemHalNormalizer.php index 905faba..c5b4c4e 100644 --- a/core/modules/image/src/Normalizer/ImageItemHalNormalizer.php +++ b/core/modules/image/src/Normalizer/ImageItemHalNormalizer.php @@ -3,11 +3,10 @@ namespace Drupal\image\Normalizer; use Drupal\Core\Cache\ConditionalCacheabilityMetadataBubblingTrait; -use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Render\RendererInterface; use Drupal\hal\Normalizer\EntityReferenceItemNormalizer; use Drupal\image\Plugin\Field\FieldType\ImageItem; -use Drupal\rest\LinkManager\LinkManagerInterface; +use Drupal\serialization\LinkManager\LinkManagerInterface; use Drupal\serialization\EntityResolver\EntityResolverInterface; /** @@ -20,13 +19,6 @@ class ImageItemHalNormalizer extends EntityReferenceItemNormalizer { use ImageItemNormalizerTrait; /** - * The entity type manager. - * - * @var \Drupal\Core\Entity\EntityTypeManagerInterface - */ - protected $entityTypeManager; - - /** * {@inheritdoc} */ protected $supportedInterfaceOrClass = ImageItem::class; @@ -41,18 +33,15 @@ class ImageItemHalNormalizer extends EntityReferenceItemNormalizer { /** * Constructs an ImageItemHalNormalizer object. * - * @param \Drupal\rest\LinkManager\LinkManagerInterface $link_manager + * @param Drupal\serialization\LinkManager\LinkManager $link_manager * The hypermedia link manager. * @param \Drupal\serialization\EntityResolver\EntityResolverInterface $entity_Resolver * The entity resolver. - * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager - * The entity type manager. * @param \Drupal\Core\Render\RendererInterface $renderer * The renderer. */ - public function __construct(LinkManagerInterface $link_manager, EntityResolverInterface $entity_Resolver, EntityTypeManagerInterface $entity_type_manager, RendererInterface $renderer) { + public function __construct(LinkManagerInterface $link_manager, EntityResolverInterface $entity_Resolver, RendererInterface $renderer) { parent::__construct($link_manager, $entity_Resolver); - $this->entityTypeManager = $entity_type_manager; $this->renderer = $renderer; } diff --git a/core/modules/image/src/Normalizer/ImageItemNormalizer.php b/core/modules/image/src/Normalizer/ImageItemNormalizer.php index 60dbf55..1754dd3 100644 --- a/core/modules/image/src/Normalizer/ImageItemNormalizer.php +++ b/core/modules/image/src/Normalizer/ImageItemNormalizer.php @@ -3,7 +3,6 @@ namespace Drupal\image\Normalizer; use Drupal\Core\Cache\ConditionalCacheabilityMetadataBubblingTrait; -use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Render\RendererInterface; use Drupal\image\Plugin\Field\FieldType\ImageItem; use Drupal\serialization\Normalizer\EntityReferenceFieldItemNormalizer; @@ -18,13 +17,6 @@ class ImageItemNormalizer extends EntityReferenceFieldItemNormalizer { use ImageItemNormalizerTrait; /** - * The entity type manager. - * - * @var \Drupal\Core\Entity\EntityTypeManagerInterface - */ - protected $entityTypeManager; - - /** * {@inheritdoc} */ protected $supportedInterfaceOrClass = ImageItem::class; @@ -39,26 +31,21 @@ class ImageItemNormalizer extends EntityReferenceFieldItemNormalizer { /** * Constructs an ImageItemNormalizer object. * - * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager - * The entity type manager. * @param \Drupal\Core\Render\RendererInterface $renderer * The renderer. */ - public function __construct(EntityTypeManagerInterface $entity_type_manager, RendererInterface $renderer) { - $this->entityTypeManager = $entity_type_manager; + public function __construct(RendererInterface $renderer) { $this->renderer = $renderer; } /** * {@inheritdoc} */ - public function normalize($object, $format = NULL, array $context = []) { - $data = parent::normalize($object, $format, $context); - if (empty($data['target_id'])) { - return $data; + public function normalize($field_item, $format = NULL, array $context = []) { + $data = parent::normalize($field_item, $format, $context); + if (!$field_item->isEmpty()) { + $this->addImageStyles($field_item, $data); } - $this->addImageStyles($object, $data); - return $data; } } diff --git a/core/modules/image/src/Normalizer/ImageItemNormalizerTrait.php b/core/modules/image/src/Normalizer/ImageItemNormalizerTrait.php index d8cba94..33ef4d5 100644 --- a/core/modules/image/src/Normalizer/ImageItemNormalizerTrait.php +++ b/core/modules/image/src/Normalizer/ImageItemNormalizerTrait.php @@ -2,6 +2,8 @@ namespace Drupal\image\Normalizer; +use Drupal\file\Entity\File; +use Drupal\image\Entity\ImageStyle; use Drupal\image\Plugin\Field\FieldType\ImageItem; /** @@ -19,11 +21,10 @@ */ protected function addImageStyles(ImageItem $item, array &$data) { /** @var \Drupal\file\FileInterface $image */ - if ($image = $this->entityTypeManager->getStorage('file')->load($item->target_id)) { + if ($image = File::load($item->target_id)) { $uri = $image->getFileUri(); /** @var \Drupal\image\ImageStyleInterface[] $styles */ - $styles = $this->entityTypeManager->getStorage('image_style') - ->loadMultiple(); + $styles = ImageStyle::loadMultiple(); $data['image_styles'] = []; foreach ($styles as $id => $style) { $dimensions = ['width' => $item->width, 'height' => $item->height]; diff --git a/core/modules/image/tests/src/Kernel/Normalizer/ImageItemHalNormalizerTest.php b/core/modules/image/tests/src/Kernel/Normalizer/ImageItemHalNormalizerTest.php index cf439d1..9bc916e 100644 --- a/core/modules/image/tests/src/Kernel/Normalizer/ImageItemHalNormalizerTest.php +++ b/core/modules/image/tests/src/Kernel/Normalizer/ImageItemHalNormalizerTest.php @@ -6,7 +6,7 @@ * @coversDefaultClass \Drupal\image\Normalizer\ImageItemHalNormalizer * @group image */ -class ImageItemHalNormalizerTest extends ImageItemNormalizerBase { +class ImageItemHalNormalizerTest extends ImageItemNormalizerTestBase { /** * {@inheritdoc} diff --git a/core/modules/image/tests/src/Kernel/Normalizer/ImageItemNormalizerTest.php b/core/modules/image/tests/src/Kernel/Normalizer/ImageItemNormalizerTest.php index 1224370..774afed 100644 --- a/core/modules/image/tests/src/Kernel/Normalizer/ImageItemNormalizerTest.php +++ b/core/modules/image/tests/src/Kernel/Normalizer/ImageItemNormalizerTest.php @@ -6,7 +6,7 @@ * @coversDefaultClass \Drupal\image\Normalizer\ImageItemNormalizer * @group image */ -class ImageItemNormalizerTest extends ImageItemNormalizerBase { +class ImageItemNormalizerTest extends ImageItemNormalizerTestBase { /** * {@inheritdoc} diff --git a/core/modules/image/tests/src/Kernel/Normalizer/ImageItemNormalizerBase.php b/core/modules/image/tests/src/Kernel/Normalizer/ImageItemNormalizerTestBase.php similarity index 93% rename from core/modules/image/tests/src/Kernel/Normalizer/ImageItemNormalizerBase.php rename to core/modules/image/tests/src/Kernel/Normalizer/ImageItemNormalizerTestBase.php index 07fac56..7e989e1 100644 --- a/core/modules/image/tests/src/Kernel/Normalizer/ImageItemNormalizerBase.php +++ b/core/modules/image/tests/src/Kernel/Normalizer/ImageItemNormalizerTestBase.php @@ -16,7 +16,7 @@ /** * Base class for ItemItemNormalizer testing. */ -abstract class ImageItemNormalizerBase extends KernelTestBase { +abstract class ImageItemNormalizerTestBase extends KernelTestBase { /** * {@inheritdoc} @@ -37,7 +37,6 @@ */ protected $image; - /** * The format to use in normalization. * @@ -51,7 +50,7 @@ protected function setUp() { parent::setUp(); - $this->serializer = \Drupal::service('serializer'); + $this->serializer = $this->container->get('serializer'); $this->installEntitySchema('entity_test'); $this->installEntitySchema('user'); @@ -60,12 +59,12 @@ protected function setUp() { $this->installConfig('image'); $this->installSchema('file', ['file_usage']); - FieldStorageConfig::create(array( + FieldStorageConfig::create([ 'entity_type' => 'entity_test', 'field_name' => 'image_test', 'type' => 'image', 'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED, - ))->save(); + ])->save(); FieldConfig::create([ 'entity_type' => 'entity_test', 'field_name' => 'image_test', @@ -107,12 +106,12 @@ public function testNormalize() { $entity = clone $original_entity; $context = new RenderContext(); - $data = $this->container->get('renderer') + $normalization = $this->container->get('renderer') ->executeInRenderContext($context, function () use ($entity) { return $this->serializer->normalize($entity, $this->format); }); - $normalized_image_styles = $this->getNormalizedImageStyles($data); + $normalized_image_styles = $this->getNormalizedImageStyles($normalization); $this->assertEquals($this->getExpectedCacheability(), $context->pop()); $expect_dimensions = [ 'large' => [ @@ -149,10 +148,10 @@ public function testNormalize() { abstract protected function getNormalizedImageStyles(array $normalization); /** - * Gets the expected cacheability metadata. + * Gets the expected bubbled cacheability metadata. * * @return \Drupal\Core\Render\BubbleableMetadata - * The cacheability metadata. + * The expected bubbled cacheability metadata. */ protected function getExpectedCacheability() { $cacheability = new BubbleableMetadata();