diff --git a/default_content.services.yml b/default_content.services.yml index 7878912..7b26f69 100644 --- a/default_content.services.yml +++ b/default_content.services.yml @@ -5,7 +5,7 @@ services: class: Drupal\default_content\Scanner default_content.importer: class: Drupal\default_content\Importer - arguments: ['@serializer', '@entity_type.manager', '@hal.link_manager', '@event_dispatcher', '@default_content.scanner', '%default_content.link_domain%', '@account_switcher', '@entity.repository'] + arguments: ['@serializer', '@entity_type.manager', '@hal.link_manager', '@event_dispatcher', '@default_content.scanner', '%default_content.link_domain%', '@account_switcher'] default_content.exporter: class: Drupal\default_content\Exporter arguments: ['@serializer', '@entity_type.manager', '@entity.repository', '@hal.link_manager', '@event_dispatcher', '@module_handler', '@info_parser', '%default_content.link_domain%'] diff --git a/src/Importer.php b/src/Importer.php index faee2ef..0c4febc 100644 --- a/src/Importer.php +++ b/src/Importer.php @@ -87,13 +87,6 @@ class Importer implements ImporterInterface { protected $accountSwitcher; /** - * The entity repository manager. - * - * @var \Drupal\Core\Entity\EntityRepositoryInterface - */ - protected $entityRepository; - - /** * Constructs the default content manager. * * @param \Symfony\Component\Serializer\Serializer $serializer @@ -110,10 +103,8 @@ class Importer implements ImporterInterface { * Defines relation domain URI for entity links. * @param \Drupal\Core\Session\AccountSwitcherInterface $account_switcher * The account switcher. - * @param \Drupal\Core\Entity\EntityRepositoryInterface $entity_repository_manager - * The entity repository manager service. */ - public function __construct(Serializer $serializer, EntityTypeManagerInterface $entity_type_manager, LinkManagerInterface $link_manager, EventDispatcherInterface $event_dispatcher, ScannerInterface $scanner, $link_domain, AccountSwitcherInterface $account_switcher, EntityRepositoryInterface $entity_repository_manager) { + public function __construct(Serializer $serializer, EntityTypeManagerInterface $entity_type_manager, LinkManagerInterface $link_manager, EventDispatcherInterface $event_dispatcher, ScannerInterface $scanner, $link_domain, AccountSwitcherInterface $account_switcher) { $this->serializer = $serializer; $this->entityTypeManager = $entity_type_manager; $this->linkManager = $link_manager; @@ -121,7 +112,6 @@ class Importer implements ImporterInterface { $this->scanner = $scanner; $this->linkDomain = $link_domain; $this->accountSwitcher = $account_switcher; - $this->entityRepository = $entity_repository_manager; } /** @@ -194,11 +184,10 @@ class Importer implements ImporterInterface { $file = $file_map[$link]; $entity_type_id = $file->entity_type_id; $entity_type = $definitions[$entity_type_id]; - $class = $entity_type->getClass(); $contents = $this->parseFile($file); /* @var $entity \Drupal\Core\Entity\EntityInterface */ - $entity = $this->serializer->deserialize($contents, $class, 'hal_json', ['request_method' => 'POST']); + $entity = $this->serializer->deserialize($contents, $entity_type->getClass(), 'hal_json', ['request_method' => 'POST']); // We want to explicitly ignore any exported IDs introduced // as part of https://www.drupal.org/node/2304849 @@ -208,9 +197,11 @@ class Importer implements ImporterInterface { } $is_new = TRUE; - // @todo Catch exceptions for entities without UUID field or fallback - // to loading entity by original ID. - $old_entity = $this->entityRepository->loadEntityByUuid($entity_type_id, $entity->uuid()); + // @todo Search entity by parsed ID to prevent exceptions. + $old_entity = $this->entityTypeManager + ->getStorage($entity_type_id) + ->loadByProperties([$entity_type->getKey('uuid') => $entity->uuid()]); + $old_entity = reset($old_entity); if ($old_entity && $update_existing) { $original_id = $old_entity->id();