diff --git a/src/Umbraco.Core/CoreBootManager.cs b/src/Umbraco.Core/CoreBootManager.cs
index 60aa21e726..dbaae0542b 100644
--- a/src/Umbraco.Core/CoreBootManager.cs
+++ b/src/Umbraco.Core/CoreBootManager.cs
@@ -7,6 +7,7 @@ using System.Web;
using AutoMapper;
using Umbraco.Core.Cache;
using Umbraco.Core.Configuration;
+using Umbraco.Core.Events;
using Umbraco.Core.Exceptions;
using Umbraco.Core.IO;
using Umbraco.Core.Logging;
@@ -164,7 +165,9 @@ namespace Umbraco.Core
new FileUnitOfWorkProvider(),
new PublishingStrategy(),
ApplicationCache,
- ProfilingLogger.Logger);
+ ProfilingLogger.Logger,
+ //default transient factory
+ new TransientMessagesFactory());
}
///
diff --git a/src/Umbraco.Core/Events/CancellableEventArgs.cs b/src/Umbraco.Core/Events/CancellableEventArgs.cs
index 80e69ae353..c4eeb85ade 100644
--- a/src/Umbraco.Core/Events/CancellableEventArgs.cs
+++ b/src/Umbraco.Core/Events/CancellableEventArgs.cs
@@ -3,7 +3,7 @@ using System.Security.Permissions;
namespace Umbraco.Core.Events
{
- ///
+ ///
/// Event args for that can support cancellation
///
[HostProtection(SecurityAction.LinkDemand, SharedState = true)]
@@ -11,15 +11,30 @@ namespace Umbraco.Core.Events
{
private bool _cancel;
- public CancellableEventArgs(bool canCancel)
+ public CancellableEventArgs(bool canCancel, EventMessages eventMessages)
+ {
+ if (eventMessages == null) throw new ArgumentNullException("eventMessages");
+ CanCancel = canCancel;
+ Messages = eventMessages;
+ }
+
+ public CancellableEventArgs(bool canCancel)
{
CanCancel = canCancel;
- }
+ //create a standalone messages
+ Messages = new EventMessages();
+ }
- public CancellableEventArgs()
+ public CancellableEventArgs(EventMessages eventMessages)
+ : this(true, eventMessages)
+ {
+ }
+
+ public CancellableEventArgs()
: this(true)
{
}
+
///
/// Flag to determine if this instance will support being cancellable
///
@@ -32,7 +47,7 @@ namespace Umbraco.Core.Events
{
get
{
- if (!CanCancel)
+ if (CanCancel == false)
{
throw new InvalidOperationException("This event argument class does not support cancelling.");
}
@@ -40,12 +55,17 @@ namespace Umbraco.Core.Events
}
set
{
- if (!CanCancel)
+ if (CanCancel == false)
{
throw new InvalidOperationException("This event argument class does not support cancelling.");
}
_cancel = value;
}
}
- }
+
+ ///
+ /// Returns the EventMessages object which is used to add messages to the message collection for this event
+ ///
+ public EventMessages Messages { get; private set; }
+ }
}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Events/CancellableObjectEventArgs.cs b/src/Umbraco.Core/Events/CancellableObjectEventArgs.cs
index a51da5652e..726d32d7b0 100644
--- a/src/Umbraco.Core/Events/CancellableObjectEventArgs.cs
+++ b/src/Umbraco.Core/Events/CancellableObjectEventArgs.cs
@@ -12,7 +12,18 @@ namespace Umbraco.Core.Events
public class CancellableObjectEventArgs : CancellableEventArgs
{
- public CancellableObjectEventArgs(T eventObject, bool canCancel)
+ public CancellableObjectEventArgs(T eventObject, bool canCancel, EventMessages eventMessages)
+ : base(canCancel, eventMessages)
+ {
+ EventObject = eventObject;
+ }
+
+ public CancellableObjectEventArgs(T eventObject, EventMessages eventMessages)
+ : this(eventObject, true, eventMessages)
+ {
+ }
+
+ public CancellableObjectEventArgs(T eventObject, bool canCancel)
: base(canCancel)
{
EventObject = eventObject;
diff --git a/src/Umbraco.Core/Events/EventExtensions.cs b/src/Umbraco.Core/Events/EventExtensions.cs
index 99cf145fe0..cfcaa921fb 100644
--- a/src/Umbraco.Core/Events/EventExtensions.cs
+++ b/src/Umbraco.Core/Events/EventExtensions.cs
@@ -7,16 +7,16 @@ namespace Umbraco.Core.Events
///
public static class EventExtensions
{
- ///
- /// Raises the event and returns a boolean value indicating if the event was cancelled
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- public static bool IsRaisedEventCancelled(
+ ///
+ /// Raises the event and returns a boolean value indicating if the event was cancelled
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static bool IsRaisedEventCancelled(
this TypedEventHandler eventHandler,
TArgs args,
TSender sender)
diff --git a/src/Umbraco.Core/Events/EventMessage.cs b/src/Umbraco.Core/Events/EventMessage.cs
new file mode 100644
index 0000000000..98acc88cd9
--- /dev/null
+++ b/src/Umbraco.Core/Events/EventMessage.cs
@@ -0,0 +1,22 @@
+namespace Umbraco.Core.Events
+{
+ ///
+ /// An event message
+ ///
+ public sealed class EventMessage
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public EventMessage(string category, string message, EventMessageType messageType = EventMessageType.Default)
+ {
+ Category = category;
+ Message = message;
+ MessageType = messageType;
+ }
+
+ public string Category { get; private set; }
+ public string Message { get; private set; }
+ public EventMessageType MessageType { get; private set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Events/EventMessages.cs b/src/Umbraco.Core/Events/EventMessages.cs
new file mode 100644
index 0000000000..adea701d4a
--- /dev/null
+++ b/src/Umbraco.Core/Events/EventMessages.cs
@@ -0,0 +1,22 @@
+using System.Collections.Generic;
+
+namespace Umbraco.Core.Events
+{
+ ///
+ /// Default transient event messages collection
+ ///
+ public sealed class EventMessages
+ {
+ private readonly List _msgs = new List();
+
+ public void Add(EventMessage msg)
+ {
+ _msgs.Add(msg);
+ }
+
+ public IEnumerable GetAll()
+ {
+ return _msgs;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Events/IEventMessagesFactory.cs b/src/Umbraco.Core/Events/IEventMessagesFactory.cs
new file mode 100644
index 0000000000..e85b853ee1
--- /dev/null
+++ b/src/Umbraco.Core/Events/IEventMessagesFactory.cs
@@ -0,0 +1,20 @@
+using System.Collections.Generic;
+
+namespace Umbraco.Core.Events
+{
+ public interface IEventMessagesFactory
+ {
+ EventMessages CreateMessages();
+ }
+
+ ///
+ /// A simple/default transient messages factory
+ ///
+ internal class TransientMessagesFactory : IEventMessagesFactory
+ {
+ public EventMessages CreateMessages()
+ {
+ return new EventMessages();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Events/MessageType.cs b/src/Umbraco.Core/Events/MessageType.cs
new file mode 100644
index 0000000000..6299a0e7d7
--- /dev/null
+++ b/src/Umbraco.Core/Events/MessageType.cs
@@ -0,0 +1,14 @@
+namespace Umbraco.Core.Events
+{
+ ///
+ /// The type of event message
+ ///
+ public enum EventMessageType
+ {
+ Default = 0,
+ Info = 1,
+ Error = 2,
+ Success = 3,
+ Warning = 4
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Events/MoveEventArgs.cs b/src/Umbraco.Core/Events/MoveEventArgs.cs
index 107629ff19..c551dc626e 100644
--- a/src/Umbraco.Core/Events/MoveEventArgs.cs
+++ b/src/Umbraco.Core/Events/MoveEventArgs.cs
@@ -4,20 +4,6 @@ using System.Linq;
namespace Umbraco.Core.Events
{
- public class MoveEventInfo
- {
- public MoveEventInfo(TEntity entity, string originalPath, int newParentId)
- {
- Entity = entity;
- OriginalPath = originalPath;
- NewParentId = newParentId;
- }
-
- public TEntity Entity { get; set; }
- public string OriginalPath { get; set; }
- public int NewParentId { get; set; }
- }
-
public class MoveEventArgs : CancellableObjectEventArgs
{
///
diff --git a/src/Umbraco.Core/Events/MoveEventInfo.cs b/src/Umbraco.Core/Events/MoveEventInfo.cs
new file mode 100644
index 0000000000..a74db7f36e
--- /dev/null
+++ b/src/Umbraco.Core/Events/MoveEventInfo.cs
@@ -0,0 +1,16 @@
+namespace Umbraco.Core.Events
+{
+ public class MoveEventInfo
+ {
+ public MoveEventInfo(TEntity entity, string originalPath, int newParentId)
+ {
+ Entity = entity;
+ OriginalPath = originalPath;
+ NewParentId = newParentId;
+ }
+
+ public TEntity Entity { get; set; }
+ public string OriginalPath { get; set; }
+ public int NewParentId { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Events/NewEventArgs.cs b/src/Umbraco.Core/Events/NewEventArgs.cs
index 8e6cd64db1..acfd64e60d 100644
--- a/src/Umbraco.Core/Events/NewEventArgs.cs
+++ b/src/Umbraco.Core/Events/NewEventArgs.cs
@@ -4,7 +4,39 @@ namespace Umbraco.Core.Events
{
public class NewEventArgs : CancellableObjectEventArgs
{
- public NewEventArgs(TEntity eventObject, bool canCancel, string @alias, int parentId) : base(eventObject, canCancel)
+
+
+ public NewEventArgs(TEntity eventObject, bool canCancel, string @alias, int parentId, EventMessages eventMessages)
+ : base(eventObject, canCancel, eventMessages)
+ {
+ Alias = alias;
+ ParentId = parentId;
+ }
+
+ public NewEventArgs(TEntity eventObject, bool canCancel, string @alias, TEntity parent, EventMessages eventMessages)
+ : base(eventObject, canCancel, eventMessages)
+ {
+ Alias = alias;
+ Parent = parent;
+ }
+
+ public NewEventArgs(TEntity eventObject, string @alias, int parentId, EventMessages eventMessages)
+ : base(eventObject, eventMessages)
+ {
+ Alias = alias;
+ ParentId = parentId;
+ }
+
+ public NewEventArgs(TEntity eventObject, string @alias, TEntity parent, EventMessages eventMessages)
+ : base(eventObject, eventMessages)
+ {
+ Alias = alias;
+ Parent = parent;
+ }
+
+
+
+ public NewEventArgs(TEntity eventObject, bool canCancel, string @alias, int parentId) : base(eventObject, canCancel)
{
Alias = alias;
ParentId = parentId;
diff --git a/src/Umbraco.Core/Services/AuditService.cs b/src/Umbraco.Core/Services/AuditService.cs
index 032516421c..3e076084f2 100644
--- a/src/Umbraco.Core/Services/AuditService.cs
+++ b/src/Umbraco.Core/Services/AuditService.cs
@@ -1,4 +1,5 @@
using System;
+using Umbraco.Core.Events;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence;
@@ -8,8 +9,8 @@ namespace Umbraco.Core.Services
{
public sealed class AuditService : RepositoryService, IAuditService
{
- public AuditService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger)
- : base(provider, repositoryFactory, logger)
+ public AuditService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory)
+ : base(provider, repositoryFactory, logger, eventMessagesFactory)
{
}
diff --git a/src/Umbraco.Core/Services/ContentService.cs b/src/Umbraco.Core/Services/ContentService.cs
index b7ad8c4d03..0c861ac1ef 100644
--- a/src/Umbraco.Core/Services/ContentService.cs
+++ b/src/Umbraco.Core/Services/ContentService.cs
@@ -38,37 +38,15 @@ namespace Umbraco.Core.Services
//for example, the Move method needs to be locked but this calls the Save method which also needs to be locked.
private static readonly ReaderWriterLockSlim Locker = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public ContentService()
- : this(new RepositoryFactory(ApplicationContext.Current.ApplicationCache, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings()))
- { }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public ContentService(RepositoryFactory repositoryFactory)
- : this(new PetaPocoUnitOfWorkProvider(LoggerResolver.Current.Logger), repositoryFactory, new PublishingStrategy())
- { }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public ContentService(IDatabaseUnitOfWorkProvider provider)
- : this(provider, new RepositoryFactory(ApplicationContext.Current.ApplicationCache, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings()), new PublishingStrategy())
- { }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public ContentService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory)
- : this(provider, repositoryFactory, new PublishingStrategy())
- { }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public ContentService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IPublishingStrategy publishingStrategy)
- : base(provider, repositoryFactory, LoggerResolver.Current.Logger)
- {
- if (publishingStrategy == null) throw new ArgumentNullException("publishingStrategy");
- _dataTypeService = new DataTypeService(UowProvider, RepositoryFactory);
- _userService = new UserService(UowProvider, RepositoryFactory);
- }
-
- public ContentService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IPublishingStrategy publishingStrategy, IDataTypeService dataTypeService, IUserService userService)
- : base(provider, repositoryFactory, logger)
+ public ContentService(
+ IDatabaseUnitOfWorkProvider provider,
+ RepositoryFactory repositoryFactory,
+ ILogger logger,
+ IEventMessagesFactory eventMessagesFactory,
+ IPublishingStrategy publishingStrategy,
+ IDataTypeService dataTypeService,
+ IUserService userService)
+ : base(provider, repositoryFactory, logger, eventMessagesFactory)
{
if (publishingStrategy == null) throw new ArgumentNullException("publishingStrategy");
if (dataTypeService == null) throw new ArgumentNullException("dataTypeService");
diff --git a/src/Umbraco.Core/Services/ContentTypeService.cs b/src/Umbraco.Core/Services/ContentTypeService.cs
index 194871f252..f144fa51e4 100644
--- a/src/Umbraco.Core/Services/ContentTypeService.cs
+++ b/src/Umbraco.Core/Services/ContentTypeService.cs
@@ -32,28 +32,8 @@ namespace Umbraco.Core.Services
//for example, the Move method needs to be locked but this calls the Save method which also needs to be locked.
private static readonly ReaderWriterLockSlim Locker = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public ContentTypeService(IContentService contentService, IMediaService mediaService)
- : this(new PetaPocoUnitOfWorkProvider(LoggerResolver.Current.Logger), new RepositoryFactory(), contentService, mediaService)
- {}
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public ContentTypeService( RepositoryFactory repositoryFactory, IContentService contentService, IMediaService mediaService)
- : this(new PetaPocoUnitOfWorkProvider(), repositoryFactory, contentService, mediaService)
- { }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public ContentTypeService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IContentService contentService, IMediaService mediaService)
- : base(provider, repositoryFactory, LoggerResolver.Current.Logger)
- {
- if (contentService == null) throw new ArgumentNullException("contentService");
- if (mediaService == null) throw new ArgumentNullException("mediaService");
- _contentService = contentService;
- _mediaService = mediaService;
- }
-
- public ContentTypeService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IContentService contentService, IMediaService mediaService)
- : base(provider, repositoryFactory, logger)
+ public ContentTypeService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory, IContentService contentService, IMediaService mediaService)
+ : base(provider, repositoryFactory, logger, eventMessagesFactory)
{
if (contentService == null) throw new ArgumentNullException("contentService");
if (mediaService == null) throw new ArgumentNullException("mediaService");
diff --git a/src/Umbraco.Core/Services/ContentTypeServiceBase.cs b/src/Umbraco.Core/Services/ContentTypeServiceBase.cs
index d5ebaabdb6..c071c7bbba 100644
--- a/src/Umbraco.Core/Services/ContentTypeServiceBase.cs
+++ b/src/Umbraco.Core/Services/ContentTypeServiceBase.cs
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.Linq;
+using Umbraco.Core.Events;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Models.EntityBase;
@@ -10,8 +11,8 @@ namespace Umbraco.Core.Services
{
public class ContentTypeServiceBase : RepositoryService
{
- public ContentTypeServiceBase(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger)
- : base(provider, repositoryFactory, logger)
+ public ContentTypeServiceBase(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory)
+ : base(provider, repositoryFactory, logger, eventMessagesFactory)
{
}
diff --git a/src/Umbraco.Core/Services/DataTypeService.cs b/src/Umbraco.Core/Services/DataTypeService.cs
index a30945e5c2..f6dd53020c 100644
--- a/src/Umbraco.Core/Services/DataTypeService.cs
+++ b/src/Umbraco.Core/Services/DataTypeService.cs
@@ -21,31 +21,8 @@ namespace Umbraco.Core.Services
public class DataTypeService : RepositoryService, IDataTypeService
{
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public DataTypeService()
- : this(new RepositoryFactory())
- {}
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public DataTypeService(RepositoryFactory repositoryFactory)
- : this(new PetaPocoUnitOfWorkProvider(), repositoryFactory)
- {
- }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public DataTypeService(IDatabaseUnitOfWorkProvider provider)
- : this(provider, new RepositoryFactory())
- {
- }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public DataTypeService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory)
- : this(provider, repositoryFactory, LoggerResolver.Current.Logger)
- {
- }
-
- public DataTypeService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger)
- : base(provider, repositoryFactory, logger)
+ public DataTypeService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory)
+ : base(provider, repositoryFactory, logger, eventMessagesFactory)
{
}
diff --git a/src/Umbraco.Core/Services/DomainService.cs b/src/Umbraco.Core/Services/DomainService.cs
index 71429cfb59..2fdf3edb93 100644
--- a/src/Umbraco.Core/Services/DomainService.cs
+++ b/src/Umbraco.Core/Services/DomainService.cs
@@ -12,8 +12,8 @@ namespace Umbraco.Core.Services
{
public class DomainService : RepositoryService, IDomainService
{
- public DomainService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger)
- : base(provider, repositoryFactory, logger)
+ public DomainService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory)
+ : base(provider, repositoryFactory, logger, eventMessagesFactory)
{
}
diff --git a/src/Umbraco.Core/Services/EntityService.cs b/src/Umbraco.Core/Services/EntityService.cs
index 695d092bd4..78fe48ec76 100644
--- a/src/Umbraco.Core/Services/EntityService.cs
+++ b/src/Umbraco.Core/Services/EntityService.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using Umbraco.Core.Cache;
using Umbraco.Core.CodeAnnotations;
+using Umbraco.Core.Events;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Models.EntityBase;
@@ -18,10 +19,10 @@ namespace Umbraco.Core.Services
private readonly Dictionary>> _supportedObjectTypes;
- public EntityService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger,
+ public EntityService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory,
IContentService contentService, IContentTypeService contentTypeService, IMediaService mediaService, IDataTypeService dataTypeService,
IMemberService memberService, IMemberTypeService memberTypeService, IRuntimeCacheProvider runtimeCache)
- : base(provider, repositoryFactory, logger)
+ : base(provider, repositoryFactory, logger, eventMessagesFactory)
{
_runtimeCache = runtimeCache;
IContentTypeService contentTypeService1 = contentTypeService;
diff --git a/src/Umbraco.Core/Services/ExternalLoginService.cs b/src/Umbraco.Core/Services/ExternalLoginService.cs
index f33f1c492b..91ca77872d 100644
--- a/src/Umbraco.Core/Services/ExternalLoginService.cs
+++ b/src/Umbraco.Core/Services/ExternalLoginService.cs
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNet.Identity;
+using Umbraco.Core.Events;
using Umbraco.Core.Logging;
using Umbraco.Core.Models.Identity;
using Umbraco.Core.Persistence;
@@ -11,8 +12,8 @@ namespace Umbraco.Core.Services
{
public class ExternalLoginService : RepositoryService, IExternalLoginService
{
- public ExternalLoginService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger)
- : base(provider, repositoryFactory, logger)
+ public ExternalLoginService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory)
+ : base(provider, repositoryFactory, logger, eventMessagesFactory)
{
}
diff --git a/src/Umbraco.Core/Services/LocalizationService.cs b/src/Umbraco.Core/Services/LocalizationService.cs
index 05966df1f0..6d6cf0c101 100644
--- a/src/Umbraco.Core/Services/LocalizationService.cs
+++ b/src/Umbraco.Core/Services/LocalizationService.cs
@@ -18,26 +18,10 @@ namespace Umbraco.Core.Services
///
public class LocalizationService : RepositoryService, ILocalizationService
{
+
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public LocalizationService()
- : this(new RepositoryFactory(ApplicationContext.Current.ApplicationCache, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings()))
- { }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public LocalizationService(RepositoryFactory repositoryFactory)
- : this(new PetaPocoUnitOfWorkProvider(LoggerResolver.Current.Logger), repositoryFactory, LoggerResolver.Current.Logger)
- {
- }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public LocalizationService(IDatabaseUnitOfWorkProvider provider)
- : this(provider, new RepositoryFactory(ApplicationContext.Current.ApplicationCache, LoggerResolver.Current.Logger, SqlSyntaxContext.SqlSyntaxProvider, UmbracoConfig.For.UmbracoSettings()), LoggerResolver.Current.Logger)
- {
- }
-
- public LocalizationService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger)
- : base(provider, repositoryFactory, logger)
+ public LocalizationService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory)
+ : base(provider, repositoryFactory, logger, eventMessagesFactory)
{
}
diff --git a/src/Umbraco.Core/Services/MacroService.cs b/src/Umbraco.Core/Services/MacroService.cs
index bfa201e718..49853eab81 100644
--- a/src/Umbraco.Core/Services/MacroService.cs
+++ b/src/Umbraco.Core/Services/MacroService.cs
@@ -20,26 +20,8 @@ namespace Umbraco.Core.Services
public class MacroService : RepositoryService, IMacroService
{
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public MacroService()
- : this(new PetaPocoUnitOfWorkProvider(), new RepositoryFactory())
- {
- }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public MacroService(IDatabaseUnitOfWorkProvider provider)
- : this(provider, new RepositoryFactory())
- {
- }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public MacroService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory)
- : this(provider, repositoryFactory, LoggerResolver.Current.Logger)
- {
- }
-
- public MacroService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger)
- : base(provider, repositoryFactory, logger)
+ public MacroService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory)
+ : base(provider, repositoryFactory, logger, eventMessagesFactory)
{
}
diff --git a/src/Umbraco.Core/Services/MediaService.cs b/src/Umbraco.Core/Services/MediaService.cs
index 299d089319..f73c1ce0f8 100644
--- a/src/Umbraco.Core/Services/MediaService.cs
+++ b/src/Umbraco.Core/Services/MediaService.cs
@@ -35,29 +35,9 @@ namespace Umbraco.Core.Services
private readonly EntityXmlSerializer _entitySerializer = new EntityXmlSerializer();
private readonly IDataTypeService _dataTypeService;
private readonly IUserService _userService;
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public MediaService(RepositoryFactory repositoryFactory)
- : this(new PetaPocoUnitOfWorkProvider(), repositoryFactory)
- {
- }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public MediaService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory)
- : base(provider, repositoryFactory, LoggerResolver.Current.Logger)
- {
- _dataTypeService = new DataTypeService(provider, repositoryFactory);
- _userService = new UserService(provider, repositoryFactory);
- }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public MediaService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IDataTypeService dataTypeService, IUserService userService)
- : this(provider, repositoryFactory, LoggerResolver.Current.Logger, dataTypeService, userService)
- {
- }
-
- public MediaService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IDataTypeService dataTypeService, IUserService userService)
- : base(provider, repositoryFactory, logger)
+
+ public MediaService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory, IDataTypeService dataTypeService, IUserService userService)
+ : base(provider, repositoryFactory, logger, eventMessagesFactory)
{
if (dataTypeService == null) throw new ArgumentNullException("dataTypeService");
if (userService == null) throw new ArgumentNullException("userService");
diff --git a/src/Umbraco.Core/Services/MemberGroupService.cs b/src/Umbraco.Core/Services/MemberGroupService.cs
index 0f75bec93e..47b62917fc 100644
--- a/src/Umbraco.Core/Services/MemberGroupService.cs
+++ b/src/Umbraco.Core/Services/MemberGroupService.cs
@@ -14,26 +14,8 @@ namespace Umbraco.Core.Services
public class MemberGroupService : RepositoryService, IMemberGroupService
{
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public MemberGroupService(RepositoryFactory repositoryFactory)
- : this(new PetaPocoUnitOfWorkProvider(), repositoryFactory)
- {
- }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public MemberGroupService(IDatabaseUnitOfWorkProvider provider)
- : this(provider, new RepositoryFactory())
- {
- }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public MemberGroupService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory)
- : this(provider, repositoryFactory, LoggerResolver.Current.Logger)
- {
- }
-
- public MemberGroupService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger)
- : base(provider, repositoryFactory, logger)
+ public MemberGroupService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory)
+ : base(provider, repositoryFactory, logger, eventMessagesFactory)
{
//Proxy events!
MemberGroupRepository.SavedMemberGroup += MemberGroupRepository_SavedMemberGroup;
diff --git a/src/Umbraco.Core/Services/MemberService.cs b/src/Umbraco.Core/Services/MemberService.cs
index c6c49da7e9..fdfe401ca9 100644
--- a/src/Umbraco.Core/Services/MemberService.cs
+++ b/src/Umbraco.Core/Services/MemberService.cs
@@ -30,37 +30,9 @@ namespace Umbraco.Core.Services
private readonly EntityXmlSerializer _entitySerializer = new EntityXmlSerializer();
private readonly IDataTypeService _dataTypeService;
private static readonly ReaderWriterLockSlim Locker = new ReaderWriterLockSlim();
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public MemberService(RepositoryFactory repositoryFactory, IMemberGroupService memberGroupService)
- : this(new PetaPocoUnitOfWorkProvider(), repositoryFactory, memberGroupService)
- {
- }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public MemberService(IDatabaseUnitOfWorkProvider provider, IMemberGroupService memberGroupService)
- : this(provider, new RepositoryFactory(), memberGroupService)
- {
- }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public MemberService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IMemberGroupService memberGroupService)
- : base(provider, repositoryFactory, LoggerResolver.Current.Logger)
- {
- if (memberGroupService == null) throw new ArgumentNullException("memberGroupService");
- _memberGroupService = memberGroupService;
- _dataTypeService = new DataTypeService(provider, repositoryFactory);
- }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public MemberService(IDatabaseUnitOfWorkProvider provider, IMemberGroupService memberGroupService, IDataTypeService dataTypeService)
- : this(provider, new RepositoryFactory(), LoggerResolver.Current.Logger, memberGroupService, dataTypeService)
- {
-
- }
-
- public MemberService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IMemberGroupService memberGroupService, IDataTypeService dataTypeService)
- : base(provider, repositoryFactory, logger)
+
+ public MemberService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory, IMemberGroupService memberGroupService, IDataTypeService dataTypeService)
+ : base(provider, repositoryFactory, logger, eventMessagesFactory)
{
if (memberGroupService == null) throw new ArgumentNullException("memberGroupService");
if (dataTypeService == null) throw new ArgumentNullException("dataTypeService");
diff --git a/src/Umbraco.Core/Services/MemberTypeService.cs b/src/Umbraco.Core/Services/MemberTypeService.cs
index 51cbf50a8a..73061be4d0 100644
--- a/src/Umbraco.Core/Services/MemberTypeService.cs
+++ b/src/Umbraco.Core/Services/MemberTypeService.cs
@@ -17,25 +17,10 @@ namespace Umbraco.Core.Services
private readonly IMemberService _memberService;
private static readonly ReaderWriterLockSlim Locker = new ReaderWriterLockSlim();
+
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public MemberTypeService(IMemberService memberService)
- : this(new PetaPocoUnitOfWorkProvider(), new RepositoryFactory(), memberService)
- {}
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public MemberTypeService(RepositoryFactory repositoryFactory, IMemberService memberService)
- : this(new PetaPocoUnitOfWorkProvider(), repositoryFactory, memberService)
- { }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public MemberTypeService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IMemberService memberService)
- : this(provider, repositoryFactory, LoggerResolver.Current.Logger, memberService)
- {
- }
-
- public MemberTypeService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IMemberService memberService)
- : base(provider, repositoryFactory, logger)
+ public MemberTypeService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory, IMemberService memberService)
+ : base(provider, repositoryFactory, logger, eventMessagesFactory)
{
if (memberService == null) throw new ArgumentNullException("memberService");
_memberService = memberService;
diff --git a/src/Umbraco.Core/Services/MigrationEntryService.cs b/src/Umbraco.Core/Services/MigrationEntryService.cs
index 6d441b5271..2bd463c6d0 100644
--- a/src/Umbraco.Core/Services/MigrationEntryService.cs
+++ b/src/Umbraco.Core/Services/MigrationEntryService.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using Semver;
+using Umbraco.Core.Events;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence;
@@ -15,8 +16,8 @@ namespace Umbraco.Core.Services
///
public sealed class MigrationEntryService : RepositoryService, IMigrationEntryService
{
- public MigrationEntryService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger)
- : base(provider, repositoryFactory, logger)
+ public MigrationEntryService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory)
+ : base(provider, repositoryFactory, logger, eventMessagesFactory)
{
}
diff --git a/src/Umbraco.Core/Services/PublicAccessService.cs b/src/Umbraco.Core/Services/PublicAccessService.cs
index b8e95a33a9..6ca6660895 100644
--- a/src/Umbraco.Core/Services/PublicAccessService.cs
+++ b/src/Umbraco.Core/Services/PublicAccessService.cs
@@ -12,8 +12,8 @@ namespace Umbraco.Core.Services
{
public class PublicAccessService : RepositoryService, IPublicAccessService
{
- public PublicAccessService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger)
- : base(provider, repositoryFactory, logger)
+ public PublicAccessService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory)
+ : base(provider, repositoryFactory, logger, eventMessagesFactory)
{
}
diff --git a/src/Umbraco.Core/Services/RelationService.cs b/src/Umbraco.Core/Services/RelationService.cs
index db2328047d..b4a37fc1d1 100644
--- a/src/Umbraco.Core/Services/RelationService.cs
+++ b/src/Umbraco.Core/Services/RelationService.cs
@@ -14,15 +14,9 @@ namespace Umbraco.Core.Services
public class RelationService : RepositoryService, IRelationService
{
private readonly IEntityService _entityService;
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public RelationService(IDatabaseUnitOfWorkProvider uowProvider, RepositoryFactory repositoryFactory, IEntityService entityService)
- : this(uowProvider, repositoryFactory, LoggerResolver.Current.Logger, entityService)
- {
- }
-
- public RelationService(IDatabaseUnitOfWorkProvider uowProvider, RepositoryFactory repositoryFactory, ILogger logger, IEntityService entityService)
- : base(uowProvider, repositoryFactory, logger)
+
+ public RelationService(IDatabaseUnitOfWorkProvider uowProvider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory, IEntityService entityService)
+ : base(uowProvider, repositoryFactory, logger, eventMessagesFactory)
{
if (entityService == null) throw new ArgumentNullException("entityService");
_entityService = entityService;
diff --git a/src/Umbraco.Core/Services/RepositoryService.cs b/src/Umbraco.Core/Services/RepositoryService.cs
index e1c70ab580..88807f0291 100644
--- a/src/Umbraco.Core/Services/RepositoryService.cs
+++ b/src/Umbraco.Core/Services/RepositoryService.cs
@@ -1,4 +1,5 @@
using System;
+using Umbraco.Core.Events;
using Umbraco.Core.Logging;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.UnitOfWork;
@@ -11,15 +12,18 @@ namespace Umbraco.Core.Services
public abstract class RepositoryService : IService
{
protected ILogger Logger { get; private set; }
+ protected IEventMessagesFactory EventMessagesFactory { get; private set; }
protected RepositoryFactory RepositoryFactory { get; private set; }
protected IDatabaseUnitOfWorkProvider UowProvider { get; private set; }
- protected RepositoryService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger)
+ protected RepositoryService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory)
{
if (provider == null) throw new ArgumentNullException("provider");
if (repositoryFactory == null) throw new ArgumentNullException("repositoryFactory");
if (logger == null) throw new ArgumentNullException("logger");
+ if (eventMessagesFactory == null) throw new ArgumentNullException("eventMessagesFactory");
Logger = logger;
+ EventMessagesFactory = eventMessagesFactory;
RepositoryFactory = repositoryFactory;
UowProvider = provider;
}
diff --git a/src/Umbraco.Core/Services/ServerRegistrationService.cs b/src/Umbraco.Core/Services/ServerRegistrationService.cs
index 2812a9d1b8..fac56499fd 100644
--- a/src/Umbraco.Core/Services/ServerRegistrationService.cs
+++ b/src/Umbraco.Core/Services/ServerRegistrationService.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using Umbraco.Core.Events;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence;
@@ -20,8 +21,9 @@ namespace Umbraco.Core.Services
/// A UnitOfWork provider.
/// A repository factory.
/// A logger.
- public ServerRegistrationService(IDatabaseUnitOfWorkProvider uowProvider, RepositoryFactory repositoryFactory, ILogger logger)
- : base(uowProvider, repositoryFactory, logger)
+ ///
+ public ServerRegistrationService(IDatabaseUnitOfWorkProvider uowProvider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory)
+ : base(uowProvider, repositoryFactory, logger, eventMessagesFactory)
{ }
///
diff --git a/src/Umbraco.Core/Services/ServiceContext.cs b/src/Umbraco.Core/Services/ServiceContext.cs
index 2ad172bf0f..cd8132b951 100644
--- a/src/Umbraco.Core/Services/ServiceContext.cs
+++ b/src/Umbraco.Core/Services/ServiceContext.cs
@@ -8,6 +8,7 @@ using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.UnitOfWork;
using Umbraco.Core.Publishing;
using umbraco.interfaces;
+using Umbraco.Core.Events;
namespace Umbraco.Core.Services
{
@@ -136,17 +137,27 @@ namespace Umbraco.Core.Services
///
///
///
+ ///
public ServiceContext(
RepositoryFactory repositoryFactory,
IDatabaseUnitOfWorkProvider dbUnitOfWorkProvider,
IUnitOfWorkProvider fileUnitOfWorkProvider,
BasePublishingStrategy publishingStrategy,
CacheHelper cache,
- ILogger logger)
+ ILogger logger,
+ IEventMessagesFactory eventMessagesFactory)
{
+ if (repositoryFactory == null) throw new ArgumentNullException("repositoryFactory");
+ if (dbUnitOfWorkProvider == null) throw new ArgumentNullException("dbUnitOfWorkProvider");
+ if (fileUnitOfWorkProvider == null) throw new ArgumentNullException("fileUnitOfWorkProvider");
+ if (publishingStrategy == null) throw new ArgumentNullException("publishingStrategy");
+ if (cache == null) throw new ArgumentNullException("cache");
+ if (logger == null) throw new ArgumentNullException("logger");
+ if (eventMessagesFactory == null) throw new ArgumentNullException(nameof(eventMessagesFactory));
+
BuildServiceCache(dbUnitOfWorkProvider, fileUnitOfWorkProvider, publishingStrategy, cache,
repositoryFactory,
- logger);
+ logger, eventMessagesFactory);
}
///
@@ -158,28 +169,29 @@ namespace Umbraco.Core.Services
BasePublishingStrategy publishingStrategy,
CacheHelper cache,
RepositoryFactory repositoryFactory,
- ILogger logger)
+ ILogger logger,
+ IEventMessagesFactory eventMessagesFactory)
{
var provider = dbUnitOfWorkProvider;
var fileProvider = fileUnitOfWorkProvider;
if (_migrationEntryService == null)
- _migrationEntryService = new Lazy(() => new MigrationEntryService(provider, repositoryFactory, logger));
+ _migrationEntryService = new Lazy(() => new MigrationEntryService(provider, repositoryFactory, logger, eventMessagesFactory));
if (_externalLoginService == null)
- _externalLoginService = new Lazy(() => new ExternalLoginService(provider, repositoryFactory, logger));
+ _externalLoginService = new Lazy(() => new ExternalLoginService(provider, repositoryFactory, logger, eventMessagesFactory));
if (_publicAccessService == null)
- _publicAccessService = new Lazy(() => new PublicAccessService(provider, repositoryFactory, logger));
+ _publicAccessService = new Lazy(() => new PublicAccessService(provider, repositoryFactory, logger, eventMessagesFactory));
if (_taskService == null)
- _taskService = new Lazy(() => new TaskService(provider, repositoryFactory, logger));
+ _taskService = new Lazy(() => new TaskService(provider, repositoryFactory, logger, eventMessagesFactory));
if (_domainService == null)
- _domainService = new Lazy(() => new DomainService(provider, repositoryFactory, logger));
+ _domainService = new Lazy(() => new DomainService(provider, repositoryFactory, logger, eventMessagesFactory));
if (_auditService == null)
- _auditService = new Lazy(() => new AuditService(provider, repositoryFactory, logger));
+ _auditService = new Lazy(() => new AuditService(provider, repositoryFactory, logger, eventMessagesFactory));
if (_localizedTextService == null)
{
@@ -222,43 +234,43 @@ namespace Umbraco.Core.Services
_notificationService = new Lazy(() => new NotificationService(provider, _userService.Value, _contentService.Value, logger));
if (_serverRegistrationService == null)
- _serverRegistrationService = new Lazy(() => new ServerRegistrationService(provider, repositoryFactory, logger));
+ _serverRegistrationService = new Lazy(() => new ServerRegistrationService(provider, repositoryFactory, logger, eventMessagesFactory));
if (_userService == null)
- _userService = new Lazy(() => new UserService(provider, repositoryFactory, logger));
+ _userService = new Lazy(() => new UserService(provider, repositoryFactory, logger, eventMessagesFactory));
if (_memberService == null)
- _memberService = new Lazy(() => new MemberService(provider, repositoryFactory, logger, _memberGroupService.Value, _dataTypeService.Value));
+ _memberService = new Lazy(() => new MemberService(provider, repositoryFactory, logger, eventMessagesFactory, _memberGroupService.Value, _dataTypeService.Value));
if (_contentService == null)
- _contentService = new Lazy(() => new ContentService(provider, repositoryFactory, logger, publishingStrategy, _dataTypeService.Value, _userService.Value));
+ _contentService = new Lazy(() => new ContentService(provider, repositoryFactory, logger, eventMessagesFactory, publishingStrategy, _dataTypeService.Value, _userService.Value));
if (_mediaService == null)
- _mediaService = new Lazy(() => new MediaService(provider, repositoryFactory, logger, _dataTypeService.Value, _userService.Value));
+ _mediaService = new Lazy(() => new MediaService(provider, repositoryFactory, logger, eventMessagesFactory, _dataTypeService.Value, _userService.Value));
if (_contentTypeService == null)
- _contentTypeService = new Lazy(() => new ContentTypeService(provider, repositoryFactory, logger, _contentService.Value, _mediaService.Value));
+ _contentTypeService = new Lazy(() => new ContentTypeService(provider, repositoryFactory, logger, eventMessagesFactory, _contentService.Value, _mediaService.Value));
if (_dataTypeService == null)
- _dataTypeService = new Lazy(() => new DataTypeService(provider, repositoryFactory, logger));
+ _dataTypeService = new Lazy(() => new DataTypeService(provider, repositoryFactory, logger, eventMessagesFactory));
if (_fileService == null)
_fileService = new Lazy(() => new FileService(fileProvider, provider, repositoryFactory));
if (_localizationService == null)
- _localizationService = new Lazy(() => new LocalizationService(provider, repositoryFactory, logger));
+ _localizationService = new Lazy(() => new LocalizationService(provider, repositoryFactory, logger, eventMessagesFactory));
if (_packagingService == null)
_packagingService = new Lazy(() => new PackagingService(logger, _contentService.Value, _contentTypeService.Value, _mediaService.Value, _macroService.Value, _dataTypeService.Value, _fileService.Value, _localizationService.Value, _userService.Value, repositoryFactory, provider));
if (_entityService == null)
_entityService = new Lazy(() => new EntityService(
- provider, repositoryFactory, logger,
+ provider, repositoryFactory, logger, eventMessagesFactory,
_contentService.Value, _contentTypeService.Value, _mediaService.Value, _dataTypeService.Value, _memberService.Value, _memberTypeService.Value,
cache.RuntimeCache));
if (_relationService == null)
- _relationService = new Lazy(() => new RelationService(provider, repositoryFactory, logger, _entityService.Value));
+ _relationService = new Lazy(() => new RelationService(provider, repositoryFactory, logger, eventMessagesFactory, _entityService.Value));
if (_treeService == null)
_treeService = new Lazy(() => new ApplicationTreeService(logger, cache));
@@ -267,16 +279,16 @@ namespace Umbraco.Core.Services
_sectionService = new Lazy(() => new SectionService(_userService.Value, _treeService.Value, provider, cache));
if (_macroService == null)
- _macroService = new Lazy(() => new MacroService(provider, repositoryFactory, logger));
+ _macroService = new Lazy(() => new MacroService(provider, repositoryFactory, logger, eventMessagesFactory));
if (_memberTypeService == null)
- _memberTypeService = new Lazy(() => new MemberTypeService(provider, repositoryFactory, logger, _memberService.Value));
+ _memberTypeService = new Lazy(() => new MemberTypeService(provider, repositoryFactory, logger, eventMessagesFactory, _memberService.Value));
if (_tagService == null)
- _tagService = new Lazy(() => new TagService(provider, repositoryFactory, logger));
+ _tagService = new Lazy(() => new TagService(provider, repositoryFactory, logger, eventMessagesFactory));
if (_memberGroupService == null)
- _memberGroupService = new Lazy(() => new MemberGroupService(provider, repositoryFactory, logger));
+ _memberGroupService = new Lazy(() => new MemberGroupService(provider, repositoryFactory, logger, eventMessagesFactory));
}
diff --git a/src/Umbraco.Core/Services/TagService.cs b/src/Umbraco.Core/Services/TagService.cs
index 8f4bb80c89..d3b502e14b 100644
--- a/src/Umbraco.Core/Services/TagService.cs
+++ b/src/Umbraco.Core/Services/TagService.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using Umbraco.Core.Events;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence;
@@ -16,32 +17,9 @@ namespace Umbraco.Core.Services
///
public class TagService : RepositoryService, ITagService
{
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public TagService()
- : this(new RepositoryFactory())
- {}
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public TagService(RepositoryFactory repositoryFactory)
- : this(new PetaPocoUnitOfWorkProvider(), repositoryFactory)
- {
- }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public TagService(IDatabaseUnitOfWorkProvider provider)
- : this(provider, new RepositoryFactory())
- {
- }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public TagService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory)
- : this(provider, repositoryFactory, LoggerResolver.Current.Logger)
- {
- }
-
- public TagService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger)
- : base(provider, repositoryFactory, logger)
+
+ public TagService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory)
+ : base(provider, repositoryFactory, logger, eventMessagesFactory)
{
}
diff --git a/src/Umbraco.Core/Services/TaskService.cs b/src/Umbraco.Core/Services/TaskService.cs
index 3f51b92185..9845c5ebb9 100644
--- a/src/Umbraco.Core/Services/TaskService.cs
+++ b/src/Umbraco.Core/Services/TaskService.cs
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
+using Umbraco.Core.Events;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence;
@@ -11,8 +12,8 @@ namespace Umbraco.Core.Services
{
public class TaskService : RepositoryService, ITaskService
{
- public TaskService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger)
- : base(provider, repositoryFactory, logger)
+ public TaskService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory)
+ : base(provider, repositoryFactory, logger, eventMessagesFactory)
{
}
diff --git a/src/Umbraco.Core/Services/UserService.cs b/src/Umbraco.Core/Services/UserService.cs
index dd4866c8c3..192faf149b 100644
--- a/src/Umbraco.Core/Services/UserService.cs
+++ b/src/Umbraco.Core/Services/UserService.cs
@@ -17,25 +17,8 @@ namespace Umbraco.Core.Services
///
public class UserService : RepositoryService, IUserService
{
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public UserService(RepositoryFactory repositoryFactory)
- : this(new PetaPocoUnitOfWorkProvider(), repositoryFactory)
- { }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public UserService(IDatabaseUnitOfWorkProvider provider)
- : this(provider, new RepositoryFactory())
- { }
-
- [Obsolete("Use the constructors that specify all dependencies instead")]
- public UserService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory)
- : base(provider, repositoryFactory, LoggerResolver.Current.Logger)
- {
- }
-
- public UserService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger)
- : base(provider, repositoryFactory, logger)
+ public UserService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory)
+ : base(provider, repositoryFactory, logger, eventMessagesFactory)
{
}
diff --git a/src/Umbraco.Core/Standalone/ServiceContextManager.cs b/src/Umbraco.Core/Standalone/ServiceContextManager.cs
index b036359dc6..e86a904439 100644
--- a/src/Umbraco.Core/Standalone/ServiceContextManager.cs
+++ b/src/Umbraco.Core/Standalone/ServiceContextManager.cs
@@ -2,6 +2,7 @@
using System.Diagnostics;
using Umbraco.Core.Cache;
using Umbraco.Core.Configuration;
+using Umbraco.Core.Events;
using Umbraco.Core.Logging;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.Mappers;
@@ -68,7 +69,8 @@ namespace Umbraco.Core.Standalone
new FileUnitOfWorkProvider(),
new PublishingStrategy(),
cacheHelper,
- new DebugDiagnosticsLogger());
+ new DebugDiagnosticsLogger(),
+ new TransientMessagesFactory());
//initialize the DatabaseContext
dbContext.Initialize(_providerName);
diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj
index 9266d16f36..1bdabacc9c 100644
--- a/src/Umbraco.Core/Umbraco.Core.csproj
+++ b/src/Umbraco.Core/Umbraco.Core.csproj
@@ -313,10 +313,16 @@
+
+
+
+
+
+
diff --git a/src/Umbraco.Tests/Mvc/UmbracoViewPageTests.cs b/src/Umbraco.Tests/Mvc/UmbracoViewPageTests.cs
index e1a3a4203e..fd2dc02292 100644
--- a/src/Umbraco.Tests/Mvc/UmbracoViewPageTests.cs
+++ b/src/Umbraco.Tests/Mvc/UmbracoViewPageTests.cs
@@ -18,6 +18,7 @@ using Umbraco.Core.Services;
using Umbraco.Web.Security;
using umbraco.BusinessLogic;
using Umbraco.Core;
+using Umbraco.Core.Events;
using Umbraco.Core.Models;
using Umbraco.Core.Models.PublishedContent;
using Umbraco.Tests.PublishedContent;
@@ -400,6 +401,7 @@ namespace Umbraco.Tests.Mvc
new Mock().Object,
new RepositoryFactory(CacheHelper.CreateDisabledCacheHelper(), logger, Mock.Of(), umbracoSettings),
logger,
+ new TransientMessagesFactory(),
new Mock().Object),
new Mock().Object,
new Mock().Object,
diff --git a/src/Umbraco.Tests/Persistence/BaseTableByTableTest.cs b/src/Umbraco.Tests/Persistence/BaseTableByTableTest.cs
index 7bc4b2b76f..19da8c68c1 100644
--- a/src/Umbraco.Tests/Persistence/BaseTableByTableTest.cs
+++ b/src/Umbraco.Tests/Persistence/BaseTableByTableTest.cs
@@ -6,6 +6,7 @@ using Umbraco.Core;
using Umbraco.Core.Cache;
using Umbraco.Core.Configuration;
using Umbraco.Core.Configuration.UmbracoSettings;
+using Umbraco.Core.Events;
using Umbraco.Core.Logging;
using Umbraco.Core.Models.Rdbms;
using Umbraco.Core.ObjectResolution;
@@ -59,7 +60,7 @@ namespace Umbraco.Tests.Persistence
//assign the db context
dbContext,
//assign the service context
- new ServiceContext(repositoryFactory, new PetaPocoUnitOfWorkProvider(_logger), new FileUnitOfWorkProvider(), new PublishingStrategy(), cacheHelper, _logger),
+ new ServiceContext(repositoryFactory, new PetaPocoUnitOfWorkProvider(_logger), new FileUnitOfWorkProvider(), new PublishingStrategy(), cacheHelper, _logger, new TransientMessagesFactory()),
cacheHelper,
new ProfilingLogger(_logger, Mock.Of()))
{
diff --git a/src/Umbraco.Tests/Services/ThreadSafetyServiceTest.cs b/src/Umbraco.Tests/Services/ThreadSafetyServiceTest.cs
index 7077cf19ce..c59b075fc4 100644
--- a/src/Umbraco.Tests/Services/ThreadSafetyServiceTest.cs
+++ b/src/Umbraco.Tests/Services/ThreadSafetyServiceTest.cs
@@ -18,6 +18,7 @@ using Umbraco.Tests.TestHelpers;
using Umbraco.Tests.TestHelpers.Entities;
using umbraco.editorControls.tinyMCE3;
using umbraco.interfaces;
+using Umbraco.Core.Events;
namespace Umbraco.Tests.Services
{
@@ -55,7 +56,8 @@ namespace Umbraco.Tests.Services
new FileUnitOfWorkProvider(),
new PublishingStrategy(),
cacheHelper,
- Logger);
+ Logger,
+ new TransientMessagesFactory());
CreateTestData();
}
diff --git a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs
index 621837ee36..b2de63ebff 100644
--- a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs
+++ b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs
@@ -30,6 +30,7 @@ using Umbraco.Web.PublishedCache.XmlPublishedCache;
using Umbraco.Web.Routing;
using Umbraco.Web.Security;
using umbraco.BusinessLogic;
+using Umbraco.Core.Events;
namespace Umbraco.Tests.TestHelpers
{
@@ -79,7 +80,7 @@ namespace Umbraco.Tests.TestHelpers
//assign the db context
new DatabaseContext(dbFactory, Logger, SqlSyntax, "System.Data.SqlServerCe.4.0"),
//assign the service context
- new ServiceContext(repositoryFactory, new PetaPocoUnitOfWorkProvider(dbFactory), new FileUnitOfWorkProvider(), new PublishingStrategy(), cacheHelper, Logger),
+ new ServiceContext(repositoryFactory, new PetaPocoUnitOfWorkProvider(dbFactory), new FileUnitOfWorkProvider(), new PublishingStrategy(), cacheHelper, Logger, new TransientMessagesFactory()),
cacheHelper,
ProfilingLogger)
{
diff --git a/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs b/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs
index 3639a7709c..06ee2c6a22 100644
--- a/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs
+++ b/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs
@@ -19,6 +19,7 @@ using Umbraco.Core.Services;
using Umbraco.Web;
using Umbraco.Web.Models.Mapping;
using umbraco.BusinessLogic;
+using Umbraco.Core.Events;
using ObjectExtensions = Umbraco.Core.ObjectExtensions;
namespace Umbraco.Tests.TestHelpers
@@ -157,7 +158,7 @@ namespace Umbraco.Tests.TestHelpers
new DatabaseContext(new DefaultDatabaseFactory(Core.Configuration.GlobalSettings.UmbracoConnectionName, Logger),
Logger, sqlSyntax, "System.Data.SqlServerCe.4.0"),
//assign the service context
- new ServiceContext(repoFactory, new PetaPocoUnitOfWorkProvider(Logger), new FileUnitOfWorkProvider(), new PublishingStrategy(), CacheHelper, Logger),
+ new ServiceContext(repoFactory, new PetaPocoUnitOfWorkProvider(Logger), new FileUnitOfWorkProvider(), new PublishingStrategy(), CacheHelper, Logger, new TransientMessagesFactory()),
CacheHelper,
ProfilingLogger)
{
diff --git a/src/Umbraco.Web/RequestLifespanMessagesFactory.cs b/src/Umbraco.Web/RequestLifespanMessagesFactory.cs
new file mode 100644
index 0000000000..11842f9d45
--- /dev/null
+++ b/src/Umbraco.Web/RequestLifespanMessagesFactory.cs
@@ -0,0 +1,28 @@
+using System;
+using Umbraco.Core.Events;
+
+namespace Umbraco.Web
+{
+ ///
+ /// Stores the instance of EventMessages in the current request so all events will share the same instance
+ ///
+ internal class RequestLifespanMessagesFactory : IEventMessagesFactory
+ {
+ private readonly IUmbracoContextAccessor _ctxAccessor;
+
+ public RequestLifespanMessagesFactory(IUmbracoContextAccessor ctxAccessor)
+ {
+ if (ctxAccessor == null) throw new ArgumentNullException("ctxAccessor");
+ _ctxAccessor = ctxAccessor;
+ }
+
+ public EventMessages CreateMessages()
+ {
+ if (_ctxAccessor.Value.HttpContext.Items[typeof (RequestLifespanMessagesFactory).Name] == null)
+ {
+ _ctxAccessor.Value.HttpContext.Items[typeof(RequestLifespanMessagesFactory).Name] = new EventMessages();
+ }
+ return (EventMessages)_ctxAccessor.Value.HttpContext.Items[typeof (RequestLifespanMessagesFactory).Name];
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Web/Standalone/ServiceContextManager.cs b/src/Umbraco.Web/Standalone/ServiceContextManager.cs
index 32c0867429..2795f3b486 100644
--- a/src/Umbraco.Web/Standalone/ServiceContextManager.cs
+++ b/src/Umbraco.Web/Standalone/ServiceContextManager.cs
@@ -3,6 +3,7 @@ using System.Diagnostics;
using Umbraco.Core;
using Umbraco.Core.Cache;
using Umbraco.Core.Configuration;
+using Umbraco.Core.Events;
using Umbraco.Core.Logging;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.Mappers;
@@ -62,7 +63,8 @@ namespace Umbraco.Web.Standalone
new FileUnitOfWorkProvider(),
new PublishingStrategy(),
cacheHelper,
- new DebugDiagnosticsLogger());
+ new DebugDiagnosticsLogger(),
+ new TransientMessagesFactory());
//initialize the DatabaseContext
dbContext.Initialize(_providerName);
diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj
index 94e5dbe0f2..605725598b 100644
--- a/src/Umbraco.Web/Umbraco.Web.csproj
+++ b/src/Umbraco.Web/Umbraco.Web.csproj
@@ -304,6 +304,7 @@
+
diff --git a/src/Umbraco.Web/WebBootManager.cs b/src/Umbraco.Web/WebBootManager.cs
index 628eba26ac..a1ff58e935 100644
--- a/src/Umbraco.Web/WebBootManager.cs
+++ b/src/Umbraco.Web/WebBootManager.cs
@@ -38,6 +38,10 @@ using Umbraco.Web.Scheduling;
using Umbraco.Web.UI.JavaScript;
using Umbraco.Web.WebApi;
using umbraco.BusinessLogic;
+using Umbraco.Core.Persistence;
+using Umbraco.Core.Persistence.UnitOfWork;
+using Umbraco.Core.Publishing;
+using Umbraco.Core.Services;
using GlobalSettings = Umbraco.Core.Configuration.GlobalSettings;
using ProfilingViewEngine = Umbraco.Core.Profiling.ProfilingViewEngine;
@@ -71,6 +75,25 @@ namespace Umbraco.Web
_isForTesting = isForTesting;
}
+ ///
+ /// Creates and returns the service context for the app
+ ///
+ ///
+ ///
+ ///
+ protected override ServiceContext CreateServiceContext(DatabaseContext dbContext, IDatabaseFactory dbFactory)
+ {
+ return new ServiceContext(
+ new RepositoryFactory(ApplicationCache, ProfilingLogger.Logger, dbContext.SqlSyntax, UmbracoConfig.For.UmbracoSettings()),
+ new PetaPocoUnitOfWorkProvider(dbFactory),
+ new FileUnitOfWorkProvider(),
+ new PublishingStrategy(),
+ ApplicationCache,
+ ProfilingLogger.Logger,
+ //use a request based messaging factory
+ new RequestLifespanMessagesFactory(new SingletonUmbracoContextAccessor()));
+ }
+
///
/// Initialize objects before anything during the boot cycle happens
///
@@ -157,15 +180,7 @@ namespace Umbraco.Web
//Set the profiler to be the web profiler
ProfilerResolver.Current.SetProfiler(new WebProfiler());
}
-
- ///
- /// Adds custom types to the ApplicationEventsResolver
- ///
- protected override void InitializeApplicationEventsResolver()
- {
- base.InitializeApplicationEventsResolver();
- }
-
+
///
/// Ensure that the OnApplicationStarted methods of the IApplicationEvents are called
///
@@ -285,7 +300,6 @@ namespace Umbraco.Web
}
}
-
private void RouteLocalApiController(Type controller, string umbracoPath)
{
var meta = PluginController.GetMetadata(controller);
@@ -307,6 +321,7 @@ namespace Umbraco.Web
}
route.DataTokens.Add("umbraco", "api"); //ensure the umbraco token is set
}
+
private void RouteLocalSurfaceController(Type controller, string umbracoPath)
{
var meta = PluginController.GetMetadata(controller);
@@ -473,7 +488,6 @@ namespace Umbraco.Web
new DefaultCultureDictionaryFactory());
}
-
private void OnInstanceOnBuildingEmptyIndexOnStartup(object sender, BuildingEmptyIndexOnStartupEventArgs args)
{
//store the indexer that needs rebuilding because it's empty for when the boot process