diff options
author | 2015-02-23 18:50:19 -0800 | |
---|---|---|
committer | 2015-02-23 18:50:19 -0800 | |
commit | 8ebd3a06ad932c25d0cbd955bb7a9fe9a4077ee5 (patch) | |
tree | 74eecddc6285d184c6b32ae41ae0a01950465895 | |
parent | 8a0df88bbb36804020111385a7aaed2c701a1944 (diff) |
Implemented serialization for namespace
-rw-r--r-- | src/core/imap/MCIMAPNamespace.cpp | 13 | ||||
-rw-r--r-- | src/core/imap/MCIMAPNamespace.h | 4 | ||||
-rw-r--r-- | src/core/imap/MCIMAPNamespaceItem.cpp | 20 | ||||
-rw-r--r-- | src/core/imap/MCIMAPNamespaceItem.h | 4 |
4 files changed, 39 insertions, 2 deletions
diff --git a/src/core/imap/MCIMAPNamespace.cpp b/src/core/imap/MCIMAPNamespace.cpp index 09037877..d5c618a0 100644 --- a/src/core/imap/MCIMAPNamespace.cpp +++ b/src/core/imap/MCIMAPNamespace.cpp @@ -142,3 +142,16 @@ void IMAPNamespace::importIMAPNamespace(struct mailimap_namespace_item * item) item->release(); } } + +HashMap * IMAPNamespace::serializable() +{ + HashMap * result = Object::serializable(); + result->setObjectForKey(MCSTR("items"), mItems->serializable()); + return result; +} + +void IMAPNamespace::importSerializable(HashMap * serializable) +{ + Array * items = (Array *) Object::objectWithSerializable((HashMap *) serializable->objectForKey(MCSTR("items"))); + MC_SAFE_REPLACE_RETAIN(Array, mItems, items); +} diff --git a/src/core/imap/MCIMAPNamespace.h b/src/core/imap/MCIMAPNamespace.h index e57cecba..711fb7e5 100644 --- a/src/core/imap/MCIMAPNamespace.h +++ b/src/core/imap/MCIMAPNamespace.h @@ -33,7 +33,9 @@ namespace mailcore { IMAPNamespace(IMAPNamespace * other); virtual String * description(); virtual Object * copy(); - + virtual HashMap * serializable(); + virtual void importSerializable(HashMap * serializable); + private: Array * /* String */ mItems; void init(); diff --git a/src/core/imap/MCIMAPNamespaceItem.cpp b/src/core/imap/MCIMAPNamespaceItem.cpp index c985e915..c8561c50 100644 --- a/src/core/imap/MCIMAPNamespaceItem.cpp +++ b/src/core/imap/MCIMAPNamespaceItem.cpp @@ -150,3 +150,23 @@ static Array * decodedComponents(Array * components) return result; } + +HashMap * IMAPNamespaceItem::serializable() +{ + HashMap * result = Object::serializable(); + result->setObjectForKey(MCSTR("delimiter"), String::stringWithUTF8Format("%c", mDelimiter)); + if (mPrefix != NULL) { + result->setObjectForKey(MCSTR("prefix"), mPrefix); + } + return result; +} + +void IMAPNamespaceItem::importSerializable(HashMap * serializable) +{ + String * aPrefix = (String *) serializable->objectForKey(MCSTR("prefix")); + setPrefix(aPrefix); + String * delimiterString = (String *) serializable->objectForKey(MCSTR("delimiter")); + if ((delimiterString != NULL) && (delimiterString->length() > 0)) { + setDelimiter((char) delimiterString->characterAtIndex(0)); + } +} diff --git a/src/core/imap/MCIMAPNamespaceItem.h b/src/core/imap/MCIMAPNamespaceItem.h index 3ca8e485..0fffed98 100644 --- a/src/core/imap/MCIMAPNamespaceItem.h +++ b/src/core/imap/MCIMAPNamespaceItem.h @@ -28,7 +28,9 @@ namespace mailcore { IMAPNamespaceItem(IMAPNamespaceItem * other); virtual String * description(); virtual Object * copy(); - + virtual HashMap * serializable(); + virtual void importSerializable(HashMap * serializable); + private: char mDelimiter; String * mPrefix; |