summaryrefslogtreecommitdiffstats
path: root/common/facade.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'common/facade.cpp')
-rw-r--r--common/facade.cpp23
1 files changed, 22 insertions, 1 deletions
diff --git a/common/facade.cpp b/common/facade.cpp
index 1d6b9a7..ab41f96 100644
--- a/common/facade.cpp
+++ b/common/facade.cpp
@@ -28,6 +28,27 @@
28 28
29using namespace Akonadi2; 29using namespace Akonadi2;
30 30
31class ResourceAccessFactory {
32public:
33 static ResourceAccessFactory &instance()
34 {
35 static ResourceAccessFactory *instance = 0;
36 if (!instance) {
37 instance = new ResourceAccessFactory;
38 }
39 return *instance;
40 }
41
42 Akonadi2::ResourceAccess::Ptr getAccess(const QByteArray &instanceIdentifier)
43 {
44 if (!mCache.contains(instanceIdentifier)) {
45 mCache.insert(instanceIdentifier, Akonadi2::ResourceAccess::Ptr::create(instanceIdentifier));
46 }
47 return mCache.value(instanceIdentifier);
48 }
49
50 QHash<QByteArray, Akonadi2::ResourceAccess::Ptr> mCache;
51};
31 52
32template<class DomainType> 53template<class DomainType>
33GenericFacade<DomainType>::GenericFacade(const QByteArray &resourceIdentifier, const DomainTypeAdaptorFactoryInterface::Ptr &adaptorFactory , const QSharedPointer<Akonadi2::ResourceAccessInterface> resourceAccess) 54GenericFacade<DomainType>::GenericFacade(const QByteArray &resourceIdentifier, const DomainTypeAdaptorFactoryInterface::Ptr &adaptorFactory , const QSharedPointer<Akonadi2::ResourceAccessInterface> resourceAccess)
@@ -37,7 +58,7 @@ GenericFacade<DomainType>::GenericFacade(const QByteArray &resourceIdentifier, c
37 mResourceInstanceIdentifier(resourceIdentifier) 58 mResourceInstanceIdentifier(resourceIdentifier)
38{ 59{
39 if (!mResourceAccess) { 60 if (!mResourceAccess) {
40 mResourceAccess = QSharedPointer<Akonadi2::ResourceAccess>::create(resourceIdentifier); 61 mResourceAccess = ResourceAccessFactory::instance().getAccess(resourceIdentifier);
41 } 62 }
42} 63}
43 64