Removes POC class, fixes content service trash/move events so there's not ambiguous

This commit is contained in:
Shannon
2017-02-07 14:08:55 +11:00
parent b6b2a53361
commit 3fa7c4d7ef
2 changed files with 12 additions and 110 deletions

View File

@@ -23,81 +23,6 @@ using Umbraco.Core.Scoping;
namespace Umbraco.Core.Services
{
// fixme this is some test code, get rid of it all of course
public class SomeService : ScopeRepositoryService
{
// fixme the eventMessagesFactory should die, event messages are scoped!
public SomeService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, ILogger logger, IEventMessagesFactory eventMessagesFactory)
: base(provider, repositoryFactory, logger, eventMessagesFactory)
{ }
public static event TypedEventHandler<SomeService, DeleteEventArgs<IContent>> StaticDeleting;
public event TypedEventHandler<SomeService, DeleteEventArgs<IContent>> InstanceDeleting;
public void OnStaticDeleting(SomeService sender, DeleteEventArgs<IContent> args)
{
if (StaticDeleting == null) return;
StaticDeleting(sender, args);
}
public void OnInstanceDeleting(SomeService sender, DeleteEventArgs<IContent> args)
{
if (sender.InstanceDeleting == null) return;
sender.InstanceDeleting(sender, args);
}
public abstract class EventData<TSender, TArgs>
{
private readonly TypedEventHandler<TSender, TArgs> _eventHandler;
private readonly TSender _sender;
protected EventData(TypedEventHandler<TSender, TArgs> eventHandler, TSender sender)
{
_eventHandler = eventHandler;
_sender = sender;
}
protected abstract TArgs GetArgs();
public void Raise()
{
_eventHandler(_sender, GetArgs());
}
}
public class DeletingEvent : EventData<SomeService, DeleteEventArgs<IContent>>
{
private readonly IContent _content;
public DeletingEvent(TypedEventHandler<SomeService, DeleteEventArgs<IContent>> eventHandler, SomeService sender, IContent content)
: base(eventHandler, sender)
{
_content = content;
}
protected override DeleteEventArgs<IContent> GetArgs()
{
return new DeleteEventArgs<IContent>(_content);
}
// and *there* we could implement some sort of proper comparison between events!
// Shan's EventDefinition only works on names and that's a true mess
}
public void Dispatch<TSender, TArgs>(EventData<TSender, TArgs> eventData)
{
eventData.Raise();
}
public void DoSomething()
{
IContent content = null;
Dispatch(new DeletingEvent(StaticDeleting, this, content));
Dispatch(new DeletingEvent(InstanceDeleting, this, content));
}
}
/// <summary>
/// Represents the Content Service, which is an easy access to operations involving <see cref="IContent"/>
/// </summary>
@@ -123,7 +48,7 @@ namespace Umbraco.Core.Services
{
if (dataTypeService == null) throw new ArgumentNullException("dataTypeService");
if (userService == null) throw new ArgumentNullException("userService");
_publishingStrategy = new PublishingStrategy(logger);
_publishingStrategy = new PublishingStrategy(eventMessagesFactory, logger);
_dataTypeService = dataTypeService;
_userService = userService;
}
@@ -1088,7 +1013,7 @@ namespace Umbraco.Core.Services
//see: http://issues.umbraco.org/issue/U4-9336
content.EnsureValidPath(Logger, entity => GetById(entity.ParentId), QuickUpdate);
var originalPath = content.Path;
if (uow.Events.DispatchCancelable(Trashing, this, new MoveEventArgs<IContent>(evtMsgs, new MoveEventInfo<IContent>(content, originalPath, Constants.System.RecycleBinContent))))
if (uow.Events.DispatchCancelable(Trashing, this, new MoveEventArgs<IContent>(evtMsgs, new MoveEventInfo<IContent>(content, originalPath, Constants.System.RecycleBinContent)), "Trashing"))
{
return OperationStatus.Cancelled(evtMsgs);
}
@@ -1123,15 +1048,13 @@ namespace Umbraco.Core.Services
descendant.ChangeTrashedState(true, descendant.ParentId);
repository.AddOrUpdate(descendant);
}
// fixme NEED to happen within the transaction = this is a DISPATCHED event!
//uow.Events.Dispatch(Trashed, Event.User|Event.Commit, this, new MoveEventArgs<IContent>(false, uow.Messages, moveInfo.ToArray()));
uow.Events.Dispatch(Trashed, this, new MoveEventArgs<IContent>(false, uow.Messages, moveInfo.ToArray()));
uow.Events.Dispatch(Trashed, this, new MoveEventArgs<IContent>(false, evtMsgs, moveInfo.ToArray()), "Trashed"); // fixme WHY the event name?!
uow.Commit();
uow.Events.Dispatch(Trashed, this, new MoveEventArgs<IContent>(false, evtMsgs, moveInfo.ToArray()), "Trashed");
// fixme just writing to DB, no need for an event, ok here
Audit(AuditType.Move, "Move Content to Recycle Bin performed by user", userId, content.Id);
uow.Commit();
}
// fixme the WHOLE thing should move to the UOW!
@@ -1610,7 +1533,7 @@ namespace Umbraco.Core.Services
// what a spectacular mess
using (IScope scope = UowProvider.ScopeProvider.CreateScope())
{
if (scope.Events.DispatchCancelable(Moving, this, new MoveEventArgs<IContent>(new MoveEventInfo<IContent>(content, content.Path, parentId))))
if (scope.Events.DispatchCancelable(Moving, this, new MoveEventArgs<IContent>(new MoveEventInfo<IContent>(content, content.Path, parentId)), "Moving"))
return;
//used to track all the moved entities to be given to the event
@@ -1619,32 +1542,11 @@ namespace Umbraco.Core.Services
//call private method that does the recursive moving
PerformMove(content, parentId, userId, moveInfo);
scope.Events.Dispatch(Moved, this, new MoveEventArgs<IContent>(false, moveInfo.ToArray()));
scope.Events.Dispatch(Moved, this, new MoveEventArgs<IContent>(false, moveInfo.ToArray()), "Moved");
scope.Complete();
}
// fixme kill this
/*
using (var uow = UowProvider.GetUnitOfWork())
{
if (Moving.IsRaisedEventCancelled(
new MoveEventArgs<IContent>(
new MoveEventInfo<IContent>(content, content.Path, parentId)), this, uow.Events))
{
return;
}
//used to track all the moved entities to be given to the event
var moveInfo = new List<MoveEventInfo<IContent>>();
//call private method that does the recursive moving
PerformMove(content, parentId, userId, moveInfo);
Moved.RaiseEvent(new MoveEventArgs<IContent>(false, moveInfo.ToArray()), this, uow.Events);
}
*/
Audit(AuditType.Move, "Move Content performed by user", userId, content.Id);
}
}

