diff --git a/src/Umbraco.Web/PublishedCache/XmlPublishedCache/PublishedContentCache.cs b/src/Umbraco.Web/PublishedCache/XmlPublishedCache/PublishedContentCache.cs index 455bd22e13..82a5b6f85a 100644 --- a/src/Umbraco.Web/PublishedCache/XmlPublishedCache/PublishedContentCache.cs +++ b/src/Umbraco.Web/PublishedCache/XmlPublishedCache/PublishedContentCache.cs @@ -8,6 +8,7 @@ using System.Xml.XPath; using Umbraco.Core.Logging; using Umbraco.Core; using Umbraco.Core.Models; +using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.Xml; using Umbraco.Web.Routing; using umbraco; @@ -17,7 +18,6 @@ using umbraco.presentation.preview; namespace Umbraco.Web.PublishedCache.XmlPublishedCache { - // fixme - does not implement the content model factory internal class PublishedContentCache : IPublishedContentCache { #region Routes cache @@ -238,12 +238,15 @@ namespace Umbraco.Web.PublishedCache.XmlPublishedCache private static IPublishedContent ConvertToDocument(XmlNode xmlNode, bool isPreviewing) { - return xmlNode == null ? null : new XmlPublishedContent(xmlNode, isPreviewing); + return xmlNode == null + ? null + : PublishedContentModelFactory.CreateModel(new XmlPublishedContent(xmlNode, isPreviewing)); } private static IEnumerable ConvertToDocuments(XmlNodeList xmlNodes, bool isPreviewing) { - return xmlNodes.Cast().Select(xmlNode => new XmlPublishedContent(xmlNode, isPreviewing)); + return xmlNodes.Cast() + .Select(xmlNode => PublishedContentModelFactory.CreateModel(new XmlPublishedContent(xmlNode, isPreviewing))); } #endregion diff --git a/src/Umbraco.Web/PublishedCache/XmlPublishedCache/PublishedMediaCache.cs b/src/Umbraco.Web/PublishedCache/XmlPublishedCache/PublishedMediaCache.cs index 39bae8b2bf..a251c3d428 100644 --- a/src/Umbraco.Web/PublishedCache/XmlPublishedCache/PublishedMediaCache.cs +++ b/src/Umbraco.Web/PublishedCache/XmlPublishedCache/PublishedMediaCache.cs @@ -241,7 +241,7 @@ namespace Umbraco.Web.PublishedCache.XmlPublishedCache } - return new DictionaryPublishedContent(values, + var content = new DictionaryPublishedContent(values, d => d.ParentId != -1 //parent should be null if -1 ? GetUmbracoMedia(d.ParentId) : null, @@ -249,6 +249,7 @@ namespace Umbraco.Web.PublishedCache.XmlPublishedCache d => GetChildrenMedia(d.Id), GetProperty, true); + return PublishedContentModelFactory.CreateModel(content); } internal IPublishedContent ConvertFromXPathNavigator(XPathNavigator xpath) @@ -299,7 +300,7 @@ namespace Umbraco.Web.PublishedCache.XmlPublishedCache } } - return new DictionaryPublishedContent(values, + var content = new DictionaryPublishedContent(values, d => d.ParentId != -1 //parent should be null if -1 ? GetUmbracoMedia(d.ParentId) : null, @@ -307,6 +308,7 @@ namespace Umbraco.Web.PublishedCache.XmlPublishedCache d => GetChildrenMedia(d.Id, xpath), GetProperty, false); + return PublishedContentModelFactory.CreateModel(content); } /// diff --git a/src/Umbraco.Web/PublishedCache/XmlPublishedCache/XmlPublishedContent.cs b/src/Umbraco.Web/PublishedCache/XmlPublishedCache/XmlPublishedContent.cs index 302546f550..16bb5be85c 100644 --- a/src/Umbraco.Web/PublishedCache/XmlPublishedCache/XmlPublishedContent.cs +++ b/src/Umbraco.Web/PublishedCache/XmlPublishedCache/XmlPublishedContent.cs @@ -338,7 +338,7 @@ namespace Umbraco.Web.PublishedCache.XmlPublishedCache if (parent == null) return; if (parent.Name == "node" || (parent.Attributes != null && parent.Attributes.GetNamedItem("isDoc") != null)) - _parent = new XmlPublishedContent(parent, _isPreviewing, true); + _parent = PublishedContentModelFactory.CreateModel(new XmlPublishedContent(parent, _isPreviewing, true)); } private void Initialize() @@ -439,7 +439,8 @@ namespace Umbraco.Web.PublishedCache.XmlPublishedCache expr.AddSort("@sortOrder", XmlSortOrder.Ascending, XmlCaseOrder.None, "", XmlDataType.Number); var iterator = nav.Select(expr); while (iterator.MoveNext()) - _children.Add(new XmlPublishedContent(((IHasXmlNode)iterator.Current).GetNode(), _isPreviewing, true)); + _children.Add(PublishedContentModelFactory.CreateModel( + new XmlPublishedContent(((IHasXmlNode)iterator.Current).GetNode(), _isPreviewing, true))); // warn: this is not thread-safe _childrenInitialized = true;