aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/rfc822
diff options
context:
space:
mode:
authorGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2015-03-27 11:57:44 -0700
committerGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2015-03-27 11:57:53 -0700
commit2f65b643eb2d5ca1f6063856ce7bd3dbcf86eebe (patch)
tree0932574fe5fadc0eab7d2b302add9ff8dcaefce7 /src/core/rfc822
parentcfc147c216548a91f8f6d96142fd7a04feaea334 (diff)
Improve serialization of messages
Diffstat (limited to 'src/core/rfc822')
-rw-r--r--src/core/rfc822/MCAttachment.cpp11
-rw-r--r--src/core/rfc822/MCMessageParser.cpp20
-rw-r--r--src/core/rfc822/MCMessageParser.h3
-rw-r--r--src/core/rfc822/MCMessagePart.cpp12
-rw-r--r--src/core/rfc822/MCMultipart.cpp11
5 files changed, 56 insertions, 1 deletions
diff --git a/src/core/rfc822/MCAttachment.cpp b/src/core/rfc822/MCAttachment.cpp
index 0968ad83..014f8341 100644
--- a/src/core/rfc822/MCAttachment.cpp
+++ b/src/core/rfc822/MCAttachment.cpp
@@ -2,6 +2,7 @@
#include "MCAttachment.h"
+#include "MCDefines.h"
#include "MCMultipart.h"
#include "MCMessagePart.h"
#include "MCMessageHeader.h"
@@ -610,3 +611,13 @@ MessagePart * Attachment::attachmentWithMessageMIME(struct mailmime * mime)
return (MessagePart *) attachment->autorelease();
}
+
+static void * createObject()
+{
+ return new Attachment();
+}
+
+INITIALIZE(Attachment)
+{
+ Object::registerObjectConstructor("mailcore::Attachment", &createObject);
+}
diff --git a/src/core/rfc822/MCMessageParser.cpp b/src/core/rfc822/MCMessageParser.cpp
index 71071c02..beddeebc 100644
--- a/src/core/rfc822/MCMessageParser.cpp
+++ b/src/core/rfc822/MCMessageParser.cpp
@@ -5,6 +5,7 @@
#include <CoreFoundation/CoreFoundation.h>
#endif
+#include "MCDefines.h"
#include "MCAttachment.h"
#include "MCMessageHeader.h"
#include "MCHTMLRenderer.h"
@@ -140,6 +141,15 @@ HashMap * MessageParser::serializable()
return result;
}
+void MessageParser::importSerializable(HashMap * serializable)
+{
+ AbstractMessage::importSerializable(serializable);
+ MC_SAFE_REPLACE_RETAIN(AbstractPart, mMainPart, Object::objectWithSerializable((HashMap *) serializable->objectForKey(MCSTR("mainPart"))));
+ if (mMainPart != NULL) {
+ mMainPart->applyUniquePartID();
+ }
+}
+
Object * MessageParser::copy()
{
return new MessageParser(this);
@@ -190,3 +200,13 @@ String * MessageParser::plainTextBodyRendering(bool stripWhitespace)
}
return plainTextBodyString;
}
+
+static void * createObject()
+{
+ return new MessageParser();
+}
+
+INITIALIZE(MessageParser)
+{
+ Object::registerObjectConstructor("mailcore::MessageParser", &createObject);
+}
diff --git a/src/core/rfc822/MCMessageParser.h b/src/core/rfc822/MCMessageParser.h
index 048cee60..9682bfce 100644
--- a/src/core/rfc822/MCMessageParser.h
+++ b/src/core/rfc822/MCMessageParser.h
@@ -42,7 +42,8 @@ namespace mailcore {
virtual AbstractPart * partForUniqueID(String * uniqueID);
virtual HashMap * serializable();
-
+ virtual void importSerializable(HashMap * serializable);
+
#ifdef __APPLE__
public:
static MessageParser * messageParserWithData(CFDataRef data);
diff --git a/src/core/rfc822/MCMessagePart.cpp b/src/core/rfc822/MCMessagePart.cpp
index 21d61181..abd98ac2 100644
--- a/src/core/rfc822/MCMessagePart.cpp
+++ b/src/core/rfc822/MCMessagePart.cpp
@@ -1,5 +1,7 @@
#include "MCMessagePart.h"
+#include "MCDefines.h"
+
using namespace mailcore;
MessagePart::MessagePart()
@@ -18,3 +20,13 @@ Object * MessagePart::copy()
{
return new MessagePart(this);
}
+
+static void * createObject()
+{
+ return new MessagePart();
+}
+
+INITIALIZE(MessagePart)
+{
+ Object::registerObjectConstructor("mailcore::MessagePart", &createObject);
+}
diff --git a/src/core/rfc822/MCMultipart.cpp b/src/core/rfc822/MCMultipart.cpp
index e048669e..0be76430 100644
--- a/src/core/rfc822/MCMultipart.cpp
+++ b/src/core/rfc822/MCMultipart.cpp
@@ -1,5 +1,7 @@
#include "MCMultipart.h"
+#include "MCDefines.h"
+
using namespace mailcore;
Multipart::Multipart()
@@ -19,3 +21,12 @@ Object * Multipart::copy()
return new Multipart(this);
}
+static void * createObject()
+{
+ return new Multipart();
+}
+
+INITIALIZE(Multipart)
+{
+ Object::registerObjectConstructor("mailcore::Multipart", &createObject);
+}