From 118d50671f02433982b72a2b6b2e6327969df21b Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Fri, 8 Nov 2019 10:57:24 +0100 Subject: [PATCH] AB3649 - Moved Manifest stuff --- .../Manifest/ManifestContentAppDefinition.cs | 8 +------- .../Models/EntityContainer.cs | 0 .../IManifestValueValidator.cs | 0 .../PropertyEditors/IValueFormatValidator.cs | 0 .../IValueRequiredValidator.cs | 0 .../PropertyEditors/IValueValidator.cs | 0 .../ManifestValueValidatorCollection.cs | 0 ...ManifestValueValidatorCollectionBuilder.cs | 9 +++++++++ .../Validators/DecimalValidator.cs | 2 +- .../Validators/EmailValidator.cs | 2 +- .../Validators/IntegerValidator.cs | 2 +- .../Umbraco.Abstractions.csproj | 1 + src/Umbraco.Core/Manifest/IManifestFilter.cs | 1 + .../Manifest/ManifestContentAppFactory.cs | 7 +++++-- src/Umbraco.Core/Manifest/ManifestParser.cs | 17 ++++++++++------- ...ManifestValueValidatorCollectionBuilder.cs | 9 --------- .../Validators/RegexValidator.cs | 2 +- .../Validators/RequiredValidator.cs | 2 +- src/Umbraco.Core/Umbraco.Core.csproj | 19 ++++--------------- .../Manifest/ManifestContentAppTests.cs | 3 ++- .../Manifest/ManifestParserTests.cs | 2 +- .../ContentAppFactoryCollectionBuilder.cs | 3 ++- 22 files changed, 41 insertions(+), 48 deletions(-) rename src/{Umbraco.Core => Umbraco.Abstractions}/Manifest/ManifestContentAppDefinition.cs (92%) rename src/{Umbraco.Core => Umbraco.Abstractions}/Models/EntityContainer.cs (100%) rename src/{Umbraco.Core => Umbraco.Abstractions}/PropertyEditors/IManifestValueValidator.cs (100%) rename src/{Umbraco.Core => Umbraco.Abstractions}/PropertyEditors/IValueFormatValidator.cs (100%) rename src/{Umbraco.Core => Umbraco.Abstractions}/PropertyEditors/IValueRequiredValidator.cs (100%) rename src/{Umbraco.Core => Umbraco.Abstractions}/PropertyEditors/IValueValidator.cs (100%) rename src/{Umbraco.Core => Umbraco.Abstractions}/PropertyEditors/ManifestValueValidatorCollection.cs (100%) create mode 100644 src/Umbraco.Abstractions/PropertyEditors/ManifestValueValidatorCollectionBuilder.cs rename src/{Umbraco.Core => Umbraco.Abstractions}/PropertyEditors/Validators/DecimalValidator.cs (92%) rename src/{Umbraco.Core => Umbraco.Abstractions}/PropertyEditors/Validators/EmailValidator.cs (92%) rename src/{Umbraco.Core => Umbraco.Abstractions}/PropertyEditors/Validators/IntegerValidator.cs (92%) delete mode 100644 src/Umbraco.Core/PropertyEditors/ManifestValueValidatorCollectionBuilder.cs diff --git a/src/Umbraco.Core/Manifest/ManifestContentAppDefinition.cs b/src/Umbraco.Abstractions/Manifest/ManifestContentAppDefinition.cs similarity index 92% rename from src/Umbraco.Core/Manifest/ManifestContentAppDefinition.cs rename to src/Umbraco.Abstractions/Manifest/ManifestContentAppDefinition.cs index 2aafcd8b74..35293a6377 100644 --- a/src/Umbraco.Core/Manifest/ManifestContentAppDefinition.cs +++ b/src/Umbraco.Abstractions/Manifest/ManifestContentAppDefinition.cs @@ -1,7 +1,5 @@ using System; using System.Runtime.Serialization; -using Umbraco.Core.Composing; -using Umbraco.Core.IO; namespace Umbraco.Core.Manifest { @@ -65,11 +63,7 @@ namespace Umbraco.Core.Manifest /// Gets or sets the view for rendering the content app. /// [DataMember(Name = "view")] - public string View - { - get => _view; - set => _view = Current.IOHelper.ResolveVirtualUrl(value); - } + public string View { get; set; } /// /// Gets or sets the list of 'show' conditions for the content app. diff --git a/src/Umbraco.Core/Models/EntityContainer.cs b/src/Umbraco.Abstractions/Models/EntityContainer.cs similarity index 100% rename from src/Umbraco.Core/Models/EntityContainer.cs rename to src/Umbraco.Abstractions/Models/EntityContainer.cs diff --git a/src/Umbraco.Core/PropertyEditors/IManifestValueValidator.cs b/src/Umbraco.Abstractions/PropertyEditors/IManifestValueValidator.cs similarity index 100% rename from src/Umbraco.Core/PropertyEditors/IManifestValueValidator.cs rename to src/Umbraco.Abstractions/PropertyEditors/IManifestValueValidator.cs diff --git a/src/Umbraco.Core/PropertyEditors/IValueFormatValidator.cs b/src/Umbraco.Abstractions/PropertyEditors/IValueFormatValidator.cs similarity index 100% rename from src/Umbraco.Core/PropertyEditors/IValueFormatValidator.cs rename to src/Umbraco.Abstractions/PropertyEditors/IValueFormatValidator.cs diff --git a/src/Umbraco.Core/PropertyEditors/IValueRequiredValidator.cs b/src/Umbraco.Abstractions/PropertyEditors/IValueRequiredValidator.cs similarity index 100% rename from src/Umbraco.Core/PropertyEditors/IValueRequiredValidator.cs rename to src/Umbraco.Abstractions/PropertyEditors/IValueRequiredValidator.cs diff --git a/src/Umbraco.Core/PropertyEditors/IValueValidator.cs b/src/Umbraco.Abstractions/PropertyEditors/IValueValidator.cs similarity index 100% rename from src/Umbraco.Core/PropertyEditors/IValueValidator.cs rename to src/Umbraco.Abstractions/PropertyEditors/IValueValidator.cs diff --git a/src/Umbraco.Core/PropertyEditors/ManifestValueValidatorCollection.cs b/src/Umbraco.Abstractions/PropertyEditors/ManifestValueValidatorCollection.cs similarity index 100% rename from src/Umbraco.Core/PropertyEditors/ManifestValueValidatorCollection.cs rename to src/Umbraco.Abstractions/PropertyEditors/ManifestValueValidatorCollection.cs diff --git a/src/Umbraco.Abstractions/PropertyEditors/ManifestValueValidatorCollectionBuilder.cs b/src/Umbraco.Abstractions/PropertyEditors/ManifestValueValidatorCollectionBuilder.cs new file mode 100644 index 0000000000..0ebda864f6 --- /dev/null +++ b/src/Umbraco.Abstractions/PropertyEditors/ManifestValueValidatorCollectionBuilder.cs @@ -0,0 +1,9 @@ +using Umbraco.Core.Composing; + +namespace Umbraco.Core.PropertyEditors +{ + public class ManifestValueValidatorCollectionBuilder : LazyCollectionBuilderBase + { + protected override ManifestValueValidatorCollectionBuilder This => this; + } +} diff --git a/src/Umbraco.Core/PropertyEditors/Validators/DecimalValidator.cs b/src/Umbraco.Abstractions/PropertyEditors/Validators/DecimalValidator.cs similarity index 92% rename from src/Umbraco.Core/PropertyEditors/Validators/DecimalValidator.cs rename to src/Umbraco.Abstractions/PropertyEditors/Validators/DecimalValidator.cs index 86db995566..f464044923 100644 --- a/src/Umbraco.Core/PropertyEditors/Validators/DecimalValidator.cs +++ b/src/Umbraco.Abstractions/PropertyEditors/Validators/DecimalValidator.cs @@ -6,7 +6,7 @@ namespace Umbraco.Core.PropertyEditors.Validators /// /// A validator that validates that the value is a valid decimal /// - internal sealed class DecimalValidator : IManifestValueValidator + public sealed class DecimalValidator : IManifestValueValidator { /// public string ValidationName => "Decimal"; diff --git a/src/Umbraco.Core/PropertyEditors/Validators/EmailValidator.cs b/src/Umbraco.Abstractions/PropertyEditors/Validators/EmailValidator.cs similarity index 92% rename from src/Umbraco.Core/PropertyEditors/Validators/EmailValidator.cs rename to src/Umbraco.Abstractions/PropertyEditors/Validators/EmailValidator.cs index 4df11e4f60..8fb6d0c31b 100644 --- a/src/Umbraco.Core/PropertyEditors/Validators/EmailValidator.cs +++ b/src/Umbraco.Abstractions/PropertyEditors/Validators/EmailValidator.cs @@ -6,7 +6,7 @@ namespace Umbraco.Core.PropertyEditors.Validators /// /// A validator that validates an email address /// - internal sealed class EmailValidator : IManifestValueValidator + public sealed class EmailValidator : IManifestValueValidator { /// public string ValidationName => "Email"; diff --git a/src/Umbraco.Core/PropertyEditors/Validators/IntegerValidator.cs b/src/Umbraco.Abstractions/PropertyEditors/Validators/IntegerValidator.cs similarity index 92% rename from src/Umbraco.Core/PropertyEditors/Validators/IntegerValidator.cs rename to src/Umbraco.Abstractions/PropertyEditors/Validators/IntegerValidator.cs index 335ddf7724..5274ff484b 100644 --- a/src/Umbraco.Core/PropertyEditors/Validators/IntegerValidator.cs +++ b/src/Umbraco.Abstractions/PropertyEditors/Validators/IntegerValidator.cs @@ -6,7 +6,7 @@ namespace Umbraco.Core.PropertyEditors.Validators /// /// A validator that validates that the value is a valid integer /// - internal sealed class IntegerValidator : IManifestValueValidator + public sealed class IntegerValidator : IManifestValueValidator { /// public string ValidationName => "Integer"; diff --git a/src/Umbraco.Abstractions/Umbraco.Abstractions.csproj b/src/Umbraco.Abstractions/Umbraco.Abstractions.csproj index a5e5a94520..b3a1b4fa25 100644 --- a/src/Umbraco.Abstractions/Umbraco.Abstractions.csproj +++ b/src/Umbraco.Abstractions/Umbraco.Abstractions.csproj @@ -7,6 +7,7 @@ + diff --git a/src/Umbraco.Core/Manifest/IManifestFilter.cs b/src/Umbraco.Core/Manifest/IManifestFilter.cs index 505f13d385..88e00a3966 100644 --- a/src/Umbraco.Core/Manifest/IManifestFilter.cs +++ b/src/Umbraco.Core/Manifest/IManifestFilter.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; + namespace Umbraco.Core.Manifest { /// diff --git a/src/Umbraco.Core/Manifest/ManifestContentAppFactory.cs b/src/Umbraco.Core/Manifest/ManifestContentAppFactory.cs index 1c50a4b895..e2c3ee48fa 100644 --- a/src/Umbraco.Core/Manifest/ManifestContentAppFactory.cs +++ b/src/Umbraco.Core/Manifest/ManifestContentAppFactory.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; +using Umbraco.Core.IO; using Umbraco.Core.Models; using Umbraco.Core.Models.ContentEditing; using Umbraco.Core.Models.Membership; @@ -31,10 +32,12 @@ namespace Umbraco.Core.Manifest public class ManifestContentAppFactory : IContentAppFactory { private readonly ManifestContentAppDefinition _definition; + private readonly IIOHelper _ioHelper; - public ManifestContentAppFactory(ManifestContentAppDefinition definition) + public ManifestContentAppFactory(ManifestContentAppDefinition definition, IIOHelper ioHelper) { _definition = definition; + _ioHelper = ioHelper; } private ContentApp _app; @@ -132,7 +135,7 @@ namespace Umbraco.Core.Manifest Alias = _definition.Alias, Name = _definition.Name, Icon = _definition.Icon, - View = _definition.View, + View = _ioHelper.ResolveVirtualUrl(_definition.View), Weight = _definition.Weight }); } diff --git a/src/Umbraco.Core/Manifest/ManifestParser.cs b/src/Umbraco.Core/Manifest/ManifestParser.cs index cac904a520..7f2a1825b4 100644 --- a/src/Umbraco.Core/Manifest/ManifestParser.cs +++ b/src/Umbraco.Core/Manifest/ManifestParser.cs @@ -5,7 +5,6 @@ using System.Linq; using System.Text; using Newtonsoft.Json; using Umbraco.Core.Cache; -using Umbraco.Core.Composing; using Umbraco.Core.Exceptions; using Umbraco.Core.IO; using Umbraco.Core.Logging; @@ -22,6 +21,7 @@ namespace Umbraco.Core.Manifest private readonly IAppPolicyCache _cache; private readonly ILogger _logger; + private readonly IIOHelper _ioHelper; private readonly ManifestValueValidatorCollection _validators; private readonly ManifestFilterCollection _filters; @@ -30,28 +30,31 @@ namespace Umbraco.Core.Manifest /// /// Initializes a new instance of the class. /// - public ManifestParser(AppCaches appCaches, ManifestValueValidatorCollection validators, ManifestFilterCollection filters, ILogger logger) - : this(appCaches, validators, filters, "~/App_Plugins", logger) + public ManifestParser(AppCaches appCaches, ManifestValueValidatorCollection validators, ManifestFilterCollection filters, ILogger logger, IIOHelper ioHelper) + : this(appCaches, validators, filters, "~/App_Plugins", logger, ioHelper) { } /// /// Initializes a new instance of the class. /// - private ManifestParser(AppCaches appCaches, ManifestValueValidatorCollection validators, ManifestFilterCollection filters, string path, ILogger logger) + private ManifestParser(AppCaches appCaches, ManifestValueValidatorCollection validators, ManifestFilterCollection filters, string path, ILogger logger, IIOHelper ioHelper) { if (appCaches == null) throw new ArgumentNullException(nameof(appCaches)); _cache = appCaches.RuntimeCache; + _ioHelper = ioHelper; _validators = validators ?? throw new ArgumentNullException(nameof(validators)); _filters = filters ?? throw new ArgumentNullException(nameof(filters)); if (string.IsNullOrWhiteSpace(path)) throw new ArgumentNullOrEmptyException(nameof(path)); + Path = path; _logger = logger ?? throw new ArgumentNullException(nameof(logger)); + } public string Path { get => _path; - set => _path = value.StartsWith("~/") ? Current.IOHelper.MapPath(value) : value; + set => _path = value.StartsWith("~/") ? _ioHelper.MapPath(value) : value; } /// @@ -166,9 +169,9 @@ namespace Umbraco.Core.Manifest // scripts and stylesheets are raw string, must process here for (var i = 0; i < manifest.Scripts.Length; i++) - manifest.Scripts[i] = Current.IOHelper.ResolveVirtualUrl(manifest.Scripts[i]); + manifest.Scripts[i] = _ioHelper.ResolveVirtualUrl(manifest.Scripts[i]); for (var i = 0; i < manifest.Stylesheets.Length; i++) - manifest.Stylesheets[i] = Current.IOHelper.ResolveVirtualUrl(manifest.Stylesheets[i]); + manifest.Stylesheets[i] = _ioHelper.ResolveVirtualUrl(manifest.Stylesheets[i]); // add property editors that are also parameter editors, to the parameter editors list // (the manifest format is kinda legacy) diff --git a/src/Umbraco.Core/PropertyEditors/ManifestValueValidatorCollectionBuilder.cs b/src/Umbraco.Core/PropertyEditors/ManifestValueValidatorCollectionBuilder.cs deleted file mode 100644 index 8f7c68c813..0000000000 --- a/src/Umbraco.Core/PropertyEditors/ManifestValueValidatorCollectionBuilder.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Umbraco.Core.Composing; - -namespace Umbraco.Core.PropertyEditors -{ - internal class ManifestValueValidatorCollectionBuilder : LazyCollectionBuilderBase - { - protected override ManifestValueValidatorCollectionBuilder This => this; - } -} diff --git a/src/Umbraco.Core/PropertyEditors/Validators/RegexValidator.cs b/src/Umbraco.Core/PropertyEditors/Validators/RegexValidator.cs index e405fa3a3e..4036adba42 100644 --- a/src/Umbraco.Core/PropertyEditors/Validators/RegexValidator.cs +++ b/src/Umbraco.Core/PropertyEditors/Validators/RegexValidator.cs @@ -11,7 +11,7 @@ namespace Umbraco.Core.PropertyEditors.Validators /// /// A validator that validates that the value against a regular expression. /// - internal sealed class RegexValidator : IValueFormatValidator, IManifestValueValidator + public sealed class RegexValidator : IValueFormatValidator, IManifestValueValidator { private readonly ILocalizedTextService _textService; private string _regex; diff --git a/src/Umbraco.Core/PropertyEditors/Validators/RequiredValidator.cs b/src/Umbraco.Core/PropertyEditors/Validators/RequiredValidator.cs index c51f572817..e83997b170 100644 --- a/src/Umbraco.Core/PropertyEditors/Validators/RequiredValidator.cs +++ b/src/Umbraco.Core/PropertyEditors/Validators/RequiredValidator.cs @@ -8,7 +8,7 @@ namespace Umbraco.Core.PropertyEditors.Validators /// /// A validator that validates that the value is not null or empty (if it is a string) /// - internal sealed class RequiredValidator : IValueRequiredValidator, IManifestValueValidator + public sealed class RequiredValidator : IValueRequiredValidator, IManifestValueValidator { private readonly ILocalizedTextService _textService; diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index 68a6260fe3..f22a29075f 100755 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -193,6 +193,7 @@ + @@ -271,6 +272,9 @@ + + + @@ -285,7 +289,6 @@ - @@ -390,7 +393,6 @@ - @@ -483,9 +485,6 @@ - - - @@ -560,7 +559,6 @@ - @@ -582,7 +580,6 @@ - @@ -1002,22 +999,14 @@ - - - - - - - - diff --git a/src/Umbraco.Tests/Manifest/ManifestContentAppTests.cs b/src/Umbraco.Tests/Manifest/ManifestContentAppTests.cs index 1e02f562e3..c949e0bb67 100644 --- a/src/Umbraco.Tests/Manifest/ManifestContentAppTests.cs +++ b/src/Umbraco.Tests/Manifest/ManifestContentAppTests.cs @@ -6,6 +6,7 @@ using NUnit.Framework; using Umbraco.Core.Manifest; using Umbraco.Core.Models; using Umbraco.Core.Models.Membership; +using Umbraco.Web.Composing; namespace Umbraco.Tests.Manifest { @@ -67,7 +68,7 @@ namespace Umbraco.Tests.Manifest private void AssertDefinition(object source, bool expected, string[] show, IReadOnlyUserGroup[] groups) { var definition = JsonConvert.DeserializeObject("{" + (show.Length == 0 ? "" : " \"show\": [" + string.Join(",", show.Select(x => "\"" + x + "\"")) + "] ") + "}"); - var factory = new ManifestContentAppFactory(definition); + var factory = new ManifestContentAppFactory(definition, Current.IOHelper); var app = factory.GetContentAppFor(source, groups); if (expected) Assert.IsNotNull(app); diff --git a/src/Umbraco.Tests/Manifest/ManifestParserTests.cs b/src/Umbraco.Tests/Manifest/ManifestParserTests.cs index 1c90f68d62..0fcb7ac9e0 100644 --- a/src/Umbraco.Tests/Manifest/ManifestParserTests.cs +++ b/src/Umbraco.Tests/Manifest/ManifestParserTests.cs @@ -44,7 +44,7 @@ namespace Umbraco.Tests.Manifest new RequiredValidator(Mock.Of()), new RegexValidator(Mock.Of(), null) }; - _parser = new ManifestParser(AppCaches.Disabled, new ManifestValueValidatorCollection(validators), new ManifestFilterCollection(Array.Empty()), Mock.Of()); + _parser = new ManifestParser(AppCaches.Disabled, new ManifestValueValidatorCollection(validators), new ManifestFilterCollection(Array.Empty()), Mock.Of(), Current.IOHelper); } [Test] diff --git a/src/Umbraco.Web/ContentApps/ContentAppFactoryCollectionBuilder.cs b/src/Umbraco.Web/ContentApps/ContentAppFactoryCollectionBuilder.cs index 170b9169ef..4e86b407b5 100644 --- a/src/Umbraco.Web/ContentApps/ContentAppFactoryCollectionBuilder.cs +++ b/src/Umbraco.Web/ContentApps/ContentAppFactoryCollectionBuilder.cs @@ -2,6 +2,7 @@ using System.Linq; using Umbraco.Core; using Umbraco.Core.Composing; +using Umbraco.Core.IO; using Umbraco.Core.Logging; using Umbraco.Core.Manifest; using Umbraco.Core.Models.ContentEditing; @@ -28,7 +29,7 @@ namespace Umbraco.Web.ContentApps // its dependencies too, and that can create cycles or other oddities var manifestParser = factory.GetInstance(); - return base.CreateItems(factory).Concat(manifestParser.Manifest.ContentApps.Select(x => new ManifestContentAppFactory(x))); + return base.CreateItems(factory).Concat(manifestParser.Manifest.ContentApps.Select(x => new ManifestContentAppFactory(x, Current.IOHelper))); } } }