From 4077a01a6b90ce57f4bf9ad575b18d51a85f1d17 Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 3 Jul 2013 19:47:06 +1000 Subject: [PATCH] Fixes: #U4-2344 - fixes examine re-indexing for media and a null check for DataType.Data --- src/Umbraco.Core/Models/ContentExtensions.cs | 5 +++++ src/Umbraco.Core/Models/PropertyExtensions.cs | 7 ++++++- src/Umbraco.Core/Models/PropertyTypeExtensions.cs | 4 ++++ src/UmbracoExamine/DataServices/UmbracoMediaService.cs | 2 +- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Core/Models/ContentExtensions.cs b/src/Umbraco.Core/Models/ContentExtensions.cs index 11cd3dccd8..0a15cf941c 100644 --- a/src/Umbraco.Core/Models/ContentExtensions.cs +++ b/src/Umbraco.Core/Models/ContentExtensions.cs @@ -535,6 +535,11 @@ namespace Umbraco.Core.Models return ApplicationContext.Current.Services.PackagingService.Export(media); } + internal static XElement ToDeepXml(this IMedia media) + { + return ApplicationContext.Current.Services.PackagingService.Export(media, true); + } + /// /// Creates the xml representation for the object /// diff --git a/src/Umbraco.Core/Models/PropertyExtensions.cs b/src/Umbraco.Core/Models/PropertyExtensions.cs index 1b851d8d4b..d378b5f2ab 100644 --- a/src/Umbraco.Core/Models/PropertyExtensions.cs +++ b/src/Umbraco.Core/Models/PropertyExtensions.cs @@ -28,7 +28,12 @@ namespace Umbraco.Core.Models } //This seems to fail during testing - xmlNode.AppendChild(property.PropertyType.DataType(property.Id).Data.ToXMl(xd)); + //SD: With the new null checks below, this shouldn't fail anymore. + var dt = property.PropertyType.DataType(property.Id); + if (dt != null && dt.Data != null) + { + xmlNode.AppendChild(dt.Data.ToXMl(xd)); + } var element = xmlNode.GetXElement(); return element; diff --git a/src/Umbraco.Core/Models/PropertyTypeExtensions.cs b/src/Umbraco.Core/Models/PropertyTypeExtensions.cs index 8a4d35c3af..b8ee04df33 100644 --- a/src/Umbraco.Core/Models/PropertyTypeExtensions.cs +++ b/src/Umbraco.Core/Models/PropertyTypeExtensions.cs @@ -20,6 +20,10 @@ namespace Umbraco.Core.Models { Mandate.ParameterNotNull(propertyType, "propertyType"); var dataType = ApplicationContext.Current.Services.DataTypeService.GetDataTypeById(propertyType.DataTypeId); + if (dataType == null) + { + return null; + } dataType.DataTypeDefinitionId = propertyType.DataTypeDefinitionId; dataType.Data.PropertyId = propertyId; return dataType; diff --git a/src/UmbracoExamine/DataServices/UmbracoMediaService.cs b/src/UmbracoExamine/DataServices/UmbracoMediaService.cs index c1bd2c71d3..cc505f732b 100644 --- a/src/UmbracoExamine/DataServices/UmbracoMediaService.cs +++ b/src/UmbracoExamine/DataServices/UmbracoMediaService.cs @@ -45,7 +45,7 @@ namespace UmbracoExamine.DataServices var xmlMedia = XDocument.Parse(""); foreach (var m in _services.MediaService.GetRootMedia()) { - xmlMedia.Root.Add(m.ToXml()); + xmlMedia.Root.Add(m.ToDeepXml()); } var result = ((IEnumerable)xmlMedia.XPathEvaluate(xpath)).Cast(); return result.ToXDocument();