From 41e14a62c05c21a8864ade7423939712dc1679da Mon Sep 17 00:00:00 2001 From: Stephan Date: Mon, 22 Apr 2019 11:59:06 +0200 Subject: [PATCH] Refactor IPublishedContent.Parent() --- .../PublishedContent/IPublishedContent.cs | 2 +- .../PublishedContentWrapped.cs | 2 +- .../PublishedMediaCacheTests.cs | 6 ++--- .../DictionaryPublishedContent.cs | 2 +- .../PublishedContentCache.cs | 4 ++-- .../XmlPublishedContent.cs | 9 +++----- .../Published/NestedContentTests.cs | 2 +- .../PublishedContentDataTableTests.cs | 7 ++---- .../PublishedContentLanguageVariantTests.cs | 4 ++-- .../PublishedContent/PublishedMediaTests.cs | 6 ++--- .../PublishedContent/PublishedRouterTests.cs | 2 +- .../PublishedContent/RootNodeTests.cs | 2 +- .../SolidPublishedSnapshot.cs | 8 ++++--- .../TestHelpers/Stubs/TestPublishedContent.cs | 6 +++-- .../PublishedContentHashtableConverter.cs | 10 ++++---- .../PublishedValueFallback.cs | 2 +- .../Models/PublishedContentBase.cs | 2 +- .../PublishedCache/NuCache/ContentCache.cs | 4 ++-- .../NuCache/PublishedContent.cs | 23 ++++++++----------- .../PublishedCache/PublishedMember.cs | 2 +- src/Umbraco.Web/PublishedContentExtensions.cs | 18 +++++++-------- src/Umbraco.Web/Routing/AliasUrlProvider.cs | 2 +- src/Umbraco.Web/Routing/DefaultUrlProvider.cs | 2 +- .../Routing/UrlProviderExtensions.cs | 2 +- 24 files changed, 62 insertions(+), 67 deletions(-) diff --git a/src/Umbraco.Core/Models/PublishedContent/IPublishedContent.cs b/src/Umbraco.Core/Models/PublishedContent/IPublishedContent.cs index 2d1c48b854..7f15e367c8 100644 --- a/src/Umbraco.Core/Models/PublishedContent/IPublishedContent.cs +++ b/src/Umbraco.Core/Models/PublishedContent/IPublishedContent.cs @@ -155,7 +155,7 @@ namespace Umbraco.Core.Models.PublishedContent /// Gets the parent of the content item. /// /// The parent of root content is null. - IPublishedContent Parent { get; } + IPublishedContent Parent(); /// /// Gets the children of the content item. diff --git a/src/Umbraco.Core/Models/PublishedContent/PublishedContentWrapped.cs b/src/Umbraco.Core/Models/PublishedContent/PublishedContentWrapped.cs index 9132fb1f85..d0db4d6e09 100644 --- a/src/Umbraco.Core/Models/PublishedContent/PublishedContentWrapped.cs +++ b/src/Umbraco.Core/Models/PublishedContent/PublishedContentWrapped.cs @@ -113,7 +113,7 @@ namespace Umbraco.Core.Models.PublishedContent #region Tree /// - public virtual IPublishedContent Parent => _content.Parent; + public virtual IPublishedContent Parent() => _content.Parent(); /// public virtual IEnumerable Children => _content.Children; diff --git a/src/Umbraco.Tests/Cache/PublishedCache/PublishedMediaCacheTests.cs b/src/Umbraco.Tests/Cache/PublishedCache/PublishedMediaCacheTests.cs index 2245f600dc..ce89310f35 100644 --- a/src/Umbraco.Tests/Cache/PublishedCache/PublishedMediaCacheTests.cs +++ b/src/Umbraco.Tests/Cache/PublishedCache/PublishedMediaCacheTests.cs @@ -111,7 +111,7 @@ namespace Umbraco.Tests.Cache.PublishedCache Assert.AreEqual(mRoot.Name, publishedMedia.Name()); Assert.AreEqual(mRoot.Path, publishedMedia.Path); Assert.AreEqual(mRoot.SortOrder, publishedMedia.SortOrder); - Assert.IsNull(publishedMedia.Parent); + Assert.IsNull(publishedMedia.Parent()); } [TestCase("id")] @@ -212,7 +212,7 @@ namespace Umbraco.Tests.Cache.PublishedCache var doc = store.CreateFromCacheValues(store.ConvertFromSearchResult(result)); DoAssert(doc, 1234, key, null, 0, "/media/test.jpg", "Image", 23, "Shannon", "Shannon", 0, 0, "-1,1234", DateTime.Parse("2012-07-17T10:34:09"), DateTime.Parse("2012-07-16T10:34:09"), 2); - Assert.AreEqual(null, doc.Parent); + Assert.AreEqual(null, doc.Parent()); } [Test] @@ -228,7 +228,7 @@ namespace Umbraco.Tests.Cache.PublishedCache var doc = cache.CreateFromCacheValues(cache.ConvertFromXPathNavigator(navigator, true)); DoAssert(doc, 2000, key, null, 2, "image1", "Image", 23, "Shannon", "Shannon", 33, 33, "-1,2000", DateTime.Parse("2012-06-12T14:13:17"), DateTime.Parse("2012-07-20T18:50:43"), 1); - Assert.AreEqual(null, doc.Parent); + Assert.AreEqual(null, doc.Parent()); Assert.AreEqual(2, doc.Children.Count()); Assert.AreEqual(2001, doc.Children.ElementAt(0).Id); Assert.AreEqual(2002, doc.Children.ElementAt(1).Id); diff --git a/src/Umbraco.Tests/LegacyXmlPublishedCache/DictionaryPublishedContent.cs b/src/Umbraco.Tests/LegacyXmlPublishedCache/DictionaryPublishedContent.cs index 7c6ecf5934..3175d0aca0 100644 --- a/src/Umbraco.Tests/LegacyXmlPublishedCache/DictionaryPublishedContent.cs +++ b/src/Umbraco.Tests/LegacyXmlPublishedCache/DictionaryPublishedContent.cs @@ -139,7 +139,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache private readonly Func _getProperty; private readonly IAppCache _appCache; - public override IPublishedContent Parent => _getParent.Value; + public override IPublishedContent Parent() => _getParent.Value; public int ParentId { get; private set; } diff --git a/src/Umbraco.Tests/LegacyXmlPublishedCache/PublishedContentCache.cs b/src/Umbraco.Tests/LegacyXmlPublishedCache/PublishedContentCache.cs index 1ccbbf950b..a4e08178ed 100644 --- a/src/Umbraco.Tests/LegacyXmlPublishedCache/PublishedContentCache.cs +++ b/src/Umbraco.Tests/LegacyXmlPublishedCache/PublishedContentCache.cs @@ -273,14 +273,14 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache pathParts.Add(urlName); // move to parent node - n = n.Parent; + n = n.Parent(); hasDomains = n != null && _domainCache.HasAssigned(n.Id); } // no domain, respect HideTopLevelNodeFromPath for legacy purposes if (hasDomains == false && _globalSettings.HideTopLevelNodeFromPath) { - if (node.Parent == null) + if (node.Parent() == null) { var rootNode = GetByRoute(preview, "/", true); if (rootNode == null) diff --git a/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlPublishedContent.cs b/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlPublishedContent.cs index a1395b46bc..8981b6c691 100644 --- a/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlPublishedContent.cs +++ b/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlPublishedContent.cs @@ -91,13 +91,10 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache return _properties.TryGetValue(alias, out property) ? property : null; } - public override IPublishedContent Parent + public override IPublishedContent Parent() { - get - { - EnsureNodeInitialized(andParent: true); - return _parent; - } + EnsureNodeInitialized(andParent: true); + return _parent; } public override int Id diff --git a/src/Umbraco.Tests/Published/NestedContentTests.cs b/src/Umbraco.Tests/Published/NestedContentTests.cs index b92724b033..31fac026f9 100644 --- a/src/Umbraco.Tests/Published/NestedContentTests.cs +++ b/src/Umbraco.Tests/Published/NestedContentTests.cs @@ -274,7 +274,7 @@ namespace Umbraco.Tests.Published // ReSharper disable UnassignedGetOnlyAutoProperty public override bool IsDraft(string culture = null) => false; public override bool IsPublished(string culture = null) => true; - public override IPublishedContent Parent { get; } + public override IPublishedContent Parent() => null; public override IEnumerable Children { get; } public override IPublishedContentType ContentType { get; } // ReSharper restore UnassignedGetOnlyAutoProperty diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentDataTableTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentDataTableTests.cs index 7f3c77cc72..7dddd76b8e 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedContentDataTableTests.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedContentDataTableTests.cs @@ -188,10 +188,7 @@ namespace Umbraco.Tests.PublishedContent public string Url(string culture = null, UrlMode mode = UrlMode.Auto) => default; - IPublishedContent IPublishedContent.Parent - { - get { return Parent; } - } + IPublishedContent IPublishedContent.Parent() => Parent; IEnumerable IPublishedContent.Children { @@ -238,7 +235,7 @@ namespace Umbraco.Tests.PublishedContent IPublishedContent content = this; while (content != null && (property == null || property.HasValue() == false)) { - content = content.Parent; + content = content.Parent(); property = content == null ? null : content.GetProperty(alias); } diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentLanguageVariantTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentLanguageVariantTests.cs index f978c8501b..0b549d51ef 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedContentLanguageVariantTests.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedContentLanguageVariantTests.cs @@ -178,10 +178,10 @@ namespace Umbraco.Tests.PublishedContent item3.SetUrl("/content-1/content-2/content-3"); item1.Children = new List { item2 }; - item2.Parent = item1; + item2.SetParent(item1); item2.Children = new List { item3 }; - item3.Parent = item2; + item3.SetParent(item2); cache.Add(item1); cache.Add(item2); diff --git a/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs index b789eb0ef8..c2cf22f85f 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs @@ -416,13 +416,13 @@ namespace Umbraco.Tests.PublishedContent var mSubChild3 = MakeNewMedia("SubChild3", mType, user, mChild1.Id); var publishedRoot = GetNode(mRoot.Id); - Assert.AreEqual(null, publishedRoot.Parent); + Assert.AreEqual(null, publishedRoot.Parent()); var publishedChild1 = GetNode(mChild1.Id); - Assert.AreEqual(mRoot.Id, publishedChild1.Parent.Id); + Assert.AreEqual(mRoot.Id, publishedChild1.Parent().Id); var publishedSubChild1 = GetNode(mSubChild1.Id); - Assert.AreEqual(mChild1.Id, publishedSubChild1.Parent.Id); + Assert.AreEqual(mChild1.Id, publishedSubChild1.Parent().Id); } [Test] diff --git a/src/Umbraco.Tests/PublishedContent/PublishedRouterTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedRouterTests.cs index 19944a2cd4..ea3a00371a 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedRouterTests.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedRouterTests.cs @@ -64,7 +64,7 @@ namespace Umbraco.Tests.PublishedContent pc.Setup(content => content.CreateDate).Returns(DateTime.Now); pc.Setup(content => content.UpdateDate).Returns(DateTime.Now); pc.Setup(content => content.Path).Returns("-1,1"); - pc.Setup(content => content.Parent).Returns(() => null); + pc.Setup(content => content.Parent()).Returns(() => null); pc.Setup(content => content.Properties).Returns(new Collection()); pc.Setup(content => content.ContentType).Returns(new PublishedContentType(22, "anything", PublishedItemType.Content, Enumerable.Empty(), Enumerable.Empty(), ContentVariation.Nothing)); return pc; diff --git a/src/Umbraco.Tests/PublishedContent/RootNodeTests.cs b/src/Umbraco.Tests/PublishedContent/RootNodeTests.cs index 77eab1dbb7..0af30b4642 100644 --- a/src/Umbraco.Tests/PublishedContent/RootNodeTests.cs +++ b/src/Umbraco.Tests/PublishedContent/RootNodeTests.cs @@ -20,7 +20,7 @@ namespace Umbraco.Tests.PublishedContent content = ctx.ContentCache.GetById(1046); Assert.IsNotNull(content); Assert.AreEqual(1, content.Level); - Assert.IsNull(content.Parent); + Assert.IsNull(content.Parent()); // non-existing content is null content = ctx.ContentCache.GetById(666); diff --git a/src/Umbraco.Tests/PublishedContent/SolidPublishedSnapshot.cs b/src/Umbraco.Tests/PublishedContent/SolidPublishedSnapshot.cs index 22d6fe8ef1..de9f82c6f7 100644 --- a/src/Umbraco.Tests/PublishedContent/SolidPublishedSnapshot.cs +++ b/src/Umbraco.Tests/PublishedContent/SolidPublishedSnapshot.cs @@ -99,7 +99,7 @@ namespace Umbraco.Tests.PublishedContent public override IEnumerable GetAtRoot(bool preview) { - return _content.Values.Where(x => x.Parent == null); + return _content.Values.Where(x => x.Parent() == null); } public override IPublishedContent GetSingleByXPath(bool preview, string xpath, Core.Xml.XPathVariable[] vars) @@ -209,7 +209,9 @@ namespace Umbraco.Tests.PublishedContent public int ParentId { get; set; } public IEnumerable ChildIds { get; set; } - public IPublishedContent Parent { get; set; } + private IPublishedContent _parent; + public IPublishedContent Parent() => _parent; + public void SetParent(IPublishedContent parent) => _parent = parent; public IEnumerable Children { get; set; } #endregion @@ -237,7 +239,7 @@ namespace Umbraco.Tests.PublishedContent IPublishedContent content = this; while (content != null && (property == null || property.HasValue() == false)) { - content = content.Parent; + content = content.Parent(); property = content == null ? null : content.GetProperty(alias); } diff --git a/src/Umbraco.Tests/TestHelpers/Stubs/TestPublishedContent.cs b/src/Umbraco.Tests/TestHelpers/Stubs/TestPublishedContent.cs index 6dd25b966e..4334e24f6d 100644 --- a/src/Umbraco.Tests/TestHelpers/Stubs/TestPublishedContent.cs +++ b/src/Umbraco.Tests/TestHelpers/Stubs/TestPublishedContent.cs @@ -53,7 +53,9 @@ namespace Umbraco.Tests.TestHelpers.Stubs public string Url(string culture = null, UrlMode mode = UrlMode.Auto) => throw new NotSupportedException(); public bool IsDraft(string culture = null) => false; public bool IsPublished(string culture = null) => true; - public IPublishedContent Parent { get; set; } + private IPublishedContent _parent; + public IPublishedContent Parent() => _parent; + public void SetParent(IPublishedContent parent) => _parent = parent; public IEnumerable Children { get; set; } // copied from PublishedContentBase @@ -66,7 +68,7 @@ namespace Umbraco.Tests.TestHelpers.Stubs var firstNonNullProperty = property; while (content != null && (property == null || property.HasValue() == false)) { - content = content.Parent; + content = content.Parent(); property = content?.GetProperty(alias); if (firstNonNullProperty == null && property != null) firstNonNullProperty = property; } diff --git a/src/Umbraco.Web/Macros/PublishedContentHashtableConverter.cs b/src/Umbraco.Web/Macros/PublishedContentHashtableConverter.cs index be7bbc37a8..209808e282 100644 --- a/src/Umbraco.Web/Macros/PublishedContentHashtableConverter.cs +++ b/src/Umbraco.Web/Macros/PublishedContentHashtableConverter.cs @@ -37,7 +37,7 @@ namespace Umbraco.Web.Macros PopulatePageData(frequest.PublishedContent.Id, frequest.PublishedContent.Name(), frequest.PublishedContent.ContentType.Id, frequest.PublishedContent.ContentType.Alias, frequest.PublishedContent.WriterName, frequest.PublishedContent.CreatorName, frequest.PublishedContent.CreateDate, frequest.PublishedContent.UpdateDate, - frequest.PublishedContent.Path, frequest.PublishedContent.Parent?.Id ?? -1); + frequest.PublishedContent.Path, frequest.PublishedContent.Parent()?.Id ?? -1); if (frequest.HasTemplate) { @@ -59,7 +59,7 @@ namespace Umbraco.Web.Macros PopulatePageData(doc.Id, doc.Name(), doc.ContentType.Id, doc.ContentType.Alias, doc.WriterName, doc.CreatorName, doc.CreateDate, doc.UpdateDate, - doc.Path, doc.Parent?.Id ?? -1); + doc.Path, doc.Parent()?.Id ?? -1); if (doc.TemplateId.HasValue) { @@ -182,8 +182,8 @@ namespace Umbraco.Web.Macros { private readonly IContent _inner; private readonly IPublishedProperty[] _properties; - private IReadOnlyDictionary _cultureInfos; private readonly IVariationContextAccessor _variationContextAccessor; + private readonly IPublishedContent _parent; private static readonly IReadOnlyDictionary NoCultureInfos = new Dictionary(); @@ -215,7 +215,7 @@ namespace Umbraco.Web.Macros .Cast() .ToArray(); - Parent = new PagePublishedContent(_inner.ParentId); + _parent = new PagePublishedContent(_inner.ParentId); } public IPublishedContentType ContentType { get; } @@ -288,7 +288,7 @@ namespace Umbraco.Web.Macros throw new NotImplementedException(); } - public IPublishedContent Parent { get; } + public IPublishedContent Parent() => _parent; public IEnumerable Children => throw new NotImplementedException(); diff --git a/src/Umbraco.Web/Models/PublishedContent/PublishedValueFallback.cs b/src/Umbraco.Web/Models/PublishedContent/PublishedValueFallback.cs index 7b467b6d15..6e0246f416 100644 --- a/src/Umbraco.Web/Models/PublishedContent/PublishedValueFallback.cs +++ b/src/Umbraco.Web/Models/PublishedContent/PublishedValueFallback.cs @@ -160,7 +160,7 @@ namespace Umbraco.Web.Models.PublishedContent IPublishedProperty property; // if we are here, content's property has no value do { - content = content.Parent; + content = content.Parent(); var propertyType = content?.ContentType.GetPropertyType(alias); diff --git a/src/Umbraco.Web/Models/PublishedContentBase.cs b/src/Umbraco.Web/Models/PublishedContentBase.cs index 22a76fb907..d2b3a3749b 100644 --- a/src/Umbraco.Web/Models/PublishedContentBase.cs +++ b/src/Umbraco.Web/Models/PublishedContentBase.cs @@ -151,7 +151,7 @@ namespace Umbraco.Web.Models #region Tree /// - public abstract IPublishedContent Parent { get; } + public abstract IPublishedContent Parent(); /// public abstract IEnumerable Children { get; } diff --git a/src/Umbraco.Web/PublishedCache/NuCache/ContentCache.cs b/src/Umbraco.Web/PublishedCache/NuCache/ContentCache.cs index 705ce17595..c364f5788a 100644 --- a/src/Umbraco.Web/PublishedCache/NuCache/ContentCache.cs +++ b/src/Umbraco.Web/PublishedCache/NuCache/ContentCache.cs @@ -157,7 +157,7 @@ namespace Umbraco.Web.PublishedCache.NuCache pathParts.Add(urlSegment); // move to parent node - n = n.Parent; + n = n.Parent(); if (n != null) urlSegment = n.UrlSegment(culture); @@ -206,7 +206,7 @@ namespace Umbraco.Web.PublishedCache.NuCache // "/foo" fails (looking for "/*/foo") we try also "/foo". // this does not make much sense anyway esp. if both "/foo/" and "/bar/foo" exist, but // that's the way it works pre-4.10 and we try to be backward compat for the time being - if (content.Parent == null) + if (content.Parent() == null) { var rootNode = GetByRoute(preview, "/", true); if (rootNode == null) diff --git a/src/Umbraco.Web/PublishedCache/NuCache/PublishedContent.cs b/src/Umbraco.Web/PublishedCache/NuCache/PublishedContent.cs index 86ed272b13..a854a8a2ad 100644 --- a/src/Umbraco.Web/PublishedCache/NuCache/PublishedContent.cs +++ b/src/Umbraco.Web/PublishedCache/NuCache/PublishedContent.cs @@ -325,21 +325,18 @@ namespace Umbraco.Web.PublishedCache.NuCache #region Tree /// - public override IPublishedContent Parent + public override IPublishedContent Parent() { - get + // have to use the "current" cache because a PublishedContent can be shared + // amongst many snapshots and other content depend on the snapshots + switch (_contentNode.ContentType.ItemType) { - // have to use the "current" cache because a PublishedContent can be shared - // amongst many snapshots and other content depend on the snapshots - switch (_contentNode.ContentType.ItemType) - { - case PublishedItemType.Content: - return GetContentById(IsPreviewing, _contentNode.ParentContentId); - case PublishedItemType.Media: - return GetMediaById(IsPreviewing, _contentNode.ParentContentId); - default: - throw new Exception($"Panic: unsupported item type \"{_contentNode.ContentType.ItemType}\"."); - } + case PublishedItemType.Content: + return GetContentById(IsPreviewing, _contentNode.ParentContentId); + case PublishedItemType.Media: + return GetMediaById(IsPreviewing, _contentNode.ParentContentId); + default: + throw new Exception($"Panic: unsupported item type \"{_contentNode.ContentType.ItemType}\"."); } } diff --git a/src/Umbraco.Web/PublishedCache/PublishedMember.cs b/src/Umbraco.Web/PublishedCache/PublishedMember.cs index 46b12b5ca3..09d01229f3 100644 --- a/src/Umbraco.Web/PublishedCache/PublishedMember.cs +++ b/src/Umbraco.Web/PublishedCache/PublishedMember.cs @@ -82,7 +82,7 @@ namespace Umbraco.Web.PublishedCache public override bool IsPublished(string culture = null) => true; - public override IPublishedContent Parent => null; + public override IPublishedContent Parent() => null; public override IEnumerable Children => Enumerable.Empty(); diff --git a/src/Umbraco.Web/PublishedContentExtensions.cs b/src/Umbraco.Web/PublishedContentExtensions.cs index a243d6e77a..708c9a8e09 100644 --- a/src/Umbraco.Web/PublishedContentExtensions.cs +++ b/src/Umbraco.Web/PublishedContentExtensions.cs @@ -548,7 +548,7 @@ namespace Umbraco.Web /// This method is here for consistency purposes but does not make much sense. public static IPublishedContent Ancestor(this IPublishedContent content) { - return content.Parent; + return content.Parent(); } /// @@ -680,7 +680,7 @@ namespace Umbraco.Web { if (content == null) throw new ArgumentNullException(nameof(content)); if (orSelf) yield return content; - while ((content = content.Parent) != null) + while ((content = content.Parent()) != null) yield return content; } @@ -884,7 +884,7 @@ namespace Umbraco.Web where T : class, IPublishedContent { if (content == null) throw new ArgumentNullException(nameof(content)); - return content.Parent as T; + return content.Parent() as T; } #endregion @@ -1121,8 +1121,8 @@ namespace Umbraco.Web /// The siblings of the content including the node itself. public static IEnumerable SiblingsAndSelf(this IPublishedContent content, string culture = null) { - return content.Parent != null - ? content.Parent.Children(culture) + return content.Parent() != null + ? content.Parent().Children(culture) : PublishedSnapshot.Content.GetAtRoot().WhereIsInvariantOrHasCulture(culture); } @@ -1135,8 +1135,8 @@ namespace Umbraco.Web /// The siblings of the content including the node itself, of the given content type. public static IEnumerable SiblingsAndSelfOfType(this IPublishedContent content, string contentTypeAlias, string culture = null) { - return content.Parent != null - ? content.Parent.ChildrenOfType(contentTypeAlias, culture) + return content.Parent() != null + ? content.Parent().ChildrenOfType(contentTypeAlias, culture) : PublishedSnapshot.Content.GetAtRoot().OfTypes(contentTypeAlias).WhereIsInvariantOrHasCulture(culture); } @@ -1150,8 +1150,8 @@ namespace Umbraco.Web public static IEnumerable SiblingsAndSelf(this IPublishedContent content, string culture = null) where T : class, IPublishedContent { - return content.Parent != null - ? content.Parent.Children(culture) + return content.Parent() != null + ? content.Parent().Children(culture) : PublishedSnapshot.Content.GetAtRoot().OfType().WhereIsInvariantOrHasCulture(culture); } diff --git a/src/Umbraco.Web/Routing/AliasUrlProvider.cs b/src/Umbraco.Web/Routing/AliasUrlProvider.cs index 411fabbf35..f1c755191e 100644 --- a/src/Umbraco.Web/Routing/AliasUrlProvider.cs +++ b/src/Umbraco.Web/Routing/AliasUrlProvider.cs @@ -65,7 +65,7 @@ namespace Umbraco.Web.Routing while (domainUris == null && n != null) // n is null at root { // move to parent node - n = n.Parent; + n = n.Parent(); domainUris = n == null ? null : DomainUtilities.DomainsForNode(umbracoContext.PublishedSnapshot.Domains, _siteDomainHelper, n.Id, current, excludeDefault: false); } diff --git a/src/Umbraco.Web/Routing/DefaultUrlProvider.cs b/src/Umbraco.Web/Routing/DefaultUrlProvider.cs index 06f275a685..842f855a0a 100644 --- a/src/Umbraco.Web/Routing/DefaultUrlProvider.cs +++ b/src/Umbraco.Web/Routing/DefaultUrlProvider.cs @@ -87,7 +87,7 @@ namespace Umbraco.Web.Routing var domainUris = DomainUtilities.DomainsForNode(umbracoContext.PublishedSnapshot.Domains, _siteDomainHelper, n.Id, current, false); while (domainUris == null && n != null) // n is null at root { - n = n.Parent; // move to parent node + n = n.Parent(); // move to parent node domainUris = n == null ? null : DomainUtilities.DomainsForNode(umbracoContext.PublishedSnapshot.Domains, _siteDomainHelper, n.Id, current, excludeDefault: true); } diff --git a/src/Umbraco.Web/Routing/UrlProviderExtensions.cs b/src/Umbraco.Web/Routing/UrlProviderExtensions.cs index 0a4f033bd2..4b66d56830 100644 --- a/src/Umbraco.Web/Routing/UrlProviderExtensions.cs +++ b/src/Umbraco.Web/Routing/UrlProviderExtensions.cs @@ -188,7 +188,7 @@ namespace Umbraco.Web.Routing while (o != null) { l.Add(o.Name()); - o = o.Parent; + o = o.Parent(); } l.Reverse(); var s = "/" + string.Join("/", l) + " (id=" + pcr.PublishedContent.Id + ")";