diff --git a/src/Umbraco.Cms.Api.Delivery/Services/ApiMediaQueryService.cs b/src/Umbraco.Cms.Api.Delivery/Services/ApiMediaQueryService.cs index 09fd3649b2..1265ee42b3 100644 --- a/src/Umbraco.Cms.Api.Delivery/Services/ApiMediaQueryService.cs +++ b/src/Umbraco.Cms.Api.Delivery/Services/ApiMediaQueryService.cs @@ -66,12 +66,7 @@ internal sealed class ApiMediaQueryService : IApiMediaQueryService private IPublishedContent? TryGetByPath(string path, IPublishedMediaCache mediaCache) { var segments = path.Split(Constants.CharArrays.ForwardSlash, StringSplitOptions.RemoveEmptyEntries); - if (_mediaNavigationQueryService.TryGetRootKeys(out IEnumerable rootKeys) is false) - { - return null; - } - - IEnumerable currentChildren = rootKeys.Select(x => mediaCache.GetById(false, x)).WhereNotNull(); + IEnumerable currentChildren = GetRootContent(mediaCache); IPublishedContent? resolvedMedia = null; foreach (var segment in segments) @@ -106,9 +101,9 @@ internal sealed class ApiMediaQueryService : IApiMediaQueryService } IPublishedMediaCache mediaCache = GetRequiredPublishedMediaCache(); - if (childrenOf.Trim(Constants.CharArrays.ForwardSlash).Length == 0 && _mediaNavigationQueryService.TryGetRootKeys(out IEnumerable rootKeys)) + if (childrenOf.Trim(Constants.CharArrays.ForwardSlash).Length == 0) { - return rootKeys.Select(x => mediaCache.GetById(false, x)).WhereNotNull(); + return GetRootContent(mediaCache); } IPublishedContent? parent = Guid.TryParse(childrenOf, out Guid parentKey) @@ -201,4 +196,8 @@ internal sealed class ApiMediaQueryService : IApiMediaQueryService return Attempt.SucceedWithStatus(ApiMediaQueryOperationStatus.Success, result); } + + private IEnumerable GetRootContent(IPublishedMediaCache mediaCache) + => _mediaNavigationQueryService.TryGetRootKeys(out IEnumerable rootKeys) is false ? [] + : rootKeys.Select(x => mediaCache.GetById(false, x)).WhereNotNull(); } diff --git a/src/Umbraco.PublishedCache.HybridCache/DocumentCache.cs b/src/Umbraco.PublishedCache.HybridCache/DocumentCache.cs index e4ccee3eb4..6e48b6f450 100644 --- a/src/Umbraco.PublishedCache.HybridCache/DocumentCache.cs +++ b/src/Umbraco.PublishedCache.HybridCache/DocumentCache.cs @@ -1,4 +1,3 @@ -using Umbraco.Cms.Core; using Umbraco.Cms.Core.Models.PublishedContent; using Umbraco.Cms.Core.PublishedCache; using Umbraco.Cms.Core.Routing; @@ -45,7 +44,10 @@ public sealed class DocumentCache : IPublishedContentCache public IEnumerable GetAtRoot(bool preview, string? culture = null) { - _documentNavigationQueryService.TryGetRootKeys(out IEnumerable rootKeys); + if (_documentNavigationQueryService.TryGetRootKeys(out IEnumerable rootKeys) is false) + { + return []; + } IEnumerable rootContent = rootKeys.Select(key => GetById(preview, key)).WhereNotNull(); return culture is null ? rootContent : rootContent.Where(x => x.IsInvariantOrHasCulture(culture)); diff --git a/src/Umbraco.PublishedCache.HybridCache/MediaCache.cs b/src/Umbraco.PublishedCache.HybridCache/MediaCache.cs index 368869c530..afe42be8ae 100644 --- a/src/Umbraco.PublishedCache.HybridCache/MediaCache.cs +++ b/src/Umbraco.PublishedCache.HybridCache/MediaCache.cs @@ -1,4 +1,3 @@ -using Umbraco.Cms.Core; using Umbraco.Cms.Core.Models.PublishedContent; using Umbraco.Cms.Core.PublishedCache; using Umbraco.Cms.Core.Services.Navigation; @@ -35,7 +34,10 @@ public sealed class MediaCache : IPublishedMediaCache public IEnumerable GetAtRoot(bool preview, string? culture = null) { - _mediaNavigationQueryService.TryGetRootKeys(out IEnumerable rootKeys); + if (_mediaNavigationQueryService.TryGetRootKeys(out IEnumerable rootKeys) is false) + { + return []; + } IEnumerable rootContent = rootKeys.Select(key => GetById(preview, key)).WhereNotNull(); return culture is null ? rootContent : rootContent.Where(x => x.IsInvariantOrHasCulture(culture)); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Web.Website/Routing/UmbracoRouteValueTransformerTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Web.Website/Routing/UmbracoRouteValueTransformerTests.cs index a03f4db102..42d45df322 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Web.Website/Routing/UmbracoRouteValueTransformerTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Web.Website/Routing/UmbracoRouteValueTransformerTests.cs @@ -1,6 +1,4 @@ using System.Reflection; -using System.Threading.Tasks; -using Lucene.Net.Search.Similarities; using Microsoft.AspNetCore.DataProtection; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Controllers; @@ -13,15 +11,11 @@ using Moq; using NUnit.Framework; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Configuration.Models; -using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models.PublishedContent; -using Umbraco.Cms.Core.PublishedCache; using Umbraco.Cms.Core.Routing; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Web; -using Umbraco.Cms.Tests.UnitTests.TestHelpers; using Umbraco.Cms.Web.Common.Controllers; -using Umbraco.Cms.Web.Common.Filters; using Umbraco.Cms.Web.Common.Routing; using Umbraco.Cms.Web.Website.Controllers; using Umbraco.Cms.Web.Website.Routing;