summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-10-21 14:36:05 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-10-21 14:36:05 +0200
commit40bc3c0607757159e274a72c4dca6f2445196ef0 (patch)
tree58af345ea9f9455480adce1b34b1782ae8a12893
parenta3a694db437cf88d11f141150702d5ca80774b3d (diff)
downloadsink-40bc3c0607757159e274a72c4dca6f2445196ef0.tar.gz
sink-40bc3c0607757159e274a72c4dca6f2445196ef0.zip
Specify the resource name in one place
-rw-r--r--common/facadefactory.cpp2
-rw-r--r--common/resource.cpp7
-rw-r--r--common/resource.h6
-rw-r--r--examples/dummyresource/resourcefactory.cpp16
-rw-r--r--examples/dummyresource/resourcefactory.h7
-rw-r--r--examples/imapresource/imapresource.cpp12
-rw-r--r--examples/imapresource/imapresource.h7
-rw-r--r--examples/maildirresource/maildirresource.cpp12
-rw-r--r--examples/maildirresource/maildirresource.h7
-rw-r--r--examples/mailtransportresource/mailtransportresource.cpp8
-rw-r--r--examples/mailtransportresource/mailtransportresource.h7
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<void> FacadeFactory::getFacade(const QByteArray &resource, const
68 if (!mFacadeRegistry.contains(k)) { 68 if (!mFacadeRegistry.contains(k)) {
69 locker.unlock(); 69 locker.unlock();
70 // This will call FacadeFactory::instace() internally 70 // This will call FacadeFactory::instace() internally
71 Sink::ResourceFactory::load(QString::fromLatin1(resource)); 71 Sink::ResourceFactory::load(resource);
72 locker.relock(); 72 locker.relock();
73 } 73 }
74 74
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()
80 // delete d; 80 // delete d;
81} 81}
82 82
83ResourceFactory *ResourceFactory::load(const QString &resourceName) 83ResourceFactory *ResourceFactory::load(const QByteArray &resourceName)
84{ 84{
85 ResourceFactory *factory = Private::s_loadedFactories.value(resourceName); 85 ResourceFactory *factory = Private::s_loadedFactories.value(resourceName);
86 if (factory) { 86 if (factory) {
@@ -106,8 +106,9 @@ ResourceFactory *ResourceFactory::load(const QString &resourceName)
106 factory = qobject_cast<ResourceFactory *>(object); 106 factory = qobject_cast<ResourceFactory *>(object);
107 if (factory) { 107 if (factory) {
108 Private::s_loadedFactories.insert(resourceName, factory); 108 Private::s_loadedFactories.insert(resourceName, factory);
109 factory->registerFacades(FacadeFactory::instance()); 109 //TODO: Instead of always loading both facades and adaptorfactories into the respective singletons, we could also leave this up to the caller. (ResourceFactory::loadFacades(...))
110 factory->registerAdaptorFactories(AdaptorFactoryRegistry::instance()); 110 factory->registerFacades(resourceName, FacadeFactory::instance());
111 factory->registerAdaptorFactories(resourceName, AdaptorFactoryRegistry::instance());
111 // TODO: if we need more data on it const QJsonObject json = loader.metaData()[QStringLiteral("MetaData")].toObject(); 112 // TODO: if we need more data on it const QJsonObject json = loader.metaData()[QStringLiteral("MetaData")].toObject();
112 return factory; 113 return factory;
113 } else { 114 } 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:
71class SINK_EXPORT ResourceFactory : public QObject 71class SINK_EXPORT ResourceFactory : public QObject
72{ 72{
73public: 73public:
74 static ResourceFactory *load(const QString &resourceName); 74 static ResourceFactory *load(const QByteArray &resourceName);
75 75
76 ResourceFactory(QObject *parent); 76 ResourceFactory(QObject *parent);
77 virtual ~ResourceFactory(); 77 virtual ~ResourceFactory();
78 78
79 virtual Resource *createResource(const ResourceContext &context) = 0; 79 virtual Resource *createResource(const ResourceContext &context) = 0;
80 virtual void registerFacades(FacadeFactory &factory) = 0; 80 virtual void registerFacades(const QByteArray &resourceName, FacadeFactory &factory) = 0;
81 virtual void registerAdaptorFactories(AdaptorFactoryRegistry &registry) {}; 81 virtual void registerAdaptorFactories(const QByteArray &resourceName, AdaptorFactoryRegistry &registry) {};
82 virtual void removeDataFromDisk(const QByteArray &instanceIdentifier) = 0; 82 virtual void removeDataFromDisk(const QByteArray &instanceIdentifier) = 0;
83 83
84private: 84private:
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
186 return new DummyResource(resourceContext); 186 return new DummyResource(resourceContext);
187} 187}
188 188
189void DummyResourceFactory::registerFacades(Sink::FacadeFactory &factory) 189void DummyResourceFactory::registerFacades(const QByteArray &resourceName, Sink::FacadeFactory &factory)
190{ 190{
191 factory.registerFacade<Sink::ApplicationDomain::Event, DummyResourceFacade>(PLUGIN_NAME); 191 factory.registerFacade<Sink::ApplicationDomain::Event, DummyResourceFacade>(resourceName);
192 factory.registerFacade<Sink::ApplicationDomain::Mail, DummyResourceMailFacade>(PLUGIN_NAME); 192 factory.registerFacade<Sink::ApplicationDomain::Mail, DummyResourceMailFacade>(resourceName);
193 factory.registerFacade<Sink::ApplicationDomain::Folder, DummyResourceFolderFacade>(PLUGIN_NAME); 193 factory.registerFacade<Sink::ApplicationDomain::Folder, DummyResourceFolderFacade>(resourceName);
194} 194}
195 195
196void DummyResourceFactory::registerAdaptorFactories(Sink::AdaptorFactoryRegistry &registry) 196void DummyResourceFactory::registerAdaptorFactories(const QByteArray &resourceName, Sink::AdaptorFactoryRegistry &registry)
197{ 197{
198 registry.registerFactory<Sink::ApplicationDomain::Folder, DummyFolderAdaptorFactory>(PLUGIN_NAME); 198 registry.registerFactory<Sink::ApplicationDomain::Event, DummyEventAdaptorFactory>(resourceName);
199 registry.registerFactory<Sink::ApplicationDomain::Mail, DummyMailAdaptorFactory>(PLUGIN_NAME); 199 registry.registerFactory<Sink::ApplicationDomain::Mail, DummyMailAdaptorFactory>(resourceName);
200 registry.registerFactory<Sink::ApplicationDomain::Event, DummyEventAdaptorFactory>(PLUGIN_NAME); 200 registry.registerFactory<Sink::ApplicationDomain::Folder, DummyFolderAdaptorFactory>(resourceName);
201} 201}
202 202
203void DummyResourceFactory::removeDataFromDisk(const QByteArray &instanceIdentifier) 203void 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 @@
26 26
27#include <flatbuffers/flatbuffers.h> 27#include <flatbuffers/flatbuffers.h>
28 28
29//TODO: a little ugly to have this in two places, once here and once in Q_PLUGIN_METADATA
30#define PLUGIN_NAME "sink.dummy"
31
32class DummyResource : public Sink::GenericResource 29class DummyResource : public Sink::GenericResource
33{ 30{
34public: 31public:
@@ -49,8 +46,8 @@ public:
49 DummyResourceFactory(QObject *parent = 0); 46 DummyResourceFactory(QObject *parent = 0);
50 47
51 Sink::Resource *createResource(const Sink::ResourceContext &resourceContext) Q_DECL_OVERRIDE; 48 Sink::Resource *createResource(const Sink::ResourceContext &resourceContext) Q_DECL_OVERRIDE;
52 void registerFacades(Sink::FacadeFactory &factory) Q_DECL_OVERRIDE; 49 void registerFacades(const QByteArray &resourceName, Sink::FacadeFactory &factory) Q_DECL_OVERRIDE;
53 void registerAdaptorFactories(Sink::AdaptorFactoryRegistry &registry) Q_DECL_OVERRIDE; 50 void registerAdaptorFactories(const QByteArray &resourceName, Sink::AdaptorFactoryRegistry &registry) Q_DECL_OVERRIDE;
54 void removeDataFromDisk(const QByteArray &instanceIdentifier) Q_DECL_OVERRIDE; 51 void removeDataFromDisk(const QByteArray &instanceIdentifier) Q_DECL_OVERRIDE;
55}; 52};
56 53
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
683 return new ImapResource(context); 683 return new ImapResource(context);
684} 684}
685 685
686void ImapResourceFactory::registerFacades(Sink::FacadeFactory &factory) 686void ImapResourceFactory::registerFacades(const QByteArray &name, Sink::FacadeFactory &factory)
687{ 687{
688 factory.registerFacade<Sink::ApplicationDomain::Mail, ImapResourceMailFacade>(PLUGIN_NAME); 688 factory.registerFacade<Sink::ApplicationDomain::Mail, ImapResourceMailFacade>(name);
689 factory.registerFacade<Sink::ApplicationDomain::Folder, ImapResourceFolderFacade>(PLUGIN_NAME); 689 factory.registerFacade<Sink::ApplicationDomain::Folder, ImapResourceFolderFacade>(name);
690} 690}
691 691
692void ImapResourceFactory::registerAdaptorFactories(Sink::AdaptorFactoryRegistry &registry) 692void ImapResourceFactory::registerAdaptorFactories(const QByteArray &name, Sink::AdaptorFactoryRegistry &registry)
693{ 693{
694 registry.registerFactory<Sink::ApplicationDomain::Mail, ImapMailAdaptorFactory>(PLUGIN_NAME); 694 registry.registerFactory<Sink::ApplicationDomain::Mail, ImapMailAdaptorFactory>(name);
695 registry.registerFactory<Sink::ApplicationDomain::Folder, ImapFolderAdaptorFactory>(PLUGIN_NAME); 695 registry.registerFactory<Sink::ApplicationDomain::Folder, ImapFolderAdaptorFactory>(name);
696} 696}
697 697
698void ImapResourceFactory::removeDataFromDisk(const QByteArray &instanceIdentifier) 698void 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 @@
25 25
26#include <flatbuffers/flatbuffers.h> 26#include <flatbuffers/flatbuffers.h>
27 27
28//TODO: a little ugly to have this in two places, once here and once in Q_PLUGIN_METADATA
29#define PLUGIN_NAME "sink.imap"
30
31class ImapMailAdaptorFactory; 28class ImapMailAdaptorFactory;
32class ImapFolderAdaptorFactory; 29class ImapFolderAdaptorFactory;
33 30
@@ -63,8 +60,8 @@ public:
63 ImapResourceFactory(QObject *parent = 0); 60 ImapResourceFactory(QObject *parent = 0);
64 61
65 Sink::Resource *createResource(const Sink::ResourceContext &resourceContext) Q_DECL_OVERRIDE; 62 Sink::Resource *createResource(const Sink::ResourceContext &resourceContext) Q_DECL_OVERRIDE;
66 void registerFacades(Sink::FacadeFactory &factory) Q_DECL_OVERRIDE; 63 void registerFacades(const QByteArray &name, Sink::FacadeFactory &factory) Q_DECL_OVERRIDE;
67 void registerAdaptorFactories(Sink::AdaptorFactoryRegistry &registry) Q_DECL_OVERRIDE; 64 void registerAdaptorFactories(const QByteArray &name, Sink::AdaptorFactoryRegistry &registry) Q_DECL_OVERRIDE;
68 void removeDataFromDisk(const QByteArray &instanceIdentifier) Q_DECL_OVERRIDE; 65 void removeDataFromDisk(const QByteArray &instanceIdentifier) Q_DECL_OVERRIDE;
69}; 66};
70 67
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
554 return new MaildirResource(context); 554 return new MaildirResource(context);
555} 555}
556 556
557void MaildirResourceFactory::registerFacades(Sink::FacadeFactory &factory) 557void MaildirResourceFactory::registerFacades(const QByteArray &name, Sink::FacadeFactory &factory)
558{ 558{
559 factory.registerFacade<Sink::ApplicationDomain::Mail, MaildirResourceMailFacade>(PLUGIN_NAME); 559 factory.registerFacade<Sink::ApplicationDomain::Mail, MaildirResourceMailFacade>(name);
560 factory.registerFacade<Sink::ApplicationDomain::Folder, MaildirResourceFolderFacade>(PLUGIN_NAME); 560 factory.registerFacade<Sink::ApplicationDomain::Folder, MaildirResourceFolderFacade>(name);
561} 561}
562 562
563void MaildirResourceFactory::registerAdaptorFactories(Sink::AdaptorFactoryRegistry &registry) 563void MaildirResourceFactory::registerAdaptorFactories(const QByteArray &name, Sink::AdaptorFactoryRegistry &registry)
564{ 564{
565 registry.registerFactory<Sink::ApplicationDomain::Mail, MaildirMailAdaptorFactory>(PLUGIN_NAME); 565 registry.registerFactory<Sink::ApplicationDomain::Mail, MaildirMailAdaptorFactory>(name);
566 registry.registerFactory<Sink::ApplicationDomain::Folder, MaildirFolderAdaptorFactory>(PLUGIN_NAME); 566 registry.registerFactory<Sink::ApplicationDomain::Folder, MaildirFolderAdaptorFactory>(name);
567} 567}
568 568
569void MaildirResourceFactory::removeDataFromDisk(const QByteArray &instanceIdentifier) 569void 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 @@
25 25
26#include <flatbuffers/flatbuffers.h> 26#include <flatbuffers/flatbuffers.h>
27 27
28//TODO: a little ugly to have this in two places, once here and once in Q_PLUGIN_METADATA
29#define PLUGIN_NAME "sink.maildir"
30
31class MaildirMailAdaptorFactory; 28class MaildirMailAdaptorFactory;
32class MaildirFolderAdaptorFactory; 29class MaildirFolderAdaptorFactory;
33 30
@@ -65,8 +62,8 @@ public:
65 MaildirResourceFactory(QObject *parent = 0); 62 MaildirResourceFactory(QObject *parent = 0);
66 63
67 Sink::Resource *createResource(const Sink::ResourceContext &context) Q_DECL_OVERRIDE; 64 Sink::Resource *createResource(const Sink::ResourceContext &context) Q_DECL_OVERRIDE;
68 void registerFacades(Sink::FacadeFactory &factory) Q_DECL_OVERRIDE; 65 void registerFacades(const QByteArray &resourceName, Sink::FacadeFactory &factory) Q_DECL_OVERRIDE;
69 void registerAdaptorFactories(Sink::AdaptorFactoryRegistry &registry) Q_DECL_OVERRIDE; 66 void registerAdaptorFactories(const QByteArray &resourceName, Sink::AdaptorFactoryRegistry &registry) Q_DECL_OVERRIDE;
70 void removeDataFromDisk(const QByteArray &instanceIdentifier) Q_DECL_OVERRIDE; 67 void removeDataFromDisk(const QByteArray &instanceIdentifier) Q_DECL_OVERRIDE;
71}; 68};
72 69
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
195 return new MailtransportResource(context); 195 return new MailtransportResource(context);
196} 196}
197 197
198void MailtransportResourceFactory::registerFacades(Sink::FacadeFactory &factory) 198void MailtransportResourceFactory::registerFacades(const QByteArray &resourceName, Sink::FacadeFactory &factory)
199{ 199{
200 factory.registerFacade<ApplicationDomain::Mail, DefaultFacade<ApplicationDomain::Mail>>(PLUGIN_NAME); 200 factory.registerFacade<ApplicationDomain::Mail, DefaultFacade<ApplicationDomain::Mail>>(resourceName);
201} 201}
202 202
203void MailtransportResourceFactory::registerAdaptorFactories(Sink::AdaptorFactoryRegistry &registry) 203void MailtransportResourceFactory::registerAdaptorFactories(const QByteArray &resourceName, Sink::AdaptorFactoryRegistry &registry)
204{ 204{
205 registry.registerFactory<Sink::ApplicationDomain::Mail, DomainTypeAdaptorFactory<ApplicationDomain::Mail>>(PLUGIN_NAME); 205 registry.registerFactory<Sink::ApplicationDomain::Mail, DomainTypeAdaptorFactory<ApplicationDomain::Mail>>(resourceName);
206} 206}
207 207
208void MailtransportResourceFactory::removeDataFromDisk(const QByteArray &instanceIdentifier) 208void 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 @@
22#include "common/resource.h" 22#include "common/resource.h"
23#include "common/genericresource.h" 23#include "common/genericresource.h"
24 24
25//TODO: a little ugly to have this in two places, once here and once in Q_PLUGIN_METADATA
26#define PLUGIN_NAME "sink.mailtransport"
27
28class MailtransportResource : public Sink::GenericResource 25class MailtransportResource : public Sink::GenericResource
29{ 26{
30public: 27public:
@@ -53,8 +50,8 @@ public:
53 MailtransportResourceFactory(QObject *parent = 0); 50 MailtransportResourceFactory(QObject *parent = 0);
54 51
55 Sink::Resource *createResource(const Sink::ResourceContext &resourceContext) Q_DECL_OVERRIDE; 52 Sink::Resource *createResource(const Sink::ResourceContext &resourceContext) Q_DECL_OVERRIDE;
56 void registerFacades(Sink::FacadeFactory &factory) Q_DECL_OVERRIDE; 53 void registerFacades(const QByteArray &resourceName, Sink::FacadeFactory &factory) Q_DECL_OVERRIDE;
57 void registerAdaptorFactories(Sink::AdaptorFactoryRegistry &registry) Q_DECL_OVERRIDE; 54 void registerAdaptorFactories(const QByteArray &resourceName, Sink::AdaptorFactoryRegistry &registry) Q_DECL_OVERRIDE;
58 void removeDataFromDisk(const QByteArray &instanceIdentifier) Q_DECL_OVERRIDE; 55 void removeDataFromDisk(const QByteArray &instanceIdentifier) Q_DECL_OVERRIDE;
59}; 56};
60 57