summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
Diffstat (limited to 'common')
-rw-r--r--common/facade.cpp23
-rw-r--r--common/resourceaccess.h2
2 files changed, 24 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
diff --git a/common/resourceaccess.h b/common/resourceaccess.h
index e87a1f7..527cfa3 100644
--- a/common/resourceaccess.h
+++ b/common/resourceaccess.h
@@ -63,6 +63,8 @@ class ResourceAccess : public ResourceAccessInterface
63{ 63{
64 Q_OBJECT 64 Q_OBJECT
65public: 65public:
66 typedef QSharedPointer<ResourceAccess> Ptr;
67
66 ResourceAccess(const QByteArray &resourceName); 68 ResourceAccess(const QByteArray &resourceName);
67 ~ResourceAccess(); 69 ~ResourceAccess();
68 70