completes: U4-4769 Remove the circular references from services for calls like ToXml which then calls into the PackagingService
This commit is contained in:
@@ -28,7 +28,8 @@ namespace Umbraco.Core.Services
|
|||||||
private readonly RepositoryFactory _repositoryFactory;
|
private readonly RepositoryFactory _repositoryFactory;
|
||||||
private readonly IMemberGroupService _memberGroupService;
|
private readonly IMemberGroupService _memberGroupService;
|
||||||
private readonly IDatabaseUnitOfWorkProvider _uowProvider;
|
private readonly IDatabaseUnitOfWorkProvider _uowProvider;
|
||||||
|
private readonly EntityXmlSerializer _entitySerializer = new EntityXmlSerializer();
|
||||||
|
private readonly IDataTypeService _dataTypeService;
|
||||||
private static readonly ReaderWriterLockSlim Locker = new ReaderWriterLockSlim();
|
private static readonly ReaderWriterLockSlim Locker = new ReaderWriterLockSlim();
|
||||||
|
|
||||||
public MemberService(RepositoryFactory repositoryFactory, IMemberGroupService memberGroupService)
|
public MemberService(RepositoryFactory repositoryFactory, IMemberGroupService memberGroupService)
|
||||||
@@ -49,6 +50,24 @@ namespace Umbraco.Core.Services
|
|||||||
_repositoryFactory = repositoryFactory;
|
_repositoryFactory = repositoryFactory;
|
||||||
_memberGroupService = memberGroupService;
|
_memberGroupService = memberGroupService;
|
||||||
_uowProvider = provider;
|
_uowProvider = provider;
|
||||||
|
_dataTypeService = new DataTypeService(provider, repositoryFactory);
|
||||||
|
}
|
||||||
|
|
||||||
|
public MemberService(IDatabaseUnitOfWorkProvider provider, IMemberGroupService memberGroupService, IDataTypeService dataTypeService)
|
||||||
|
: this(provider, new RepositoryFactory(), memberGroupService, dataTypeService)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public MemberService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IMemberGroupService memberGroupService, IDataTypeService dataTypeService)
|
||||||
|
{
|
||||||
|
if (provider == null) throw new ArgumentNullException("provider");
|
||||||
|
if (repositoryFactory == null) throw new ArgumentNullException("repositoryFactory");
|
||||||
|
if (memberGroupService == null) throw new ArgumentNullException("memberGroupService");
|
||||||
|
_repositoryFactory = repositoryFactory;
|
||||||
|
_memberGroupService = memberGroupService;
|
||||||
|
_uowProvider = provider;
|
||||||
|
_dataTypeService = dataTypeService;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region IMemberService Implementation
|
#region IMemberService Implementation
|
||||||
@@ -724,7 +743,7 @@ namespace Umbraco.Core.Services
|
|||||||
uow.Commit();
|
uow.Commit();
|
||||||
|
|
||||||
//insert the xml
|
//insert the xml
|
||||||
var xml = member.ToXml();
|
var xml = _entitySerializer.Serialize(_dataTypeService, member);
|
||||||
CreateAndSaveMemberXml(xml, member.Id, uow.Database);
|
CreateAndSaveMemberXml(xml, member.Id, uow.Database);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -831,7 +850,7 @@ namespace Umbraco.Core.Services
|
|||||||
repository.AddOrUpdate(entity);
|
repository.AddOrUpdate(entity);
|
||||||
uow.Commit();
|
uow.Commit();
|
||||||
|
|
||||||
var xml = entity.ToXml();
|
var xml = _entitySerializer.Serialize(_dataTypeService, entity);
|
||||||
CreateAndSaveMemberXml(xml, entity.Id, uow.Database);
|
CreateAndSaveMemberXml(xml, entity.Id, uow.Database);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -841,9 +860,11 @@ namespace Umbraco.Core.Services
|
|||||||
|
|
||||||
public void Save(IEnumerable<IMember> entities, bool raiseEvents = true)
|
public void Save(IEnumerable<IMember> entities, bool raiseEvents = true)
|
||||||
{
|
{
|
||||||
|
var asArray = entities.ToArray();
|
||||||
|
|
||||||
if (raiseEvents)
|
if (raiseEvents)
|
||||||
{
|
{
|
||||||
if (Saving.IsRaisedEventCancelled(new SaveEventArgs<IMember>(entities), this))
|
if (Saving.IsRaisedEventCancelled(new SaveEventArgs<IMember>(asArray), this))
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
using (new WriteLock(Locker))
|
using (new WriteLock(Locker))
|
||||||
@@ -851,7 +872,7 @@ namespace Umbraco.Core.Services
|
|||||||
var uow = _uowProvider.GetUnitOfWork();
|
var uow = _uowProvider.GetUnitOfWork();
|
||||||
using (var repository = _repositoryFactory.CreateMemberRepository(uow))
|
using (var repository = _repositoryFactory.CreateMemberRepository(uow))
|
||||||
{
|
{
|
||||||
foreach (var member in entities)
|
foreach (var member in asArray)
|
||||||
{
|
{
|
||||||
repository.AddOrUpdate(member);
|
repository.AddOrUpdate(member);
|
||||||
}
|
}
|
||||||
@@ -859,14 +880,15 @@ namespace Umbraco.Core.Services
|
|||||||
//commit the whole lot in one go
|
//commit the whole lot in one go
|
||||||
uow.Commit();
|
uow.Commit();
|
||||||
|
|
||||||
foreach (var member in entities)
|
foreach (var member in asArray)
|
||||||
{
|
{
|
||||||
CreateAndSaveMemberXml(member.ToXml(), member.Id, uow.Database);
|
var xml = _entitySerializer.Serialize(_dataTypeService, member);
|
||||||
|
CreateAndSaveMemberXml(xml, member.Id, uow.Database);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (raiseEvents)
|
if (raiseEvents)
|
||||||
Saved.RaiseEvent(new SaveEventArgs<IMember>(entities, false), this);
|
Saved.RaiseEvent(new SaveEventArgs<IMember>(asArray, false), this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1072,7 +1094,7 @@ namespace Umbraco.Core.Services
|
|||||||
var xmlItems = new List<ContentXmlDto>();
|
var xmlItems = new List<ContentXmlDto>();
|
||||||
foreach (var c in list)
|
foreach (var c in list)
|
||||||
{
|
{
|
||||||
var xml = c.ToXml();
|
var xml = _entitySerializer.Serialize(_dataTypeService, c);
|
||||||
xmlItems.Add(new ContentXmlDto { NodeId = c.Id, Xml = xml.ToString(SaveOptions.None) });
|
xmlItems.Add(new ContentXmlDto { NodeId = c.Id, Xml = xml.ToString(SaveOptions.None) });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -121,13 +121,13 @@ namespace Umbraco.Core.Services
|
|||||||
_userService = new Lazy<IUserService>(() => new UserService(provider, repositoryFactory.Value));
|
_userService = new Lazy<IUserService>(() => new UserService(provider, repositoryFactory.Value));
|
||||||
|
|
||||||
if (_memberService == null)
|
if (_memberService == null)
|
||||||
_memberService = new Lazy<IMemberService>(() => new MemberService(provider, repositoryFactory.Value, _memberGroupService.Value));
|
_memberService = new Lazy<IMemberService>(() => new MemberService(provider, repositoryFactory.Value, _memberGroupService.Value, _dataTypeService.Value));
|
||||||
|
|
||||||
if (_contentService == null)
|
if (_contentService == null)
|
||||||
_contentService = new Lazy<IContentService>(() => new ContentService(provider, repositoryFactory.Value, publishingStrategy, DataTypeService));
|
_contentService = new Lazy<IContentService>(() => new ContentService(provider, repositoryFactory.Value, publishingStrategy, _dataTypeService.Value));
|
||||||
|
|
||||||
if (_mediaService == null)
|
if (_mediaService == null)
|
||||||
_mediaService = new Lazy<IMediaService>(() => new MediaService(provider, repositoryFactory.Value, DataTypeService));
|
_mediaService = new Lazy<IMediaService>(() => new MediaService(provider, repositoryFactory.Value, _dataTypeService.Value));
|
||||||
|
|
||||||
if (_contentTypeService == null)
|
if (_contentTypeService == null)
|
||||||
_contentTypeService = new Lazy<IContentTypeService>(() => new ContentTypeService(provider, repositoryFactory.Value, _contentService.Value, _mediaService.Value));
|
_contentTypeService = new Lazy<IContentTypeService>(() => new ContentTypeService(provider, repositoryFactory.Value, _contentService.Value, _mediaService.Value));
|
||||||
|
|||||||
Reference in New Issue
Block a user