Compare commits

..

72 Commits

Author SHA1 Message Date
Bjarke Berg 15c02ce828 Merge remote-tracking branch 'origin/v8/dev' into vx/feature/unicore 2019-05-31 11:40:15 +02:00
Bjarke Berg 1fe02af841 Moved more stuff into Abstractions 2019-05-28 16:23:52 +02:00
Bjarke Berg 7aca2e3217 Fixed tests that expected file to be in Umbraco.Core 2019-05-27 14:28:24 +02:00
Bjarke Berg e9324055e9 Moved event stuff 2019-05-27 13:53:53 +02:00
Bjarke Berg 00a121188a Moved more abstractions of models 2019-05-27 12:58:51 +02:00
Bjarke Berg dcf022ffaa Moved more abstractions of models 2019-05-27 11:45:35 +02:00
Bjarke Berg 408b00a737 Moved more abstractions of models 2019-05-27 11:20:33 +02:00
Bjarke Berg e571f51750 Merge remote-tracking branch 'origin/v8/dev' into vx/feature/unicore 2019-05-27 10:21:26 +02:00
Bjarke Berg 85eb44ecc3 Moved more abstractions of models 2019-05-27 10:16:07 +02:00
Bjarke Berg 489bb7f3e9 Added netstandard to web.config. 2019-05-27 09:58:15 +02:00
Bjarke Berg ff71d89415 Moved more files and removed modelsbuilder from UI project 2019-05-27 08:57:57 +02:00
Carole Rennie Logan cd93ebe7c1 moving intextensions and removing unused imports
moving intextensions and removing unused imports
2019-05-21 10:48:59 +01:00
Lars-Erik Aabech 917efc4d9a Bump lang level to 7.3 2019-05-20 18:43:27 +02:00
Shannon 3f2dd88325 Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 18:40:27 +02:00
Shannon d42b2492b7 Moves more utilities 2019-05-20 18:40:13 +02:00
Lars-Erik Aabech 98f3035b5c Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 18:39:45 +02:00
Lars-Erik Aabech dccee475f2 Moved several configuration abstractions including IUmbracoSettingsSection. 2019-05-20 18:39:41 +02:00
Bjarke Berg 8bf90bae91 Started moving caches.. 2019-05-20 18:28:35 +02:00
Stephan 34648fc8aa Umbraco.Abstractions default namespace is Umbraco.Core 2019-05-20 18:25:25 +02:00
Lars-Erik Aabech 5f76bb82cd Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 18:23:43 +02:00
Shannon a0506622b4 dirty tracking, entities, cloning moved 2019-05-20 18:23:22 +02:00
Lars-Erik Aabech 1256512a1d Set language level to 7.1 for abstractions project for now 2019-05-20 18:23:21 +02:00
Shannon 46cb6e2329 Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 18:08:09 +02:00
Shannon e58588801e fixes csproj merge 2019-05-20 18:07:57 +02:00
Lars-Erik Aabech 185c453c00 Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 17:58:27 +02:00
Lars-Erik Aabech 152ba318bf Removed Semver dependency by copying the class from the original repo. 2019-05-20 17:58:22 +02:00
Shannon 708f4d89c7 Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 17:57:43 +02:00
Shannon 57ff36452e Moves Strings and extensions to abstractions (where possible) 2019-05-20 17:57:28 +02:00
Stephan 2495df5573 Move collections to abstractions 2019-05-20 17:50:31 +02:00
Carole Rennie Logan e0fd6fa8ee Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 16:48:13 +01:00
Carole Rennie Logan 79e447239f moving custombooleantypeconverter
moving custombooleantypeconverter to abstractions
2019-05-20 16:48:08 +01:00
Lars-Erik Aabech 74865740e0 Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 17:39:30 +02:00
Lars-Erik Aabech f8bc25a2dd Moved runtime abstractions and added SemVer + extensions to abstractions. 2019-05-20 17:39:11 +02:00
Carole Rennie Logan 4da063369d moving SafeCallContext to abstractions
moving SafeCallContext to abstractions
2019-05-20 16:38:42 +01:00
Bjarke Berg facf13f6d5 FIX 2019-05-20 17:29:04 +02:00
Carole Rennie Logan 98afb9a030 Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 16:26:25 +01:00
Lars-Erik Aabech f8462a739c Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 17:25:59 +02:00
Lars-Erik Aabech 837a7b506e Moved first core DI abstractions 2019-05-20 17:25:55 +02:00
Lars-Erik Aabech d576be3593 Made DataTableExtensions and made it/methods public. 2019-05-20 17:25:49 +02:00
Carole Rennie Logan 20282edba4 Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 16:25:38 +01:00
Bjarke Berg 8fa3f8e06a Moved more stuff 2019-05-20 17:25:29 +02:00
Carole Rennie Logan b85fc649ea moving core items to abstractions
moving core items to abstractions
2019-05-20 16:25:08 +01:00
Stephan deefad4b89 Move ILogger/IProfiler/IProfilingLogger to abstractions 2019-05-20 17:24:46 +02:00
Lars-Erik Aabech 888390d86b Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 17:20:56 +02:00
Lars-Erik Aabech 99d2509eaa Moved several poco extensions and removed BindingRedirects 2019-05-20 17:20:52 +02:00
Bjarke Berg e0c0da802d Moved more stuff 2019-05-20 17:20:15 +02:00
Bjarke Berg f238f37508 Moved InvalidCompositionException 2019-05-20 17:12:54 +02:00
Bjarke Berg 2e2a275ea4 Merge remote-tracking branch 'origin/vx/feature/unicore' into vx/feature/unicore 2019-05-20 17:09:54 +02:00
Bjarke Berg a13723cc7e Moved media 2019-05-20 17:09:45 +02:00
Carole Rennie Logan 30add94906 uditype move to abstractions
uditype move to abstractions
2019-05-20 16:09:37 +01:00
Carole Rennie Logan e61cd0fbba Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 16:06:21 +01:00
Carole Rennie Logan 69407caea8 move upgradeablereadlock
moving to abstractions.
2019-05-20 16:06:09 +01:00
Lars-Erik Aabech dd9cfa7abf Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 17:05:10 +02:00
Lars-Erik Aabech 9122bbdd45 Moved IDiscoverable and Dashboards.* 2019-05-20 17:05:04 +02:00
Stephan 295d2d73e3 Move DisposableObjectSlim to abstractions 2019-05-20 17:04:33 +02:00
Carole Rennie Logan 709babc95b Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 15:59:27 +01:00
Bjarke Berg cab1462d51 Merge remote-tracking branch 'origin/vx/feature/unicore' into vx/feature/unicore 2019-05-20 16:59:07 +02:00
Bjarke Berg cad3e8a635 Moved MacroErrorBehaviour.cs 2019-05-20 16:58:47 +02:00
Carole Rennie Logan 9bac6a4074 Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 15:57:51 +01:00
Carole Rennie Logan 49a38f2824 HashCodeCombiner
move hashcodecombiner to abstractions
2019-05-20 15:57:42 +01:00
Lars-Erik Aabech e19cfe575b Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 16:57:40 +02:00
Lars-Erik Aabech c007757564 Moved code annotations 2019-05-20 16:57:14 +02:00
Bjarke Berg 0b77f8c244 Merge remote-tracking branch 'origin/vx/feature/unicore' into vx/feature/unicore 2019-05-20 16:56:19 +02:00
Bjarke Berg f470c4cd3f Moved read and writelock 2019-05-20 16:56:03 +02:00
Shannon 651d48e5c8 Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 16:54:30 +02:00
Shannon 1f70e67ac1 moved more utilities 2019-05-20 16:54:20 +02:00
Lars-Erik Aabech 2ef03a2c24 Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 16:48:22 +02:00
Shannon 04b319ecb2 moves 4 more utilities 2019-05-20 16:48:12 +02:00
Lars-Erik Aabech fb608d5131 Merge branch 'vx/feature/unicore' of https://github.com/umbraco/Umbraco-CMS into vx/feature/unicore 2019-05-20 16:45:17 +02:00
Lars-Erik Aabech dff06bde30 Moved most exceptions to abstractions. Added abstractions to web and tests. 2019-05-20 16:45:12 +02:00
Shannon 30c1c76263 Moved Attempt and updated project refs 2019-05-20 16:40:11 +02:00
Bjarke Berg 61cb7ac769 Moved ICompletable into abstractions for Project UniCore 🦄 2019-05-20 16:34:10 +02:00
1028 changed files with 11346 additions and 13721 deletions
+3 -4
View File
@@ -14,7 +14,6 @@
<summary>Contains the core assemblies needed to run Umbraco Cms</summary>
<language>en-US</language>
<tags>umbraco</tags>
<repository type="git" url="https://github.com/umbraco/umbraco-cms" />
<dependencies>
<group targetFramework="net472">
@@ -45,7 +44,7 @@
<dependency id="Umbraco.SqlServerCE" version="[4.0.0.1,4.999999)" />
<dependency id="NPoco" version="[3.9.4,3.999999)" />
</group>
</dependencies>
</metadata>
<files>
@@ -53,9 +52,9 @@
<file src="$BuildTmp$\WebApp\bin\Umbraco.Core.dll" target="lib\net472\Umbraco.Core.dll" />
<!-- docs -->
<file src="$BuildTmp$\WebApp\bin\Umbraco.Core.xml" target="lib\net472\Umbraco.Core.xml" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Core.xml" target="lib\Umbraco.Core.xml" />
<!-- symbols -->
<file src="$BuildTmp$\bin\Umbraco.Core.pdb" target="lib\net472\Umbraco.Core.pdb" />
<file src="$BuildTmp$\bin\Umbraco.Core.pdb" target="lib" />
</files>
</package>
+6 -7
View File
@@ -14,7 +14,6 @@
<summary>Contains the core assemblies needed to run Umbraco Cms</summary>
<language>en-US</language>
<tags>umbraco</tags>
<repository type="git" url="https://github.com/umbraco/umbraco-cms" />
<dependencies>
<group targetFramework="net472">
@@ -44,7 +43,7 @@
<dependency id="System.Threading.Tasks.Dataflow" version="[4.9.0,4.999999)" />
</group>
</dependencies>
</metadata>
<files>
@@ -54,12 +53,12 @@
<file src="$BuildTmp$\WebApp\bin\Umbraco.Examine.dll" target="lib\net472\Umbraco.Examine.dll" />
<!-- docs -->
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.xml" target="lib\net472\Umbraco.Web.xml" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.UI.xml" target="lib\net472\Umbraco.Web.UI.xml" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Examine.xml" target="lib\net472\Umbraco.Examine.xml" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.xml" target="lib\Umbraco.Web.xml" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Web.UI.xml" target="lib\Umbraco.Web.UI.xml" />
<file src="$BuildTmp$\WebApp\bin\Umbraco.Examine.xml" target="lib\Umbraco.Examine.xml" />
<!-- symbols -->
<file src="$BuildTmp$\bin\Umbraco.Web.pdb" target="lib\net472\Umbraco.Web.pdb" />
<file src="$BuildTmp$\bin\Umbraco.Examine.pdb" target="lib\net472\Umbraco.Examine.pdb" />
<file src="$BuildTmp$\bin\Umbraco.Web.pdb" target="lib" />
<file src="$BuildTmp$\bin\Umbraco.Examine.pdb" target="lib" />
</files>
</package>
+1 -2
View File
@@ -14,7 +14,6 @@
<summary>Installs Umbraco Cms in your Visual Studio ASP.NET project</summary>
<language>en-US</language>
<tags>umbraco</tags>
<repository type="git" url="https://github.com/umbraco/umbraco-cms" />
<dependencies>
<group targetFramework="net472">
@@ -26,7 +25,7 @@
not want this to happen as the alpha of the next major is, really, the next major already.
-->
<dependency id="Microsoft.AspNet.SignalR.Core" version="[2.4.0, 2.999999)" />
<dependency id="Umbraco.ModelsBuilder.Ui" version="[8.1.0]" />
<dependency id="Umbraco.ModelsBuilder.Ui" version="[8.0.4]" />
<dependency id="ImageProcessor.Web" version="[4.10.0.100,4.999999)" />
<dependency id="ImageProcessor.Web.Config" version="[2.5.0.100,2.999999)" />
<dependency id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="[2.0.1,2.999999)" />
@@ -8,7 +8,7 @@
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" xdt:Locator="Match(factoryType)" xdt:Transform="SetAttributes(factoryType)" />
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" xdt:Locator="Match(factoryType)" xdt:Transform="SetAttributes(factoryType)" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="Umbraco.Web.PublishedContentModels" xdt:Transform="InsertIfMissing" />
@@ -18,13 +18,13 @@
<system.web>
<pages
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
xdt:Locator="Match(pageParserFilterType,pageBaseType,userControlBaseType)"
xdt:Transform="SetAttributes(pageParserFilterType,pageBaseType,userControlBaseType)">
<controls>
<add assembly="System.Web.Mvc, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" xdt:Locator="Match(namespace)" xdt:Transform="SetAttributes(assembly)" />
<add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" xdt:Locator="Match(namespace)" xdt:Transform="SetAttributes(assembly)" />
</controls>
</pages>
</system.web>
+4 -21
View File
@@ -18,20 +18,9 @@ if ($project) {
# Copy umbraco and umbraco_files from package to project folder
$umbracoFolder = Join-Path $projectPath "Umbraco"
New-Item -ItemType Directory -Force -Path $umbracoFolder
New-Item -ItemType Directory -Force -Path $umbracoFolder
$umbracoFolderSource = Join-Path $installPath "UmbracoFiles\Umbraco"
Write-Host "copying files to $umbracoFolder ..."
# see https://support.microsoft.com/en-us/help/954404/return-codes-that-are-used-by-the-robocopy-utility-in-windows-server-2
robocopy $umbracoFolderSource $umbracoFolder /is /it /e
if (($lastexitcode -eq 1) -or ($lastexitcode -eq 3) -or ($lastexitcode -eq 5) -or ($lastexitcode -eq 7))
{
write-host "Copy succeeded!"
}
else
{
write-host "Copy failed with exit code:" $lastexitcode
}
robocopy $umbracoFolderSource $umbracoFolder /is /it /e /xf UI.xml /LOG:$copyLogsPath\UmbracoCopy.log
$copyWebconfig = $true
$destinationWebConfig = Join-Path $projectPath "Web.config"
@@ -51,11 +40,7 @@ if ($project) {
}
}
}
Catch
{
Write-Host "An error occurred:"
Write-Host $_
}
Catch { }
}
if($copyWebconfig -eq $true)
@@ -89,9 +74,7 @@ if ($project) {
}
Catch
{
# Not a big problem if this fails, let it go
# Write-Host "An error occurred:"
# Write-Host $_
# Not a big problem if this fails, let it go
}
}
+10 -10
View File
@@ -15,7 +15,7 @@
[Parameter(Mandatory=$false)]
[Alias("doc")]
[switch] $docfx = $false,
# keep the build directories, don't clear them
[Parameter(Mandatory=$false)]
[Alias("c")]
@@ -392,13 +392,13 @@
&$this.BuildEnv.NuGet Pack "$nuspecs\UmbracoCms.Core.nuspec" `
-Properties BuildTmp="$($this.BuildTemp)" `
-Version "$($this.Version.Semver.ToString())" `
-Verbosity detailed -outputDirectory "$($this.BuildOutput)" > "$($this.BuildTemp)\nupack.cmscore.log"
-Symbols -SymbolPackageFormat snupkg -Verbosity detailed -outputDirectory "$($this.BuildOutput)" > "$($this.BuildTemp)\nupack.cmscore.log"
if (-not $?) { throw "Failed to pack NuGet UmbracoCms.Core." }
&$this.BuildEnv.NuGet Pack "$nuspecs\UmbracoCms.Web.nuspec" `
-Properties BuildTmp="$($this.BuildTemp)" `
-Version "$($this.Version.Semver.ToString())" `
-Verbosity detailed -outputDirectory "$($this.BuildOutput)" > "$($this.BuildTemp)\nupack.cmsweb.log"
-Symbols -SymbolPackageFormat snupkg -Verbosity detailed -outputDirectory "$($this.BuildOutput)" > "$($this.BuildTemp)\nupack.cmsweb.log"
if (-not $?) { throw "Failed to pack NuGet UmbracoCms.Web." }
&$this.BuildEnv.NuGet Pack "$nuspecs\UmbracoCms.nuspec" `
@@ -429,37 +429,37 @@
Write-Host "Prepare Azure Gallery"
$this.CopyFile("$($this.SolutionRoot)\build\Azure\azuregalleryrelease.ps1", $this.BuildOutput)
})
$ubuild.DefineMethod("PrepareCSharpDocs",
{
Write-Host "Prepare C# Documentation"
$src = "$($this.SolutionRoot)\src"
$tmp = $this.BuildTemp
$out = $this.BuildOutput
$DocFxJson = Join-Path -Path $src "\ApiDocs\docfx.json"
$DocFxSiteOutput = Join-Path -Path $tmp "\_site\*.*"
#restore nuget packages
$this.RestoreNuGet()
# run DocFx
$DocFx = $this.BuildEnv.DocFx
& $DocFx metadata $DocFxJson
& $DocFx build $DocFxJson
# zip it
& $this.BuildEnv.Zip a -tzip -r "$out\csharp-docs.zip" $DocFxSiteOutput
})
$ubuild.DefineMethod("PrepareAngularDocs",
{
Write-Host "Prepare Angular Documentation"
$src = "$($this.SolutionRoot)\src"
$out = $this.BuildOutput
$this.CompileBelle()
"Moving to Umbraco.Web.UI.Client folder"
+2 -2
View File
@@ -18,5 +18,5 @@ using System.Resources;
[assembly: AssemblyVersion("8.0.0")]
// these are FYI and changed automatically
[assembly: AssemblyFileVersion("8.1.1")]
[assembly: AssemblyInformationalVersion("8.1.1")]
[assembly: AssemblyFileVersion("8.1.0")]
[assembly: AssemblyInformationalVersion("8.1.0")]
@@ -1,12 +1,10 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
namespace Umbraco.Core
{
internal static class AssemblyExtensions
public static class AssemblyExtensions
{
/// <summary>
/// Returns the file used to load the assembly
@@ -21,7 +21,7 @@ namespace Umbraco.Core
// been closed, the Semaphore system object is destroyed - so in any case
// an iisreset should clean up everything
//
internal class AsyncLock
public class AsyncLock
{
private readonly SemaphoreSlim _semaphore;
private readonly Semaphore _semaphore2;
@@ -67,34 +67,31 @@ namespace Umbraco.Core
: new NamedSemaphoreReleaser(_semaphore2);
}
//NOTE: We don't use the "Async" part of this lock at all
//TODO: Remove this and rename this class something like SystemWideLock, then we can re-instate this logic if we ever need an Async lock again
public Task<IDisposable> LockAsync()
{
var wait = _semaphore != null
? _semaphore.WaitAsync()
: _semaphore2.WaitOneAsync();
//public Task<IDisposable> LockAsync()
//{
// var wait = _semaphore != null
// ? _semaphore.WaitAsync()
// : _semaphore2.WaitOneAsync();
return wait.IsCompleted
? _releaserTask ?? Task.FromResult(CreateReleaser()) // anonymous vs named
: wait.ContinueWith((_, state) => (((AsyncLock) state).CreateReleaser()),
this, CancellationToken.None,
TaskContinuationOptions.ExecuteSynchronously, TaskScheduler.Default);
}
// return wait.IsCompleted
// ? _releaserTask ?? Task.FromResult(CreateReleaser()) // anonymous vs named
// : wait.ContinueWith((_, state) => (((AsyncLock) state).CreateReleaser()),
// this, CancellationToken.None,
// TaskContinuationOptions.ExecuteSynchronously, TaskScheduler.Default);
//}
public Task<IDisposable> LockAsync(int millisecondsTimeout)
{
var wait = _semaphore != null
? _semaphore.WaitAsync(millisecondsTimeout)
: _semaphore2.WaitOneAsync(millisecondsTimeout);
//public Task<IDisposable> LockAsync(int millisecondsTimeout)
//{
// var wait = _semaphore != null
// ? _semaphore.WaitAsync(millisecondsTimeout)
// : _semaphore2.WaitOneAsync(millisecondsTimeout);
// return wait.IsCompleted
// ? _releaserTask ?? Task.FromResult(CreateReleaser()) // anonymous vs named
// : wait.ContinueWith((_, state) => (((AsyncLock)state).CreateReleaser()),
// this, CancellationToken.None,
// TaskContinuationOptions.ExecuteSynchronously, TaskScheduler.Default);
//}
return wait.IsCompleted
? _releaserTask ?? Task.FromResult(CreateReleaser()) // anonymous vs named
: wait.ContinueWith((_, state) => (((AsyncLock)state).CreateReleaser()),
this, CancellationToken.None,
TaskContinuationOptions.ExecuteSynchronously, TaskScheduler.Default);
}
public IDisposable Lock()
{
@@ -25,7 +25,7 @@ namespace Umbraco.Core.Cache
/// This is much better for performance when we're not running in a load balanced environment so we can refresh the cache
/// against a already resolved object instead of looking the object back up by id.
/// </remarks>
interface ICacheRefresher<T> : ICacheRefresher
public interface ICacheRefresher<T> : ICacheRefresher
{
void Refresh(T instance);
void Remove(T instance);
@@ -3,7 +3,7 @@
/// <summary>
/// A cache refresher that supports refreshing or removing cache based on a custom Json payload
/// </summary>
interface IJsonCacheRefresher : ICacheRefresher
public interface IJsonCacheRefresher : ICacheRefresher
{
/// <summary>
/// Refreshes, clears, etc... any cache based on the information provided in the json
@@ -3,7 +3,7 @@
/// <summary>
/// A cache refresher that supports refreshing cache based on a custom payload
/// </summary>
interface IPayloadCacheRefresher<TPayload> : IJsonCacheRefresher
public interface IPayloadCacheRefresher<TPayload> : IJsonCacheRefresher
{
/// <summary>
/// Refreshes, clears, etc... any cache based on the information provided in the payload
@@ -6,7 +6,7 @@ namespace Umbraco.Core.CodeAnnotations
/// Attribute to add a Friendly Name string with an UmbracoObjectType enum value
/// </summary>
[AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = false)]
internal class FriendlyNameAttribute : Attribute
public class FriendlyNameAttribute : Attribute
{
/// <summary>
/// friendly name value
@@ -6,7 +6,7 @@ namespace Umbraco.Core.CodeAnnotations
/// Attribute to associate a GUID string and Type with an UmbracoObjectType Enum value
/// </summary>
[AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = false)]
internal class UmbracoObjectTypeAttribute : Attribute
public class UmbracoObjectTypeAttribute : Attribute
{
public UmbracoObjectTypeAttribute(string objectId)
{
@@ -3,7 +3,7 @@
namespace Umbraco.Core.CodeAnnotations
{
[AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = false)]
internal class UmbracoUdiTypeAttribute : Attribute
public class UmbracoUdiTypeAttribute : Attribute
{
public string UdiType { get; private set; }
@@ -5,7 +5,7 @@ namespace Umbraco.Core.Collections
/// <summary>
/// Represents a composite key of (Type, Type) for fast dictionaries.
/// </summary>
internal struct CompositeTypeTypeKey : IEquatable<CompositeTypeTypeKey>
public struct CompositeTypeTypeKey : IEquatable<CompositeTypeTypeKey>
{
/// <summary>
/// Initializes a new instance of the <see cref="CompositeTypeTypeKey"/> struct.
@@ -10,7 +10,7 @@ namespace Umbraco.Core.Collections
/// A List that can be deep cloned with deep cloned elements and can reset the collection's items dirty flags
/// </summary>
/// <typeparam name="T"></typeparam>
internal class DeepCloneableList<T> : List<T>, IDeepCloneable, IRememberBeingDirty
public class DeepCloneableList<T> : List<T>, IDeepCloneable, IRememberBeingDirty
{
private readonly ListCloneBehavior _listCloneBehavior;
@@ -1,6 +1,6 @@
namespace Umbraco.Core.Collections
{
internal enum ListCloneBehavior
public enum ListCloneBehavior
{
/// <summary>
/// When set, DeepClone will clone the items one time and the result list behavior will be None
@@ -7,7 +7,7 @@ namespace Umbraco.Core.Collections
/// and is customizable to keep the newest or oldest equatable item
/// </summary>
/// <typeparam name="T"></typeparam>
internal class OrderedHashSet<T> : KeyedCollection<T, T>
public class OrderedHashSet<T> : KeyedCollection<T, T>
{
private readonly bool _keepOldest;
@@ -8,7 +8,7 @@ namespace Umbraco.Core.Collections
/// </summary>
/// <remarks>Types in the list are, or derive from, or implement, the base type.</remarks>
/// <typeparam name="TBase">The base type.</typeparam>
internal class TypeList<TBase>
public class TypeList<TBase>
{
private readonly List<Type> _list = new List<Type>();
@@ -30,4 +30,4 @@ namespace Umbraco.Core.Collections
return _list.Contains(type);
}
}
}
}
@@ -12,7 +12,7 @@ namespace Umbraco.Core.Composing
/// A utility class for type checking, this provides internal caching so that calls to these methods will be faster
/// than doing a manual type check in c#
/// </summary>
internal static class TypeHelper
public static class TypeHelper
{
private static readonly ConcurrentDictionary<Tuple<Type, bool, bool, bool>, PropertyInfo[]> GetPropertiesCache
= new ConcurrentDictionary<Tuple<Type, bool, bool, bool>, PropertyInfo[]>();
@@ -25,7 +25,7 @@ namespace Umbraco.Core.Composing
/// Based on a type we'll check if it is IEnumerable{T} (or similar) and if so we'll return a List{T}, this will also deal with array types and return List{T} for those too.
/// If it cannot be done, null is returned.
/// </summary>
internal static IList CreateGenericEnumerableFromObject(object obj)
public static IList CreateGenericEnumerableFromObject(object obj)
{
var type = obj.GetType();
@@ -323,7 +323,7 @@ namespace Umbraco.Core.Composing
return MatchType(implementation, contract, new Dictionary<string, Type>());
}
internal static bool MatchType(Type implementation, Type contract, IDictionary<string, Type> bindings, bool variance = true)
public static bool MatchType(Type implementation, Type contract, IDictionary<string, Type> bindings, bool variance = true)
{
if (contract.IsGenericType)
{
@@ -1,5 +1,4 @@
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
namespace Umbraco.Core.Configuration.Grid
{
@@ -0,0 +1,10 @@
namespace Umbraco.Core.Configuration
{
/// <summary>
/// Represents an Umbraco configuration section which can be used to pass to UmbracoConfiguration.For{T}
/// </summary>
public interface IUmbracoConfigurationSection
{
}
}
@@ -6,7 +6,7 @@ namespace Umbraco.Core
/// <summary>
/// Allows for converting string representations of 0 and 1 to boolean
/// </summary>
internal class CustomBooleanTypeConverter : BooleanConverter
public class CustomBooleanTypeConverter : BooleanConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
@@ -1,7 +1,4 @@
using Newtonsoft.Json;
using Umbraco.Core.Manifest;
namespace Umbraco.Core.Dashboards
namespace Umbraco.Core.Dashboards
{
/// <summary>
/// Represents an access rule.
@@ -1,23 +1,15 @@
using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading;
namespace Umbraco.Core
{
/// <summary>
/// Static and extension methods for the DataTable object
/// </summary>
internal static class DataTableExtensions
public static class DataTableExtensions
{
/// <summary>
/// Creates a DataTable with the specified alias and columns and uses a callback to populate the headers.
/// </summary>
@@ -65,7 +57,7 @@ namespace Umbraco.Core
/// <remarks>
/// This is for legacy code, I didn't want to go creating custom classes for these
/// </remarks>
internal static List<System.Tuple<IEnumerable<KeyValuePair<string, object>>, IEnumerable<KeyValuePair<string, object>>>> CreateTableData()
public static List<System.Tuple<IEnumerable<KeyValuePair<string, object>>, IEnumerable<KeyValuePair<string, object>>>> CreateTableData()
{
return new List<System.Tuple<IEnumerable<KeyValuePair<string, object>>, IEnumerable<KeyValuePair<string, object>>>>();
}
@@ -79,7 +71,7 @@ namespace Umbraco.Core
/// <remarks>
/// This is for legacy code, I didn't want to go creating custom classes for these
/// </remarks>
internal static void AddRowData(
public static void AddRowData(
List<System.Tuple<IEnumerable<KeyValuePair<string, object>>, IEnumerable<KeyValuePair<string, object>>>> rowData,
IEnumerable<KeyValuePair<string, object>> standardVals,
IEnumerable<KeyValuePair<string, object>> userVals)
@@ -12,7 +12,7 @@ namespace Umbraco.Core
///<summary>
/// Extension methods for Dictionary & ConcurrentDictionary
///</summary>
internal static class DictionaryExtensions
public static class DictionaryExtensions
{
/// <summary>
@@ -1,4 +1,4 @@
namespace Umbraco.Core.Persistence.DatabaseModelDefinitions
namespace Umbraco.Core
{
public enum Direction
{
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
namespace Umbraco.Core
{
@@ -10,7 +9,44 @@ namespace Umbraco.Core
///</summary>
public static class EnumerableExtensions
{
internal static bool IsCollectionEmpty<T>(this IReadOnlyCollection<T> list) => list == null || list.Count == 0;
// based upon the original Zip<T1, T2, TResult> method
public static IEnumerable<TResult> Zip<T1, T2, T3, TResult>(this IEnumerable<T1> e1, IEnumerable<T2> e2, IEnumerable<T3> e3,
Func<T1, T2, T3, TResult> resultSelector)
{
if (e1 == null) throw new ArgumentNullException("e1");
if (e2 == null) throw new ArgumentNullException("e2");
if (e3 == null) throw new ArgumentNullException("e3");
if (resultSelector == null) throw new ArgumentNullException("resultSelector");
return ZipIterator(e1, e2, e3, resultSelector);
}
private static IEnumerable<TResult> ZipIterator<T1, T2, T3, TResult>(IEnumerable<T1> ie1, IEnumerable<T2> ie2, IEnumerable<T3> ie3,
Func<T1, T2, T3, TResult> resultSelector)
{
var e1 = ie1.GetEnumerator();
try
{
var e2 = ie2.GetEnumerator();
var e3 = ie3.GetEnumerator();
try
{
while (e1.MoveNext() && e2.MoveNext() && e3.MoveNext())
yield return resultSelector(e1.Current, e2.Current, e3.Current);
}
finally
{
if (e2 != null)
e2.Dispose();
if (e3 != null)
e3.Dispose();
}
}
finally
{
if (e1 != null)
e1.Dispose();
}
}
internal static bool HasDuplicates<T>(this IEnumerable<T> items, bool includeNull)
{
@@ -114,6 +150,7 @@ namespace Umbraco.Core
}
}
/// <summary>
/// Returns true if all items in the other collection exist in this collection
/// </summary>
@@ -96,7 +96,7 @@ namespace Umbraco.Core.Events
/// This allows for a bit of flexibility in our event raising - it's not pretty but we need to maintain backwards compatibility
/// so we cannot change the strongly typed nature for some events.
/// </remarks>
public ReadOnlyDictionary<string, object> AdditionalData { get; internal set; }
public ReadOnlyDictionary<string, object> AdditionalData { get; set; }
/// <summary>
/// This can be used by event subscribers to store state in the event args so they easily deal with custom state data between a starting ("ing")
@@ -105,7 +105,7 @@ namespace Umbraco.Core.Events
public IDictionary<string, object> EventState
{
get => _eventState ?? (_eventState = new Dictionary<string, object>());
internal set => _eventState = value;
set => _eventState = value;
}
public bool Equals(CancellableEventArgs other)
@@ -41,6 +41,6 @@ namespace Umbraco.Core.Events
/// <remarks>
/// This is protected so that inheritors can expose it with their own name
/// </remarks>
internal object EventObject { get; set; }
public object EventObject { get; set; }
}
}
@@ -0,0 +1,4 @@
namespace Umbraco.Core.Events
{
public class DatabaseCreationEventArgs : System.ComponentModel.CancelEventArgs{}
}
@@ -2,7 +2,7 @@
namespace Umbraco.Core.Events
{
internal class EventDefinition : EventDefinitionBase
public class EventDefinition : EventDefinitionBase
{
private readonly EventHandler _trackedEvent;
private readonly object _sender;
@@ -25,7 +25,7 @@ namespace Umbraco.Core.Events
}
}
internal class EventDefinition<TEventArgs> : EventDefinitionBase
public class EventDefinition<TEventArgs> : EventDefinitionBase
{
private readonly EventHandler<TEventArgs> _trackedEvent;
private readonly object _sender;
@@ -48,7 +48,7 @@ namespace Umbraco.Core.Events
}
}
internal class EventDefinition<TSender, TEventArgs> : EventDefinitionBase
public class EventDefinition<TSender, TEventArgs> : EventDefinitionBase
{
private readonly TypedEventHandler<TSender, TEventArgs> _trackedEvent;
private readonly TSender _sender;
@@ -22,6 +22,6 @@
/// <summary>
/// This is used to track if this message should be used as a default message so that Umbraco doesn't also append it's own default messages
/// </summary>
internal bool IsDefaultEventMessage { get; set; }
public bool IsDefaultEventMessage { get; set; }
}
}
@@ -20,7 +20,7 @@ namespace Umbraco.Core.Events
///
/// We can also write tests to validate these are all working correctly for all services.
/// </summary>
internal class EventNameExtractor
public class EventNameExtractor
{
/// <summary>
@@ -52,7 +52,7 @@ namespace Umbraco.Core.Events
}
}
internal static string[] FindEvents(Type senderType, Type argsType, Func<string, bool> exclude)
public static string[] FindEvents(Type senderType, Type argsType, Func<string, bool> exclude)
{
var found = MatchedEventNames.GetOrAdd(new Tuple<Type, Type>(senderType, argsType), tuple =>
{
@@ -120,7 +120,7 @@ namespace Umbraco.Core.Events
/// </summary>
/// <param name="eventName"></param>
/// <returns></returns>
internal static bool MatchIngNames(string eventName)
public static bool MatchIngNames(string eventName)
{
var splitter = new Regex(@"(?<!^)(?=[A-Z])");
var words = splitter.Split(eventName);
@@ -134,7 +134,7 @@ namespace Umbraco.Core.Events
/// </summary>
/// <param name="eventName"></param>
/// <returns></returns>
internal static bool MatchNonIngNames(string eventName)
public static bool MatchNonIngNames(string eventName)
{
var splitter = new Regex(@"(?<!^)(?=[A-Z])");
var words = splitter.Split(eventName);
@@ -1,6 +1,6 @@
namespace Umbraco.Core.Events
{
internal enum EventNameExtractorError
public enum EventNameExtractorError
{
NoneFound,
Ambiguous
@@ -1,6 +1,6 @@
namespace Umbraco.Core.Events
{
internal class EventNameExtractorResult
public class EventNameExtractorResult
{
public EventNameExtractorError? Error { get; private set; }
public string Name { get; private set; }
@@ -2,7 +2,7 @@
namespace Umbraco.Core.Events
{
internal interface IDeletingMediaFilesEventArgs
public interface IDeletingMediaFilesEventArgs
{
List<string> MediaFilesToDelete { get; }
}

Some files were not shown because too many files have changed in this diff Show More