Facade - Cleanup access to 'current'

This commit is contained in:
Stephan
2016-05-30 19:54:36 +02:00
parent bc45dd8d6a
commit 7c5542dca3
40 changed files with 384 additions and 348 deletions

View File

@@ -40,17 +40,5 @@
/// Gets the <see cref="IDomainCache"/>.
/// </summary>
public IDomainCache DomainCache { get; }
public static void ResyncCurrent()
{
if (FacadeServiceResolver.HasCurrent == false) return;
var service = FacadeServiceResolver.Current.Service as FacadeService;
var facade = service?.GetFacade() as Facade;
if (facade == null) return;
((PublishedContentCache) facade.ContentCache).Resync();
((PublishedMediaCache)facade.MediaCache).Resync();
// not trying to resync members or domains, which are not cached really
}
}
}

View File

@@ -32,31 +32,35 @@ namespace Umbraco.Web.PublishedCache.XmlPublishedCache
IDatabaseUnitOfWorkProvider uowProvider,
ICacheProvider requestCache,
IEnumerable<IUrlSegmentProvider> segmentProviders,
IFacadeAccessor facadeAccessor,
bool testing = false, bool enableRepositoryEvents = true)
: this(serviceContext, uowProvider, requestCache, segmentProviders, null, testing, enableRepositoryEvents)
: this(serviceContext, uowProvider, requestCache, segmentProviders, facadeAccessor, null, testing, enableRepositoryEvents)
{ }
// used in some tests
internal FacadeService(ServiceContext serviceContext,
IDatabaseUnitOfWorkProvider uowProvider,
ICacheProvider requestCache,
IFacadeAccessor facadeAccessor,
PublishedContentTypeCache contentTypeCache,
bool testing, bool enableRepositoryEvents)
: this(serviceContext, uowProvider, requestCache, Enumerable.Empty<IUrlSegmentProvider>(), contentTypeCache, testing, enableRepositoryEvents)
: this(serviceContext, uowProvider, requestCache, Enumerable.Empty<IUrlSegmentProvider>(), facadeAccessor, contentTypeCache, testing, enableRepositoryEvents)
{ }
private FacadeService(ServiceContext serviceContext,
IDatabaseUnitOfWorkProvider uowProvider,
ICacheProvider requestCache,
IEnumerable<IUrlSegmentProvider> segmentProviders,
IFacadeAccessor facadeAccessor,
PublishedContentTypeCache contentTypeCache,
bool testing, bool enableRepositoryEvents)
: base(facadeAccessor)
{
_routesCache = new RoutesCache();
_contentTypeCache = contentTypeCache
?? new PublishedContentTypeCache(serviceContext.ContentTypeService, serviceContext.MediaTypeService, serviceContext.MemberTypeService);
_xmlStore = new XmlStore(serviceContext, uowProvider, _routesCache, _contentTypeCache, segmentProviders, testing, enableRepositoryEvents);
_xmlStore = new XmlStore(serviceContext, uowProvider, _routesCache, _contentTypeCache, segmentProviders, facadeAccessor, testing, enableRepositoryEvents);
_domainService = serviceContext.DomainService;
_memberService = serviceContext.MemberService;

View File

@@ -49,6 +49,7 @@ namespace Umbraco.Web.PublishedCache.XmlPublishedCache
private bool _withRepositoryEvents;
private bool _withOtherEvents;
private readonly IFacadeAccessor _facadeAccessor;
private readonly PublishedContentTypeCache _contentTypeCache;
private readonly RoutesCache _routesCache;
private readonly ServiceContext _serviceContext; // fixme WHY
@@ -61,15 +62,15 @@ namespace Umbraco.Web.PublishedCache.XmlPublishedCache
/// </summary>
/// <remarks>The default constructor will boot the cache, load data from file or database,
/// wire events in order to manage changes, etc.</remarks>
public XmlStore(ServiceContext serviceContext, IDatabaseUnitOfWorkProvider uowProvider, RoutesCache routesCache, PublishedContentTypeCache contentTypeCache, IEnumerable<IUrlSegmentProvider> segmentProviders)
: this(serviceContext, uowProvider, routesCache, contentTypeCache, segmentProviders, false, false)
public XmlStore(ServiceContext serviceContext, IDatabaseUnitOfWorkProvider uowProvider, RoutesCache routesCache, PublishedContentTypeCache contentTypeCache, IEnumerable<IUrlSegmentProvider> segmentProviders, IFacadeAccessor facadeAccessor)
: this(serviceContext, uowProvider, routesCache, contentTypeCache, segmentProviders, facadeAccessor, false, false)
{ }
// internal for unit tests
// no file nor db, no config check
// fixme - er, we DO have a DB?
internal XmlStore(ServiceContext serviceContext, IDatabaseUnitOfWorkProvider uowProvider, RoutesCache routesCache, PublishedContentTypeCache contentTypeCache,
IEnumerable<IUrlSegmentProvider> segmentProviders, bool testing, bool enableRepositoryEvents)
IEnumerable<IUrlSegmentProvider> segmentProviders, IFacadeAccessor facadeAccessor, bool testing, bool enableRepositoryEvents)
{
if (testing == false)
EnsureConfigurationIsValid();
@@ -78,6 +79,7 @@ namespace Umbraco.Web.PublishedCache.XmlPublishedCache
_uowProvider = uowProvider;
_routesCache = routesCache;
_contentTypeCache = contentTypeCache;
_facadeAccessor = facadeAccessor;
InitializeSerializers(segmentProviders);
@@ -1310,7 +1312,7 @@ ORDER BY umbracoNode.level, umbracoNode.sortOrder";
if (publishedChanged)
{
safeXml.Commit(); // not auto!
Facade.ResyncCurrent();
ResyncCurrentFacade();
}
}
}
@@ -1341,7 +1343,7 @@ ORDER BY umbracoNode.level, umbracoNode.sortOrder";
// ignore media and member types - we're not caching them
Facade.ResyncCurrent();
ResyncCurrentFacade();
}
public void Notify(DataTypeCacheRefresher.JsonPayload[] payloads)
@@ -1361,7 +1363,17 @@ ORDER BY umbracoNode.level, umbracoNode.sortOrder";
// ignore media and member types - we're not caching them
Facade.ResyncCurrent();
ResyncCurrentFacade();
}
private void ResyncCurrentFacade()
{
var facade = (Facade) _facadeAccessor.Facade;
if (facade == null) return;
((PublishedContentCache) facade.ContentCache).Resync();
((PublishedMediaCache) facade.MediaCache).Resync();
// not trying to resync members or domains, which are not cached really
}
#endregion