From c97b156eafb36d1e88ee566b85468466b4f9a31d Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 13 Nov 2019 16:44:40 +1100 Subject: [PATCH] Moves Udi, UriParser and others to abstractions --- .../GuidUdi.cs | 0 .../StringUdi.cs | 0 .../Udi.cs | 4 +- .../UdiParser.cs | 51 +++++++++++++++++-- .../UdiTypeConverter.cs | 0 .../UnknownTypeUdi.cs | 0 src/Umbraco.Core/Models/UmbracoObjectTypes.cs | 4 +- src/Umbraco.Core/UdiEntityTypeHelper.cs | 38 +------------- src/Umbraco.Core/Umbraco.Core.csproj | 6 --- src/Umbraco.Tests/CoreThings/UdiTests.cs | 2 +- 10 files changed, 52 insertions(+), 53 deletions(-) rename src/{Umbraco.Core => Umbraco.Abstractions}/GuidUdi.cs (100%) rename src/{Umbraco.Core => Umbraco.Abstractions}/StringUdi.cs (100%) rename src/{Umbraco.Core => Umbraco.Abstractions}/Udi.cs (98%) rename src/{Umbraco.Core => Umbraco.Abstractions}/UdiParser.cs (72%) rename src/{Umbraco.Core => Umbraco.Abstractions}/UdiTypeConverter.cs (100%) rename src/{Umbraco.Core => Umbraco.Abstractions}/UnknownTypeUdi.cs (100%) diff --git a/src/Umbraco.Core/GuidUdi.cs b/src/Umbraco.Abstractions/GuidUdi.cs similarity index 100% rename from src/Umbraco.Core/GuidUdi.cs rename to src/Umbraco.Abstractions/GuidUdi.cs diff --git a/src/Umbraco.Core/StringUdi.cs b/src/Umbraco.Abstractions/StringUdi.cs similarity index 100% rename from src/Umbraco.Core/StringUdi.cs rename to src/Umbraco.Abstractions/StringUdi.cs diff --git a/src/Umbraco.Core/Udi.cs b/src/Umbraco.Abstractions/Udi.cs similarity index 98% rename from src/Umbraco.Core/Udi.cs rename to src/Umbraco.Abstractions/Udi.cs index 0da549f498..80e58b2f86 100644 --- a/src/Umbraco.Core/Udi.cs +++ b/src/Umbraco.Abstractions/Udi.cs @@ -12,7 +12,7 @@ namespace Umbraco.Core [TypeConverter(typeof(UdiTypeConverter))] public abstract class Udi : IComparable { - internal readonly Uri UriValue; // internal for UdiRange + public Uri UriValue { get; } /// /// Initializes a new instance of the Udi class. @@ -104,7 +104,7 @@ namespace Umbraco.Core return new GuidUdi(entityType, id); } - internal static Udi Create(Uri uri) + public static Udi Create(Uri uri) { // if it's a know type go fast and use ctors // else fallback to parsing the string (and guess the type) diff --git a/src/Umbraco.Core/UdiParser.cs b/src/Umbraco.Abstractions/UdiParser.cs similarity index 72% rename from src/Umbraco.Core/UdiParser.cs rename to src/Umbraco.Abstractions/UdiParser.cs index 20002a79e0..08af2bf0cd 100644 --- a/src/Umbraco.Core/UdiParser.cs +++ b/src/Umbraco.Abstractions/UdiParser.cs @@ -1,5 +1,7 @@ using System; using System.Collections.Concurrent; +using System.Collections.Generic; +using System.ComponentModel; namespace Umbraco.Core { @@ -12,13 +14,16 @@ namespace Umbraco.Core { // initialize with known (built-in) Udi types // we will add scanned types later on - UdiTypes = new ConcurrentDictionary(UdiEntityTypeHelper.GetTypes()); + UdiTypes = new ConcurrentDictionary(GetKnownUdiTypes()); } - // for tests, totally unsafe - internal static void ResetUdiTypes() + /// + /// Internal API for tests to resets all udi types back to only the known udi types. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + public static void ResetUdiTypes() { - UdiTypes = new ConcurrentDictionary(UdiEntityTypeHelper.GetTypes()); + UdiTypes = new ConcurrentDictionary(GetKnownUdiTypes()); } /// @@ -175,5 +180,43 @@ namespace Umbraco.Core /// /// public static void RegisterUdiType(string entityType, UdiType udiType) => UdiTypes.TryAdd(entityType, udiType); + + public static Dictionary GetKnownUdiTypes() => + new Dictionary + { + { Constants.UdiEntityType.Unknown, UdiType.Unknown }, + + { Constants.UdiEntityType.AnyGuid, UdiType.GuidUdi }, + { Constants.UdiEntityType.Document, UdiType.GuidUdi }, + { Constants.UdiEntityType.DocumentBlueprint, UdiType.GuidUdi }, + { Constants.UdiEntityType.Media, UdiType.GuidUdi }, + { Constants.UdiEntityType.Member, UdiType.GuidUdi }, + { Constants.UdiEntityType.DictionaryItem, UdiType.GuidUdi }, + { Constants.UdiEntityType.Macro, UdiType.GuidUdi }, + { Constants.UdiEntityType.Template, UdiType.GuidUdi }, + { Constants.UdiEntityType.DocumentType, UdiType.GuidUdi }, + { Constants.UdiEntityType.DocumentTypeContainer, UdiType.GuidUdi }, + { Constants.UdiEntityType.DocumentTypeBluePrints, UdiType.GuidUdi }, + { Constants.UdiEntityType.MediaType, UdiType.GuidUdi }, + { Constants.UdiEntityType.MediaTypeContainer, UdiType.GuidUdi }, + { Constants.UdiEntityType.DataType, UdiType.GuidUdi }, + { Constants.UdiEntityType.DataTypeContainer, UdiType.GuidUdi }, + { Constants.UdiEntityType.MemberType, UdiType.GuidUdi }, + { Constants.UdiEntityType.MemberGroup, UdiType.GuidUdi }, + { Constants.UdiEntityType.RelationType, UdiType.GuidUdi }, + { Constants.UdiEntityType.FormsForm, UdiType.GuidUdi }, + { Constants.UdiEntityType.FormsPreValue, UdiType.GuidUdi }, + { Constants.UdiEntityType.FormsDataSource, UdiType.GuidUdi }, + + { Constants.UdiEntityType.AnyString, UdiType.StringUdi }, + { Constants.UdiEntityType.Language, UdiType.StringUdi }, + { Constants.UdiEntityType.MacroScript, UdiType.StringUdi }, + { Constants.UdiEntityType.MediaFile, UdiType.StringUdi }, + { Constants.UdiEntityType.TemplateFile, UdiType.StringUdi }, + { Constants.UdiEntityType.Script, UdiType.StringUdi }, + { Constants.UdiEntityType.PartialView, UdiType.StringUdi }, + { Constants.UdiEntityType.PartialViewMacro, UdiType.StringUdi }, + { Constants.UdiEntityType.Stylesheet, UdiType.StringUdi } + }; } } diff --git a/src/Umbraco.Core/UdiTypeConverter.cs b/src/Umbraco.Abstractions/UdiTypeConverter.cs similarity index 100% rename from src/Umbraco.Core/UdiTypeConverter.cs rename to src/Umbraco.Abstractions/UdiTypeConverter.cs diff --git a/src/Umbraco.Core/UnknownTypeUdi.cs b/src/Umbraco.Abstractions/UnknownTypeUdi.cs similarity index 100% rename from src/Umbraco.Core/UnknownTypeUdi.cs rename to src/Umbraco.Abstractions/UnknownTypeUdi.cs diff --git a/src/Umbraco.Core/Models/UmbracoObjectTypes.cs b/src/Umbraco.Core/Models/UmbracoObjectTypes.cs index 5449318e7a..a9bcbc2b65 100644 --- a/src/Umbraco.Core/Models/UmbracoObjectTypes.cs +++ b/src/Umbraco.Core/Models/UmbracoObjectTypes.cs @@ -1,6 +1,4 @@ -using System; -using System.ComponentModel; -using Umbraco.Core.CodeAnnotations; +using Umbraco.Core.CodeAnnotations; namespace Umbraco.Core.Models { diff --git a/src/Umbraco.Core/UdiEntityTypeHelper.cs b/src/Umbraco.Core/UdiEntityTypeHelper.cs index 6504ddc674..12e934b9ec 100644 --- a/src/Umbraco.Core/UdiEntityTypeHelper.cs +++ b/src/Umbraco.Core/UdiEntityTypeHelper.cs @@ -6,43 +6,7 @@ namespace Umbraco.Core { public static class UdiEntityTypeHelper { - internal static Dictionary GetTypes() => - new Dictionary - { - { Constants.UdiEntityType.Unknown, UdiType.Unknown }, - - { Constants.UdiEntityType.AnyGuid, UdiType.GuidUdi }, - { Constants.UdiEntityType.Document, UdiType.GuidUdi }, - { Constants.UdiEntityType.DocumentBlueprint, UdiType.GuidUdi }, - { Constants.UdiEntityType.Media, UdiType.GuidUdi }, - { Constants.UdiEntityType.Member, UdiType.GuidUdi }, - { Constants.UdiEntityType.DictionaryItem, UdiType.GuidUdi }, - { Constants.UdiEntityType.Macro, UdiType.GuidUdi }, - { Constants.UdiEntityType.Template, UdiType.GuidUdi }, - { Constants.UdiEntityType.DocumentType, UdiType.GuidUdi }, - { Constants.UdiEntityType.DocumentTypeContainer, UdiType.GuidUdi }, - { Constants.UdiEntityType.DocumentTypeBluePrints, UdiType.GuidUdi }, - { Constants.UdiEntityType.MediaType, UdiType.GuidUdi }, - { Constants.UdiEntityType.MediaTypeContainer, UdiType.GuidUdi }, - { Constants.UdiEntityType.DataType, UdiType.GuidUdi }, - { Constants.UdiEntityType.DataTypeContainer, UdiType.GuidUdi }, - { Constants.UdiEntityType.MemberType, UdiType.GuidUdi }, - { Constants.UdiEntityType.MemberGroup, UdiType.GuidUdi }, - { Constants.UdiEntityType.RelationType, UdiType.GuidUdi }, - { Constants.UdiEntityType.FormsForm, UdiType.GuidUdi }, - { Constants.UdiEntityType.FormsPreValue, UdiType.GuidUdi }, - { Constants.UdiEntityType.FormsDataSource, UdiType.GuidUdi }, - - { Constants.UdiEntityType.AnyString, UdiType.StringUdi }, - { Constants.UdiEntityType.Language, UdiType.StringUdi }, - { Constants.UdiEntityType.MacroScript, UdiType.StringUdi }, - { Constants.UdiEntityType.MediaFile, UdiType.StringUdi }, - { Constants.UdiEntityType.TemplateFile, UdiType.StringUdi }, - { Constants.UdiEntityType.Script, UdiType.StringUdi }, - { Constants.UdiEntityType.PartialView, UdiType.StringUdi }, - { Constants.UdiEntityType.PartialViewMacro, UdiType.StringUdi }, - { Constants.UdiEntityType.Stylesheet, UdiType.StringUdi } - }; + public static string FromUmbracoObjectType(UmbracoObjectTypes umbracoObjectType) { diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index 0b0992fa98..b53e43266c 100755 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -527,7 +527,6 @@ - @@ -1095,20 +1094,15 @@ - - - - - diff --git a/src/Umbraco.Tests/CoreThings/UdiTests.cs b/src/Umbraco.Tests/CoreThings/UdiTests.cs index 641587ebe7..df5d5363e5 100644 --- a/src/Umbraco.Tests/CoreThings/UdiTests.cs +++ b/src/Umbraco.Tests/CoreThings/UdiTests.cs @@ -250,7 +250,7 @@ namespace Umbraco.Tests.CoreThings [Test] public void ValidateUdiEntityType() { - var types = UdiEntityTypeHelper.GetTypes(); + var types = UdiParser.GetKnownUdiTypes(); foreach (var fi in typeof(Constants.UdiEntityType).GetFields(BindingFlags.Public | BindingFlags.Static)) {