diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2015-04-10 12:32:03 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2015-04-10 12:32:03 +0200 |
commit | ea348c62fdebe1d9c6531fc4491d3316a1e941df (patch) | |
tree | a5984008eacf60154e3454544cb6d68969611fed | |
parent | 2e13ef36cabbe1c995e77b92c06d6350719bf952 (diff) | |
download | sink-ea348c62fdebe1d9c6531fc4491d3316a1e941df.tar.gz sink-ea348c62fdebe1d9c6531fc4491d3316a1e941df.zip |
checkpoint
-rw-r--r-- | common/clientapi.h | 2 | ||||
-rw-r--r-- | common/domainadaptor.cpp | 8 | ||||
-rw-r--r-- | common/domainadaptor.h | 112 | ||||
-rw-r--r-- | dummyresource/domainadaptor.cpp | 111 | ||||
-rw-r--r-- | dummyresource/domainadaptor.h | 4 | ||||
-rw-r--r-- | tests/domainadaptortest.cpp | 20 |
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 | ||
238 | private: | 240 | private: |
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 | ||
22 | template <> | 22 | template <> |
23 | QSharedPointer<PropertyMapper<Akonadi2::ApplicationDomain::Buffer::Event> > initializePropertyMapper<Akonadi2::ApplicationDomain::Buffer::Event>() | 23 | QSharedPointer<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 | */ |
40 | template<typename BufferType> | 40 | template<typename BufferType> |
41 | class PropertyMapper | 41 | class ReadPropertyMapper |
42 | { | 42 | { |
43 | public: | 43 | public: |
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 | } | ||
57 | private: | ||
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 | |||
61 | template<typename BufferBuilder> | ||
62 | class WritePropertyMapper | ||
63 | { | ||
64 | public: | ||
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 | } | ||
76 | private: | ||
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 | */ |
67 | template <class LocalBuffer, class ResourceBuffer> | 85 | template <class LocalBuffer, class ResourceBuffer> |
68 | class GenericBufferAdaptor : public Akonadi2::ApplicationDomain::BufferAdaptor | 86 | class 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 | */ | ||
133 | template <class LocalBuilder, class ResourceBuilder> | ||
134 | class GenericWriteBufferAdaptor : public Akonadi2::ApplicationDomain::BufferAdaptor | ||
135 | { | ||
136 | public: | ||
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 | */ |
116 | template <class T> | 178 | template <class T> |
117 | QSharedPointer<PropertyMapper<T> > initializePropertyMapper(); | 179 | QSharedPointer<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> | |||
125 | class DomainTypeAdaptorFactory | 187 | class DomainTypeAdaptorFactory |
126 | { | 188 | { |
127 | public: | 189 | public: |
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 | ||
152 | protected: | 214 | protected: |
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 @@ | |||
14 | using namespace DummyCalendar; | 14 | using namespace DummyCalendar; |
15 | using namespace flatbuffers; | 15 | using namespace flatbuffers; |
16 | 16 | ||
17 | /** | ||
18 | * Defines how to convert qt primitives to flatbuffer ones | ||
19 | * TODO: rename to createProperty or so? | ||
20 | */ | ||
21 | template <class T> | ||
22 | uoffset_t extractProperty(const QVariant &, flatbuffers::FlatBufferBuilder &fbb); | ||
23 | |||
24 | template <> | ||
25 | uoffset_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 | */ | ||
36 | template <class Builder> | ||
37 | void 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 | ||
18 | DummyEventAdaptorFactory::DummyEventAdaptorFactory() | 58 | DummyEventAdaptorFactory::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 | ||
32 | void DummyEventAdaptorFactory::createBuffer(const Akonadi2::ApplicationDomain::Event &event, flatbuffers::FlatBufferBuilder &fbb) | 77 | void 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 | |||
15 | private: | ||
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 | ||
50 | class TestFactory : public DomainTypeAdaptorFactory<Akonadi2::ApplicationDomain::Event, Akonadi2::ApplicationDomain::Buffer::Event, Akonadi2::ApplicationDomain::Buffer::Event> | 50 | class TestFactory : public DomainTypeAdaptorFactory<Akonadi2::ApplicationDomain::Event, Akonadi2::ApplicationDomain::Buffer::Event, Akonadi2::ApplicationDomain::Buffer::Event> |
@@ -52,8 +52,8 @@ class TestFactory : public DomainTypeAdaptorFactory<Akonadi2::ApplicationDomain: | |||
52 | public: | 52 | public: |
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 | } |