From c1ceedb7b0cafe9b3c41e1d69297c469d99bc28c Mon Sep 17 00:00:00 2001 From: Lee Rowlands <lee.rowlands@previousnext.com.au> Date: Mon, 6 Sep 2021 09:28:36 +1000 Subject: [PATCH] Issue #3225034 by bbrala: Simplify ResourceTypeRepository control flow for returning cached data --- .../ResourceType/ResourceTypeRepository.php | 37 ++++++++++--------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/core/modules/jsonapi/src/ResourceType/ResourceTypeRepository.php b/core/modules/jsonapi/src/ResourceType/ResourceTypeRepository.php index 683fbd9a8b00..faa7017455c5 100644 --- a/core/modules/jsonapi/src/ResourceType/ResourceTypeRepository.php +++ b/core/modules/jsonapi/src/ResourceType/ResourceTypeRepository.php @@ -118,24 +118,27 @@ public function __construct(EntityTypeManagerInterface $entity_type_manager, Ent */ public function all() { $cached = $this->cache->get('jsonapi.resource_types', FALSE); - if ($cached === FALSE) { - $resource_types = []; - foreach ($this->entityTypeManager->getDefinitions() as $entity_type) { - $bundles = array_keys($this->entityTypeBundleInfo->getBundleInfo($entity_type->id())); - $resource_types = array_reduce($bundles, function ($resource_types, $bundle) use ($entity_type) { - $resource_type = $this->createResourceType($entity_type, (string) $bundle); - return array_merge($resource_types, [ - $resource_type->getTypeName() => $resource_type, - ]); - }, $resource_types); - } - foreach ($resource_types as $resource_type) { - $relatable_resource_types = $this->calculateRelatableResourceTypes($resource_type, $resource_types); - $resource_type->setRelatableResourceTypes($relatable_resource_types); - } - $this->cache->set('jsonapi.resource_types', $resource_types, Cache::PERMANENT, $this->cacheTags); + if ($cached) { + return $cached->data; } - return $cached ? $cached->data : $resource_types; + + $resource_types = []; + foreach ($this->entityTypeManager->getDefinitions() as $entity_type) { + $bundles = array_keys($this->entityTypeBundleInfo->getBundleInfo($entity_type->id())); + $resource_types = array_reduce($bundles, function ($resource_types, $bundle) use ($entity_type) { + $resource_type = $this->createResourceType($entity_type, (string) $bundle); + return array_merge($resource_types, [ + $resource_type->getTypeName() => $resource_type, + ]); + }, $resource_types); + } + foreach ($resource_types as $resource_type) { + $relatable_resource_types = $this->calculateRelatableResourceTypes($resource_type, $resource_types); + $resource_type->setRelatableResourceTypes($relatable_resource_types); + } + $this->cache->set('jsonapi.resource_types', $resource_types, Cache::PERMANENT, $this->cacheTags); + + return $resource_types; } /** -- GitLab