More config movement

This commit is contained in:
Bjarke Berg
2019-11-07 12:58:56 +01:00
parent 39880f885a
commit a3e73b59bf
11 changed files with 156 additions and 90 deletions

View File

@@ -16,8 +16,6 @@ namespace Umbraco.Core
public static class ConfigsExtensions
{
public static void AddCoreConfigs(this Configs configs)
{
var configDir = new DirectoryInfo(IOHelper.MapPath(SystemDirectories.Config));

View File

@@ -13,7 +13,6 @@ namespace Umbraco.Core.Configuration
configs.Add<IHealthChecks>("umbracoConfiguration/HealthChecks");
configs.Add(() => new CoreDebug());
configs.Add<IHealthChecks>("umbracoConfiguration/HealthChecks");
configs.AddCoreConfigs();
return configs;
}

View File

@@ -29,9 +29,9 @@ namespace Umbraco.Core.Configuration.Grid
{
get
{
List<GridEditor> GetResult()
List<IGridEditorConfig> GetResult()
{
var editors = new List<GridEditor>();
var editors = new List<IGridEditorConfig>();
var gridConfig = Path.Combine(_configFolder.FullName, "grid.editors.config.js");
if (File.Exists(gridConfig))
{
@@ -59,7 +59,7 @@ namespace Umbraco.Core.Configuration.Grid
//cache the result if debugging is disabled
var result = _isDebug
? GetResult()
: _appCaches.RuntimeCache.GetCacheItem<List<GridEditor>>(typeof(GridEditorsConfig) + ".Editors",GetResult, TimeSpan.FromMinutes(10));
: _appCaches.RuntimeCache.GetCacheItem<List<IGridEditorConfig>>(typeof(GridEditorsConfig) + ".Editors",GetResult, TimeSpan.FromMinutes(10));
return result;
}

View File

@@ -14,6 +14,6 @@ namespace Umbraco.Core.Manifest
/// <remarks>
/// <para>It is possible to remove, change, or add manifests.</para>
/// </remarks>
void Filter(List<PackageManifest> manifests);
void Filter(List<IPackageManifest> manifests);
}
}

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using Umbraco.Core.Configuration.Grid;
using Umbraco.Core.PropertyEditors;
namespace Umbraco.Core.Manifest
@@ -11,13 +12,13 @@ namespace Umbraco.Core.Manifest
/// Gets all manifests, merged into a single manifest object.
/// </summary>
/// <returns></returns>
PackageManifest Manifest { get; }
IPackageManifest Manifest { get; }
/// <summary>
/// Parses a manifest.
/// </summary>
PackageManifest ParseManifest(string text);
IPackageManifest ParseManifest(string text);
IEnumerable<GridEditor> ParseGridEditors(string text);
IEnumerable<IGridEditorConfig> ParseGridEditors(string text);
}
}
}

View File

@@ -0,0 +1,65 @@
using System.Runtime.Serialization;
using Umbraco.Core.PropertyEditors;
namespace Umbraco.Core.Manifest
{
public interface IPackageManifest
{
/// <summary>
/// Gets the source path of the manifest.
/// </summary>
/// <remarks>
/// <para>Gets the full absolute file path of the manifest,
/// using system directory separators.</para>
/// </remarks>
string Source { get; set; }
/// <summary>
/// Gets or sets the scripts listed in the manifest.
/// </summary>
[DataMember(Name = "javascript")]
string[] Scripts { get; set; }
/// <summary>
/// Gets or sets the stylesheets listed in the manifest.
/// </summary>
[DataMember(Name = "css")]
string[] Stylesheets { get; set; }
/// <summary>
/// Gets or sets the property editors listed in the manifest.
/// </summary>
[DataMember(Name = "propertyEditors")]
IDataEditor[] PropertyEditors { get; set; }
/// <summary>
/// Gets or sets the parameter editors listed in the manifest.
/// </summary>
[DataMember(Name = "parameterEditors")]
IDataEditor[] ParameterEditors { get; set; }
/// <summary>
/// Gets or sets the grid editors listed in the manifest.
/// </summary>
[DataMember(Name = "gridEditors")]
GridEditor[] GridEditors { get; set; }
/// <summary>
/// Gets or sets the content apps listed in the manifest.
/// </summary>
[DataMember(Name = "contentApps")]
ManifestContentAppDefinition[] ContentApps { get; set; }
/// <summary>
/// Gets or sets the dashboards listed in the manifest.
/// </summary>
[DataMember(Name = "dashboards")]
ManifestDashboard[] Dashboards { get; set; }
/// <summary>
/// Gets or sets the sections listed in the manifest.
/// </summary>
[DataMember(Name = "sections")]
ManifestSection[] Sections { get; set; }
}
}

