From 61ab9866fa8ea5e26e5ce7d7cc265f5d8d65b277 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 7 Jul 2015 03:22:23 +0200 Subject: Pass instanceIdentifier to facade --- common/clientapi.h | 16 ++++++++-------- examples/dummyresource/facade.cpp | 4 ++-- examples/dummyresource/facade.h | 2 +- tests/clientapitest.cpp | 6 +++--- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/common/clientapi.h b/common/clientapi.h index 748baa6..2d926fd 100644 --- a/common/clientapi.h +++ b/common/clientapi.h @@ -108,7 +108,7 @@ public: class FacadeFactory { public: - typedef std::function()> FactoryFunction; + typedef std::function(const QByteArray &)> FactoryFunction; //FIXME: proper singleton implementation static FacadeFactory &instance() @@ -126,7 +126,7 @@ public: void registerFacade(const QByteArray &resource) { const QByteArray typeName = ApplicationDomain::getTypeName(); - mFacadeRegistry.insert(key(resource, typeName), [](){ return std::shared_ptr(new Facade); }); + mFacadeRegistry.insert(key(resource, typeName), [](const QByteArray &instanceIdentifier){ return std::make_shared(instanceIdentifier); }); } /* @@ -152,11 +152,11 @@ public: } template - std::shared_ptr > getFacade(const QByteArray &resource) + std::shared_ptr > getFacade(const QByteArray &resource, const QByteArray &instanceIdentifier) { const QByteArray typeName = ApplicationDomain::getTypeName(); if (auto factoryFunction = mFacadeRegistry.value(key(resource, typeName))) { - return std::static_pointer_cast >(factoryFunction()); + return std::static_pointer_cast >(factoryFunction(instanceIdentifier)); } qWarning() << "Failed to find facade for resource: " << resource << " and type: " << typeName; return std::shared_ptr >(); @@ -199,7 +199,7 @@ public: KAsync::iterate(query.resources) .template each([query, resultSet](const QByteArray &resource, KAsync::Future &future) { //TODO pass resource identifier to factory - auto facade = FacadeFactory::instance().getFacade(resourceName(resource)); + auto facade = FacadeFactory::instance().getFacade(resourceName(resource), resource); if (facade) { facade->load(query, resultSet).template then([&future](){future.setFinished();}).exec(); //Keep the facade alive for the lifetime of the resultSet. @@ -244,7 +244,7 @@ public: template static void create(const DomainType &domainObject, const QByteArray &resourceIdentifier) { //Potentially move to separate thread as well - auto facade = FacadeFactory::instance().getFacade(resourceName(resourceIdentifier)); + auto facade = FacadeFactory::instance().getFacade(resourceName(resourceIdentifier), resourceIdentifier); facade->create(domainObject).exec().waitForFinished(); //TODO return job? } @@ -257,7 +257,7 @@ public: template static void modify(const DomainType &domainObject, const QByteArray &resourceIdentifier) { //Potentially move to separate thread as well - auto facade = FacadeFactory::instance().getFacade(resourceName(resourceIdentifier)); + auto facade = FacadeFactory::instance().getFacade(resourceName(resourceIdentifier), resourceIdentifier); facade->modify(domainObject).exec().waitForFinished(); //TODO return job? } @@ -268,7 +268,7 @@ public: template static void remove(const DomainType &domainObject, const QByteArray &resourceIdentifier) { //Potentially move to separate thread as well - auto facade = FacadeFactory::instance().getFacade(resourceName(resourceIdentifier)); + auto facade = FacadeFactory::instance().getFacade(resourceName(resourceIdentifier), resourceIdentifier); facade->remove(domainObject).exec().waitForFinished(); //TODO return job? } diff --git a/examples/dummyresource/facade.cpp b/examples/dummyresource/facade.cpp index d6e9286..d20d12d 100644 --- a/examples/dummyresource/facade.cpp +++ b/examples/dummyresource/facade.cpp @@ -21,8 +21,8 @@ #include "domainadaptor.h" -DummyResourceFacade::DummyResourceFacade() - : Akonadi2::GenericFacade("org.kde.dummy.instance1", QSharedPointer::create()) +DummyResourceFacade::DummyResourceFacade(const QByteArray &instanceIdentifier) + : Akonadi2::GenericFacade(instanceIdentifier, QSharedPointer::create()) { } diff --git a/examples/dummyresource/facade.h b/examples/dummyresource/facade.h index 441dc38..dde0dc2 100644 --- a/examples/dummyresource/facade.h +++ b/examples/dummyresource/facade.h @@ -25,6 +25,6 @@ class DummyResourceFacade : public Akonadi2::GenericFacade { public: - DummyResourceFacade(); + DummyResourceFacade(const QByteArray &instanceIdentifier); virtual ~DummyResourceFacade(); }; diff --git a/tests/clientapitest.cpp b/tests/clientapitest.cpp index 081e6ad..a874dd7 100644 --- a/tests/clientapitest.cpp +++ b/tests/clientapitest.cpp @@ -110,7 +110,7 @@ private Q_SLOTS: facade->results << QSharedPointer::create("resource", "id", 0, QSharedPointer()); Akonadi2::FacadeFactory::instance().registerFacade("dummyresource", - [facade]() { + [facade](const QByteArray &instanceIdentifier) { return facade; } ); @@ -130,7 +130,7 @@ private Q_SLOTS: facade->results << QSharedPointer::create("resource", "id", 0, QSharedPointer()); Akonadi2::FacadeFactory::instance().registerFacade("dummyresource", - [facade](){ + [facade](const QByteArray &instanceIdentifier){ return facade; } ); @@ -156,7 +156,7 @@ private Q_SLOTS: facade->results << QSharedPointer::create("resource", "id", 0, QSharedPointer()); Akonadi2::FacadeFactory::instance().registerFacade("dummyresource", - [facade](){ + [facade](const QByteArray &instanceIdentifier){ return facade; } ); -- cgit v1.2.3