src/Normalizer/EntityReferenceFieldNormalizer.php | 10 ++++++---- tests/src/Functional/JsonApiFunctionalTest.php | 9 +++------ 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/Normalizer/EntityReferenceFieldNormalizer.php b/src/Normalizer/EntityReferenceFieldNormalizer.php index 9eb5bb3..8d8f141 100644 --- a/src/Normalizer/EntityReferenceFieldNormalizer.php +++ b/src/Normalizer/EntityReferenceFieldNormalizer.php @@ -10,6 +10,7 @@ use Drupal\jsonapi\Configuration\ResourceManagerInterface; use Drupal\jsonapi\EntityCollection; use Drupal\jsonapi\Error\SerializableHttpException; use Drupal\jsonapi\LinkManager\LinkManagerInterface; +use Drupal\jsonapi\Plugin\jsonapi\resource_type\EntityJsonApiResourceType; use Drupal\jsonapi\Relationship; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; @@ -87,10 +88,10 @@ class EntityReferenceFieldNormalizer extends FieldNormalizer implements Denormal */ public function denormalize($data, $class, $format = NULL, array $context = array()) { // If we get to here is through a write method on a relationship operation. - $entity_type_id = $context['resource_config']->getEntityTypeId(); + $entity_type_id = EntityJsonApiResourceType::getEntityTypeIdForJsonApiResourceType($context['resource_config']['type']); $field_definitions = $this->fieldManager->getFieldDefinitions( $entity_type_id, - $context['resource_config']->getBundleId() + EntityJsonApiResourceType::getBundleForJsonApiResourceType($context['resource_config']['type']) ); if (empty($context['related']) || empty($field_definitions[$context['related']])) { throw new SerializableHttpException(400, 'Invalid or missing related field.'); @@ -104,7 +105,7 @@ class EntityReferenceFieldNormalizer extends FieldNormalizer implements Denormal $is_multiple = $field_definition->getFieldStorageDefinition()->isMultiple(); $data = $this->massageRelationshipInput($data, $is_multiple); - $id_key = $context['resource_config']->getIdKey(); + $id_key = 'uuid'; $values = array_map(function ($value) use ($property_key, $target_resources, $id_key) { // Make sure that the provided type is compatible with the targeted // resource. @@ -120,7 +121,8 @@ class EntityReferenceFieldNormalizer extends FieldNormalizer implements Denormal if ($id_key !== 'id') { // Load the entity by the selected property. list($entity_type_id,) = explode('--', $value['type']); - $storage = $this->resourceManager->getEntityTypeManager() + $storage = \Drupal::getContainer() + ->get('entity_type.manager') ->getStorage($entity_type_id); $entities = $storage->loadByProperties([$id_key => $value['id']]); $entity = reset($entities); diff --git a/tests/src/Functional/JsonApiFunctionalTest.php b/tests/src/Functional/JsonApiFunctionalTest.php index 483c7c9..dbbb9a5 100644 --- a/tests/src/Functional/JsonApiFunctionalTest.php +++ b/tests/src/Functional/JsonApiFunctionalTest.php @@ -354,11 +354,8 @@ class JsonApiFunctionalTest extends BrowserTestBase { ])); $this->assertSession()->statusCodeEquals(200); $this->assertGreaterThanOrEqual(2, count($single_output['included'])); - // 17. Test filtering on the same field. - Json::decode($this->drupalGet('api/menu/menu')); - $this->assertSession()->statusCodeEquals(404); - // 18. Single user (check fields lacking 'view' access). - $user_url = Url::fromRoute('api.dynamic.user--user.individual', [ + // 17. Single user (check fields lacking 'view' access). + $user_url = Url::fromRoute('jsonapi.user--user.individual', [ 'user' => $this->user->uuid(), ]); $response = $this->request('GET', $user_url, [ @@ -537,7 +534,7 @@ class JsonApiFunctionalTest extends BrowserTestBase { ], ], ]; - $relationship_url = Url::fromRoute('api.dynamic.node--article.relationship', [ + $relationship_url = Url::fromRoute('jsonapi.node--article.relationship', [ 'node' => $uuid, 'related' => 'field_tags', ]);