diff options
author | Hoa V. DINH <dinh.viet.hoa@gmail.com> | 2015-03-27 11:57:44 -0700 |
---|---|---|
committer | Hoa V. DINH <dinh.viet.hoa@gmail.com> | 2015-03-27 11:57:53 -0700 |
commit | 2f65b643eb2d5ca1f6063856ce7bd3dbcf86eebe (patch) | |
tree | 0932574fe5fadc0eab7d2b302add9ff8dcaefce7 /src/core/rfc822 | |
parent | cfc147c216548a91f8f6d96142fd7a04feaea334 (diff) |
Improve serialization of messages
Diffstat (limited to 'src/core/rfc822')
-rw-r--r-- | src/core/rfc822/MCAttachment.cpp | 11 | ||||
-rw-r--r-- | src/core/rfc822/MCMessageParser.cpp | 20 | ||||
-rw-r--r-- | src/core/rfc822/MCMessageParser.h | 3 | ||||
-rw-r--r-- | src/core/rfc822/MCMessagePart.cpp | 12 | ||||
-rw-r--r-- | src/core/rfc822/MCMultipart.cpp | 11 |
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); +} |