From 40bc3c0607757159e274a72c4dca6f2445196ef0 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Fri, 21 Oct 2016 14:36:05 +0200 Subject: Specify the resource name in one place --- common/facadefactory.cpp | 2 +- common/resource.cpp | 7 ++++--- common/resource.h | 6 +++--- examples/dummyresource/resourcefactory.cpp | 16 ++++++++-------- examples/dummyresource/resourcefactory.h | 7 ++----- examples/imapresource/imapresource.cpp | 12 ++++++------ examples/imapresource/imapresource.h | 7 ++----- examples/maildirresource/maildirresource.cpp | 12 ++++++------ examples/maildirresource/maildirresource.h | 7 ++----- examples/mailtransportresource/mailtransportresource.cpp | 8 ++++---- examples/mailtransportresource/mailtransportresource.h | 7 ++----- 11 files changed, 40 insertions(+), 51 deletions(-) diff --git a/common/facadefactory.cpp b/common/facadefactory.cpp index 107d575..9342831 100644 --- a/common/facadefactory.cpp +++ b/common/facadefactory.cpp @@ -68,7 +68,7 @@ std::shared_ptr FacadeFactory::getFacade(const QByteArray &resource, const if (!mFacadeRegistry.contains(k)) { locker.unlock(); // This will call FacadeFactory::instace() internally - Sink::ResourceFactory::load(QString::fromLatin1(resource)); + Sink::ResourceFactory::load(resource); locker.relock(); } diff --git a/common/resource.cpp b/common/resource.cpp index f4c2ad4..db64d33 100644 --- a/common/resource.cpp +++ b/common/resource.cpp @@ -80,7 +80,7 @@ ResourceFactory::~ResourceFactory() // delete d; } -ResourceFactory *ResourceFactory::load(const QString &resourceName) +ResourceFactory *ResourceFactory::load(const QByteArray &resourceName) { ResourceFactory *factory = Private::s_loadedFactories.value(resourceName); if (factory) { @@ -106,8 +106,9 @@ ResourceFactory *ResourceFactory::load(const QString &resourceName) factory = qobject_cast(object); if (factory) { Private::s_loadedFactories.insert(resourceName, factory); - factory->registerFacades(FacadeFactory::instance()); - factory->registerAdaptorFactories(AdaptorFactoryRegistry::instance()); + //TODO: Instead of always loading both facades and adaptorfactories into the respective singletons, we could also leave this up to the caller. (ResourceFactory::loadFacades(...)) + factory->registerFacades(resourceName, FacadeFactory::instance()); + factory->registerAdaptorFactories(resourceName, AdaptorFactoryRegistry::instance()); // TODO: if we need more data on it const QJsonObject json = loader.metaData()[QStringLiteral("MetaData")].toObject(); return factory; } else { diff --git a/common/resource.h b/common/resource.h index 426585d..1dbc365 100644 --- a/common/resource.h +++ b/common/resource.h @@ -71,14 +71,14 @@ private: class SINK_EXPORT ResourceFactory : public QObject { public: - static ResourceFactory *load(const QString &resourceName); + static ResourceFactory *load(const QByteArray &resourceName); ResourceFactory(QObject *parent); virtual ~ResourceFactory(); virtual Resource *createResource(const ResourceContext &context) = 0; - virtual void registerFacades(FacadeFactory &factory) = 0; - virtual void registerAdaptorFactories(AdaptorFactoryRegistry ®istry) {}; + virtual void registerFacades(const QByteArray &resourceName, FacadeFactory &factory) = 0; + virtual void registerAdaptorFactories(const QByteArray &resourceName, AdaptorFactoryRegistry ®istry) {}; virtual void removeDataFromDisk(const QByteArray &instanceIdentifier) = 0; private: diff --git a/examples/dummyresource/resourcefactory.cpp b/examples/dummyresource/resourcefactory.cpp index 5513986..242a772 100644 --- a/examples/dummyresource/resourcefactory.cpp +++ b/examples/dummyresource/resourcefactory.cpp @@ -186,18 +186,18 @@ Sink::Resource *DummyResourceFactory::createResource(const Sink::ResourceContext return new DummyResource(resourceContext); } -void DummyResourceFactory::registerFacades(Sink::FacadeFactory &factory) +void DummyResourceFactory::registerFacades(const QByteArray &resourceName, Sink::FacadeFactory &factory) { - factory.registerFacade(PLUGIN_NAME); - factory.registerFacade(PLUGIN_NAME); - factory.registerFacade(PLUGIN_NAME); + factory.registerFacade(resourceName); + factory.registerFacade(resourceName); + factory.registerFacade(resourceName); } -void DummyResourceFactory::registerAdaptorFactories(Sink::AdaptorFactoryRegistry ®istry) +void DummyResourceFactory::registerAdaptorFactories(const QByteArray &resourceName, Sink::AdaptorFactoryRegistry ®istry) { - registry.registerFactory(PLUGIN_NAME); - registry.registerFactory(PLUGIN_NAME); - registry.registerFactory(PLUGIN_NAME); + registry.registerFactory(resourceName); + registry.registerFactory(resourceName); + registry.registerFactory(resourceName); } void DummyResourceFactory::removeDataFromDisk(const QByteArray &instanceIdentifier) diff --git a/examples/dummyresource/resourcefactory.h b/examples/dummyresource/resourcefactory.h index 3dd82ff..46a557e 100644 --- a/examples/dummyresource/resourcefactory.h +++ b/examples/dummyresource/resourcefactory.h @@ -26,9 +26,6 @@ #include -//TODO: a little ugly to have this in two places, once here and once in Q_PLUGIN_METADATA -#define PLUGIN_NAME "sink.dummy" - class DummyResource : public Sink::GenericResource { public: @@ -49,8 +46,8 @@ public: DummyResourceFactory(QObject *parent = 0); Sink::Resource *createResource(const Sink::ResourceContext &resourceContext) Q_DECL_OVERRIDE; - void registerFacades(Sink::FacadeFactory &factory) Q_DECL_OVERRIDE; - void registerAdaptorFactories(Sink::AdaptorFactoryRegistry ®istry) Q_DECL_OVERRIDE; + void registerFacades(const QByteArray &resourceName, Sink::FacadeFactory &factory) Q_DECL_OVERRIDE; + void registerAdaptorFactories(const QByteArray &resourceName, Sink::AdaptorFactoryRegistry ®istry) Q_DECL_OVERRIDE; void removeDataFromDisk(const QByteArray &instanceIdentifier) Q_DECL_OVERRIDE; }; diff --git a/examples/imapresource/imapresource.cpp b/examples/imapresource/imapresource.cpp index 9656a04..421bedf 100644 --- a/examples/imapresource/imapresource.cpp +++ b/examples/imapresource/imapresource.cpp @@ -683,16 +683,16 @@ Sink::Resource *ImapResourceFactory::createResource(const ResourceContext &conte return new ImapResource(context); } -void ImapResourceFactory::registerFacades(Sink::FacadeFactory &factory) +void ImapResourceFactory::registerFacades(const QByteArray &name, Sink::FacadeFactory &factory) { - factory.registerFacade(PLUGIN_NAME); - factory.registerFacade(PLUGIN_NAME); + factory.registerFacade(name); + factory.registerFacade(name); } -void ImapResourceFactory::registerAdaptorFactories(Sink::AdaptorFactoryRegistry ®istry) +void ImapResourceFactory::registerAdaptorFactories(const QByteArray &name, Sink::AdaptorFactoryRegistry ®istry) { - registry.registerFactory(PLUGIN_NAME); - registry.registerFactory(PLUGIN_NAME); + registry.registerFactory(name); + registry.registerFactory(name); } void ImapResourceFactory::removeDataFromDisk(const QByteArray &instanceIdentifier) diff --git a/examples/imapresource/imapresource.h b/examples/imapresource/imapresource.h index 684a3c9..216c6c5 100644 --- a/examples/imapresource/imapresource.h +++ b/examples/imapresource/imapresource.h @@ -25,9 +25,6 @@ #include -//TODO: a little ugly to have this in two places, once here and once in Q_PLUGIN_METADATA -#define PLUGIN_NAME "sink.imap" - class ImapMailAdaptorFactory; class ImapFolderAdaptorFactory; @@ -63,8 +60,8 @@ public: ImapResourceFactory(QObject *parent = 0); Sink::Resource *createResource(const Sink::ResourceContext &resourceContext) Q_DECL_OVERRIDE; - void registerFacades(Sink::FacadeFactory &factory) Q_DECL_OVERRIDE; - void registerAdaptorFactories(Sink::AdaptorFactoryRegistry ®istry) Q_DECL_OVERRIDE; + void registerFacades(const QByteArray &name, Sink::FacadeFactory &factory) Q_DECL_OVERRIDE; + void registerAdaptorFactories(const QByteArray &name, Sink::AdaptorFactoryRegistry ®istry) Q_DECL_OVERRIDE; void removeDataFromDisk(const QByteArray &instanceIdentifier) Q_DECL_OVERRIDE; }; diff --git a/examples/maildirresource/maildirresource.cpp b/examples/maildirresource/maildirresource.cpp index e0462b7..29b35fd 100644 --- a/examples/maildirresource/maildirresource.cpp +++ b/examples/maildirresource/maildirresource.cpp @@ -554,16 +554,16 @@ Sink::Resource *MaildirResourceFactory::createResource(const ResourceContext &co return new MaildirResource(context); } -void MaildirResourceFactory::registerFacades(Sink::FacadeFactory &factory) +void MaildirResourceFactory::registerFacades(const QByteArray &name, Sink::FacadeFactory &factory) { - factory.registerFacade(PLUGIN_NAME); - factory.registerFacade(PLUGIN_NAME); + factory.registerFacade(name); + factory.registerFacade(name); } -void MaildirResourceFactory::registerAdaptorFactories(Sink::AdaptorFactoryRegistry ®istry) +void MaildirResourceFactory::registerAdaptorFactories(const QByteArray &name, Sink::AdaptorFactoryRegistry ®istry) { - registry.registerFactory(PLUGIN_NAME); - registry.registerFactory(PLUGIN_NAME); + registry.registerFactory(name); + registry.registerFactory(name); } void MaildirResourceFactory::removeDataFromDisk(const QByteArray &instanceIdentifier) diff --git a/examples/maildirresource/maildirresource.h b/examples/maildirresource/maildirresource.h index 6265819..2d1090b 100644 --- a/examples/maildirresource/maildirresource.h +++ b/examples/maildirresource/maildirresource.h @@ -25,9 +25,6 @@ #include -//TODO: a little ugly to have this in two places, once here and once in Q_PLUGIN_METADATA -#define PLUGIN_NAME "sink.maildir" - class MaildirMailAdaptorFactory; class MaildirFolderAdaptorFactory; @@ -65,8 +62,8 @@ public: MaildirResourceFactory(QObject *parent = 0); Sink::Resource *createResource(const Sink::ResourceContext &context) Q_DECL_OVERRIDE; - void registerFacades(Sink::FacadeFactory &factory) Q_DECL_OVERRIDE; - void registerAdaptorFactories(Sink::AdaptorFactoryRegistry ®istry) Q_DECL_OVERRIDE; + void registerFacades(const QByteArray &resourceName, Sink::FacadeFactory &factory) Q_DECL_OVERRIDE; + void registerAdaptorFactories(const QByteArray &resourceName, Sink::AdaptorFactoryRegistry ®istry) Q_DECL_OVERRIDE; void removeDataFromDisk(const QByteArray &instanceIdentifier) Q_DECL_OVERRIDE; }; diff --git a/examples/mailtransportresource/mailtransportresource.cpp b/examples/mailtransportresource/mailtransportresource.cpp index 25231c8..5f8ba89 100644 --- a/examples/mailtransportresource/mailtransportresource.cpp +++ b/examples/mailtransportresource/mailtransportresource.cpp @@ -195,14 +195,14 @@ Sink::Resource *MailtransportResourceFactory::createResource(const Sink::Resourc return new MailtransportResource(context); } -void MailtransportResourceFactory::registerFacades(Sink::FacadeFactory &factory) +void MailtransportResourceFactory::registerFacades(const QByteArray &resourceName, Sink::FacadeFactory &factory) { - factory.registerFacade>(PLUGIN_NAME); + factory.registerFacade>(resourceName); } -void MailtransportResourceFactory::registerAdaptorFactories(Sink::AdaptorFactoryRegistry ®istry) +void MailtransportResourceFactory::registerAdaptorFactories(const QByteArray &resourceName, Sink::AdaptorFactoryRegistry ®istry) { - registry.registerFactory>(PLUGIN_NAME); + registry.registerFactory>(resourceName); } void MailtransportResourceFactory::removeDataFromDisk(const QByteArray &instanceIdentifier) diff --git a/examples/mailtransportresource/mailtransportresource.h b/examples/mailtransportresource/mailtransportresource.h index 212880c..a6f1167 100644 --- a/examples/mailtransportresource/mailtransportresource.h +++ b/examples/mailtransportresource/mailtransportresource.h @@ -22,9 +22,6 @@ #include "common/resource.h" #include "common/genericresource.h" -//TODO: a little ugly to have this in two places, once here and once in Q_PLUGIN_METADATA -#define PLUGIN_NAME "sink.mailtransport" - class MailtransportResource : public Sink::GenericResource { public: @@ -53,8 +50,8 @@ public: MailtransportResourceFactory(QObject *parent = 0); Sink::Resource *createResource(const Sink::ResourceContext &resourceContext) Q_DECL_OVERRIDE; - void registerFacades(Sink::FacadeFactory &factory) Q_DECL_OVERRIDE; - void registerAdaptorFactories(Sink::AdaptorFactoryRegistry ®istry) Q_DECL_OVERRIDE; + void registerFacades(const QByteArray &resourceName, Sink::FacadeFactory &factory) Q_DECL_OVERRIDE; + void registerAdaptorFactories(const QByteArray &resourceName, Sink::AdaptorFactoryRegistry ®istry) Q_DECL_OVERRIDE; void removeDataFromDisk(const QByteArray &instanceIdentifier) Q_DECL_OVERRIDE; }; -- cgit v1.2.3