summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2015-04-10 12:32:03 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2015-04-10 12:32:03 +0200
commitea348c62fdebe1d9c6531fc4491d3316a1e941df (patch)
treea5984008eacf60154e3454544cb6d68969611fed
parent2e13ef36cabbe1c995e77b92c06d6350719bf952 (diff)
downloadsink-ea348c62fdebe1d9c6531fc4491d3316a1e941df.tar.gz
sink-ea348c62fdebe1d9c6531fc4491d3316a1e941df.zip
checkpoint
-rw-r--r--common/clientapi.h2
-rw-r--r--common/domainadaptor.cpp8
-rw-r--r--common/domainadaptor.h112
-rw-r--r--dummyresource/domainadaptor.cpp111
-rw-r--r--dummyresource/domainadaptor.h4
-rw-r--r--tests/domainadaptortest.cpp20
6 files changed, 199 insertions, 58 deletions
diff --git a/common/clientapi.h b/common/clientapi.h
index 5182547..22448b3 100644
--- a/common/clientapi.h
+++ b/common/clientapi.h
@@ -234,6 +234,8 @@ public:
234 234
235 virtual QVariant getProperty(const QByteArray &key) const { return mAdaptor->getProperty(key); } 235 virtual QVariant getProperty(const QByteArray &key) const { return mAdaptor->getProperty(key); }
236 virtual void setProperty(const QByteArray &key, const QVariant &value){ mChangeSet.insert(key, value); mAdaptor->setProperty(key, value); } 236 virtual void setProperty(const QByteArray &key, const QVariant &value){ mChangeSet.insert(key, value); mAdaptor->setProperty(key, value); }
237 virtual QByteArrayList changedProperties() const { return mChangeSet.keys(); }
238 qint64 revision() const { return mRevision; }
237 239
238private: 240private:
239 QSharedPointer<BufferAdaptor> mAdaptor; 241 QSharedPointer<BufferAdaptor> mAdaptor;
diff --git a/common/domainadaptor.cpp b/common/domainadaptor.cpp
index 5b7c427..5e6f062 100644
--- a/common/domainadaptor.cpp
+++ b/common/domainadaptor.cpp
@@ -20,16 +20,16 @@
20#include "domainadaptor.h" 20#include "domainadaptor.h"
21 21
22template <> 22template <>
23QSharedPointer<PropertyMapper<Akonadi2::ApplicationDomain::Buffer::Event> > initializePropertyMapper<Akonadi2::ApplicationDomain::Buffer::Event>() 23QSharedPointer<ReadPropertyMapper<Akonadi2::ApplicationDomain::Buffer::Event> > initializeReadPropertyMapper<Akonadi2::ApplicationDomain::Buffer::Event>()
24{ 24{
25 auto propertyMapper = QSharedPointer<PropertyMapper<Akonadi2::ApplicationDomain::Buffer::Event> >::create(); 25 auto propertyMapper = QSharedPointer<ReadPropertyMapper<Akonadi2::ApplicationDomain::Buffer::Event> >::create();
26 propertyMapper->mReadAccessors.insert("summary", [](Akonadi2::ApplicationDomain::Buffer::Event const *buffer) -> QVariant { 26 propertyMapper->addMapping("summary", [](Akonadi2::ApplicationDomain::Buffer::Event const *buffer) -> QVariant {
27 if (buffer->summary()) { 27 if (buffer->summary()) {
28 return QString::fromStdString(buffer->summary()->c_str()); 28 return QString::fromStdString(buffer->summary()->c_str());
29 } 29 }
30 return QVariant(); 30 return QVariant();
31 }); 31 });
32 propertyMapper->mReadAccessors.insert("uid", [](Akonadi2::ApplicationDomain::Buffer::Event const *buffer) -> QVariant { 32 propertyMapper->addMapping("uid", [](Akonadi2::ApplicationDomain::Buffer::Event const *buffer) -> QVariant {
33 if (buffer->uid()) { 33 if (buffer->uid()) {
34 return QString::fromStdString(buffer->uid()->c_str()); 34 return QString::fromStdString(buffer->uid()->c_str());
35 } 35 }
diff --git a/common/domainadaptor.h b/common/domainadaptor.h
index 15e3067..5d9574b 100644
--- a/common/domainadaptor.h
+++ b/common/domainadaptor.h
@@ -38,17 +38,9 @@
38 * that extract the properties from resource types. 38 * that extract the properties from resource types.
39 */ 39 */
40template<typename BufferType> 40template<typename BufferType>
41class PropertyMapper 41class ReadPropertyMapper
42{ 42{
43public: 43public:
44 void setProperty(const QByteArray &key, const QVariant &value, BufferType *buffer)
45 {
46 if (mWriteAccessors.contains(key)) {
47 auto accessor = mWriteAccessors.value(key);
48 return accessor(value, buffer);
49 }
50 }
51
52 virtual QVariant getProperty(const QByteArray &key, BufferType const *buffer) const 44 virtual QVariant getProperty(const QByteArray &key, BufferType const *buffer) const
53 { 45 {
54 if (mReadAccessors.contains(key)) { 46 if (mReadAccessors.contains(key)) {
@@ -57,12 +49,38 @@ public:
57 } 49 }
58 return QVariant(); 50 return QVariant();
59 } 51 }
52 bool hasMapping(const QByteArray &key) const { return mReadAccessors.contains(key); }
53 QList<QByteArray> availableProperties() const { return mReadAccessors.keys(); }
54 void addMapping(const QByteArray &property, const std::function<QVariant(BufferType const *)> &mapping) {
55 mReadAccessors.insert(property, mapping);
56 }
57private:
60 QHash<QByteArray, std::function<QVariant(BufferType const *)> > mReadAccessors; 58 QHash<QByteArray, std::function<QVariant(BufferType const *)> > mReadAccessors;
61 QHash<QByteArray, std::function<void(const QVariant &, BufferType*)> > mWriteAccessors; 59};
60
61template<typename BufferBuilder>
62class WritePropertyMapper
63{
64public:
65 virtual void setProperty(const QByteArray &key, const QVariant &value, QList<std::function<void(BufferBuilder &)> > &builderCalls, flatbuffers::FlatBufferBuilder &fbb) const
66 {
67 if (mWriteAccessors.contains(key)) {
68 auto accessor = mWriteAccessors.value(key);
69 builderCalls << accessor(value, fbb);
70 }
71 }
72 bool hasMapping(const QByteArray &key) const { return mWriteAccessors.contains(key); }
73 void addMapping(const QByteArray &property, const std::function<std::function<void(BufferBuilder &)>(const QVariant &, flatbuffers::FlatBufferBuilder &)> &mapping) {
74 mWriteAccessors.insert(property, mapping);
75 }
76private:
77 QHash<QByteArray, std::function<std::function<void(BufferBuilder &)>(const QVariant &, flatbuffers::FlatBufferBuilder &)> > mWriteAccessors;
62}; 78};
63 79
64/** 80/**
65 * A generic adaptor implementation that uses a property mapper to read/write values. 81 * A generic adaptor implementation that uses a property mapper to read/write values.
82 *
83 * TODO: this is the read-only part. Create a write only equivalent
66 */ 84 */
67template <class LocalBuffer, class ResourceBuffer> 85template <class LocalBuffer, class ResourceBuffer>
68class GenericBufferAdaptor : public Akonadi2::ApplicationDomain::BufferAdaptor 86class GenericBufferAdaptor : public Akonadi2::ApplicationDomain::BufferAdaptor
@@ -74,20 +92,21 @@ public:
74 92
75 } 93 }
76 94
95 //TODO remove
77 void setProperty(const QByteArray &key, const QVariant &value) 96 void setProperty(const QByteArray &key, const QVariant &value)
78 { 97 {
79 if (mResourceMapper && mResourceMapper->mWriteAccessors.contains(key)) { 98 // if (mResourceMapper && mResourceMapper->hasMapping(key)) {
80 // mResourceMapper->setProperty(key, value, mResourceBuffer); 99 // // mResourceMapper->setProperty(key, value, mResourceBuffer);
81 } else { 100 // } else {
82 // mLocalMapper.; 101 // // mLocalMapper.;
83 } 102 // }
84 } 103 }
85 104
86 virtual QVariant getProperty(const QByteArray &key) const 105 virtual QVariant getProperty(const QByteArray &key) const
87 { 106 {
88 if (mResourceBuffer && mResourceMapper->mReadAccessors.contains(key)) { 107 if (mResourceBuffer && mResourceMapper->hasMapping(key)) {
89 return mResourceMapper->getProperty(key, mResourceBuffer); 108 return mResourceMapper->getProperty(key, mResourceBuffer);
90 } else if (mLocalBuffer && mLocalMapper->mReadAccessors.contains(key)) { 109 } else if (mLocalBuffer && mLocalMapper->hasMapping(key)) {
91 return mLocalMapper->getProperty(key, mLocalBuffer); 110 return mLocalMapper->getProperty(key, mLocalBuffer);
92 } 111 }
93 qWarning() << "no mapping available for key " << key; 112 qWarning() << "no mapping available for key " << key;
@@ -97,15 +116,58 @@ public:
97 virtual QList<QByteArray> availableProperties() const 116 virtual QList<QByteArray> availableProperties() const
98 { 117 {
99 QList<QByteArray> props; 118 QList<QByteArray> props;
100 props << mResourceMapper->mReadAccessors.keys(); 119 props << mResourceMapper->availableProperties();
101 props << mLocalMapper->mReadAccessors.keys(); 120 props << mLocalMapper->availableProperties();
102 return props; 121 return props;
103 } 122 }
104 123
105 LocalBuffer const *mLocalBuffer; 124 LocalBuffer const *mLocalBuffer;
106 ResourceBuffer const *mResourceBuffer; 125 ResourceBuffer const *mResourceBuffer;
107 QSharedPointer<PropertyMapper<LocalBuffer> > mLocalMapper; 126 QSharedPointer<ReadPropertyMapper<LocalBuffer> > mLocalMapper;
108 QSharedPointer<PropertyMapper<ResourceBuffer> > mResourceMapper; 127 QSharedPointer<ReadPropertyMapper<ResourceBuffer> > mResourceMapper;
128};
129
130/**
131 * A generic adaptor implementation that uses a property mapper to read/write values.
132 */
133template <class LocalBuilder, class ResourceBuilder>
134class GenericWriteBufferAdaptor : public Akonadi2::ApplicationDomain::BufferAdaptor
135{
136public:
137 GenericWriteBufferAdaptor(const BufferAdaptor &buffer)
138 : BufferAdaptor()
139 {
140 for(const auto &property : buffer.availableProperties()) {
141 setProperty(property, buffer.getProperty(property));
142 }
143 }
144
145 void setProperty(const QByteArray &key, const QVariant &value)
146 {
147 // if (mResourceMapper && mResourceMapper->hasMapping(key)) {
148 // // mResourceMapper->setProperty(key, value, mResourceBuffer);
149 // } else {
150 // // mLocalMapper.;
151 // }
152 }
153
154 //TODO remove
155 virtual QVariant getProperty(const QByteArray &key) const
156 {
157 Q_ASSERT(false);
158 }
159
160 virtual QList<QByteArray> availableProperties() const
161 {
162 Q_ASSERT(false);
163 QList<QByteArray> props;
164 return props;
165 }
166
167 // LocalBuffer const *mLocalBuffer;
168 // ResourceBuffer const *mResourceBuffer;
169 QSharedPointer<WritePropertyMapper<LocalBuilder> > mLocalMapper;
170 QSharedPointer<WritePropertyMapper<ResourceBuilder> > mResourceMapper;
109}; 171};
110 172
111/** 173/**
@@ -114,7 +176,7 @@ public:
114 * Provide an implementation for each application domain type. 176 * Provide an implementation for each application domain type.
115 */ 177 */
116template <class T> 178template <class T>
117QSharedPointer<PropertyMapper<T> > initializePropertyMapper(); 179QSharedPointer<ReadPropertyMapper<T> > initializeReadPropertyMapper();
118 180
119/** 181/**
120 * The factory should define how to go from an entitybuffer (local + resource buffer), to a domain type adapter. 182 * The factory should define how to go from an entitybuffer (local + resource buffer), to a domain type adapter.
@@ -125,7 +187,7 @@ template<typename DomainType, typename LocalBuffer, typename ResourceBuffer>
125class DomainTypeAdaptorFactory 187class DomainTypeAdaptorFactory
126{ 188{
127public: 189public:
128 DomainTypeAdaptorFactory() : mLocalMapper(initializePropertyMapper<LocalBuffer>()) {}; 190 DomainTypeAdaptorFactory() : mLocalMapper(initializeReadPropertyMapper<LocalBuffer>()) {};
129 virtual ~DomainTypeAdaptorFactory() {}; 191 virtual ~DomainTypeAdaptorFactory() {};
130 192
131 /** 193 /**
@@ -150,8 +212,8 @@ public:
150 virtual void createBuffer(const Akonadi2::ApplicationDomain::Event &event, flatbuffers::FlatBufferBuilder &fbb) {}; 212 virtual void createBuffer(const Akonadi2::ApplicationDomain::Event &event, flatbuffers::FlatBufferBuilder &fbb) {};
151 213
152protected: 214protected:
153 QSharedPointer<PropertyMapper<LocalBuffer> > mLocalMapper; 215 QSharedPointer<ReadPropertyMapper<LocalBuffer> > mLocalMapper;
154 QSharedPointer<PropertyMapper<ResourceBuffer> > mResourceMapper; 216 QSharedPointer<ReadPropertyMapper<ResourceBuffer> > mResourceMapper;
155}; 217};
156 218
157 219
diff --git a/dummyresource/domainadaptor.cpp b/dummyresource/domainadaptor.cpp
index 74a8dd6..00af3fe 100644
--- a/dummyresource/domainadaptor.cpp
+++ b/dummyresource/domainadaptor.cpp
@@ -14,42 +14,115 @@
14using namespace DummyCalendar; 14using namespace DummyCalendar;
15using namespace flatbuffers; 15using namespace flatbuffers;
16 16
17/**
18 * Defines how to convert qt primitives to flatbuffer ones
19 * TODO: rename to createProperty or so?
20 */
21template <class T>
22uoffset_t extractProperty(const QVariant &, flatbuffers::FlatBufferBuilder &fbb);
23
24template <>
25uoffset_t extractProperty<QString>(const QVariant &property, flatbuffers::FlatBufferBuilder &fbb)
26{
27 if (property.isValid()) {
28 return fbb.CreateString(property.toString().toStdString()).o;
29 }
30 return 0;
31}
32
33/**
34 * Create a buffer from a domain object using the provided mappings
35 */
36template <class Builder>
37void createBufferPart(const Akonadi2::ApplicationDomain::ApplicationDomainType &domainObject, flatbuffers::FlatBufferBuilder &fbb, const WritePropertyMapper<Builder> &mapper)
38{
39 //First create a primitives such as strings using the mappings
40 QList<std::function<void(Builder &)> > propertiesToAddToResource;
41 for (const auto &property : domainObject.changedProperties()) {
42 const auto value = domainObject.getProperty(property);
43 if (mapper.hasMapping(property)) {
44 mapper.setProperty(property, domainObject.getProperty(property), propertiesToAddToResource, fbb);
45 }
46 }
47
48 //Then create all porperties using the above generated builderCalls
49 Builder builder(fbb);
50 for (auto propertyBuilder : propertiesToAddToResource) {
51 propertyBuilder(builder);
52 }
53 builder.Finish();
54}
55
56
17 57
18DummyEventAdaptorFactory::DummyEventAdaptorFactory() 58DummyEventAdaptorFactory::DummyEventAdaptorFactory()
19 : DomainTypeAdaptorFactory() 59 : DomainTypeAdaptorFactory()
20{ 60{
21 //TODO turn this into initializePropertyMapper as well? 61 //TODO turn this into initializeReadPropertyMapper as well?
22 mResourceMapper = QSharedPointer<PropertyMapper<DummyEvent> >::create(); 62 mResourceMapper = QSharedPointer<ReadPropertyMapper<DummyEvent> >::create();
23 mResourceMapper->mReadAccessors.insert("summary", [](DummyEvent const *buffer) -> QVariant { 63 mResourceMapper->addMapping("summary", [](DummyEvent const *buffer) -> QVariant {
24 if (buffer->summary()) { 64 if (buffer->summary()) {
25 return QString::fromStdString(buffer->summary()->c_str()); 65 return QString::fromStdString(buffer->summary()->c_str());
26 } 66 }
27 return QVariant(); 67 return QVariant();
28 }); 68 });
69
70 mResourceWriteMapper->addMapping("summary", [](const QVariant &value, flatbuffers::FlatBufferBuilder &fbb) -> std::function<void(DummyEventBuilder &)> {
71 auto offset = extractProperty<QString>(value, fbb);
72 return [offset](DummyEventBuilder &builder) { builder.add_summary(offset); };
73 });
29} 74}
30 75
31 76
32void DummyEventAdaptorFactory::createBuffer(const Akonadi2::ApplicationDomain::Event &event, flatbuffers::FlatBufferBuilder &fbb) 77void DummyEventAdaptorFactory::createBuffer(const Akonadi2::ApplicationDomain::Event &event, flatbuffers::FlatBufferBuilder &fbb)
33{ 78{
34 flatbuffers::FlatBufferBuilder eventFbb; 79 // flatbuffers::FlatBufferBuilder resFbb;
35 eventFbb.Clear(); 80 // flatbuffers::FlatBufferBuilder localFbb;
36 { 81
37 auto summary = eventFbb.CreateString(event.getProperty("summary").toString().toStdString()); 82 // QList<std::function<void(DummyEventBuilder &)> > propertiesToAddToResource;
38 DummyCalendar::DummyEventBuilder eventBuilder(eventFbb); 83 // QList<std::function<void(Akonadi2::ApplicationDomain::Buffer::EventBuilder &)> > propertiesToAddToLocal;
39 eventBuilder.add_summary(summary); 84 // for (const auto &property : event.changedProperties()) {
40 auto eventLocation = eventBuilder.Finish(); 85 // const auto value = event.getProperty(property);
41 DummyCalendar::FinishDummyEventBuffer(eventFbb, eventLocation); 86 // if (mResourceWriteMapper && mResourceWriteMapper->hasMapping(property)) {
42 } 87 // mResourceWriteMapper->setProperty(property, value, propertiesToAddToResource, resFbb);
88 // } if (mLocalWriteMapper && mLocalWriteMapper->hasMapping(property)) {
89 // mLocalWriteMapper->setProperty(property, value, propertiesToAddToLocal, localFbb);
90 // }
91 // }
43 92
93 // DummyEventBuilder resBuilder(resFbb);
94 // for (auto propertyBuilder : propertiesToAddToResource) {
95 // propertyBuilder(resBuilder);
96 // }
97 // resBuilder.Finish();
98
99 // DummyEventBuilder localBuilder(localFbb);
100 // for (auto propertyBuilder : propertiesToAddToResource) {
101 // propertyBuilder(localBuilder);
102 // }
103 // localBuilder.Finish();
104
105 // TODO: how does a resource specify what goes to a local buffer and what it stores separately?
106 // flatbuffers::FlatBufferBuilder eventFbb;
107 // {
108 // auto summary = extractProperty<QString>(event.getProperty("summary"), fbb);
109 // DummyCalendar::DummyEventBuilder eventBuilder(eventFbb);
110 // eventBuilder.add_summary(summary);
111 // auto eventLocation = eventBuilder.Finish();
112 // DummyCalendar::FinishDummyEventBuffer(eventFbb, eventLocation);
113 // }
114
115 //TODO we should only copy values into the local buffer that haven't already been copied by the resource buffer
44 flatbuffers::FlatBufferBuilder localFbb; 116 flatbuffers::FlatBufferBuilder localFbb;
45 { 117 if (mLocalWriteMapper) {
46 auto uid = localFbb.CreateString(event.getProperty("uid").toString().toStdString()); 118 createBufferPart<Akonadi2::ApplicationDomain::Buffer::EventBuilder>(event, localFbb, *mLocalWriteMapper);
47 auto localBuilder = Akonadi2::ApplicationDomain::Buffer::EventBuilder(localFbb); 119 }
48 localBuilder.add_uid(uid); 120
49 auto location = localBuilder.Finish(); 121 flatbuffers::FlatBufferBuilder resFbb;
50 Akonadi2::ApplicationDomain::Buffer::FinishEventBuffer(localFbb, location); 122 if (mResourceWriteMapper) {
123 createBufferPart<DummyEventBuilder>(event, resFbb, *mResourceWriteMapper);
51 } 124 }
52 125
53 Akonadi2::EntityBuffer::assembleEntityBuffer(fbb, 0, 0, eventFbb.GetBufferPointer(), eventFbb.GetSize(), localFbb.GetBufferPointer(), localFbb.GetSize()); 126 Akonadi2::EntityBuffer::assembleEntityBuffer(fbb, 0, 0, resFbb.GetBufferPointer(), resFbb.GetSize(), localFbb.GetBufferPointer(), localFbb.GetSize());
54} 127}
55 128
diff --git a/dummyresource/domainadaptor.h b/dummyresource/domainadaptor.h
index 0e2b883..39028c9 100644
--- a/dummyresource/domainadaptor.h
+++ b/dummyresource/domainadaptor.h
@@ -11,4 +11,8 @@ public:
11 DummyEventAdaptorFactory(); 11 DummyEventAdaptorFactory();
12 virtual ~DummyEventAdaptorFactory() {}; 12 virtual ~DummyEventAdaptorFactory() {};
13 virtual void createBuffer(const Akonadi2::ApplicationDomain::Event &event, flatbuffers::FlatBufferBuilder &fbb); 13 virtual void createBuffer(const Akonadi2::ApplicationDomain::Event &event, flatbuffers::FlatBufferBuilder &fbb);
14
15private:
16 QSharedPointer<WritePropertyMapper<DummyCalendar::DummyEventBuilder> > mResourceWriteMapper;
17 QSharedPointer<WritePropertyMapper<Akonadi2::ApplicationDomain::Buffer::EventBuilder> > mLocalWriteMapper;
14}; 18};
diff --git a/tests/domainadaptortest.cpp b/tests/domainadaptortest.cpp
index 9cc3938..74c0d62 100644
--- a/tests/domainadaptortest.cpp
+++ b/tests/domainadaptortest.cpp
@@ -23,16 +23,16 @@ public:
23 23
24 void setProperty(const QByteArray &key, const QVariant &value) 24 void setProperty(const QByteArray &key, const QVariant &value)
25 { 25 {
26 if (mResourceMapper->mWriteAccessors.contains(key)) { 26 // if (mResourceMapper->mWriteAccessors.contains(key)) {
27 // mResourceMapper.setProperty(key, value, mResourceBuffer); 27 // // mResourceMapper.setProperty(key, value, mResourceBuffer);
28 } else { 28 // } else {
29 // mLocalMapper.; 29 // // mLocalMapper.;
30 } 30 // }
31 } 31 }
32 32
33 virtual QVariant getProperty(const QByteArray &key) const 33 virtual QVariant getProperty(const QByteArray &key) const
34 { 34 {
35 if (mResourceBuffer && mResourceMapper->mReadAccessors.contains(key)) { 35 if (mResourceBuffer && mResourceMapper->hasMapping(key)) {
36 return mResourceMapper->getProperty(key, mResourceBuffer); 36 return mResourceMapper->getProperty(key, mResourceBuffer);
37 } else if (mLocalBuffer) { 37 } else if (mLocalBuffer) {
38 return mLocalMapper->getProperty(key, mLocalBuffer); 38 return mLocalMapper->getProperty(key, mLocalBuffer);
@@ -43,8 +43,8 @@ public:
43 Akonadi2::ApplicationDomain::Buffer::Event const *mLocalBuffer; 43 Akonadi2::ApplicationDomain::Buffer::Event const *mLocalBuffer;
44 Akonadi2::ApplicationDomain::Buffer::Event const *mResourceBuffer; 44 Akonadi2::ApplicationDomain::Buffer::Event const *mResourceBuffer;
45 45
46 QSharedPointer<PropertyMapper<Akonadi2::ApplicationDomain::Buffer::Event> > mLocalMapper; 46 QSharedPointer<ReadPropertyMapper<Akonadi2::ApplicationDomain::Buffer::Event> > mLocalMapper;
47 QSharedPointer<PropertyMapper<Akonadi2::ApplicationDomain::Buffer::Event> > mResourceMapper; 47 QSharedPointer<ReadPropertyMapper<Akonadi2::ApplicationDomain::Buffer::Event> > mResourceMapper;
48}; 48};
49 49
50class TestFactory : public DomainTypeAdaptorFactory<Akonadi2::ApplicationDomain::Event, Akonadi2::ApplicationDomain::Buffer::Event, Akonadi2::ApplicationDomain::Buffer::Event> 50class TestFactory : public DomainTypeAdaptorFactory<Akonadi2::ApplicationDomain::Event, Akonadi2::ApplicationDomain::Buffer::Event, Akonadi2::ApplicationDomain::Buffer::Event>
@@ -52,8 +52,8 @@ class TestFactory : public DomainTypeAdaptorFactory<Akonadi2::ApplicationDomain:
52public: 52public:
53 TestFactory() 53 TestFactory()
54 { 54 {
55 mResourceMapper = QSharedPointer<PropertyMapper<Akonadi2::ApplicationDomain::Buffer::Event> >::create(); 55 mResourceMapper = QSharedPointer<ReadPropertyMapper<Akonadi2::ApplicationDomain::Buffer::Event> >::create();
56 mResourceMapper->mReadAccessors.insert("summary", [](Akonadi2::ApplicationDomain::Buffer::Event const *buffer) -> QVariant { 56 mResourceMapper->addMapping("summary", [](Akonadi2::ApplicationDomain::Buffer::Event const *buffer) -> QVariant {
57 if (buffer->summary()) { 57 if (buffer->summary()) {
58 return QString::fromStdString(buffer->summary()->c_str()); 58 return QString::fromStdString(buffer->summary()->c_str());
59 } 59 }