View File

@@ -70,7 +70,7 @@ namespace Umbraco.Tests.Publishing
ServiceContext.ContentTypeService.GetContentType("umbTextpage"), "Sub Sub Sub", mandatorContent.Id);
ServiceContext.ContentService.Save(subContent, 0);
IPublishingStrategy2 strategy = new PublishingStrategy(Logger);
IPublishingStrategy2 strategy = new PublishingStrategy(new TransientMessagesFactory(), Logger);
//publish root and nodes at it's children level
var listToPublish = ServiceContext.ContentService.GetDescendants(_homePage.Id).Concat(new[] { _homePage });
@@ -97,7 +97,7 @@ namespace Umbraco.Tests.Publishing
{
CreateTestData();
IPublishingStrategy2 strategy = new PublishingStrategy( Logger);
IPublishingStrategy2 strategy = new PublishingStrategy(new TransientMessagesFactory(), Logger);
PublishingStrategy.Publishing +=PublishingStrategyPublishing;
@@ -124,7 +124,7 @@ namespace Umbraco.Tests.Publishing
{
CreateTestData();
IPublishingStrategy2 strategy = new PublishingStrategy(Logger);
IPublishingStrategy2 strategy = new PublishingStrategy(new TransientMessagesFactory(), Logger);
//publish root and nodes at it's children level
var result1 = strategy.Publish(_unitOfWork, _homePage, 0);
@@ -151,7 +151,7 @@ namespace Umbraco.Tests.Publishing
{
CreateTestData();
IPublishingStrategy2 strategy = new PublishingStrategy(Logger);
IPublishingStrategy2 strategy = new PublishingStrategy(new TransientMessagesFactory(), Logger);
//publish root and nodes at it's children level
var result1 = strategy.Publish(_unitOfWork, _homePage, 0);