diff --git a/src/Controller/EntityResource.php b/src/Controller/EntityResource.php index 0d10fe3..224294f 100644 --- a/src/Controller/EntityResource.php +++ b/src/Controller/EntityResource.php @@ -9,7 +9,6 @@ use Drupal\Core\Config\Entity\ConfigEntityInterface; use Drupal\Core\Entity\ContentEntityInterface; use Drupal\Core\Entity\EntityFieldManagerInterface; use Drupal\Core\Entity\EntityInterface; -use Drupal\Core\Entity\EntityRepositoryInterface; use Drupal\Core\Entity\EntityStorageInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Entity\FieldableEntityInterface; @@ -78,13 +77,6 @@ class EntityResource { protected $pluginManager; /** - * The entity repository. - * - * @var \Drupal\Core\Entity\EntityRepositoryInterface - */ - protected $entityRepository; - - /** * Instantiates a EntityResource object. * * @param \Drupal\jsonapi\ResourceType\ResourceType $resource_type @@ -99,17 +91,14 @@ class EntityResource { * The current context. * @param \Drupal\Core\Field\FieldTypePluginManagerInterface $plugin_manager * The plugin manager for fields. - * @param \Drupal\Core\Entity\EntityRepositoryInterface $entity_repository - * The entity repository. */ - public function __construct(ResourceType $resource_type, EntityTypeManagerInterface $entity_type_manager, QueryBuilder $query_builder, EntityFieldManagerInterface $field_manager, CurrentContext $current_context, FieldTypePluginManagerInterface $plugin_manager, EntityRepositoryInterface $entity_repository) { + public function __construct(ResourceType $resource_type, EntityTypeManagerInterface $entity_type_manager, QueryBuilder $query_builder, EntityFieldManagerInterface $field_manager, CurrentContext $current_context, FieldTypePluginManagerInterface $plugin_manager) { $this->resourceType = $resource_type; $this->entityTypeManager = $entity_type_manager; $this->queryBuilder = $query_builder; $this->fieldManager = $field_manager; $this->currentContext = $current_context; $this->pluginManager = $plugin_manager; - $this->entityRepository = $entity_repository; } /** @@ -709,8 +698,7 @@ class EntityResource { protected function loadEntitiesWithAccess(EntityStorageInterface $storage, $ids) { $output = []; foreach ($storage->loadMultiple($ids) as $entity) { - $translated_entity = $this->entityRepository->getTranslationFromContext($entity, NULL, ['operation' => 'entity_upcast']); - $output[$entity->id()] = static::getEntityAndAccess($translated_entity); + $output[$entity->id()] = static::getEntityAndAccess($entity); } return $output; } @@ -727,6 +715,9 @@ class EntityResource { * - access: the access object. */ public static function getEntityAndAccess(EntityInterface $entity) { + /** @var \Drupal\Core\Entity\EntityRepositoryInterface $entity_repository */ + $entity_repository = \Drupal::service('entity.repository'); + $entity = $entity_repository->getTranslationFromContext($entity, NULL, ['operation' => 'entity_upcast']); $access = $entity->access('view', NULL, TRUE); // Accumulate the cacheability metadata for the access. $output = [ diff --git a/tests/src/Kernel/Controller/EntityResourceTest.php b/tests/src/Kernel/Controller/EntityResourceTest.php index d37dfd3..93e8609 100644 --- a/tests/src/Kernel/Controller/EntityResourceTest.php +++ b/tests/src/Kernel/Controller/EntityResourceTest.php @@ -241,8 +241,7 @@ class EntityResourceTest extends JsonapiKernelTestBase { $this->container->get('jsonapi.query_builder'), $field_manager, $current_context, - $this->container->get('plugin.manager.field.field_type'), - $this->container->get('entity.repository') + $this->container->get('plugin.manager.field.field_type') ); // Get the response. @@ -295,8 +294,7 @@ class EntityResourceTest extends JsonapiKernelTestBase { $this->container->get('jsonapi.query_builder'), $field_manager, $current_context, - $this->container->get('plugin.manager.field.field_type'), - $this->container->get('entity.repository') + $this->container->get('plugin.manager.field.field_type') ); // Get the response. @@ -350,8 +348,7 @@ class EntityResourceTest extends JsonapiKernelTestBase { $this->container->get('jsonapi.query_builder'), $field_manager, $current_context, - $this->container->get('plugin.manager.field.field_type'), - $this->container->get('entity.repository') + $this->container->get('plugin.manager.field.field_type') ); // Get the response. @@ -854,8 +851,7 @@ class EntityResourceTest extends JsonapiKernelTestBase { $this->container->get('jsonapi.query_builder'), $this->container->get('entity_field.manager'), $current_context, - $this->container->get('plugin.manager.field.field_type'), - $this->container->get('entity.repository') + $this->container->get('plugin.manager.field.field_type') ); }