diff --git a/core/modules/hal/hal.services.yml b/core/modules/hal/hal.services.yml index 7f3e405c0a6c9bd39ee8b15bd05339ac5be8fbce..ad5c5f6aa20504dd8516a5211545567a17e42104 100644 --- a/core/modules/hal/hal.services.yml +++ b/core/modules/hal/hal.services.yml @@ -1,29 +1,22 @@ services: serializer.normalizer.entity_reference_item.hal: class: Drupal\hal\Normalizer\EntityReferenceItemNormalizer + arguments: ['@rest.link_manager', '@serializer.entity_resolver'] tags: - { name: normalizer, priority: 10 } - calls: - - [setLinkManager, ['@rest.link_manager']] - - [setEntityResolver, ['@serializer.entity_resolver']] serializer.normalizer.field_item.hal: class: Drupal\hal\Normalizer\FieldItemNormalizer tags: - { name: normalizer, priority: 10 } - calls: - - [setLinkManager, ['@rest.link_manager']] serializer.normalizer.field.hal: class: Drupal\hal\Normalizer\FieldNormalizer tags: - { name: normalizer, priority: 10 } - calls: - - [setLinkManager, ['@rest.link_manager']] serializer.normalizer.entity.hal: class: Drupal\hal\Normalizer\EntityNormalizer + arguments: ['@rest.link_manager'] tags: - { name: normalizer, priority: 10 } - calls: - - [setLinkManager, ['@rest.link_manager']] serializer.encoder.hal: class: Drupal\hal\Encoder\JsonEncoder tags: diff --git a/core/modules/hal/lib/Drupal/hal/Normalizer/EntityNormalizer.php b/core/modules/hal/lib/Drupal/hal/Normalizer/EntityNormalizer.php index bd0e74191c935c82a430cb287b29c28119d0fcaa..4b5b9270800d61a799cf60b18908a2597d861b6c 100644 --- a/core/modules/hal/lib/Drupal/hal/Normalizer/EntityNormalizer.php +++ b/core/modules/hal/lib/Drupal/hal/Normalizer/EntityNormalizer.php @@ -8,8 +8,8 @@ namespace Drupal\hal\Normalizer; use Drupal\Component\Utility\NestedArray; -use Drupal\Core\Entity\ContentEntityBase; use Drupal\Core\Language\Language; +use Drupal\rest\LinkManager\LinkManagerInterface; use Symfony\Component\Serializer\Exception\UnexpectedValueException; /** @@ -24,6 +24,23 @@ class EntityNormalizer extends NormalizerBase { */ protected $supportedInterfaceOrClass = 'Drupal\Core\Entity\EntityInterface'; + /** + * The hypermedia link manager. + * + * @var \Drupal\rest\LinkManager\LinkManagerInterface + */ + protected $linkManager; + + /** + * Constructs an EntityNormalizer object. + * + * @param \Drupal\rest\LinkManager\LinkManagerInterface $link_manager + * The hypermedia link manager. + */ + public function __construct(LinkManagerInterface $link_manager) { + $this->linkManager = $link_manager; + } + /** * Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize() */ diff --git a/core/modules/hal/lib/Drupal/hal/Normalizer/EntityReferenceItemNormalizer.php b/core/modules/hal/lib/Drupal/hal/Normalizer/EntityReferenceItemNormalizer.php index 7152070ab9fa21eef911f60f96d8e9993f7d6ecd..1ffc72faa51326fd37fa023518808c49253d7a14 100644 --- a/core/modules/hal/lib/Drupal/hal/Normalizer/EntityReferenceItemNormalizer.php +++ b/core/modules/hal/lib/Drupal/hal/Normalizer/EntityReferenceItemNormalizer.php @@ -7,6 +7,8 @@ namespace Drupal\hal\Normalizer; +use Drupal\rest\LinkManager\LinkManagerInterface; +use Drupal\serialization\EntityResolver\EntityResolverInterface; use Drupal\serialization\EntityResolver\UuidReferenceInterface; /** @@ -21,6 +23,33 @@ class EntityReferenceItemNormalizer extends FieldItemNormalizer implements UuidR */ protected $supportedInterfaceOrClass = 'Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem'; + /** + * The hypermedia link manager. + * + * @var \Drupal\rest\LinkManager\LinkManagerInterface + */ + protected $linkManager; + + /** + * The entity resolver. + * + * @var \Drupal\serialization\EntityResolver\EntityResolverInterface + */ + protected $entityResolver; + + /** + * Constructs an EntityReferenceItemNormalizer object. + * + * @param \Drupal\rest\LinkManager\LinkManagerInterface $link_manager + * The hypermedia link manager. + * @param \Drupal\serialization\EntityResolver\EntityResolverInterface $entity_Resolver + * The entity resolver. + */ + public function __construct(LinkManagerInterface $link_manager, EntityResolverInterface $entity_Resolver) { + $this->linkManager = $link_manager; + $this->entityResolver = $entity_Resolver; + } + /** * Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::normalize() */ diff --git a/core/modules/hal/lib/Drupal/hal/Normalizer/FieldNormalizer.php b/core/modules/hal/lib/Drupal/hal/Normalizer/FieldNormalizer.php index c2d160b57a3a77a1bc1966272809c601e3dc6e21..2648998f927f1b17b0e396eff1cd27e0f3574857 100644 --- a/core/modules/hal/lib/Drupal/hal/Normalizer/FieldNormalizer.php +++ b/core/modules/hal/lib/Drupal/hal/Normalizer/FieldNormalizer.php @@ -8,8 +8,6 @@ namespace Drupal\hal\Normalizer; use Drupal\Component\Utility\NestedArray; -use Drupal\Core\Language\Language; - use Symfony\Component\Serializer\Exception\LogicException; /** diff --git a/core/modules/hal/lib/Drupal/hal/Normalizer/NormalizerBase.php b/core/modules/hal/lib/Drupal/hal/Normalizer/NormalizerBase.php index 769f4f9427d7ac636e6ac8a8a098aab7db4f4a63..7d762f5df5e24ba231498ae3295ef4a5bb50a9af 100644 --- a/core/modules/hal/lib/Drupal/hal/Normalizer/NormalizerBase.php +++ b/core/modules/hal/lib/Drupal/hal/Normalizer/NormalizerBase.php @@ -23,20 +23,6 @@ abstract class NormalizerBase extends SerializationNormalizerBase implements Den */ protected $formats = array('hal_json'); - /** - * The entity resolver. - * - * @var \Drupal\serialization\EntityResolver\EntityResolverInterface - */ - protected $entityResolver; - - /** - * The hypermedia link manager. - * - * @var \Drupal\rest\LinkManager\LinkManager - */ - protected $linkManager; - /** * Implements \Symfony\Component\Serializer\Normalizer\NormalizerInterface::supportsNormalization(). */ @@ -60,27 +46,4 @@ public function supportsDenormalization($data, $type, $format = NULL) { } } - /** - * Sets the link manager. - * - * The link manager determines the hypermedia type and relation links which - * correspond to different bundles and fields. - * - * @param \Drupal\rest\LinkManager\LinkManager $link_manager - */ - public function setLinkManager($link_manager) { - $this->linkManager = $link_manager; - } - - /** - * Sets the entity resolver. - * - * The entity resolver is used to - * - * @param \Drupal\serialization\EntityResolver\EntityResolverInterface $entity_resolver - */ - public function setEntityResolver(EntityResolverInterface $entity_resolver) { - $this->entityResolver = $entity_resolver; - } - } diff --git a/core/modules/hal/lib/Drupal/hal/Tests/NormalizerTestBase.php b/core/modules/hal/lib/Drupal/hal/Tests/NormalizerTestBase.php index 3b2372cc3d139baecbf04d85c8eba0b42eb12ef3..bc07d77b2817cc052821016f04ca0bb4ce7870ca 100644 --- a/core/modules/hal/lib/Drupal/hal/Tests/NormalizerTestBase.php +++ b/core/modules/hal/lib/Drupal/hal/Tests/NormalizerTestBase.php @@ -17,6 +17,7 @@ use Drupal\rest\LinkManager\LinkManager; use Drupal\rest\LinkManager\RelationLinkManager; use Drupal\rest\LinkManager\TypeLinkManager; +use Drupal\serialization\EntityResolver\UuidResolver; use Drupal\simpletest\DrupalUnitTestBase; use Symfony\Component\Serializer\Serializer; @@ -119,17 +120,16 @@ function setUp() { 'bundle' => 'entity_test', ))->save(); + $link_manager = new LinkManager(new TypeLinkManager(new MemoryBackend('cache')), new RelationLinkManager(new MemoryBackend('cache'))); + // Set up the mock serializer. $normalizers = array( - new EntityNormalizer(), - new EntityReferenceItemNormalizer(), + new EntityNormalizer($link_manager), + new EntityReferenceItemNormalizer($link_manager, new UuidResolver()), new FieldItemNormalizer(), new FieldNormalizer(), ); - $link_manager = new LinkManager(new TypeLinkManager(new MemoryBackend('cache')), new RelationLinkManager(new MemoryBackend('cache'))); - foreach ($normalizers as $normalizer) { - $normalizer->setLinkManager($link_manager); - } + $encoders = array( new JsonEncoder(), );