From 84e330a0ee5fb3c2dce36d92954e76a16c899c54 Mon Sep 17 00:00:00 2001 From: Elitsa Marinovska Date: Mon, 3 Aug 2020 14:16:58 +0200 Subject: [PATCH 1/2] Removes previous changes for injecting IPublishedSnapshotAccessor and instead modifies static methods in ModelsBuilder's generated code to accept the required param --- .../Building/Builder.cs | 1 + .../Building/TextBuilder.cs | 11 +++--- .../ModelsBuilder/BuilderTests.cs | 34 ++++++++----------- 3 files changed, 20 insertions(+), 26 deletions(-) diff --git a/src/Umbraco.ModelsBuilder.Embedded/Building/Builder.cs b/src/Umbraco.ModelsBuilder.Embedded/Building/Builder.cs index 9985a5b1bd..0e75a3839a 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Building/Builder.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Building/Builder.cs @@ -32,6 +32,7 @@ namespace Umbraco.ModelsBuilder.Embedded.Building "Umbraco.Core.Models", "Umbraco.Core.Models.PublishedContent", "Umbraco.Web", + "Umbraco.Web.PublishedCache", "Umbraco.ModelsBuilder.Embedded" }; diff --git a/src/Umbraco.ModelsBuilder.Embedded/Building/TextBuilder.cs b/src/Umbraco.ModelsBuilder.Embedded/Building/TextBuilder.cs index 4e806a844e..e218a2da5f 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Building/TextBuilder.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Building/TextBuilder.cs @@ -174,7 +174,6 @@ namespace Umbraco.ModelsBuilder.Embedded.Building // write the constants & static methods // as 'new' since parent has its own - or maybe not - disable warning - sb.Append("\t\tprivate readonly IPublishedSnapshotAccessor _publishedSnapshotAccessor;\n\n"); sb.Append("\t\t// helpers\n"); sb.Append("#pragma warning disable 0109 // new is redundant\n"); WriteGeneratedCodeAttribute(sb, "\t\t"); @@ -185,16 +184,16 @@ namespace Umbraco.ModelsBuilder.Embedded.Building sb.AppendFormat("\t\tpublic new const PublishedItemType ModelItemType = PublishedItemType.{0};\n", itemType); WriteGeneratedCodeAttribute(sb, "\t\t"); - sb.Append("\t\tpublic new static IPublishedContentType GetModelContentType()\n"); - sb.Append("\t\t\t=> PublishedModelUtility.GetModelContentType(_publishedSnapshotAccessor, ModelItemType, ModelTypeAlias);\n"); + sb.Append("\t\tpublic new static IPublishedContentType GetModelContentType(IPublishedSnapshotAccessor publishedSnapshotAccessor)\n"); + sb.Append("\t\t\t=> PublishedModelUtility.GetModelContentType(publishedSnapshotAccessor, ModelItemType, ModelTypeAlias);\n"); WriteGeneratedCodeAttribute(sb, "\t\t"); - sb.AppendFormat("\t\tpublic static IPublishedPropertyType GetModelPropertyType(Expression> selector)\n", + sb.AppendFormat("\t\tpublic static IPublishedPropertyType GetModelPropertyType(IPublishedSnapshotAccessor publishedSnapshotAccessor, Expression> selector)\n", type.ClrName); - sb.Append("\t\t\t=> PublishedModelUtility.GetModelPropertyType(GetModelContentType(), selector);\n"); + sb.Append("\t\t\t=> PublishedModelUtility.GetModelPropertyType(GetModelContentType(publishedSnapshotAccessor), selector);\n"); sb.Append("#pragma warning restore 0109\n\n"); // write the ctor - sb.AppendFormat("\t\t// ctor\n\t\tpublic {0}(IPublished{1} content, IPublishedSnapshotAccessor publishedSnapshotAccessor)\n\t\t\t: base(content)\n\t\t{{\n\t\t\t_publishedSnapshotAccessor = publishedSnapshotAccessor;\n\t\t}}\n\n", + sb.AppendFormat("\t\t// ctor\n\t\tpublic {0}(IPublished{1} content)\n\t\t\t: base(content)\n\t\t{{ }}\n\n", type.ClrName, type.IsElement ? "Element" : "Content"); // write the properties diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/ModelsBuilder/BuilderTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/ModelsBuilder/BuilderTests.cs index 22903ef768..774b633d19 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/ModelsBuilder/BuilderTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/ModelsBuilder/BuilderTests.cs @@ -67,6 +67,7 @@ using System.Web; using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; using Umbraco.Web; +using Umbraco.Web.PublishedCache; using Umbraco.ModelsBuilder.Embedded; namespace Umbraco.Web.PublishedModels @@ -74,8 +75,6 @@ namespace Umbraco.Web.PublishedModels [PublishedModel(""type1"")] public partial class Type1 : PublishedContentModel { - private readonly IPublishedSnapshotAccessor _publishedSnapshotAccessor; - // helpers #pragma warning disable 0109 // new is redundant [global::System.CodeDom.Compiler.GeneratedCodeAttribute(""Umbraco.ModelsBuilder.Embedded"", """ + version + @""")] @@ -83,19 +82,17 @@ namespace Umbraco.Web.PublishedModels [global::System.CodeDom.Compiler.GeneratedCodeAttribute(""Umbraco.ModelsBuilder.Embedded"", """ + version + @""")] public new const PublishedItemType ModelItemType = PublishedItemType.Content; [global::System.CodeDom.Compiler.GeneratedCodeAttribute(""Umbraco.ModelsBuilder.Embedded"", """ + version + @""")] - public new static IPublishedContentType GetModelContentType() - => PublishedModelUtility.GetModelContentType(_publishedSnapshotAccessor, ModelItemType, ModelTypeAlias); + public new static IPublishedContentType GetModelContentType(IPublishedSnapshotAccessor publishedSnapshotAccessor) + => PublishedModelUtility.GetModelContentType(publishedSnapshotAccessor, ModelItemType, ModelTypeAlias); [global::System.CodeDom.Compiler.GeneratedCodeAttribute(""Umbraco.ModelsBuilder.Embedded"", """ + version + @""")] - public static IPublishedPropertyType GetModelPropertyType(Expression> selector) - => PublishedModelUtility.GetModelPropertyType(GetModelContentType(), selector); + public static IPublishedPropertyType GetModelPropertyType(IPublishedSnapshotAccessor publishedSnapshotAccessor, Expression> selector) + => PublishedModelUtility.GetModelPropertyType(GetModelContentType(publishedSnapshotAccessor), selector); #pragma warning restore 0109 // ctor - public Type1(IPublishedContent content, IPublishedSnapshotAccessor publishedSnapshotAccessor) + public Type1(IPublishedContent content) : base(content) - { - _publishedSnapshotAccessor = publishedSnapshotAccessor; - } + { } // properties @@ -186,6 +183,7 @@ using System.Web; using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; using Umbraco.Web; +using Umbraco.Web.PublishedCache; using Umbraco.ModelsBuilder.Embedded; namespace Umbraco.Web.PublishedModels @@ -193,8 +191,6 @@ namespace Umbraco.Web.PublishedModels [PublishedModel(""type1"")] public partial class Type1 : PublishedContentModel { - private readonly IPublishedSnapshotAccessor _publishedSnapshotAccessor; - // helpers #pragma warning disable 0109 // new is redundant [global::System.CodeDom.Compiler.GeneratedCodeAttribute(""Umbraco.ModelsBuilder.Embedded"", """ + version + @""")] @@ -202,19 +198,17 @@ namespace Umbraco.Web.PublishedModels [global::System.CodeDom.Compiler.GeneratedCodeAttribute(""Umbraco.ModelsBuilder.Embedded"", """ + version + @""")] public new const PublishedItemType ModelItemType = PublishedItemType.Content; [global::System.CodeDom.Compiler.GeneratedCodeAttribute(""Umbraco.ModelsBuilder.Embedded"", """ + version + @""")] - public new static IPublishedContentType GetModelContentType() - => PublishedModelUtility.GetModelContentType(_publishedSnapshotAccessor, ModelItemType, ModelTypeAlias); + public new static IPublishedContentType GetModelContentType(IPublishedSnapshotAccessor publishedSnapshotAccessor) + => PublishedModelUtility.GetModelContentType(publishedSnapshotAccessor, ModelItemType, ModelTypeAlias); [global::System.CodeDom.Compiler.GeneratedCodeAttribute(""Umbraco.ModelsBuilder.Embedded"", """ + version + @""")] - public static IPublishedPropertyType GetModelPropertyType(Expression> selector) - => PublishedModelUtility.GetModelPropertyType(GetModelContentType(), selector); + public static IPublishedPropertyType GetModelPropertyType(IPublishedSnapshotAccessor publishedSnapshotAccessor, Expression> selector) + => PublishedModelUtility.GetModelPropertyType(GetModelContentType(publishedSnapshotAccessor), selector); #pragma warning restore 0109 // ctor - public Type1(IPublishedContent content, IPublishedSnapshotAccessor publishedSnapshotAccessor) + public Type1(IPublishedContent content) : base(content) - { - _publishedSnapshotAccessor = publishedSnapshotAccessor; - } + { } // properties From 6a6e2196528cb978686b191e38f7cf385bef42b6 Mon Sep 17 00:00:00 2001 From: Elitsa Marinovska Date: Mon, 3 Aug 2020 14:37:32 +0200 Subject: [PATCH 2/2] Adds correct reference for HostingEnvironment --- src/Umbraco.ModelsBuilder.Embedded/ReferencedAssemblies.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.ModelsBuilder.Embedded/ReferencedAssemblies.cs b/src/Umbraco.ModelsBuilder.Embedded/ReferencedAssemblies.cs index 8886afa1c8..596e63d8e1 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/ReferencedAssemblies.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/ReferencedAssemblies.cs @@ -2,9 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; -using System.Web.Compilation; -using System.Web.Hosting; -using Umbraco.Core; +using Umbraco.Composing; namespace Umbraco.ModelsBuilder.Embedded { @@ -14,7 +12,7 @@ namespace Umbraco.ModelsBuilder.Embedded static ReferencedAssemblies() { - LazyLocations = new Lazy>(() => HostingEnvironment.IsHosted + LazyLocations = new Lazy>(() => Current.HostingEnvironment.IsHosted // fixme inject! ? GetAllReferencedAssembliesLocationFromBuildManager() : GetAllReferencedAssembliesFromDomain()); }