From 13976559a86f3a04043dc8727e5b1cdbb802ff03 Mon Sep 17 00:00:00 2001 From: Shannon Date: Mon, 17 Feb 2014 11:50:13 +1100 Subject: [PATCH] Created a EntityNotFoundException to use when we are expecting an umbraco entity found. Updates some code to use this exception. --- .../Persistence/EntityNotFoundException.cs | 48 +++++++++++++++++++ src/Umbraco.Core/Services/UserService.cs | 4 +- src/Umbraco.Core/Umbraco.Core.csproj | 1 + .../Trees/ContentTreeControllerBase.cs | 5 ++ 4 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 src/Umbraco.Core/Persistence/EntityNotFoundException.cs diff --git a/src/Umbraco.Core/Persistence/EntityNotFoundException.cs b/src/Umbraco.Core/Persistence/EntityNotFoundException.cs new file mode 100644 index 0000000000..1cc66a2ba2 --- /dev/null +++ b/src/Umbraco.Core/Persistence/EntityNotFoundException.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Umbraco.Core.Persistence +{ + + //TODO: Would be good to use this exception type anytime we cannot find an entity + + /// + /// An exception used to indicate that an umbraco entity could not be found + /// + public class EntityNotFoundException : Exception + { + public object Id { get; private set; } + private readonly string _msg; + + public EntityNotFoundException(object id, string msg) + { + Id = id; + _msg = msg; + } + + public EntityNotFoundException(string msg) + { + _msg = msg; + } + + public override string Message + { + get { return _msg; } + } + + public override string ToString() + { + var result = base.ToString(); + + if (Id != null) + { + return "Umbraco entity (id: " + Id + ") not found. " + result; + } + + return result; + } + } +} diff --git a/src/Umbraco.Core/Services/UserService.cs b/src/Umbraco.Core/Services/UserService.cs index 1c59e33d6a..21421a1936 100644 --- a/src/Umbraco.Core/Services/UserService.cs +++ b/src/Umbraco.Core/Services/UserService.cs @@ -51,7 +51,7 @@ namespace Umbraco.Core.Services if (types.Any() == false) { - throw new InvalidOperationException("No member types could be resolved"); + throw new EntityNotFoundException("No member types could be resolved"); } if (types.InvariantContains("writer")) @@ -126,7 +126,7 @@ namespace Umbraco.Core.Services var userType = GetUserTypeByAlias(memberTypeAlias); if (userType == null) { - throw new ArgumentException("The user type " + memberTypeAlias + " could not be resolved"); + throw new EntityNotFoundException("The user type " + memberTypeAlias + " could not be resolved"); } return CreateMemberWithIdentity(username, email, password, userType); diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index 21385ac39c..0cb85f416d 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -354,6 +354,7 @@ + diff --git a/src/Umbraco.Web/Trees/ContentTreeControllerBase.cs b/src/Umbraco.Web/Trees/ContentTreeControllerBase.cs index 04c7b39829..69cef03ab4 100644 --- a/src/Umbraco.Web/Trees/ContentTreeControllerBase.cs +++ b/src/Umbraco.Web/Trees/ContentTreeControllerBase.cs @@ -8,6 +8,7 @@ using System.Web.Http; using Umbraco.Core; using Umbraco.Core.Models; using Umbraco.Core.Models.EntityBase; +using Umbraco.Core.Persistence; using Umbraco.Web.Models.Trees; using Umbraco.Web.WebApi.Filters; using umbraco; @@ -88,6 +89,10 @@ namespace Umbraco.Web.Trees { //just return their single start node, it will show up under the 'Content' label var startNode = Services.EntityService.Get(UserStartNode, UmbracoObjectType); + if (startNode == null) + { + throw new EntityNotFoundException(UserStartNode, "User's start content node could not be found"); + } return new[] { startNode }; }