From 3b6abbb9368b0a93e6ef720e0a5d4bd0c8885a95 Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 29 Oct 2019 00:25:03 +1100 Subject: [PATCH 1/9] Renames project: Umbraco.ModelsBuilder.Embedded and namespaces since we need a different assembly, updates nuspec, changes file path of MB app_plugins --- build/NuSpecs/UmbracoCms.Web.nuspec | 6 +++--- build/NuSpecs/UmbracoCms.nuspec | 1 + src/Umbraco.Core/Properties/AssemblyInfo.cs | 2 +- .../ApiVersion.cs | 2 +- .../BackOffice/ContentTypeModelValidator.cs | 4 +--- .../BackOffice/DashboardReport.cs | 5 ++--- .../ModelsBuilderBackOfficeController.cs | 9 +++------ .../Building/Builder.cs | 10 ++-------- .../Building/ModelsGenerator.cs | 8 +++----- .../Building/PropertyModel.cs | 2 +- .../Building/TextBuilder.cs | 6 ++---- .../Building/TextHeaderWriter.cs | 2 +- .../Building/TypeModel.cs | 2 +- .../Building/TypeModelHasher.cs | 2 +- .../Compose/ModelsBuilderComponent.cs | 6 +++--- .../Compose/ModelsBuilderComposer.cs | 8 +++++--- .../Compose/ModelsBuilderInitializer.cs | 4 ++-- .../ConfigsExtensions.cs | 4 ++-- .../Configuration/IModelsBuilderConfig.cs | 2 +- .../Configuration/ModelsBuilderConfig.cs | 3 +-- .../Configuration/ModelsMode.cs | 2 +- .../Configuration/ModelsModeExtensions.cs | 2 +- .../HashCombiner.cs | 2 +- .../ImplementPropertyTypeAttribute.cs | 2 +- .../LiveModelsProvider.cs | 9 +++------ .../LiveModelsProviderModule.cs | 4 ++-- .../ModelsBuilderAssemblyAttribute.cs | 2 +- .../ModelsGenerationError.cs | 5 ++--- .../OutOfDateModelsStatus.cs | 5 ++--- .../Properties/AssemblyInfo.cs | 0 .../PublishedElementExtensions.cs | 1 + .../PublishedModelUtility.cs | 5 ++--- .../PureLiveModelFactory.cs | 8 +++----- .../ReferencedAssemblies.cs | 2 +- .../TypeExtensions.cs | 2 +- .../Umbraco.ModelsBuilder.Embedded.csproj} | 6 +++--- .../UmbracoServices.cs | 6 ++---- .../ModelsBuilder/BuilderTests.cs | 20 ++++++++----------- .../ModelsBuilder/ConfigTests.cs | 4 ++-- .../ModelsBuilder/StringExtensions.cs | 8 +------- .../ModelsBuilder/UmbracoApplicationTests.cs | 8 +++----- src/Umbraco.Tests/Umbraco.Tests.csproj | 4 ++-- .../modelsbuilder.controller.js | 0 .../modelsbuilder.html | 0 .../modelsbuilder.resource.js | 0 .../package.manifest | 0 src/Umbraco.Web.UI/Umbraco.Web.UI.csproj | 14 +++++-------- src/umbraco.sln | 3 +-- 48 files changed, 86 insertions(+), 126 deletions(-) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/ApiVersion.cs (96%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/BackOffice/ContentTypeModelValidator.cs (96%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/BackOffice/DashboardReport.cs (94%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/BackOffice/ModelsBuilderBackOfficeController.cs (96%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/Building/Builder.cs (97%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/Building/ModelsGenerator.cs (93%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/Building/PropertyModel.cs (97%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/Building/TextBuilder.cs (99%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/Building/TextHeaderWriter.cs (95%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/Building/TypeModel.cs (99%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/Building/TypeModelHasher.cs (96%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/Compose/ModelsBuilderComponent.cs (98%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/Compose/ModelsBuilderComposer.cs (94%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/Compose/ModelsBuilderInitializer.cs (91%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/ConfigsExtensions.cs (87%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/Configuration/IModelsBuilderConfig.cs (86%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/Configuration/ModelsBuilderConfig.cs (99%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/Configuration/ModelsMode.cs (95%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/Configuration/ModelsModeExtensions.cs (95%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/HashCombiner.cs (95%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/ImplementPropertyTypeAttribute.cs (92%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/LiveModelsProvider.cs (95%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/LiveModelsProviderModule.cs (95%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/ModelsBuilderAssemblyAttribute.cs (95%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/ModelsGenerationError.cs (93%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/OutOfDateModelsStatus.cs (94%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/Properties/AssemblyInfo.cs (100%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/PublishedElementExtensions.cs (98%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/PublishedModelUtility.cs (98%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/PureLiveModelFactory.cs (99%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/ReferencedAssemblies.cs (99%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/TypeExtensions.cs (96%) rename src/{Umbraco.ModelsBuilder/Umbraco.ModelsBuilder.csproj => Umbraco.ModelsBuilder.Embedded/Umbraco.ModelsBuilder.Embedded.csproj} (95%) rename src/{Umbraco.ModelsBuilder => Umbraco.ModelsBuilder.Embedded}/UmbracoServices.cs (98%) rename src/Umbraco.Web.UI/App_Plugins/{ModelsBuilder => UmbModelsBuilder}/modelsbuilder.controller.js (100%) rename src/Umbraco.Web.UI/App_Plugins/{ModelsBuilder => UmbModelsBuilder}/modelsbuilder.html (100%) rename src/Umbraco.Web.UI/App_Plugins/{ModelsBuilder => UmbModelsBuilder}/modelsbuilder.resource.js (100%) rename src/Umbraco.Web.UI/App_Plugins/{ModelsBuilder => UmbModelsBuilder}/package.manifest (100%) diff --git a/build/NuSpecs/UmbracoCms.Web.nuspec b/build/NuSpecs/UmbracoCms.Web.nuspec index b6cbbbdb81..658d2f0672 100644 --- a/build/NuSpecs/UmbracoCms.Web.nuspec +++ b/build/NuSpecs/UmbracoCms.Web.nuspec @@ -52,17 +52,17 @@ - + - + - + diff --git a/build/NuSpecs/UmbracoCms.nuspec b/build/NuSpecs/UmbracoCms.nuspec index a6b06d9964..d0bd4a2688 100644 --- a/build/NuSpecs/UmbracoCms.nuspec +++ b/build/NuSpecs/UmbracoCms.nuspec @@ -42,6 +42,7 @@ + diff --git a/src/Umbraco.Core/Properties/AssemblyInfo.cs b/src/Umbraco.Core/Properties/AssemblyInfo.cs index 139af8725d..87e0732d47 100644 --- a/src/Umbraco.Core/Properties/AssemblyInfo.cs +++ b/src/Umbraco.Core/Properties/AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Runtime.InteropServices; [assembly: InternalsVisibleTo("Umbraco.Web")] [assembly: InternalsVisibleTo("Umbraco.Web.UI")] [assembly: InternalsVisibleTo("Umbraco.Examine")] -[assembly: InternalsVisibleTo("Umbraco.ModelsBuilder")] +[assembly: InternalsVisibleTo("Umbraco.ModelsBuilder.Embedded")] [assembly: InternalsVisibleTo("Umbraco.Tests")] [assembly: InternalsVisibleTo("Umbraco.Tests.Benchmarks")] diff --git a/src/Umbraco.ModelsBuilder/ApiVersion.cs b/src/Umbraco.ModelsBuilder.Embedded/ApiVersion.cs similarity index 96% rename from src/Umbraco.ModelsBuilder/ApiVersion.cs rename to src/Umbraco.ModelsBuilder.Embedded/ApiVersion.cs index 67d0ec5c4c..22347edd60 100644 --- a/src/Umbraco.ModelsBuilder/ApiVersion.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/ApiVersion.cs @@ -2,7 +2,7 @@ using System.Reflection; using Semver; -namespace Umbraco.ModelsBuilder +namespace Umbraco.ModelsBuilder.Embedded { /// /// Manages API version handshake between client and server. diff --git a/src/Umbraco.ModelsBuilder/BackOffice/ContentTypeModelValidator.cs b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ContentTypeModelValidator.cs similarity index 96% rename from src/Umbraco.ModelsBuilder/BackOffice/ContentTypeModelValidator.cs rename to src/Umbraco.ModelsBuilder.Embedded/BackOffice/ContentTypeModelValidator.cs index 1971c62c9f..f351721e56 100644 --- a/src/Umbraco.ModelsBuilder/BackOffice/ContentTypeModelValidator.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ContentTypeModelValidator.cs @@ -2,13 +2,11 @@ using System.ComponentModel.DataAnnotations; using System.Linq; using Umbraco.Core; -using Umbraco.Core.Composing; using Umbraco.Core.Models.PublishedContent; -using Umbraco.ModelsBuilder.Configuration; using Umbraco.Web.Editors; using Umbraco.Web.Models.ContentEditing; -namespace Umbraco.ModelsBuilder.BackOffice +namespace Umbraco.ModelsBuilder.Embedded.BackOffice { /// /// Used to validate the aliases for the content type when MB is enabled to ensure that diff --git a/src/Umbraco.ModelsBuilder/BackOffice/DashboardReport.cs b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/DashboardReport.cs similarity index 94% rename from src/Umbraco.ModelsBuilder/BackOffice/DashboardReport.cs rename to src/Umbraco.ModelsBuilder.Embedded/BackOffice/DashboardReport.cs index 64fb217fce..e4c45aaf3e 100644 --- a/src/Umbraco.ModelsBuilder/BackOffice/DashboardReport.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/DashboardReport.cs @@ -1,8 +1,7 @@ using System.Text; -using Umbraco.Core.Composing; -using Umbraco.ModelsBuilder.Configuration; +using Umbraco.ModelsBuilder.Embedded.Configuration; -namespace Umbraco.ModelsBuilder.BackOffice +namespace Umbraco.ModelsBuilder.Embedded.BackOffice { internal class DashboardReport { diff --git a/src/Umbraco.ModelsBuilder/BackOffice/ModelsBuilderBackOfficeController.cs b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ModelsBuilderBackOfficeController.cs similarity index 96% rename from src/Umbraco.ModelsBuilder/BackOffice/ModelsBuilderBackOfficeController.cs rename to src/Umbraco.ModelsBuilder.Embedded/BackOffice/ModelsBuilderBackOfficeController.cs index e4efca70bd..0842c3586a 100644 --- a/src/Umbraco.ModelsBuilder/BackOffice/ModelsBuilderBackOfficeController.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ModelsBuilderBackOfficeController.cs @@ -1,18 +1,15 @@ using System; -using System.IO; -using System.Linq; using System.Net; using System.Net.Http; using System.Runtime.Serialization; -using System.Text; using System.Web.Hosting; using Umbraco.Core.Exceptions; -using Umbraco.ModelsBuilder.Building; -using Umbraco.ModelsBuilder.Configuration; +using Umbraco.ModelsBuilder.Embedded.Building; +using Umbraco.ModelsBuilder.Embedded.Configuration; using Umbraco.Web.Editors; using Umbraco.Web.WebApi.Filters; -namespace Umbraco.ModelsBuilder.BackOffice +namespace Umbraco.ModelsBuilder.Embedded.BackOffice { /// /// API controller for use in the Umbraco back office with Angular resources diff --git a/src/Umbraco.ModelsBuilder/Building/Builder.cs b/src/Umbraco.ModelsBuilder.Embedded/Building/Builder.cs similarity index 97% rename from src/Umbraco.ModelsBuilder/Building/Builder.cs rename to src/Umbraco.ModelsBuilder.Embedded/Building/Builder.cs index bba19c3b9f..82b1b0adec 100644 --- a/src/Umbraco.ModelsBuilder/Building/Builder.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Building/Builder.cs @@ -1,15 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CSharp; -using Microsoft.CodeAnalysis.CSharp.Syntax; -using Umbraco.Core.Composing; -using Umbraco.Core.Configuration; -using Umbraco.ModelsBuilder.Configuration; +using Umbraco.ModelsBuilder.Embedded.Configuration; -namespace Umbraco.ModelsBuilder.Building +namespace Umbraco.ModelsBuilder.Embedded.Building { // NOTE // The idea was to have different types of builder, because I wanted to experiment with diff --git a/src/Umbraco.ModelsBuilder/Building/ModelsGenerator.cs b/src/Umbraco.ModelsBuilder.Embedded/Building/ModelsGenerator.cs similarity index 93% rename from src/Umbraco.ModelsBuilder/Building/ModelsGenerator.cs rename to src/Umbraco.ModelsBuilder.Embedded/Building/ModelsGenerator.cs index 6f6872e8ff..8a3bc5a5b5 100644 --- a/src/Umbraco.ModelsBuilder/Building/ModelsGenerator.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Building/ModelsGenerator.cs @@ -1,10 +1,8 @@ -using System; -using System.IO; +using System.IO; using System.Text; -using System.Web; -using Umbraco.ModelsBuilder.Configuration; +using Umbraco.ModelsBuilder.Embedded.Configuration; -namespace Umbraco.ModelsBuilder.Building +namespace Umbraco.ModelsBuilder.Embedded.Building { public class ModelsGenerator { diff --git a/src/Umbraco.ModelsBuilder/Building/PropertyModel.cs b/src/Umbraco.ModelsBuilder.Embedded/Building/PropertyModel.cs similarity index 97% rename from src/Umbraco.ModelsBuilder/Building/PropertyModel.cs rename to src/Umbraco.ModelsBuilder.Embedded/Building/PropertyModel.cs index 5f2545ec2a..af5445b175 100644 --- a/src/Umbraco.ModelsBuilder/Building/PropertyModel.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Building/PropertyModel.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -namespace Umbraco.ModelsBuilder.Building +namespace Umbraco.ModelsBuilder.Embedded.Building { /// /// Represents a model property. diff --git a/src/Umbraco.ModelsBuilder/Building/TextBuilder.cs b/src/Umbraco.ModelsBuilder.Embedded/Building/TextBuilder.cs similarity index 99% rename from src/Umbraco.ModelsBuilder/Building/TextBuilder.cs rename to src/Umbraco.ModelsBuilder.Embedded/Building/TextBuilder.cs index 56349f16a8..d1190a0374 100644 --- a/src/Umbraco.ModelsBuilder/Building/TextBuilder.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Building/TextBuilder.cs @@ -3,11 +3,9 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; -using Umbraco.Core.Composing; -using Umbraco.Core.Configuration; -using Umbraco.ModelsBuilder.Configuration; +using Umbraco.ModelsBuilder.Embedded.Configuration; -namespace Umbraco.ModelsBuilder.Building +namespace Umbraco.ModelsBuilder.Embedded.Building { /// /// Implements a builder that works by writing text. diff --git a/src/Umbraco.ModelsBuilder/Building/TextHeaderWriter.cs b/src/Umbraco.ModelsBuilder.Embedded/Building/TextHeaderWriter.cs similarity index 95% rename from src/Umbraco.ModelsBuilder/Building/TextHeaderWriter.cs rename to src/Umbraco.ModelsBuilder.Embedded/Building/TextHeaderWriter.cs index 7244a2966d..a93df97806 100644 --- a/src/Umbraco.ModelsBuilder/Building/TextHeaderWriter.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Building/TextHeaderWriter.cs @@ -1,6 +1,6 @@ using System.Text; -namespace Umbraco.ModelsBuilder.Building +namespace Umbraco.ModelsBuilder.Embedded.Building { internal static class TextHeaderWriter { diff --git a/src/Umbraco.ModelsBuilder/Building/TypeModel.cs b/src/Umbraco.ModelsBuilder.Embedded/Building/TypeModel.cs similarity index 99% rename from src/Umbraco.ModelsBuilder/Building/TypeModel.cs rename to src/Umbraco.ModelsBuilder.Embedded/Building/TypeModel.cs index 06b5e7848a..95356cf3ff 100644 --- a/src/Umbraco.ModelsBuilder/Building/TypeModel.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Building/TypeModel.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using Umbraco.Core.Models.PublishedContent; -namespace Umbraco.ModelsBuilder.Building +namespace Umbraco.ModelsBuilder.Embedded.Building { /// /// Represents a model. diff --git a/src/Umbraco.ModelsBuilder/Building/TypeModelHasher.cs b/src/Umbraco.ModelsBuilder.Embedded/Building/TypeModelHasher.cs similarity index 96% rename from src/Umbraco.ModelsBuilder/Building/TypeModelHasher.cs rename to src/Umbraco.ModelsBuilder.Embedded/Building/TypeModelHasher.cs index 2099c09415..ff2893d097 100644 --- a/src/Umbraco.ModelsBuilder/Building/TypeModelHasher.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Building/TypeModelHasher.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Linq; -namespace Umbraco.ModelsBuilder.Building +namespace Umbraco.ModelsBuilder.Embedded.Building { internal class TypeModelHasher { diff --git a/src/Umbraco.ModelsBuilder/Compose/ModelsBuilderComponent.cs b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComponent.cs similarity index 98% rename from src/Umbraco.ModelsBuilder/Compose/ModelsBuilderComponent.cs rename to src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComponent.cs index a68315606e..401a5a8931 100644 --- a/src/Umbraco.ModelsBuilder/Compose/ModelsBuilderComponent.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComponent.cs @@ -8,13 +8,13 @@ using Umbraco.Core.Composing; using Umbraco.Core.IO; using Umbraco.Core.Services; using Umbraco.Core.Services.Implement; -using Umbraco.ModelsBuilder.BackOffice; -using Umbraco.ModelsBuilder.Configuration; +using Umbraco.ModelsBuilder.Embedded.BackOffice; +using Umbraco.ModelsBuilder.Embedded.Configuration; using Umbraco.Web; using Umbraco.Web.JavaScript; using Umbraco.Web.Mvc; -namespace Umbraco.ModelsBuilder.Compose +namespace Umbraco.ModelsBuilder.Embedded.Compose { public class ModelsBuilderComponent : IComponent { diff --git a/src/Umbraco.ModelsBuilder/Compose/ModelsBuilderComposer.cs b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComposer.cs similarity index 94% rename from src/Umbraco.ModelsBuilder/Compose/ModelsBuilderComposer.cs rename to src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComposer.cs index fdc4253490..8b3f8db534 100644 --- a/src/Umbraco.ModelsBuilder/Compose/ModelsBuilderComposer.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComposer.cs @@ -2,11 +2,11 @@ using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Models.PublishedContent; -using Umbraco.ModelsBuilder.Building; -using Umbraco.ModelsBuilder.Configuration; +using Umbraco.ModelsBuilder.Embedded.Building; +using Umbraco.ModelsBuilder.Embedded.Configuration; using Umbraco.Web.PublishedCache.NuCache; -namespace Umbraco.ModelsBuilder.Compose +namespace Umbraco.ModelsBuilder.Embedded.Compose { [ComposeBefore(typeof(NuCacheComposer))] [RuntimeLevel(MinLevel = RuntimeLevel.Run)] @@ -16,6 +16,8 @@ namespace Umbraco.ModelsBuilder.Compose { base.Compose(composition); + + composition.Register(Lifetime.Singleton); composition.Configs.Add(() => new ModelsBuilderConfig()); composition.RegisterUnique(); diff --git a/src/Umbraco.ModelsBuilder/Compose/ModelsBuilderInitializer.cs b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderInitializer.cs similarity index 91% rename from src/Umbraco.ModelsBuilder/Compose/ModelsBuilderInitializer.cs rename to src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderInitializer.cs index 6eb8bbb328..a86669b135 100644 --- a/src/Umbraco.ModelsBuilder/Compose/ModelsBuilderInitializer.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderInitializer.cs @@ -1,10 +1,10 @@ using System.Web; using System.Web.Compilation; -using Umbraco.ModelsBuilder.Compose; +using Umbraco.ModelsBuilder.Embedded.Compose; [assembly: PreApplicationStartMethod(typeof(ModelsBuilderInitializer), "Initialize")] -namespace Umbraco.ModelsBuilder.Compose +namespace Umbraco.ModelsBuilder.Embedded.Compose { public static class ModelsBuilderInitializer { diff --git a/src/Umbraco.ModelsBuilder/ConfigsExtensions.cs b/src/Umbraco.ModelsBuilder.Embedded/ConfigsExtensions.cs similarity index 87% rename from src/Umbraco.ModelsBuilder/ConfigsExtensions.cs rename to src/Umbraco.ModelsBuilder.Embedded/ConfigsExtensions.cs index 09314bc3f3..e2b91a8974 100644 --- a/src/Umbraco.ModelsBuilder/ConfigsExtensions.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/ConfigsExtensions.cs @@ -1,7 +1,7 @@ using Umbraco.Core.Configuration; -using Umbraco.ModelsBuilder.Configuration; +using Umbraco.ModelsBuilder.Embedded.Configuration; -namespace Umbraco.ModelsBuilder +namespace Umbraco.ModelsBuilder.Embedded { /// /// Provides extension methods for the class. diff --git a/src/Umbraco.ModelsBuilder/Configuration/IModelsBuilderConfig.cs b/src/Umbraco.ModelsBuilder.Embedded/Configuration/IModelsBuilderConfig.cs similarity index 86% rename from src/Umbraco.ModelsBuilder/Configuration/IModelsBuilderConfig.cs rename to src/Umbraco.ModelsBuilder.Embedded/Configuration/IModelsBuilderConfig.cs index 3bca389f2f..d8a81f0458 100644 --- a/src/Umbraco.ModelsBuilder/Configuration/IModelsBuilderConfig.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Configuration/IModelsBuilderConfig.cs @@ -1,4 +1,4 @@ -namespace Umbraco.ModelsBuilder.Configuration +namespace Umbraco.ModelsBuilder.Embedded.Configuration { public interface IModelsBuilderConfig { diff --git a/src/Umbraco.ModelsBuilder/Configuration/ModelsBuilderConfig.cs b/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsBuilderConfig.cs similarity index 99% rename from src/Umbraco.ModelsBuilder/Configuration/ModelsBuilderConfig.cs rename to src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsBuilderConfig.cs index 48a4423054..881c4f97b8 100644 --- a/src/Umbraco.ModelsBuilder/Configuration/ModelsBuilderConfig.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsBuilderConfig.cs @@ -2,11 +2,10 @@ using System.Configuration; using System.IO; using System.Web.Configuration; -using System.Web.Hosting; using Umbraco.Core; using Umbraco.Core.IO; -namespace Umbraco.ModelsBuilder.Configuration +namespace Umbraco.ModelsBuilder.Embedded.Configuration { /// /// Represents the models builder configuration. diff --git a/src/Umbraco.ModelsBuilder/Configuration/ModelsMode.cs b/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsMode.cs similarity index 95% rename from src/Umbraco.ModelsBuilder/Configuration/ModelsMode.cs rename to src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsMode.cs index 1f1d65f4f1..145508991a 100644 --- a/src/Umbraco.ModelsBuilder/Configuration/ModelsMode.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsMode.cs @@ -1,4 +1,4 @@ -namespace Umbraco.ModelsBuilder.Configuration +namespace Umbraco.ModelsBuilder.Embedded.Configuration { /// /// Defines the models generation modes. diff --git a/src/Umbraco.ModelsBuilder/Configuration/ModelsModeExtensions.cs b/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsModeExtensions.cs similarity index 95% rename from src/Umbraco.ModelsBuilder/Configuration/ModelsModeExtensions.cs rename to src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsModeExtensions.cs index f40d7973b8..be638729ea 100644 --- a/src/Umbraco.ModelsBuilder/Configuration/ModelsModeExtensions.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsModeExtensions.cs @@ -1,4 +1,4 @@ -namespace Umbraco.ModelsBuilder.Configuration +namespace Umbraco.ModelsBuilder.Embedded.Configuration { /// /// Provides extensions for the enumeration. diff --git a/src/Umbraco.ModelsBuilder/HashCombiner.cs b/src/Umbraco.ModelsBuilder.Embedded/HashCombiner.cs similarity index 95% rename from src/Umbraco.ModelsBuilder/HashCombiner.cs rename to src/Umbraco.ModelsBuilder.Embedded/HashCombiner.cs index 51e02e93c1..1c1fca6f73 100644 --- a/src/Umbraco.ModelsBuilder/HashCombiner.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/HashCombiner.cs @@ -1,7 +1,7 @@ using System; using System.Globalization; -namespace Umbraco.ModelsBuilder +namespace Umbraco.ModelsBuilder.Embedded { // because, of course, it's internal in Umbraco // see also System.Web.Util.HashCodeCombiner diff --git a/src/Umbraco.ModelsBuilder/ImplementPropertyTypeAttribute.cs b/src/Umbraco.ModelsBuilder.Embedded/ImplementPropertyTypeAttribute.cs similarity index 92% rename from src/Umbraco.ModelsBuilder/ImplementPropertyTypeAttribute.cs rename to src/Umbraco.ModelsBuilder.Embedded/ImplementPropertyTypeAttribute.cs index a3dba740c1..0359c49654 100644 --- a/src/Umbraco.ModelsBuilder/ImplementPropertyTypeAttribute.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/ImplementPropertyTypeAttribute.cs @@ -1,6 +1,6 @@ using System; -namespace Umbraco.ModelsBuilder +namespace Umbraco.ModelsBuilder.Embedded { /// /// Indicates that a property implements a given property alias. diff --git a/src/Umbraco.ModelsBuilder/LiveModelsProvider.cs b/src/Umbraco.ModelsBuilder.Embedded/LiveModelsProvider.cs similarity index 95% rename from src/Umbraco.ModelsBuilder/LiveModelsProvider.cs rename to src/Umbraco.ModelsBuilder.Embedded/LiveModelsProvider.cs index 0dfe503fce..333181f27c 100644 --- a/src/Umbraco.ModelsBuilder/LiveModelsProvider.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/LiveModelsProvider.cs @@ -1,15 +1,12 @@ using System; using System.Threading; -using System.Web; using System.Web.Hosting; -using Umbraco.Core.Exceptions; -using Umbraco.Core.IO; using Umbraco.Core.Logging; -using Umbraco.ModelsBuilder.Building; -using Umbraco.ModelsBuilder.Configuration; +using Umbraco.ModelsBuilder.Embedded.Building; +using Umbraco.ModelsBuilder.Embedded.Configuration; using Umbraco.Web.Cache; -namespace Umbraco.ModelsBuilder +namespace Umbraco.ModelsBuilder.Embedded { // supports LiveAppData - but not PureLive public sealed class LiveModelsProvider diff --git a/src/Umbraco.ModelsBuilder/LiveModelsProviderModule.cs b/src/Umbraco.ModelsBuilder.Embedded/LiveModelsProviderModule.cs similarity index 95% rename from src/Umbraco.ModelsBuilder/LiveModelsProviderModule.cs rename to src/Umbraco.ModelsBuilder.Embedded/LiveModelsProviderModule.cs index 9d50c4ab42..37b39124c3 100644 --- a/src/Umbraco.ModelsBuilder/LiveModelsProviderModule.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/LiveModelsProviderModule.cs @@ -2,12 +2,12 @@ using System.Web; using Umbraco.Core; using Umbraco.Core.Composing; -using Umbraco.ModelsBuilder; +using Umbraco.ModelsBuilder.Embedded; // will install only if configuration says it needs to be installed [assembly: PreApplicationStartMethod(typeof(LiveModelsProviderModule), "Install")] -namespace Umbraco.ModelsBuilder +namespace Umbraco.ModelsBuilder.Embedded { // have to do this because it's the only way to subscribe to EndRequest, // module is installed by assembly attribute at the top of this file diff --git a/src/Umbraco.ModelsBuilder/ModelsBuilderAssemblyAttribute.cs b/src/Umbraco.ModelsBuilder.Embedded/ModelsBuilderAssemblyAttribute.cs similarity index 95% rename from src/Umbraco.ModelsBuilder/ModelsBuilderAssemblyAttribute.cs rename to src/Umbraco.ModelsBuilder.Embedded/ModelsBuilderAssemblyAttribute.cs index ed956852f8..7570c0b5b2 100644 --- a/src/Umbraco.ModelsBuilder/ModelsBuilderAssemblyAttribute.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/ModelsBuilderAssemblyAttribute.cs @@ -1,6 +1,6 @@ using System; -namespace Umbraco.ModelsBuilder +namespace Umbraco.ModelsBuilder.Embedded { /// /// Indicates that an Assembly is a Models Builder assembly. diff --git a/src/Umbraco.ModelsBuilder/ModelsGenerationError.cs b/src/Umbraco.ModelsBuilder.Embedded/ModelsGenerationError.cs similarity index 93% rename from src/Umbraco.ModelsBuilder/ModelsGenerationError.cs rename to src/Umbraco.ModelsBuilder.Embedded/ModelsGenerationError.cs index 8264fecc87..a692f633a5 100644 --- a/src/Umbraco.ModelsBuilder/ModelsGenerationError.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/ModelsGenerationError.cs @@ -1,10 +1,9 @@ using System; using System.IO; using System.Text; -using Umbraco.Core.Composing; -using Umbraco.ModelsBuilder.Configuration; +using Umbraco.ModelsBuilder.Embedded.Configuration; -namespace Umbraco.ModelsBuilder +namespace Umbraco.ModelsBuilder.Embedded { public sealed class ModelsGenerationError { diff --git a/src/Umbraco.ModelsBuilder/OutOfDateModelsStatus.cs b/src/Umbraco.ModelsBuilder.Embedded/OutOfDateModelsStatus.cs similarity index 94% rename from src/Umbraco.ModelsBuilder/OutOfDateModelsStatus.cs rename to src/Umbraco.ModelsBuilder.Embedded/OutOfDateModelsStatus.cs index 3b43ed771e..5425c31c77 100644 --- a/src/Umbraco.ModelsBuilder/OutOfDateModelsStatus.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/OutOfDateModelsStatus.cs @@ -1,9 +1,8 @@ using System.IO; -using Umbraco.Core.Composing; -using Umbraco.ModelsBuilder.Configuration; +using Umbraco.ModelsBuilder.Embedded.Configuration; using Umbraco.Web.Cache; -namespace Umbraco.ModelsBuilder +namespace Umbraco.ModelsBuilder.Embedded { public sealed class OutOfDateModelsStatus { diff --git a/src/Umbraco.ModelsBuilder/Properties/AssemblyInfo.cs b/src/Umbraco.ModelsBuilder.Embedded/Properties/AssemblyInfo.cs similarity index 100% rename from src/Umbraco.ModelsBuilder/Properties/AssemblyInfo.cs rename to src/Umbraco.ModelsBuilder.Embedded/Properties/AssemblyInfo.cs diff --git a/src/Umbraco.ModelsBuilder/PublishedElementExtensions.cs b/src/Umbraco.ModelsBuilder.Embedded/PublishedElementExtensions.cs similarity index 98% rename from src/Umbraco.ModelsBuilder/PublishedElementExtensions.cs rename to src/Umbraco.ModelsBuilder.Embedded/PublishedElementExtensions.cs index 1211c4fdad..29429ba74f 100644 --- a/src/Umbraco.ModelsBuilder/PublishedElementExtensions.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/PublishedElementExtensions.cs @@ -3,6 +3,7 @@ using System.Linq.Expressions; using System.Reflection; using Umbraco.Core.Models.PublishedContent; using Umbraco.ModelsBuilder; +using Umbraco.ModelsBuilder.Embedded; // same namespace as original Umbraco.Web PublishedElementExtensions // ReSharper disable once CheckNamespace diff --git a/src/Umbraco.ModelsBuilder/PublishedModelUtility.cs b/src/Umbraco.ModelsBuilder.Embedded/PublishedModelUtility.cs similarity index 98% rename from src/Umbraco.ModelsBuilder/PublishedModelUtility.cs rename to src/Umbraco.ModelsBuilder.Embedded/PublishedModelUtility.cs index 44af532a0b..8a6ed83ce9 100644 --- a/src/Umbraco.ModelsBuilder/PublishedModelUtility.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/PublishedModelUtility.cs @@ -1,11 +1,10 @@ using System; -using System.ComponentModel; using System.Linq; using System.Linq.Expressions; -using Umbraco.Web.Composing; using Umbraco.Core.Models.PublishedContent; +using Umbraco.Web.Composing; -namespace Umbraco.ModelsBuilder +namespace Umbraco.ModelsBuilder.Embedded { /// /// This is called from within the generated model classes diff --git a/src/Umbraco.ModelsBuilder/PureLiveModelFactory.cs b/src/Umbraco.ModelsBuilder.Embedded/PureLiveModelFactory.cs similarity index 99% rename from src/Umbraco.ModelsBuilder/PureLiveModelFactory.cs rename to src/Umbraco.ModelsBuilder.Embedded/PureLiveModelFactory.cs index eb82b4323f..8e8a19c729 100644 --- a/src/Umbraco.ModelsBuilder/PureLiveModelFactory.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/PureLiveModelFactory.cs @@ -13,15 +13,13 @@ using System.Web.Compilation; using System.Web.Hosting; using System.Web.WebPages.Razor; using Umbraco.Core; -using Umbraco.Core.Composing; using Umbraco.Core.Logging; using Umbraco.Core.Models.PublishedContent; -using Umbraco.Web.Cache; -using Umbraco.ModelsBuilder.Building; -using Umbraco.ModelsBuilder.Configuration; +using Umbraco.ModelsBuilder.Embedded.Building; +using Umbraco.ModelsBuilder.Embedded.Configuration; using File = System.IO.File; -namespace Umbraco.ModelsBuilder +namespace Umbraco.ModelsBuilder.Embedded { internal class PureLiveModelFactory : ILivePublishedModelFactory, IRegisteredObject { diff --git a/src/Umbraco.ModelsBuilder/ReferencedAssemblies.cs b/src/Umbraco.ModelsBuilder.Embedded/ReferencedAssemblies.cs similarity index 99% rename from src/Umbraco.ModelsBuilder/ReferencedAssemblies.cs rename to src/Umbraco.ModelsBuilder.Embedded/ReferencedAssemblies.cs index e0a20eb9d6..4ccc1afc93 100644 --- a/src/Umbraco.ModelsBuilder/ReferencedAssemblies.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/ReferencedAssemblies.cs @@ -6,7 +6,7 @@ using System.Web.Compilation; using System.Web.Hosting; using Umbraco.Core; -namespace Umbraco.ModelsBuilder +namespace Umbraco.ModelsBuilder.Embedded { internal static class ReferencedAssemblies { diff --git a/src/Umbraco.ModelsBuilder/TypeExtensions.cs b/src/Umbraco.ModelsBuilder.Embedded/TypeExtensions.cs similarity index 96% rename from src/Umbraco.ModelsBuilder/TypeExtensions.cs rename to src/Umbraco.ModelsBuilder.Embedded/TypeExtensions.cs index d3b3ff6b4e..1f270a80a6 100644 --- a/src/Umbraco.ModelsBuilder/TypeExtensions.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/TypeExtensions.cs @@ -1,6 +1,6 @@ using System; -namespace Umbraco.ModelsBuilder +namespace Umbraco.ModelsBuilder.Embedded { internal static class TypeExtensions { diff --git a/src/Umbraco.ModelsBuilder/Umbraco.ModelsBuilder.csproj b/src/Umbraco.ModelsBuilder.Embedded/Umbraco.ModelsBuilder.Embedded.csproj similarity index 95% rename from src/Umbraco.ModelsBuilder/Umbraco.ModelsBuilder.csproj rename to src/Umbraco.ModelsBuilder.Embedded/Umbraco.ModelsBuilder.Embedded.csproj index 46ec0c7d2c..a9a925d9cf 100644 --- a/src/Umbraco.ModelsBuilder/Umbraco.ModelsBuilder.csproj +++ b/src/Umbraco.ModelsBuilder.Embedded/Umbraco.ModelsBuilder.Embedded.csproj @@ -7,8 +7,8 @@ {52AC0BA8-A60E-4E36-897B-E8B97A54ED1C} Library Properties - Umbraco.ModelsBuilder - Umbraco.ModelsBuilder + Umbraco.ModelsBuilder.Embedded + Umbraco.ModelsBuilder.Embedded v4.7.2 512 true @@ -30,7 +30,7 @@ TRACE prompt 4 - bin\Release\Umbraco.ModelsBuilder.xml + bin\Release\Umbraco.ModelsBuilder.Embedded.xml diff --git a/src/Umbraco.ModelsBuilder/UmbracoServices.cs b/src/Umbraco.ModelsBuilder.Embedded/UmbracoServices.cs similarity index 98% rename from src/Umbraco.ModelsBuilder/UmbracoServices.cs rename to src/Umbraco.ModelsBuilder.Embedded/UmbracoServices.cs index 725e5b18c4..cd9f4802f2 100644 --- a/src/Umbraco.ModelsBuilder/UmbracoServices.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/UmbracoServices.cs @@ -2,16 +2,14 @@ using System.Collections.Generic; using System.Linq; using Umbraco.Core; -using Umbraco.Core.Composing; using Umbraco.Core.Exceptions; using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.Services; using Umbraco.Core.Strings; -using Umbraco.ModelsBuilder.Building; -using Umbraco.ModelsBuilder.Configuration; +using Umbraco.ModelsBuilder.Embedded.Building; -namespace Umbraco.ModelsBuilder +namespace Umbraco.ModelsBuilder.Embedded { public sealed class UmbracoServices { diff --git a/src/Umbraco.Tests/ModelsBuilder/BuilderTests.cs b/src/Umbraco.Tests/ModelsBuilder/BuilderTests.cs index 99012643aa..fd381178cc 100644 --- a/src/Umbraco.Tests/ModelsBuilder/BuilderTests.cs +++ b/src/Umbraco.Tests/ModelsBuilder/BuilderTests.cs @@ -2,15 +2,14 @@ using System.Collections.Generic; using System.Linq; using System.Text; -using Microsoft.CodeAnalysis; using Moq; using NUnit.Framework; -using Umbraco.Core.Composing; using Umbraco.Core.Models.PublishedContent; -using Umbraco.ModelsBuilder.Building; -using Umbraco.ModelsBuilder.Configuration; +using Umbraco.ModelsBuilder.Embedded; +using Umbraco.ModelsBuilder.Embedded.Building; +using Umbraco.ModelsBuilder.Embedded.Configuration; -namespace Umbraco.ModelsBuilder.Tests +namespace Umbraco.Tests.ModelsBuilder { [TestFixture] public class BuilderTests @@ -246,7 +245,7 @@ namespace Umbraco.Web.PublishedModels { Alias = "prop2", ClrName = "Prop2", - ModelClrType = typeof(System.Text.StringBuilder), + ModelClrType = typeof(global::System.Text.StringBuilder), }); type1.Properties.Add(new PropertyModel { @@ -342,7 +341,7 @@ namespace Umbraco.Web.PublishedModels builder.Using.Add("Umbraco.ModelsBuilder.Tests"); builder.ModelsNamespaceForTests = "SomeRandomNamespace"; var sb = new StringBuilder(); - builder.WriteClrType(sb, typeof(System.Text.ASCIIEncoding)); + builder.WriteClrType(sb, typeof(global::System.Text.ASCIIEncoding)); // note - these assertions differ from the original tests in MB because in the embedded version, the result of Builder.IsAmbiguousSymbol is always true // which means global:: syntax will be applied to most things @@ -358,7 +357,7 @@ namespace Umbraco.Web.PublishedModels builder.Using.Add("Umbraco.ModelsBuilder.Tests"); builder.ModelsNamespaceForTests = "SomeBorkedNamespace"; var sb = new StringBuilder(); - builder.WriteClrType(sb, typeof(System.Text.ASCIIEncoding)); + builder.WriteClrType(sb, typeof(global::System.Text.ASCIIEncoding)); // note - these assertions differ from the original tests in MB because in the embedded version, the result of Builder.IsAmbiguousSymbol is always true // which means global:: syntax will be applied to most things @@ -417,7 +416,7 @@ namespace Umbraco.Web.PublishedModels public class Class1 { } } - // make it public to be ambiguous (see above) +// make it public to be ambiguous (see above) public class ASCIIEncoding { // can we handle nested types? @@ -425,9 +424,6 @@ namespace Umbraco.Web.PublishedModels } class BuilderTestsClass1 {} -} -namespace SomeBorkedNamespace -{ public class System { } } diff --git a/src/Umbraco.Tests/ModelsBuilder/ConfigTests.cs b/src/Umbraco.Tests/ModelsBuilder/ConfigTests.cs index 58215707f7..5e122ad0fa 100644 --- a/src/Umbraco.Tests/ModelsBuilder/ConfigTests.cs +++ b/src/Umbraco.Tests/ModelsBuilder/ConfigTests.cs @@ -1,8 +1,8 @@ using System.Configuration; using NUnit.Framework; -using Umbraco.ModelsBuilder.Configuration; +using Umbraco.ModelsBuilder.Embedded.Configuration; -namespace Umbraco.ModelsBuilder.Tests +namespace Umbraco.Tests.ModelsBuilder { [TestFixture] public class ModelsBuilderConfigTests diff --git a/src/Umbraco.Tests/ModelsBuilder/StringExtensions.cs b/src/Umbraco.Tests/ModelsBuilder/StringExtensions.cs index 13a256aa14..361d104911 100644 --- a/src/Umbraco.Tests/ModelsBuilder/StringExtensions.cs +++ b/src/Umbraco.Tests/ModelsBuilder/StringExtensions.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Umbraco.ModelsBuilder.Tests +namespace Umbraco.Tests.ModelsBuilder { public static class StringExtensions { diff --git a/src/Umbraco.Tests/ModelsBuilder/UmbracoApplicationTests.cs b/src/Umbraco.Tests/ModelsBuilder/UmbracoApplicationTests.cs index d6d44474c3..4d2ae0e6c6 100644 --- a/src/Umbraco.Tests/ModelsBuilder/UmbracoApplicationTests.cs +++ b/src/Umbraco.Tests/ModelsBuilder/UmbracoApplicationTests.cs @@ -1,12 +1,10 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using NUnit.Framework; -using Umbraco.ModelsBuilder.Building; +using Umbraco.ModelsBuilder.Embedded; +using Umbraco.ModelsBuilder.Embedded.Building; -namespace Umbraco.ModelsBuilder.Tests +namespace Umbraco.Tests.ModelsBuilder { [TestFixture] public class UmbracoApplicationTests diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index ebf081160b..83fff814a4 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -553,9 +553,9 @@ {31785BC3-256C-4613-B2F5-A1B0BDDED8C1} Umbraco.Core - + {52ac0ba8-a60e-4e36-897b-e8b97a54ed1c} - Umbraco.ModelsBuilder + Umbraco.ModelsBuilder.Embedded {651E1350-91B6-44B7-BD60-7207006D7003} diff --git a/src/Umbraco.Web.UI/App_Plugins/ModelsBuilder/modelsbuilder.controller.js b/src/Umbraco.Web.UI/App_Plugins/UmbModelsBuilder/modelsbuilder.controller.js similarity index 100% rename from src/Umbraco.Web.UI/App_Plugins/ModelsBuilder/modelsbuilder.controller.js rename to src/Umbraco.Web.UI/App_Plugins/UmbModelsBuilder/modelsbuilder.controller.js diff --git a/src/Umbraco.Web.UI/App_Plugins/ModelsBuilder/modelsbuilder.html b/src/Umbraco.Web.UI/App_Plugins/UmbModelsBuilder/modelsbuilder.html similarity index 100% rename from src/Umbraco.Web.UI/App_Plugins/ModelsBuilder/modelsbuilder.html rename to src/Umbraco.Web.UI/App_Plugins/UmbModelsBuilder/modelsbuilder.html diff --git a/src/Umbraco.Web.UI/App_Plugins/ModelsBuilder/modelsbuilder.resource.js b/src/Umbraco.Web.UI/App_Plugins/UmbModelsBuilder/modelsbuilder.resource.js similarity index 100% rename from src/Umbraco.Web.UI/App_Plugins/ModelsBuilder/modelsbuilder.resource.js rename to src/Umbraco.Web.UI/App_Plugins/UmbModelsBuilder/modelsbuilder.resource.js diff --git a/src/Umbraco.Web.UI/App_Plugins/ModelsBuilder/package.manifest b/src/Umbraco.Web.UI/App_Plugins/UmbModelsBuilder/package.manifest similarity index 100% rename from src/Umbraco.Web.UI/App_Plugins/ModelsBuilder/package.manifest rename to src/Umbraco.Web.UI/App_Plugins/UmbModelsBuilder/package.manifest diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index 1db4fabbe1..99c1c994d9 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -12,7 +12,7 @@ {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} OnBuildSuccess true - 44319 + 44331 enabled disabled false @@ -118,10 +118,6 @@ Umbraco.Examine {07FBC26B-2927-4A22-8D96-D644C667FECC} - - {52ac0ba8-a60e-4e36-897b-e8b97a54ed1c} - Umbraco.ModelsBuilder - {651e1350-91b6-44b7-bd60-7207006d7003} Umbraco.Web @@ -144,9 +140,9 @@ True Settings.settings - - - + + + @@ -172,7 +168,7 @@ - + ClientDependency.config Designer diff --git a/src/umbraco.sln b/src/umbraco.sln index 1d5aa9a60e..ba9df633bb 100644 --- a/src/umbraco.sln +++ b/src/umbraco.sln @@ -1,6 +1,5 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 -VisualStudioVersion = 16.0.29009.5 VisualStudioVersion = 16.0.29209.152 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Umbraco.Web.UI", "Umbraco.Web.UI\Umbraco.Web.UI.csproj", "{4C4C194C-B5E4-4991-8F87-4373E24CC19F}" @@ -103,7 +102,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IssueTemplates", "IssueTemp ..\.github\ISSUE_TEMPLATE\5_Security_issue.md = ..\.github\ISSUE_TEMPLATE\5_Security_issue.md EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Umbraco.ModelsBuilder", "Umbraco.ModelsBuilder\Umbraco.ModelsBuilder.csproj", "{52AC0BA8-A60E-4E36-897B-E8B97A54ED1C}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Umbraco.ModelsBuilder.Embedded", "Umbraco.ModelsBuilder.Embedded\Umbraco.ModelsBuilder.Embedded.csproj", "{52AC0BA8-A60E-4E36-897B-E8B97A54ED1C}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution From cd8930871118af37948f72135b02fd1ceb67598e Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 29 Oct 2019 01:14:10 +1100 Subject: [PATCH 2/9] Ensures embedded MB is enabled on the UI proj, disables embedded MB if the legacy MB is detected --- ...cs => ModelsBuilderDashboardController.cs} | 4 +- .../DisableModelsBuilderManifestFilter.cs | 17 ++++++++ .../Compose/DisabledModelsBuilderComponent.cs | 30 ++++++++++++++ .../Compose/ModelsBuilderComponent.cs | 5 ++- .../Compose/ModelsBuilderComposer.cs | 40 +++++++++++++++++-- .../Umbraco.ModelsBuilder.Embedded.csproj | 4 +- src/Umbraco.Web.UI/Umbraco.Web.UI.csproj | 4 ++ src/Umbraco.Web/Properties/AssemblyInfo.cs | 2 +- 8 files changed, 96 insertions(+), 10 deletions(-) rename src/Umbraco.ModelsBuilder.Embedded/BackOffice/{ModelsBuilderBackOfficeController.cs => ModelsBuilderDashboardController.cs} (95%) create mode 100644 src/Umbraco.ModelsBuilder.Embedded/Compose/DisableModelsBuilderManifestFilter.cs create mode 100644 src/Umbraco.ModelsBuilder.Embedded/Compose/DisabledModelsBuilderComponent.cs diff --git a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ModelsBuilderBackOfficeController.cs b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ModelsBuilderDashboardController.cs similarity index 95% rename from src/Umbraco.ModelsBuilder.Embedded/BackOffice/ModelsBuilderBackOfficeController.cs rename to src/Umbraco.ModelsBuilder.Embedded/BackOffice/ModelsBuilderDashboardController.cs index 0842c3586a..44260d6719 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ModelsBuilderBackOfficeController.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ModelsBuilderDashboardController.cs @@ -20,7 +20,7 @@ namespace Umbraco.ModelsBuilder.Embedded.BackOffice /// global WebApi formatters being changed since this is always forced to only return Angular JSON Specific formats. /// [UmbracoApplicationAuthorize(Core.Constants.Applications.Settings)] - public class ModelsBuilderBackOfficeController : UmbracoAuthorizedJsonController + public class ModelsBuilderDashboardController : UmbracoAuthorizedJsonController { private readonly IModelsBuilderConfig _config; private readonly ModelsGenerator _modelGenerator; @@ -28,7 +28,7 @@ namespace Umbraco.ModelsBuilder.Embedded.BackOffice private readonly ModelsGenerationError _mbErrors; private readonly DashboardReport _dashboardReport; - public ModelsBuilderBackOfficeController(IModelsBuilderConfig config, ModelsGenerator modelsGenerator, OutOfDateModelsStatus outOfDateModels, ModelsGenerationError mbErrors) + public ModelsBuilderDashboardController(IModelsBuilderConfig config, ModelsGenerator modelsGenerator, OutOfDateModelsStatus outOfDateModels, ModelsGenerationError mbErrors) { //_umbracoServices = umbracoServices; _config = config; diff --git a/src/Umbraco.ModelsBuilder.Embedded/Compose/DisableModelsBuilderManifestFilter.cs b/src/Umbraco.ModelsBuilder.Embedded/Compose/DisableModelsBuilderManifestFilter.cs new file mode 100644 index 0000000000..617c5ced9b --- /dev/null +++ b/src/Umbraco.ModelsBuilder.Embedded/Compose/DisableModelsBuilderManifestFilter.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using Umbraco.Core.Manifest; + +namespace Umbraco.ModelsBuilder.Embedded.Compose +{ + /// + /// Removes the built in embedded models builder manifest from being loaded + /// + internal class DisableModelsBuilderManifestFilter : IManifestFilter + { + public void Filter(List manifests) + { + manifests.RemoveAll(x => x.Source.EndsWith("App_Plugins\\UmbModelsBuilder\\package.manifest", StringComparison.InvariantCultureIgnoreCase)); + } + } +} diff --git a/src/Umbraco.ModelsBuilder.Embedded/Compose/DisabledModelsBuilderComponent.cs b/src/Umbraco.ModelsBuilder.Embedded/Compose/DisabledModelsBuilderComponent.cs new file mode 100644 index 0000000000..c599785711 --- /dev/null +++ b/src/Umbraco.ModelsBuilder.Embedded/Compose/DisabledModelsBuilderComponent.cs @@ -0,0 +1,30 @@ +using Umbraco.Core; +using Umbraco.Core.Composing; +using Umbraco.ModelsBuilder.Embedded.BackOffice; +using Umbraco.Web.Features; + +namespace Umbraco.ModelsBuilder.Embedded.Compose +{ + /// + /// Special component used for when MB is disabled with the legacy MB is detected + /// + internal class DisabledModelsBuilderComponent : IComponent + { + private readonly UmbracoFeatures _features; + + public DisabledModelsBuilderComponent(UmbracoFeatures features) + { + _features = features; + } + + public void Initialize() + { + //disable the embedded dashboard controller + _features.Disabled.Controllers.Add(); + } + + public void Terminate() + { + } + } +} diff --git a/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComponent.cs b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComponent.cs index 401a5a8931..be73393994 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComponent.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComponent.cs @@ -16,7 +16,8 @@ using Umbraco.Web.Mvc; namespace Umbraco.ModelsBuilder.Embedded.Compose { - public class ModelsBuilderComponent : IComponent + + internal class ModelsBuilderComponent : IComponent { private readonly IModelsBuilderConfig _config; @@ -71,7 +72,7 @@ namespace Umbraco.ModelsBuilder.Embedded.Compose if (HttpContext.Current == null) throw new InvalidOperationException("HttpContext is null"); var urlHelper = new UrlHelper(new RequestContext(new HttpContextWrapper(HttpContext.Current), new RouteData())); - umbracoUrls["modelsBuilderBaseUrl"] = urlHelper.GetUmbracoApiServiceBaseUrl(controller => controller.BuildModels()); + umbracoUrls["modelsBuilderBaseUrl"] = urlHelper.GetUmbracoApiServiceBaseUrl(controller => controller.BuildModels()); umbracoPlugins["modelsBuilder"] = GetModelsBuilderSettings(); }; } diff --git a/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComposer.cs b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComposer.cs index 8b3f8db534..cf70adb6fe 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComposer.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComposer.cs @@ -1,23 +1,33 @@ using System.Linq; +using System.Reflection; using Umbraco.Core; +using Umbraco.Core.Logging; using Umbraco.Core.Composing; using Umbraco.Core.Models.PublishedContent; using Umbraco.ModelsBuilder.Embedded.Building; using Umbraco.ModelsBuilder.Embedded.Configuration; using Umbraco.Web.PublishedCache.NuCache; +using Umbraco.Web.Features; namespace Umbraco.ModelsBuilder.Embedded.Compose { + + [ComposeBefore(typeof(NuCacheComposer))] [RuntimeLevel(MinLevel = RuntimeLevel.Run)] - public sealed class ModelsBuilderComposer : ComponentComposer, ICoreComposer + public sealed class ModelsBuilderComposer : ICoreComposer { - public override void Compose(Composition composition) + public void Compose(Composition composition) { - base.Compose(composition); + var isLegacyModelsBuilderInstalled = IsLegacyModelsBuilderInstalled(); - + if (isLegacyModelsBuilderInstalled) + { + ComposeForLegacyModelsBuilder(composition); + return; + } + composition.Components().Append(); composition.Register(Lifetime.Singleton); composition.Configs.Add(() => new ModelsBuilderConfig()); composition.RegisterUnique(); @@ -31,6 +41,28 @@ namespace Umbraco.ModelsBuilder.Embedded.Compose ComposeForDefaultModelsFactory(composition); } + private static bool IsLegacyModelsBuilderInstalled() + { + Assembly legacyMbAssembly = null; + try + { + legacyMbAssembly = Assembly.Load("Umbraco.ModelsBuilder"); + } + catch (System.Exception) + { + //swallow exception, DLL must not be there + } + + return legacyMbAssembly != null; + } + + private void ComposeForLegacyModelsBuilder(Composition composition) + { + composition.Logger.Info("ModelsBuilder.Embedded is disabled, the legacy ModelsBuilder was detected."); + composition.Components().Append(); + composition.ManifestFilters().Append(); + } + private void ComposeForDefaultModelsFactory(Composition composition) { composition.RegisterUnique(factory => diff --git a/src/Umbraco.ModelsBuilder.Embedded/Umbraco.ModelsBuilder.Embedded.csproj b/src/Umbraco.ModelsBuilder.Embedded/Umbraco.ModelsBuilder.Embedded.csproj index a9a925d9cf..4c22566c05 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Umbraco.ModelsBuilder.Embedded.csproj +++ b/src/Umbraco.ModelsBuilder.Embedded/Umbraco.ModelsBuilder.Embedded.csproj @@ -55,6 +55,8 @@ + + @@ -71,7 +73,7 @@ - + diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index 99c1c994d9..ceec3ee927 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -118,6 +118,10 @@ Umbraco.Examine {07FBC26B-2927-4A22-8D96-D644C667FECC} + + {52ac0ba8-a60e-4e36-897b-e8b97a54ed1c} + Umbraco.ModelsBuilder.Embedded + {651e1350-91b6-44b7-bd60-7207006d7003} Umbraco.Web diff --git a/src/Umbraco.Web/Properties/AssemblyInfo.cs b/src/Umbraco.Web/Properties/AssemblyInfo.cs index 9f5abb99b5..ce2cbf0282 100644 --- a/src/Umbraco.Web/Properties/AssemblyInfo.cs +++ b/src/Umbraco.Web/Properties/AssemblyInfo.cs @@ -12,7 +12,7 @@ using System.Runtime.InteropServices; // Umbraco Cms [assembly: InternalsVisibleTo("Umbraco.Web.UI")] - +[assembly: InternalsVisibleTo("Umbraco.ModelsBuilder.Embedded")] [assembly: InternalsVisibleTo("Umbraco.Tests")] [assembly: InternalsVisibleTo("Umbraco.Tests.Benchmarks")] From 2c9939e51699d0c32bcaad9e4fc9cd27da8e6da1 Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 29 Oct 2019 11:02:18 +1100 Subject: [PATCH 3/9] restores the MB enable flag --- build/NuSpecs/tools/Web.config.install.xdt | 1 + .../BackOffice/ContentTypeModelValidator.cs | 70 +----------------- .../ContentTypeModelValidatorBase.cs | 71 +++++++++++++++++++ .../BackOffice/DashboardReport.cs | 3 + .../BackOffice/MediaTypeModelValidator.cs | 17 +++++ .../BackOffice/MemberTypeModelValidator.cs | 17 +++++ .../ModelsBuilderDashboardController.cs | 2 +- .../Compose/ModelsBuilderComponent.cs | 5 +- .../Configuration/IModelsBuilderConfig.cs | 1 + .../Configuration/ModelsBuilderConfig.cs | 18 +++++ .../Configuration/ModelsMode.cs | 2 +- .../Umbraco.ModelsBuilder.Embedded.csproj | 3 + src/Umbraco.Web.UI/web.Template.config | 1 + src/Umbraco.Web/Editors/IEditorValidator.cs | 4 +- 14 files changed, 141 insertions(+), 74 deletions(-) create mode 100644 src/Umbraco.ModelsBuilder.Embedded/BackOffice/ContentTypeModelValidatorBase.cs create mode 100644 src/Umbraco.ModelsBuilder.Embedded/BackOffice/MediaTypeModelValidator.cs create mode 100644 src/Umbraco.ModelsBuilder.Embedded/BackOffice/MemberTypeModelValidator.cs diff --git a/build/NuSpecs/tools/Web.config.install.xdt b/build/NuSpecs/tools/Web.config.install.xdt index 6579717a60..2b79f95c70 100644 --- a/build/NuSpecs/tools/Web.config.install.xdt +++ b/build/NuSpecs/tools/Web.config.install.xdt @@ -14,6 +14,7 @@ + diff --git a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ContentTypeModelValidator.cs b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ContentTypeModelValidator.cs index f351721e56..1fdb64c62a 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ContentTypeModelValidator.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ContentTypeModelValidator.cs @@ -1,9 +1,4 @@ -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; -using Umbraco.Core; -using Umbraco.Core.Models.PublishedContent; -using Umbraco.Web.Editors; +using Umbraco.ModelsBuilder.Embedded.Configuration; using Umbraco.Web.Models.ContentEditing; namespace Umbraco.ModelsBuilder.Embedded.BackOffice @@ -12,70 +7,11 @@ namespace Umbraco.ModelsBuilder.Embedded.BackOffice /// Used to validate the aliases for the content type when MB is enabled to ensure that /// no illegal aliases are used /// + // ReSharper disable once UnusedMember.Global - This is typed scanned public class ContentTypeModelValidator : ContentTypeModelValidatorBase - { } - - /// - /// Used to validate the aliases for the content type when MB is enabled to ensure that - /// no illegal aliases are used - /// - public class MediaTypeModelValidator : ContentTypeModelValidatorBase - { } - - /// - /// Used to validate the aliases for the content type when MB is enabled to ensure that - /// no illegal aliases are used - /// - public class MemberTypeModelValidator : ContentTypeModelValidatorBase - { } - - public abstract class ContentTypeModelValidatorBase : EditorValidator - where TModel : ContentTypeSave - where TProperty : PropertyTypeBasic { - protected override IEnumerable Validate(TModel model) + public ContentTypeModelValidator(IModelsBuilderConfig config) : base(config) { - var properties = model.Groups.SelectMany(x => x.Properties) - .Where(x => x.Inherited == false) - .ToArray(); - - foreach (var prop in properties) - { - var propertyGroup = model.Groups.Single(x => x.Properties.Contains(prop)); - - if (model.Alias.ToLowerInvariant() == prop.Alias.ToLowerInvariant()) - yield return new ValidationResult(string.Format("With Models Builder enabled, you can't have a property with a the alias \"{0}\" when the content type alias is also \"{0}\".", prop.Alias), new[] - { - string.Format("Groups[{0}].Properties[{1}].Alias", model.Groups.IndexOf(propertyGroup), propertyGroup.Properties.IndexOf(prop)) - }); - - //we need to return the field name with an index so it's wired up correctly - var groupIndex = model.Groups.IndexOf(propertyGroup); - var propertyIndex = propertyGroup.Properties.IndexOf(prop); - - var validationResult = ValidateProperty(prop, groupIndex, propertyIndex); - if (validationResult != null) - yield return validationResult; - } - } - - private ValidationResult ValidateProperty(PropertyTypeBasic property, int groupIndex, int propertyIndex) - { - //don't let them match any properties or methods in IPublishedContent - //TODO: There are probably more! - var reservedProperties = typeof(IPublishedContent).GetProperties().Select(x => x.Name).ToArray(); - var reservedMethods = typeof(IPublishedContent).GetMethods().Select(x => x.Name).ToArray(); - - var alias = property.Alias; - - if (reservedProperties.InvariantContains(alias) || reservedMethods.InvariantContains(alias)) - return new ValidationResult( - string.Format("The alias {0} is a reserved term and cannot be used", alias), new[] - { - string.Format("Groups[{0}].Properties[{1}].Alias", groupIndex, propertyIndex) - }); - - return null; } } } diff --git a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ContentTypeModelValidatorBase.cs b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ContentTypeModelValidatorBase.cs new file mode 100644 index 0000000000..15ca2cca24 --- /dev/null +++ b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ContentTypeModelValidatorBase.cs @@ -0,0 +1,71 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using Umbraco.Core; +using Umbraco.Core.Models.PublishedContent; +using Umbraco.ModelsBuilder.Embedded.Configuration; +using Umbraco.Web.Editors; +using Umbraco.Web.Models.ContentEditing; + +namespace Umbraco.ModelsBuilder.Embedded.BackOffice +{ + public abstract class ContentTypeModelValidatorBase : EditorValidator + where TModel : ContentTypeSave + where TProperty : PropertyTypeBasic + { + private readonly IModelsBuilderConfig _config; + + public ContentTypeModelValidatorBase(IModelsBuilderConfig config) + { + _config = config; + } + + protected override IEnumerable Validate(TModel model) + { + //don't do anything if we're not enabled + if (!_config.Enable) yield break; + + var properties = model.Groups.SelectMany(x => x.Properties) + .Where(x => x.Inherited == false) + .ToArray(); + + foreach (var prop in properties) + { + var propertyGroup = model.Groups.Single(x => x.Properties.Contains(prop)); + + if (model.Alias.ToLowerInvariant() == prop.Alias.ToLowerInvariant()) + yield return new ValidationResult(string.Format("With Models Builder enabled, you can't have a property with a the alias \"{0}\" when the content type alias is also \"{0}\".", prop.Alias), new[] + { + $"Groups[{model.Groups.IndexOf(propertyGroup)}].Properties[{propertyGroup.Properties.IndexOf(prop)}].Alias" + }); + + //we need to return the field name with an index so it's wired up correctly + var groupIndex = model.Groups.IndexOf(propertyGroup); + var propertyIndex = propertyGroup.Properties.IndexOf(prop); + + var validationResult = ValidateProperty(prop, groupIndex, propertyIndex); + if (validationResult != null) + yield return validationResult; + } + } + + private ValidationResult ValidateProperty(PropertyTypeBasic property, int groupIndex, int propertyIndex) + { + //don't let them match any properties or methods in IPublishedContent + //TODO: There are probably more! + var reservedProperties = typeof(IPublishedContent).GetProperties().Select(x => x.Name).ToArray(); + var reservedMethods = typeof(IPublishedContent).GetMethods().Select(x => x.Name).ToArray(); + + var alias = property.Alias; + + if (reservedProperties.InvariantContains(alias) || reservedMethods.InvariantContains(alias)) + return new ValidationResult( + $"The alias {alias} is a reserved term and cannot be used", new[] + { + $"Groups[{groupIndex}].Properties[{propertyIndex}].Alias" + }); + + return null; + } + } +} diff --git a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/DashboardReport.cs b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/DashboardReport.cs index e4c45aaf3e..25ddc838e8 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/DashboardReport.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/DashboardReport.cs @@ -24,6 +24,9 @@ namespace Umbraco.ModelsBuilder.Embedded.BackOffice public string Text() { + if (!_config.Enable) + return "Version: " + ApiVersion.Current.Version + "
 
ModelsBuilder is disabled
(the .Enable key is missing, or its value is not 'true')."; + var sb = new StringBuilder(); sb.Append("Version: "); diff --git a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/MediaTypeModelValidator.cs b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/MediaTypeModelValidator.cs new file mode 100644 index 0000000000..9dc1ea6c20 --- /dev/null +++ b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/MediaTypeModelValidator.cs @@ -0,0 +1,17 @@ +using Umbraco.ModelsBuilder.Embedded.Configuration; +using Umbraco.Web.Models.ContentEditing; + +namespace Umbraco.ModelsBuilder.Embedded.BackOffice +{ + /// + /// Used to validate the aliases for the content type when MB is enabled to ensure that + /// no illegal aliases are used + /// + // ReSharper disable once UnusedMember.Global - This is typed scanned + public class MediaTypeModelValidator : ContentTypeModelValidatorBase + { + public MediaTypeModelValidator(IModelsBuilderConfig config) : base(config) + { + } + } +} diff --git a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/MemberTypeModelValidator.cs b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/MemberTypeModelValidator.cs new file mode 100644 index 0000000000..8d0a98eeab --- /dev/null +++ b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/MemberTypeModelValidator.cs @@ -0,0 +1,17 @@ +using Umbraco.ModelsBuilder.Embedded.Configuration; +using Umbraco.Web.Models.ContentEditing; + +namespace Umbraco.ModelsBuilder.Embedded.BackOffice +{ + /// + /// Used to validate the aliases for the content type when MB is enabled to ensure that + /// no illegal aliases are used + /// + // ReSharper disable once UnusedMember.Global - This is typed scanned + public class MemberTypeModelValidator : ContentTypeModelValidatorBase + { + public MemberTypeModelValidator(IModelsBuilderConfig config) : base(config) + { + } + } +} diff --git a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ModelsBuilderDashboardController.cs b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ModelsBuilderDashboardController.cs index 44260d6719..1d9de265e9 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ModelsBuilderDashboardController.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ModelsBuilderDashboardController.cs @@ -97,7 +97,7 @@ namespace Umbraco.ModelsBuilder.Embedded.BackOffice { return new Dashboard { - Enable = true, + Enable = _config.Enable, Text = _dashboardReport.Text(), CanGenerate = _dashboardReport.CanGenerate(), OutOfDateModels = _dashboardReport.AreModelsOutOfDate(), diff --git a/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComponent.cs b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComponent.cs index be73393994..0e41c9ac62 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComponent.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComponent.cs @@ -39,7 +39,8 @@ namespace Umbraco.ModelsBuilder.Embedded.Compose ContentModelBinder.ModelBindingException += ContentModelBinder_ModelBindingException; - FileService.SavingTemplate += FileService_SavingTemplate; + if (_config.Enable) + FileService.SavingTemplate += FileService_SavingTemplate; if (_config.ModelsMode.IsLiveNotPure()) _liveModelsProvider.Install(); @@ -81,7 +82,7 @@ namespace Umbraco.ModelsBuilder.Embedded.Compose { var settings = new Dictionary { - {"enabled", true} + {"enabled", _config.Enable} }; return settings; diff --git a/src/Umbraco.ModelsBuilder.Embedded/Configuration/IModelsBuilderConfig.cs b/src/Umbraco.ModelsBuilder.Embedded/Configuration/IModelsBuilderConfig.cs index d8a81f0458..7e96aec60e 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Configuration/IModelsBuilderConfig.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Configuration/IModelsBuilderConfig.cs @@ -2,6 +2,7 @@ { public interface IModelsBuilderConfig { + bool Enable { get; } bool AcceptUnsafeModelsDirectory { get; } int DebugLevel { get; } bool EnableFactory { get; } diff --git a/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsBuilderConfig.cs b/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsBuilderConfig.cs index 881c4f97b8..c6bccdcf87 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsBuilderConfig.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsBuilderConfig.cs @@ -22,11 +22,18 @@ namespace Umbraco.ModelsBuilder.Embedded.Configuration { const string prefix = "Umbraco.ModelsBuilder."; + // giant kill switch, default: false + // must be explicitely set to true for anything else to happen + Enable = ConfigurationManager.AppSettings[prefix + "Enable"] == "true"; + // ensure defaults are initialized for tests ModelsNamespace = DefaultModelsNamespace; ModelsDirectory = IOHelper.MapPath(DefaultModelsDirectory); DebugLevel = 0; + // stop here, everything is false + if (!Enable) return; + // mode var modelsMode = ConfigurationManager.AppSettings[prefix + "ModelsMode"]; if (!string.IsNullOrWhiteSpace(modelsMode)) @@ -94,6 +101,7 @@ namespace Umbraco.ModelsBuilder.Embedded.Configuration /// Initializes a new instance of the class. ///
public ModelsBuilderConfig( + bool enable = false, ModelsMode modelsMode = ModelsMode.Nothing, string modelsNamespace = null, bool enableFactory = true, @@ -102,6 +110,7 @@ namespace Umbraco.ModelsBuilder.Embedded.Configuration bool acceptUnsafeModelsDirectory = false, int debugLevel = 0) { + Enable = enable; ModelsMode = modelsMode; ModelsNamespace = string.IsNullOrWhiteSpace(modelsNamespace) ? DefaultModelsNamespace : modelsNamespace; @@ -143,6 +152,15 @@ namespace Umbraco.ModelsBuilder.Embedded.Configuration throw new ConfigurationErrorsException($"Invalid models directory \"{config}\"."); } + /// + /// Gets a value indicating whether the whole models experience is enabled. + /// + /// + /// If this is false then absolutely nothing happens. + /// Default value is false which means that unless we have this setting, nothing happens. + /// + public bool Enable { get; } + /// /// Gets the models mode. /// diff --git a/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsMode.cs b/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsMode.cs index 145508991a..e0286fdab1 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsMode.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsMode.cs @@ -8,7 +8,7 @@ /// /// Do not generate models. /// - Nothing = 0, // default value //TODO: This doesn't make sense since we cannot actualy disable MB since Umbraco would die + Nothing = 0, // default value /// /// Generate models in memory. diff --git a/src/Umbraco.ModelsBuilder.Embedded/Umbraco.ModelsBuilder.Embedded.csproj b/src/Umbraco.ModelsBuilder.Embedded/Umbraco.ModelsBuilder.Embedded.csproj index 4c22566c05..c09703ecfb 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Umbraco.ModelsBuilder.Embedded.csproj +++ b/src/Umbraco.ModelsBuilder.Embedded/Umbraco.ModelsBuilder.Embedded.csproj @@ -50,6 +50,9 @@ Properties\SolutionInfo.cs + + + diff --git a/src/Umbraco.Web.UI/web.Template.config b/src/Umbraco.Web.UI/web.Template.config index 8759fc6459..f0abbfde52 100644 --- a/src/Umbraco.Web.UI/web.Template.config +++ b/src/Umbraco.Web.UI/web.Template.config @@ -47,6 +47,7 @@ + diff --git a/src/Umbraco.Web/Editors/IEditorValidator.cs b/src/Umbraco.Web/Editors/IEditorValidator.cs index d469d9d9eb..2d655e3506 100644 --- a/src/Umbraco.Web/Editors/IEditorValidator.cs +++ b/src/Umbraco.Web/Editors/IEditorValidator.cs @@ -14,9 +14,7 @@ namespace Umbraco.Web.Editors // initialized with all IEditorValidator instances // // validation is used exclusively in ContentTypeControllerBase - // the whole thing is internal at the moment, never released - // and, there are no IEditorValidator implementation in Core - // so... this all mechanism is basically useless + // currently the only implementations are for Models Builder. /// /// Provides a general object validator. From 0aa8711988d7040fb5ea73acb014323e3d53423d Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 29 Oct 2019 11:38:06 +1100 Subject: [PATCH 4/9] Ensures that the MB version is added to the models hash to ensure that if the MB version changes, the purelive models are regenerated --- src/Umbraco.ModelsBuilder.Embedded/Building/Builder.cs | 2 +- .../Building/TypeModelHasher.cs | 3 +++ src/Umbraco.ModelsBuilder.Embedded/UmbracoServices.cs | 4 ++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.ModelsBuilder.Embedded/Building/Builder.cs b/src/Umbraco.ModelsBuilder.Embedded/Building/Builder.cs index 82b1b0adec..ffd56d4312 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Building/Builder.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Building/Builder.cs @@ -32,7 +32,7 @@ namespace Umbraco.ModelsBuilder.Embedded.Building "Umbraco.Core.Models", "Umbraco.Core.Models.PublishedContent", "Umbraco.Web", - "Umbraco.ModelsBuilder" + "Umbraco.ModelsBuilder.Embedded" }; /// diff --git a/src/Umbraco.ModelsBuilder.Embedded/Building/TypeModelHasher.cs b/src/Umbraco.ModelsBuilder.Embedded/Building/TypeModelHasher.cs index ff2893d097..2f14bec875 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Building/TypeModelHasher.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Building/TypeModelHasher.cs @@ -35,6 +35,9 @@ namespace Umbraco.ModelsBuilder.Embedded.Building } } + // Include the MB version in the hash so that if the MB version changes, models are rebuilt + hash.Add(ApiVersion.Current.Version.ToString()); + return hash.GetCombinedHashCode(); } } diff --git a/src/Umbraco.ModelsBuilder.Embedded/UmbracoServices.cs b/src/Umbraco.ModelsBuilder.Embedded/UmbracoServices.cs index cd9f4802f2..5ede5f45e9 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/UmbracoServices.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/UmbracoServices.cs @@ -32,6 +32,10 @@ namespace Umbraco.ModelsBuilder.Embedded { var types = new List(); + // TODO: this will require 3 rather large SQL queries on startup in PureLive. I know that these will be cached after lookup but it will slow + // down startup time ... BUT these queries are also used in NuCache on startup so we can't really avoid them. Maybe one day we can + // load all of these in in one query and still have them cached per service, and/or somehow improve the perf of these since they are used on startup + // in more than one place. types.AddRange(GetTypes(PublishedItemType.Content, _contentTypeService.GetAll().Cast().ToArray())); types.AddRange(GetTypes(PublishedItemType.Media, _mediaTypeService.GetAll().Cast().ToArray())); types.AddRange(GetTypes(PublishedItemType.Member, _memberTypeService.GetAll().Cast().ToArray())); From 33cd7f6a982f4c76ab186d5fb6b4c43000d855ea Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 29 Oct 2019 11:55:16 +1100 Subject: [PATCH 5/9] oops, added the internal visible to attribute to the wrong file --- src/SolutionInfo.cs | 3 --- src/Umbraco.ModelsBuilder.Embedded/Properties/AssemblyInfo.cs | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/SolutionInfo.cs b/src/SolutionInfo.cs index 93921e07a2..bf3a271d32 100644 --- a/src/SolutionInfo.cs +++ b/src/SolutionInfo.cs @@ -1,6 +1,5 @@ using System.Reflection; using System.Resources; -using System.Runtime.CompilerServices; [assembly: AssemblyCompany("Umbraco")] [assembly: AssemblyCopyright("Copyright © Umbraco 2019")] @@ -21,5 +20,3 @@ using System.Runtime.CompilerServices; // these are FYI and changed automatically [assembly: AssemblyFileVersion("8.3.0")] [assembly: AssemblyInformationalVersion("8.3.0")] - -[assembly: InternalsVisibleTo("Umbraco.Tests")] diff --git a/src/Umbraco.ModelsBuilder.Embedded/Properties/AssemblyInfo.cs b/src/Umbraco.ModelsBuilder.Embedded/Properties/AssemblyInfo.cs index b576807bb7..68c149adde 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Properties/AssemblyInfo.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Properties/AssemblyInfo.cs @@ -1,4 +1,5 @@ using System.Reflection; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; [assembly: AssemblyTitle("Umbraco.ModelsBuilder")] @@ -8,3 +9,5 @@ using System.Runtime.InteropServices; [assembly: ComVisible(false)] [assembly: Guid("52ac0ba8-a60e-4e36-897b-e8b97a54ed1c")] + +[assembly: InternalsVisibleTo("Umbraco.Tests")] From df2a65424eb6e21ce34d5b200fa12bb0828f758b Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 29 Oct 2019 12:16:56 +1100 Subject: [PATCH 6/9] notes --- src/Umbraco.ModelsBuilder.Embedded/LiveModelsProviderModule.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.ModelsBuilder.Embedded/LiveModelsProviderModule.cs b/src/Umbraco.ModelsBuilder.Embedded/LiveModelsProviderModule.cs index 37b39124c3..678ff241b0 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/LiveModelsProviderModule.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/LiveModelsProviderModule.cs @@ -27,7 +27,7 @@ namespace Umbraco.ModelsBuilder.Embedded // here we're using "Current." since we're in a module, it is possible in a round about way to inject into a module but for now we'll just use Current if (_liveModelsProvider == null) - _liveModelsProvider = Current.Factory.TryGetInstance(); // will be null in upgrade mode + _liveModelsProvider = Current.Factory.TryGetInstance(); // will be null in upgrade mode or if embedded MB is disabled if (_liveModelsProvider?.IsEnabled ?? false) _liveModelsProvider.GenerateModelsIfRequested(sender, e); From 4862ae03aea9758e9fade2b46e55e760336ff078 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Tue, 29 Oct 2019 11:19:32 +0100 Subject: [PATCH 7/9] AB3289 - Fixed broken tests --- .../ModelsBuilder/BuilderTests.cs | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/Umbraco.Tests/ModelsBuilder/BuilderTests.cs b/src/Umbraco.Tests/ModelsBuilder/BuilderTests.cs index fd381178cc..e1c3ecc891 100644 --- a/src/Umbraco.Tests/ModelsBuilder/BuilderTests.cs +++ b/src/Umbraco.Tests/ModelsBuilder/BuilderTests.cs @@ -67,7 +67,7 @@ using System.Web; using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; using Umbraco.Web; -using Umbraco.ModelsBuilder; +using Umbraco.ModelsBuilder.Embedded; namespace Umbraco.Web.PublishedModels { @@ -182,7 +182,7 @@ using System.Web; using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; using Umbraco.Web; -using Umbraco.ModelsBuilder; +using Umbraco.ModelsBuilder.Embedded; namespace Umbraco.Web.PublishedModels { @@ -223,7 +223,7 @@ namespace Umbraco.Web.PublishedModels [Test] public void GenerateAmbiguous() { - // NOTE: since + // NOTE: since var type1 = new TypeModel { @@ -277,8 +277,8 @@ namespace Umbraco.Web.PublishedModels [TestCase("int", typeof(int))] [TestCase("global::System.Collections.Generic.IEnumerable", typeof(IEnumerable))] - [TestCase("global::Umbraco.ModelsBuilder.Tests.BuilderTestsClass1", typeof(BuilderTestsClass1))] - [TestCase("global::Umbraco.ModelsBuilder.Tests.BuilderTests.Class1", typeof(Class1))] + [TestCase("global::Umbraco.Tests.ModelsBuilder.BuilderTestsClass1", typeof(BuilderTestsClass1))] + [TestCase("global::Umbraco.Tests.ModelsBuilder.BuilderTests.Class1", typeof(Class1))] public void WriteClrType(string expected, Type input) { // note - these assertions differ from the original tests in MB because in the embedded version, the result of Builder.IsAmbiguousSymbol is always true @@ -293,15 +293,15 @@ namespace Umbraco.Web.PublishedModels [TestCase("int", typeof(int))] [TestCase("global::System.Collections.Generic.IEnumerable", typeof(IEnumerable))] - [TestCase("global::Umbraco.ModelsBuilder.Tests.BuilderTestsClass1", typeof(BuilderTestsClass1))] - [TestCase("global::Umbraco.ModelsBuilder.Tests.BuilderTests.Class1", typeof(Class1))] + [TestCase("global::Umbraco.Tests.ModelsBuilder.BuilderTestsClass1", typeof(BuilderTestsClass1))] + [TestCase("global::Umbraco.Tests.ModelsBuilder.BuilderTests.Class1", typeof(Class1))] public void WriteClrTypeUsing(string expected, Type input) { // note - these assertions differ from the original tests in MB because in the embedded version, the result of Builder.IsAmbiguousSymbol is always true // which means global:: syntax will be applied to most things var builder = new TextBuilder(); - builder.Using.Add("Umbraco.ModelsBuilder.Tests"); + builder.Using.Add("Umbraco.Tests.ModelsBuilder"); builder.ModelsNamespaceForTests = "ModelsNamespace"; var sb = new StringBuilder(); builder.WriteClrType(sb, input); @@ -313,7 +313,7 @@ namespace Umbraco.Web.PublishedModels { var builder = new TextBuilder(); builder.Using.Add("System.Text"); - builder.ModelsNamespaceForTests = "Umbraco.ModelsBuilder.Tests.Models"; + builder.ModelsNamespaceForTests = "Umbraco.Tests.ModelsBuilder.Models"; var sb = new StringBuilder(); builder.WriteClrType(sb, typeof(StringBuilder)); @@ -327,7 +327,7 @@ namespace Umbraco.Web.PublishedModels public void WriteClrTypeAnother_WithoutUsing() { var builder = new TextBuilder(); - builder.ModelsNamespaceForTests = "Umbraco.ModelsBuilder.Tests.Models"; + builder.ModelsNamespaceForTests = "Umbraco.Tests.ModelsBuilder.Models"; var sb = new StringBuilder(); builder.WriteClrType(sb, typeof(StringBuilder)); Assert.AreEqual("global::System.Text.StringBuilder", sb.ToString()); @@ -338,7 +338,7 @@ namespace Umbraco.Web.PublishedModels { var builder = new TextBuilder(); builder.Using.Add("System.Text"); - builder.Using.Add("Umbraco.ModelsBuilder.Tests"); + builder.Using.Add("Umbraco.Tests.ModelsBuilder"); builder.ModelsNamespaceForTests = "SomeRandomNamespace"; var sb = new StringBuilder(); builder.WriteClrType(sb, typeof(global::System.Text.ASCIIEncoding)); @@ -354,7 +354,7 @@ namespace Umbraco.Web.PublishedModels { var builder = new TextBuilder(); builder.Using.Add("System.Text"); - builder.Using.Add("Umbraco.ModelsBuilder.Tests"); + builder.Using.Add("Umbraco.Tests.ModelsBuilder"); builder.ModelsNamespaceForTests = "SomeBorkedNamespace"; var sb = new StringBuilder(); builder.WriteClrType(sb, typeof(global::System.Text.ASCIIEncoding)); @@ -370,7 +370,7 @@ namespace Umbraco.Web.PublishedModels { var builder = new TextBuilder(); builder.Using.Add("System.Text"); - builder.Using.Add("Umbraco.ModelsBuilder.Tests"); + builder.Using.Add("Umbraco.Tests.ModelsBuilder"); builder.ModelsNamespaceForTests = "SomeRandomNamespace"; var sb = new StringBuilder(); builder.WriteClrType(sb, typeof(ASCIIEncoding)); @@ -378,7 +378,7 @@ namespace Umbraco.Web.PublishedModels // note - these assertions differ from the original tests in MB because in the embedded version, the result of Builder.IsAmbiguousSymbol is always true // which means global:: syntax will be applied to most things - Assert.AreEqual("global::Umbraco.ModelsBuilder.Tests.ASCIIEncoding", sb.ToString()); + Assert.AreEqual("global::Umbraco.Tests.ModelsBuilder.ASCIIEncoding", sb.ToString()); } [Test] @@ -386,15 +386,15 @@ namespace Umbraco.Web.PublishedModels { var builder = new TextBuilder(); builder.Using.Add("System.Text"); - builder.Using.Add("Umbraco.ModelsBuilder.Tests"); - builder.ModelsNamespaceForTests = "Umbraco.ModelsBuilder.Tests.Models"; + builder.Using.Add("Umbraco.Tests.ModelsBuilder"); + builder.ModelsNamespaceForTests = "Umbraco.Tests.ModelsBuilder.Models"; var sb = new StringBuilder(); builder.WriteClrType(sb, typeof(ASCIIEncoding)); // note - these assertions differ from the original tests in MB because in the embedded version, the result of Builder.IsAmbiguousSymbol is always true // which means global:: syntax will be applied to most things - Assert.AreEqual("global::Umbraco.ModelsBuilder.Tests.ASCIIEncoding", sb.ToString()); + Assert.AreEqual("global::Umbraco.Tests.ModelsBuilder.ASCIIEncoding", sb.ToString()); } [Test] @@ -402,7 +402,7 @@ namespace Umbraco.Web.PublishedModels { var builder = new TextBuilder(); builder.Using.Add("System.Text"); - builder.Using.Add("Umbraco.ModelsBuilder.Tests"); + builder.Using.Add("Umbraco.Tests.ModelsBuilder"); builder.ModelsNamespaceForTests = "SomeRandomNamespace"; var sb = new StringBuilder(); builder.WriteClrType(sb, typeof(ASCIIEncoding.Nested)); @@ -410,7 +410,7 @@ namespace Umbraco.Web.PublishedModels // note - these assertions differ from the original tests in MB because in the embedded version, the result of Builder.IsAmbiguousSymbol is always true // which means global:: syntax will be applied to most things - Assert.AreEqual("global::Umbraco.ModelsBuilder.Tests.ASCIIEncoding.Nested", sb.ToString()); + Assert.AreEqual("global::Umbraco.Tests.ModelsBuilder.ASCIIEncoding.Nested", sb.ToString()); } public class Class1 { } From 7d08040f34678c5662cdcc88bae9a3f467c37f3c Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Tue, 29 Oct 2019 14:29:58 +0100 Subject: [PATCH 8/9] AB3289 - Do not use the nuget package as default --- src/Umbraco.Web.UI/Umbraco.Web.UI.csproj | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index ceec3ee927..85300aceb2 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -104,9 +104,6 @@ - - 8.1.0 - From a00824484d46aba619d2e877fd8b031fba5de694 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Tue, 29 Oct 2019 14:43:43 +0100 Subject: [PATCH 9/9] Revert "AB3289 - Do not use the nuget package as default" This reverts commit 7d08040f --- src/Umbraco.Web.UI/Umbraco.Web.UI.csproj | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj index 85300aceb2..ceec3ee927 100644 --- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj +++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj @@ -104,6 +104,9 @@ + + 8.1.0 +