View File

@@ -19,7 +19,7 @@ namespace Umbraco.Core.Manifest
/// Filters package manifests.
/// </summary>
/// <param name="manifests">The package manifests.</param>
public void Filter(List<PackageManifest> manifests)
public void Filter(List<IPackageManifest> manifests)
{
foreach (var filter in this)
filter.Filter(manifests);

View File

@@ -5,6 +5,7 @@ using System.Linq;
using System.Text;
using Newtonsoft.Json;
using Umbraco.Core.Cache;
using Umbraco.Core.Configuration.Grid;
using Umbraco.Core.Exceptions;
using Umbraco.Core.IO;
using Umbraco.Core.Logging;
@@ -57,8 +58,8 @@ namespace Umbraco.Core.Manifest
/// Gets all manifests, merged into a single manifest object.
/// </summary>
/// <returns></returns>
public PackageManifest Manifest
=> _cache.GetCacheItem<PackageManifest>("Umbraco.Core.Manifest.ManifestParser::Manifests", () =>
public IPackageManifest Manifest
=> _cache.GetCacheItem<IPackageManifest>("Umbraco.Core.Manifest.ManifestParser::Manifests", () =>
{
var manifests = GetManifests();
return MergeManifests(manifests);
@@ -67,9 +68,9 @@ namespace Umbraco.Core.Manifest
/// <summary>
/// Gets all manifests.
/// </summary>
private IEnumerable<PackageManifest> GetManifests()
private IEnumerable<IPackageManifest> GetManifests()
{
var manifests = new List<PackageManifest>();
var manifests = new List<IPackageManifest>();
foreach (var path in GetManifestFiles())
{
@@ -97,7 +98,7 @@ namespace Umbraco.Core.Manifest
/// <summary>
/// Merges all manifests into one.
/// </summary>
private static PackageManifest MergeManifests(IEnumerable<PackageManifest> manifests)
private static IPackageManifest MergeManifests(IEnumerable<IPackageManifest> manifests)
{
var scripts = new HashSet<string>();
var stylesheets = new HashSet<string>();
@@ -153,7 +154,7 @@ namespace Umbraco.Core.Manifest
/// <summary>
/// Parses a manifest.
/// </summary>
public PackageManifest ParseManifest(string text)
public IPackageManifest ParseManifest(string text)
{
if (string.IsNullOrWhiteSpace(text))
throw new ArgumentNullOrEmptyException(nameof(text));
@@ -179,7 +180,7 @@ namespace Umbraco.Core.Manifest
}
// purely for tests
public IEnumerable<GridEditor> ParseGridEditors(string text)
public IEnumerable<IGridEditorConfig> ParseGridEditors(string text)
{
return JsonConvert.DeserializeObject<IEnumerable<GridEditor>>(text);
}

View File

@@ -1,70 +1,70 @@
using System;
using Newtonsoft.Json;
using Umbraco.Core.PropertyEditors;
namespace Umbraco.Core.Manifest
{
/// <summary>
/// Represents the content of a package manifest.
/// </summary>
public class PackageManifest
{
/// <summary>
/// Gets the source path of the manifest.
/// </summary>
/// <remarks>
/// <para>Gets the full absolute file path of the manifest,
/// using system directory separators.</para>
/// </remarks>
[JsonIgnore]
public string Source { get; set; }
/// <summary>
/// Gets or sets the scripts listed in the manifest.
/// </summary>
[JsonProperty("javascript")]
public string[] Scripts { get; set; } = Array.Empty<string>();
/// <summary>
/// Gets or sets the stylesheets listed in the manifest.
/// </summary>
[JsonProperty("css")]
public string[] Stylesheets { get; set; } = Array.Empty<string>();
/// <summary>
/// Gets or sets the property editors listed in the manifest.
/// </summary>
[JsonProperty("propertyEditors")]
public IDataEditor[] PropertyEditors { get; set; } = Array.Empty<IDataEditor>();
/// <summary>
/// Gets or sets the parameter editors listed in the manifest.
/// </summary>
[JsonProperty("parameterEditors")]
public IDataEditor[] ParameterEditors { get; set; } = Array.Empty<IDataEditor>();
/// <summary>
/// Gets or sets the grid editors listed in the manifest.
/// </summary>
[JsonProperty("gridEditors")]
public GridEditor[] GridEditors { get; set; } = Array.Empty<GridEditor>();
/// <summary>
/// Gets or sets the content apps listed in the manifest.
/// </summary>
[JsonProperty("contentApps")]
public ManifestContentAppDefinition[] ContentApps { get; set; } = Array.Empty<ManifestContentAppDefinition>();
/// <summary>
/// Gets or sets the dashboards listed in the manifest.
/// </summary>
[JsonProperty("dashboards")]
public ManifestDashboard[] Dashboards { get; set; } = Array.Empty<ManifestDashboard>();
/// <summary>
/// Gets or sets the sections listed in the manifest.
/// </summary>
[JsonProperty("sections")]
public ManifestSection[] Sections { get; set; } = Array.Empty<ManifestSection>();
}
}
using System;
using Newtonsoft.Json;
using Umbraco.Core.PropertyEditors;
namespace Umbraco.Core.Manifest
{
/// <summary>
/// Represents the content of a package manifest.
/// </summary>
public class PackageManifest : IPackageManifest
{
/// <summary>
/// Gets the source path of the manifest.
/// </summary>
/// <remarks>
/// <para>Gets the full absolute file path of the manifest,
/// using system directory separators.</para>
/// </remarks>
[JsonIgnore]
public string Source { get; set; }
/// <summary>
/// Gets or sets the scripts listed in the manifest.
/// </summary>
[JsonProperty("javascript")]
public string[] Scripts { get; set; } = Array.Empty<string>();
/// <summary>
/// Gets or sets the stylesheets listed in the manifest.
/// </summary>
[JsonProperty("css")]
public string[] Stylesheets { get; set; } = Array.Empty<string>();
/// <summary>
/// Gets or sets the property editors listed in the manifest.
/// </summary>
[JsonProperty("propertyEditors")]
public IDataEditor[] PropertyEditors { get; set; } = Array.Empty<IDataEditor>();
/// <summary>
/// Gets or sets the parameter editors listed in the manifest.
/// </summary>
[JsonProperty("parameterEditors")]
public IDataEditor[] ParameterEditors { get; set; } = Array.Empty<IDataEditor>();
/// <summary>
/// Gets or sets the grid editors listed in the manifest.
/// </summary>
[JsonProperty("gridEditors")]
public GridEditor[] GridEditors { get; set; } = Array.Empty<GridEditor>();
/// <summary>
/// Gets or sets the content apps listed in the manifest.
/// </summary>
[JsonProperty("contentApps")]
public ManifestContentAppDefinition[] ContentApps { get; set; } = Array.Empty<ManifestContentAppDefinition>();
/// <summary>
/// Gets or sets the dashboards listed in the manifest.
/// </summary>
[JsonProperty("dashboards")]
public ManifestDashboard[] Dashboards { get; set; } = Array.Empty<ManifestDashboard>();
/// <summary>
/// Gets or sets the sections listed in the manifest.
/// </summary>
[JsonProperty("sections")]
public ManifestSection[] Sections { get; set; } = Array.Empty<ManifestSection>();
}
}

View File

@@ -158,6 +158,7 @@
<Compile Include="CompositionExtensions_FileSystems.cs" />
<Compile Include="CompositionExtensions_Uniques.cs" />
<Compile Include="Configuration\ConfigsExtensions.cs" />
<Compile Include="Configuration\ConfigsFactory.cs" />
<Compile Include="Configuration\GlobalSettings.cs" />
<Compile Include="Configuration\GlobalSettingsExtensions.cs" />
<Compile Include="Configuration\Grid\GridConfig.cs" />
@@ -184,6 +185,7 @@
<Compile Include="Logging\Viewer\LogTimePeriod.cs" />
<Compile Include="Manifest\IManifestFilter.cs" />
<Compile Include="Manifest\IManifestParser.cs" />
<Compile Include="Manifest\IPackageManifest.cs" />
<Compile Include="Manifest\ManifestFilterCollection.cs" />
<Compile Include="Manifest\ManifestFilterCollectionBuilder.cs" />
<Compile Include="Migrations\IMigrationBuilder.cs" />

View File

@@ -53,7 +53,7 @@ namespace Umbraco.Tests.Published
// there's an "*" there because the arrays are not true SZArray - but that changes when we map
Assert.AreEqual("{alias1}[*]", ModelType.For("alias1").MakeArrayType().FullName);
// note the inner assembly qualified name
Assert.AreEqual("System.Collections.Generic.IEnumerable`1[[{alias1}[*], Umbraco.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", typeof(IEnumerable<>).MakeGenericType(ModelType.For("alias1").MakeArrayType()).FullName);
Assert.AreEqual("System.Collections.Generic.IEnumerable`1[[{alias1}[*], Umbraco.Abstractions, Version=9.0.0.0, Culture=neutral, PublicKeyToken=null]]", typeof(IEnumerable<>).MakeGenericType(ModelType.For("alias1").MakeArrayType()).FullName);
}
[Test]