aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2015-02-23 18:50:19 -0800
committerGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2015-02-23 18:50:19 -0800
commit8ebd3a06ad932c25d0cbd955bb7a9fe9a4077ee5 (patch)
tree74eecddc6285d184c6b32ae41ae0a01950465895
parent8a0df88bbb36804020111385a7aaed2c701a1944 (diff)
Implemented serialization for namespace
-rw-r--r--src/core/imap/MCIMAPNamespace.cpp13
-rw-r--r--src/core/imap/MCIMAPNamespace.h4
-rw-r--r--src/core/imap/MCIMAPNamespaceItem.cpp20
-rw-r--r--src/core/imap/MCIMAPNamespaceItem.h4
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;