Add IModelsGenerator Interface (#12210)

This commit is contained in:
Michael Robertson
2023-04-20 05:12:53 -04:00
committed by GitHub
parent c4cf5f910d
commit 2987dcb30e
6 changed files with 107 additions and 9 deletions

View File

@@ -1,9 +1,10 @@
using System;
using System.Threading.Tasks;
using System.ComponentModel;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Cms.Core.DependencyInjection;
using Umbraco.Cms.Infrastructure.ModelsBuilder;
using Umbraco.Cms.Infrastructure.ModelsBuilder.Building;
using Umbraco.Extensions;
@@ -14,12 +15,37 @@ public class BuildModelsBuilderController : ModelsBuilderControllerBase
{
private ModelsBuilderSettings _modelsBuilderSettings;
private readonly ModelsGenerationError _mbErrors;
private readonly ModelsGenerator _modelGenerator;
private readonly IModelsGenerator _modelGenerator;
// TODO: Remove in v13
private readonly ModelsGenerator? _concreteModelGenerator;
[Obsolete("This constructor is obsolete and will be removed in v13. Use the constructor with IModelsGenerator instead.")]
[Browsable(false)]
public BuildModelsBuilderController(
IOptionsMonitor<ModelsBuilderSettings> modelsBuilderSettings,
ModelsGenerationError mbErrors,
ModelsGenerator modelGenerator)
: this(modelsBuilderSettings, mbErrors, StaticServiceProvider.Instance.GetRequiredService<IModelsGenerator>())
{
}
[Obsolete("This constructor is obsolete and will be removed in v13. Use the constructor with only IModelsGenerator instead.")]
[Browsable(false)]
public BuildModelsBuilderController(
IOptionsMonitor<ModelsBuilderSettings> modelsBuilderSettings,
ModelsGenerationError mbErrors,
ModelsGenerator concreteModelGenerator,
IModelsGenerator modelGenerator)
: this(modelsBuilderSettings, mbErrors, modelGenerator)
{
}
[ActivatorUtilitiesConstructor]
public BuildModelsBuilderController(
IOptionsMonitor<ModelsBuilderSettings> modelsBuilderSettings,
ModelsGenerationError mbErrors,
IModelsGenerator modelGenerator)
{
_mbErrors = mbErrors;
_modelGenerator = modelGenerator;

View File

@@ -1,7 +1,10 @@
using System.ComponentModel;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Umbraco.Cms.Core.Configuration;
using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Cms.Core.DependencyInjection;
using Umbraco.Cms.Core.Events;
using Umbraco.Cms.Core.Notifications;
using Umbraco.Cms.Core.Runtime;
@@ -26,7 +29,35 @@ public sealed class AutoModelsNotificationHandler : INotificationHandler<Umbraco
private readonly ILogger<AutoModelsNotificationHandler> _logger;
private readonly IMainDom _mainDom;
private readonly ModelsGenerationError _mbErrors;
private readonly ModelsGenerator _modelGenerator;
private readonly IModelsGenerator _modelGenerator;
// TODO: Remove in v13
private readonly ModelsGenerator? _concreteModelGenerator;
[Obsolete("This constructor is obsolete and will be removed in v13. Use the constructor with IModelsGenerator instead.")]
[Browsable(false)]
public AutoModelsNotificationHandler(
ILogger<AutoModelsNotificationHandler> logger,
IOptionsMonitor<ModelsBuilderSettings> config,
ModelsGenerator modelGenerator,
ModelsGenerationError mbErrors,
IMainDom mainDom)
: this(logger, config, StaticServiceProvider.Instance.GetRequiredService<IModelsGenerator>(), mbErrors, mainDom)
{
}
[Obsolete("This constructor is obsolete and will be removed in v13. Use the constructor with only IModelsGenerator instead.")]
[Browsable(false)]
public AutoModelsNotificationHandler(
ILogger<AutoModelsNotificationHandler> logger,
IOptionsMonitor<ModelsBuilderSettings> config,
ModelsGenerator concreteModelGenerator,
IModelsGenerator modelGenerator,
ModelsGenerationError mbErrors,
IMainDom mainDom)
: this(logger, config, modelGenerator, mbErrors, mainDom)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="AutoModelsNotificationHandler" /> class.
@@ -34,7 +65,7 @@ public sealed class AutoModelsNotificationHandler : INotificationHandler<Umbraco
public AutoModelsNotificationHandler(
ILogger<AutoModelsNotificationHandler> logger,
IOptionsMonitor<ModelsBuilderSettings> config,
ModelsGenerator modelGenerator,
IModelsGenerator modelGenerator,
ModelsGenerationError mbErrors,
IMainDom mainDom)
{

View File

@@ -0,0 +1,7 @@
namespace Umbraco.Cms.Infrastructure.ModelsBuilder.Building
{
public interface IModelsGenerator
{
void GenerateModels();
}
}

View File

@@ -6,7 +6,7 @@ using Umbraco.Extensions;
namespace Umbraco.Cms.Infrastructure.ModelsBuilder.Building;
public class ModelsGenerator
public class ModelsGenerator : IModelsGenerator
{
private readonly IHostingEnvironment _hostingEnvironment;
private readonly OutOfDateModelsStatus _outOfDateModels;

View File

@@ -1,9 +1,12 @@
using System.ComponentModel;
using System.Runtime.Serialization;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Umbraco.Cms.Core.Configuration;
using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Cms.Core.DependencyInjection;
using Umbraco.Cms.Infrastructure.ModelsBuilder;
using Umbraco.Cms.Infrastructure.ModelsBuilder.Building;
using Umbraco.Cms.Web.BackOffice.Controllers;
@@ -33,11 +36,40 @@ public class ModelsBuilderDashboardController : UmbracoAuthorizedJsonController
private readonly ModelsBuilderSettings _config;
private readonly DashboardReport _dashboardReport;
private readonly ModelsGenerationError _mbErrors;
private readonly ModelsGenerator _modelGenerator;
private readonly IModelsGenerator _modelGenerator;
private readonly OutOfDateModelsStatus _outOfDateModels;
public ModelsBuilderDashboardController(IOptions<ModelsBuilderSettings> config, ModelsGenerator modelsGenerator,
OutOfDateModelsStatus outOfDateModels, ModelsGenerationError mbErrors)
// TODO: Remove in v13
private readonly ModelsGenerator? _concreteModelGenerator;
[Obsolete("This constructor is obsolete and will be removed in v13. Use the constructor with IModelsGenerator instead.")]
[Browsable(false)]
public ModelsBuilderDashboardController(
IOptions<ModelsBuilderSettings> config,
ModelsGenerator modelsGenerator,
OutOfDateModelsStatus outOfDateModels,
ModelsGenerationError mbErrors)
: this(config, StaticServiceProvider.Instance.GetRequiredService<IModelsGenerator>(), outOfDateModels, mbErrors)
{
}
[Obsolete("This constructor is obsolete and will be removed in v13. Use the constructor with only IModelsGenerator instead.")]
[Browsable(false)]
public ModelsBuilderDashboardController(
IOptions<ModelsBuilderSettings> config,
ModelsGenerator concreteModelGenerator,
IModelsGenerator modelsGenerator,
OutOfDateModelsStatus outOfDateModels,
ModelsGenerationError mbErrors)
: this(config, modelsGenerator, outOfDateModels, mbErrors)
{
}
[ActivatorUtilitiesConstructor]
public ModelsBuilderDashboardController(IOptions<ModelsBuilderSettings> config,
IModelsGenerator modelsGenerator,
OutOfDateModelsStatus outOfDateModels,
ModelsGenerationError mbErrors)
{
_config = config.Value;
_modelGenerator = modelsGenerator;

View File

@@ -133,6 +133,8 @@ public static class UmbracoBuilderDependencyInjectionExtensions
builder.Services.TryAddSingleton<IModelsBuilderDashboardProvider, NoopModelsBuilderDashboardProvider>();
// Register required services for ModelsBuilderDashboardController
builder.Services.AddSingleton<IModelsGenerator, ModelsGenerator>();
// TODO: Remove in v13 - this is only here in case someone is already using this generator directly
builder.Services.AddSingleton<ModelsGenerator>();
builder.Services.AddSingleton<OutOfDateModelsStatus>();
builder.Services.AddSingleton<ModelsGenerationError>();