diff --git a/src/Umbraco.Core/Cache/CacheHelper.cs b/src/Umbraco.Core/Cache/CacheHelper.cs
index a85285e427..5480e199f5 100644
--- a/src/Umbraco.Core/Cache/CacheHelper.cs
+++ b/src/Umbraco.Core/Cache/CacheHelper.cs
@@ -7,7 +7,7 @@ using System.Web.Caching;
namespace Umbraco.Core.Cache
{
///
- /// Class that is exposed by the ApplicationContext for application wide caching purposes
+ /// Represents the application-wide caches.
///
public class CacheHelper
{
@@ -25,7 +25,7 @@ namespace Umbraco.Core.Cache
// do *not* return NoCache
// NoCache is a special instance that is detected by RepositoryBase and disables all cache policies
// CreateDisabledCacheHelper is used in tests to use no cache, *but* keep all cache policies
- return new CacheHelper(NullCacheProvider.Instance, NullCacheProvider.Instance, NullCacheProvider.Instance, new IsolatedRuntimeCache(_ => NullCacheProvider.Instance));
+ return new DisabledCacheHelper();
}
///
@@ -43,7 +43,6 @@ namespace Umbraco.Core.Cache
///
/// Initializes a new instance for use in the web
///
- ///
public CacheHelper(System.Web.Caching.Cache cache)
: this(
new HttpRuntimeCacheProvider(cache),
@@ -53,37 +52,19 @@ namespace Umbraco.Core.Cache
{
}
- [Obsolete("Use the constructor the specifies all dependencies")]
- [EditorBrowsable(EditorBrowsableState.Never)]
- public CacheHelper(
- IRuntimeCacheProvider httpCacheProvider,
- ICacheProvider staticCacheProvider,
- ICacheProvider requestCacheProvider)
- : this(httpCacheProvider, staticCacheProvider, requestCacheProvider, new IsolatedRuntimeCache(t => new ObjectCacheRuntimeCacheProvider()))
- {
- }
-
///
/// Initializes a new instance based on the provided providers
///
- ///
- ///
- ///
- ///
public CacheHelper(
IRuntimeCacheProvider httpCacheProvider,
ICacheProvider staticCacheProvider,
ICacheProvider requestCacheProvider,
IsolatedRuntimeCache isolatedCacheManager)
{
- if (httpCacheProvider == null) throw new ArgumentNullException("httpCacheProvider");
- if (staticCacheProvider == null) throw new ArgumentNullException("staticCacheProvider");
- if (requestCacheProvider == null) throw new ArgumentNullException("requestCacheProvider");
- if (isolatedCacheManager == null) throw new ArgumentNullException("isolatedCacheManager");
- RuntimeCache = httpCacheProvider;
- StaticCache = staticCacheProvider;
- RequestCache = requestCacheProvider;
- IsolatedRuntimeCache = isolatedCacheManager;
+ RuntimeCache = httpCacheProvider ?? throw new ArgumentNullException(nameof(httpCacheProvider));
+ StaticCache = staticCacheProvider ?? throw new ArgumentNullException(nameof(staticCacheProvider));
+ RequestCache = requestCacheProvider ?? throw new ArgumentNullException(nameof(requestCacheProvider));
+ IsolatedRuntimeCache = isolatedCacheManager ?? throw new ArgumentNullException(nameof(isolatedCacheManager));
}
///
diff --git a/src/Umbraco.Core/Cache/DisabledCacheHelper.cs b/src/Umbraco.Core/Cache/DisabledCacheHelper.cs
new file mode 100644
index 0000000000..104c6b8bc0
--- /dev/null
+++ b/src/Umbraco.Core/Cache/DisabledCacheHelper.cs
@@ -0,0 +1,15 @@
+namespace Umbraco.Core.Cache
+{
+ ///
+ /// Represent disabled application-wide caches.
+ ///
+ public class DisabledCacheHelper : CacheHelper
+ {
+ ///
+ /// Initializes a new instance of the .
+ ///
+ public DisabledCacheHelper()
+ : base(NullCacheProvider.Instance, NullCacheProvider.Instance, NullCacheProvider.Instance, new IsolatedRuntimeCache(_ => NullCacheProvider.Instance))
+ { }
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Composing/CompositionRoots/RepositoryCompositionRoot.cs b/src/Umbraco.Core/Composing/CompositionRoots/RepositoryCompositionRoot.cs
index 42693f119d..fb90707fee 100644
--- a/src/Umbraco.Core/Composing/CompositionRoots/RepositoryCompositionRoot.cs
+++ b/src/Umbraco.Core/Composing/CompositionRoots/RepositoryCompositionRoot.cs
@@ -21,9 +21,8 @@ namespace Umbraco.Core.Composing.CompositionRoots
{
// register cache helpers
// the main cache helper is registered by CoreBootManager and is used by most repositories
- // the disabled one is used by those repositories that have an annotated ctor parameter
- // fixme refactor: use a DisabledCacheHelper class (or interface?) so that injection does not depend on name and we can have simple ctor injection
- container.RegisterSingleton(factory => CacheHelper.CreateDisabledCacheHelper(), DisabledCache);
+ // the disabled one is used by those repositories that require it
+ container.RegisterSingleton();
// resolve ctor dependency from GetInstance() runtimeArguments, if possible - 'factory' is
// the container, 'info' describes the ctor argument, and 'args' contains the args that
@@ -41,7 +40,7 @@ namespace Umbraco.Core.Composing.CompositionRoots
// some repositories have an annotated ctor parameter to pick the right cache helper
// repositories
- container.RegisterSingleton(f => new AuditRepository(f.GetInstance(), f.GetInstance(DisabledCache), f.GetInstance()));
+ container.RegisterSingleton();
container.RegisterSingleton();
container.RegisterSingleton();
container.RegisterSingleton();
@@ -64,13 +63,13 @@ namespace Umbraco.Core.Composing.CompositionRoots
container.RegisterSingleton();
container.RegisterSingleton();
container.RegisterSingleton();
- container.RegisterSingleton(f => new RelationRepository(f.GetInstance(), f.GetInstance(DisabledCache), f.GetInstance(), f.GetInstance()));
+ container.RegisterSingleton();
container.RegisterSingleton();
container.RegisterSingleton();
container.RegisterSingleton();
- container.RegisterSingleton(f => new TaskRepository(f.GetInstance(), f.GetInstance(DisabledCache), f.GetInstance()));
- container.RegisterSingleton(f => new TaskTypeRepository(f.GetInstance(), f.GetInstance(DisabledCache), f.GetInstance()));
- container.RegisterSingleton(f => new TemplateRepository(
+ container.RegisterSingleton();
+ container.RegisterSingleton();
+ container.RegisterSingleton(f => new TemplateRepository( // fixme type the FS too! or?
f.GetInstance(),
f.GetInstance(),
f.GetInstance(),
diff --git a/src/Umbraco.Core/Composing/LightInject/ContainerAdapter.cs b/src/Umbraco.Core/Composing/LightInject/LightInjectContainer.cs
similarity index 81%
rename from src/Umbraco.Core/Composing/LightInject/ContainerAdapter.cs
rename to src/Umbraco.Core/Composing/LightInject/LightInjectContainer.cs
index 99ffb11ace..8eff2be60b 100644
--- a/src/Umbraco.Core/Composing/LightInject/ContainerAdapter.cs
+++ b/src/Umbraco.Core/Composing/LightInject/LightInjectContainer.cs
@@ -4,21 +4,21 @@ using LightInject;
namespace Umbraco.Core.Composing.LightInject
{
///
- /// Implements for LightInject.
+ /// Implements with LightInject.
///
- public class ContainerAdapter : IContainer // fixme rename LightInjectContainer?
+ public class LightInjectContainer : IContainer
{
private readonly IServiceContainer _container;
///
- /// Initializes a new instance of the with a LightInject container.
+ /// Initializes a new instance of the with a LightInject container.
///
- public ContainerAdapter(IServiceContainer container)
+ public LightInjectContainer(IServiceContainer container)
{
_container = container;
}
- // fixme
+ ///
public object ConcreteContainer => _container;
///
diff --git a/src/Umbraco.Core/Composing/LightInjectExtensions.cs b/src/Umbraco.Core/Composing/LightInjectExtensions.cs
index 914af001a8..a64d3aff30 100644
--- a/src/Umbraco.Core/Composing/LightInjectExtensions.cs
+++ b/src/Umbraco.Core/Composing/LightInjectExtensions.cs
@@ -48,7 +48,7 @@ namespace Umbraco.Core.Composing
container.Register(_ => container);
// configure the current container
- Current.Container = new LightInject.ContainerAdapter(container);
+ Current.Container = new LightInject.LightInjectContainer(container);
}
private class AssemblyScanner : IAssemblyScanner
diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/AuditRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/AuditRepository.cs
index d643e1f5a5..fe2a915c9f 100644
--- a/src/Umbraco.Core/Persistence/Repositories/Implement/AuditRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/Implement/AuditRepository.cs
@@ -14,7 +14,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
internal class AuditRepository : NPocoRepositoryBase, IAuditRepository
{
- public AuditRepository(IScopeAccessor scopeAccessor, CacheHelper cache, ILogger logger)
+ public AuditRepository(IScopeAccessor scopeAccessor, DisabledCacheHelper cache, ILogger logger)
: base(scopeAccessor, cache, logger)
{ }
diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/RelationRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/RelationRepository.cs
index bb153beda9..732d01a868 100644
--- a/src/Umbraco.Core/Persistence/Repositories/Implement/RelationRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/Implement/RelationRepository.cs
@@ -20,7 +20,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
private readonly IRelationTypeRepository _relationTypeRepository;
- public RelationRepository(IScopeAccessor scopeAccessor, CacheHelper cache, ILogger logger, IRelationTypeRepository relationTypeRepository)
+ public RelationRepository(IScopeAccessor scopeAccessor, DisabledCacheHelper cache, ILogger logger, IRelationTypeRepository relationTypeRepository)
: base(scopeAccessor, cache, logger)
{
_relationTypeRepository = relationTypeRepository;
diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/TaskRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/TaskRepository.cs
index b70523d5e1..972b528d76 100644
--- a/src/Umbraco.Core/Persistence/Repositories/Implement/TaskRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/Implement/TaskRepository.cs
@@ -15,7 +15,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
internal class TaskRepository : NPocoRepositoryBase, ITaskRepository
{
- public TaskRepository(IScopeAccessor scopeAccessor, CacheHelper cache, ILogger logger)
+ public TaskRepository(IScopeAccessor scopeAccessor, DisabledCacheHelper cache, ILogger logger)
: base(scopeAccessor, cache, logger)
{ }
@@ -27,7 +27,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
var taskDto = Database.Fetch(SqlContext.SqlSyntax.SelectTop(sql, 1)).FirstOrDefault();
if (taskDto == null)
return null;
-
+
var entity = TaskFactory.BuildEntity(taskDto);
return entity;
}
@@ -40,7 +40,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
sql.Where("cmsTask.id IN (@ids)", new { ids = ids });
}
-
+
var dtos = Database.Fetch(sql);
return dtos.Select(TaskFactory.BuildEntity);
}
@@ -102,7 +102,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
entity.TaskType.Id = taskType.Id;
}
-
+
var dto = TaskFactory.BuildDto(entity);
var id = Convert.ToInt32(Database.Insert(dto));
@@ -114,7 +114,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected override void PersistUpdatedItem(Task entity)
{
entity.UpdatingEntity();
-
+
var dto = TaskFactory.BuildDto(entity);
Database.Update(dto);
@@ -131,7 +131,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
}
var dtos = Database.Fetch(sql);
-
+
return dtos.Select(TaskFactory.BuildEntity);
}
diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/TaskTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/TaskTypeRepository.cs
index 57ddc68568..55f6905dde 100644
--- a/src/Umbraco.Core/Persistence/Repositories/Implement/TaskTypeRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/Implement/TaskTypeRepository.cs
@@ -14,7 +14,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
internal class TaskTypeRepository : NPocoRepositoryBase, ITaskTypeRepository
{
- public TaskTypeRepository(IScopeAccessor scopeAccessor, CacheHelper cache, ILogger logger)
+ public TaskTypeRepository(IScopeAccessor scopeAccessor, DisabledCacheHelper cache, ILogger logger)
: base(scopeAccessor, cache, logger)
{ }
@@ -26,7 +26,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
var taskDto = Database.Fetch(SqlContext.SqlSyntax.SelectTop(sql, 1)).FirstOrDefault();
if (taskDto == null)
return null;
-
+
var entity = TaskTypeFactory.BuildEntity(taskDto);
return entity;
}
@@ -39,7 +39,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
sql.Where("cmsTaskType.id IN (@ids)", new { ids });
}
-
+
var dtos = Database.Fetch(sql);
return dtos.Select(TaskTypeFactory.BuildEntity);
}
@@ -49,7 +49,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
var sqlClause = GetBaseQuery(false);
var translator = new SqlTranslator(sqlClause, query);
var sql = translator.Translate();
-
+
var dtos = Database.Fetch(sql);
return dtos.Select(TaskTypeFactory.BuildEntity);
}
@@ -88,7 +88,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
{
throw new InvalidOperationException("A task type already exists with the given alias " + entity.Alias);
}
-
+
var dto = TaskTypeFactory.BuildDto(entity);
var id = Convert.ToInt32(Database.Insert(dto));
@@ -100,7 +100,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement
protected override void PersistUpdatedItem(TaskType entity)
{
entity.UpdatingEntity();
-
+
var dto = TaskTypeFactory.BuildDto(entity);
Database.Update(dto);
diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj
index 7a22e21205..264fcc9420 100644
--- a/src/Umbraco.Core/Umbraco.Core.csproj
+++ b/src/Umbraco.Core/Umbraco.Core.csproj
@@ -106,6 +106,7 @@
+
@@ -170,7 +171,7 @@
-
+
diff --git a/src/Umbraco.Tests/CoreThings/UdiTests.cs b/src/Umbraco.Tests/CoreThings/UdiTests.cs
index 4300401e18..49c02d5688 100644
--- a/src/Umbraco.Tests/CoreThings/UdiTests.cs
+++ b/src/Umbraco.Tests/CoreThings/UdiTests.cs
@@ -27,7 +27,7 @@ namespace Umbraco.Tests.CoreThings
var globalSettings = SettingsForTests.GenerateMockGlobalSettings();
container.Setup(x => x.GetInstance(typeof (TypeLoader))).Returns(
new TypeLoader(NullCacheProvider.Instance, globalSettings, new ProfilingLogger(Mock.Of(), Mock.Of())));
- Current.Container = new Core.Composing.LightInject.ContainerAdapter(container.Object);
+ Current.Container = new Core.Composing.LightInject.LightInjectContainer(container.Object);
Udi.ResetUdiTypes();
}
diff --git a/src/Umbraco.Tests/Models/VariationTests.cs b/src/Umbraco.Tests/Models/VariationTests.cs
index 0b0ad8c7ec..be7135715b 100644
--- a/src/Umbraco.Tests/Models/VariationTests.cs
+++ b/src/Umbraco.Tests/Models/VariationTests.cs
@@ -30,7 +30,7 @@ namespace Umbraco.Tests.Models
Current.Reset();
var container = Mock.Of();
- Current.Container = new ContainerAdapter(container);
+ Current.Container = new LightInjectContainer(container);
var dataEditors = new DataEditorCollection(new IDataEditor[]
{
diff --git a/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs b/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs
index b295edfb8b..ecb8e42c90 100644
--- a/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs
+++ b/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs
@@ -33,7 +33,7 @@ namespace Umbraco.Tests.Scoping
DoThing3 = null;
var lightinjectContainer = new ServiceContainer();
- Current.Container = new ContainerAdapter(lightinjectContainer);
+ Current.Container = new LightInjectContainer(lightinjectContainer);
_testObjects = new TestObjects(lightinjectContainer);
diff --git a/src/Umbraco.Tests/Web/TemplateUtilitiesTests.cs b/src/Umbraco.Tests/Web/TemplateUtilitiesTests.cs
index 867d4574f1..a7a8c35fd1 100644
--- a/src/Umbraco.Tests/Web/TemplateUtilitiesTests.cs
+++ b/src/Umbraco.Tests/Web/TemplateUtilitiesTests.cs
@@ -44,7 +44,7 @@ namespace Umbraco.Tests.Web
container.Setup(x => x.GetInstance(typeof(TypeLoader))).Returns(
new TypeLoader(NullCacheProvider.Instance, SettingsForTests.GenerateMockGlobalSettings(), new ProfilingLogger(Mock.Of(), Mock.Of())));
container.Setup(x => x.GetInstance(typeof (ServiceContext))).Returns(serviceContext);
- Current.Container = new ContainerAdapter(container.Object);
+ Current.Container = new LightInjectContainer(container.Object);
Umbraco.Web.Composing.Current.UmbracoContextAccessor = new TestUmbracoContextAccessor();