diff --git a/ChangeLog b/ChangeLog index 5aac26f70..3dc8c33ee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2011-09-20 Wolfgang Sourdeau + * OpenChange/MAPIStoreObject.m (-getReplicaKeyFromGlobCnt:): new + method that returns the same result as + getReplicaKey:fromGlobCnt:inMemCtx: in the form of an NSData + instance. + * OpenChange/MAPIStoreContactsMessage.m (-save): same as below. * OpenChange/MAPIStoreTasksMessage.m (-save): same as below. diff --git a/OpenChange/MAPIStoreGCSMessage.h b/OpenChange/MAPIStoreGCSMessage.h index 3edc4791a..883923e5f 100644 --- a/OpenChange/MAPIStoreGCSMessage.h +++ b/OpenChange/MAPIStoreGCSMessage.h @@ -27,8 +27,6 @@ @interface MAPIStoreGCSMessage : MAPIStoreMessage { - @private - uint64_t _version; } @end diff --git a/OpenChange/MAPIStoreGCSMessage.m b/OpenChange/MAPIStoreGCSMessage.m index 584a9455e..ac4babe3f 100644 --- a/OpenChange/MAPIStoreGCSMessage.m +++ b/OpenChange/MAPIStoreGCSMessage.m @@ -27,24 +27,16 @@ #import "MAPIStoreContext.h" #import "MAPIStoreGCSFolder.h" #import "MAPIStoreTypes.h" +#import "NSData+MAPIStore.h" #import "MAPIStoreGCSMessage.h" #undef DEBUG #include +#include @implementation MAPIStoreGCSMessage -- (id) init -{ - if ((self = [super init])) - { - _version = 0xffffffffffffffffLL; - } - - return self; -} - - (NSCalendarDate *) creationTime { return [sogoObject creationDate]; @@ -55,24 +47,52 @@ return [sogoObject lastModified]; } +- (int) getPrChangeKey: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + int rc = MAPISTORE_SUCCESS; + NSData *changeKey; + + if (isNew) + rc = MAPISTORE_ERR_NOT_FOUND; + else + { + changeKey = [(MAPIStoreGCSFolder *)[self container] + changeKeyForMessageWithKey: [self nameInContainer]]; + if (!changeKey) + abort (); + *data = [changeKey asBinaryInMemCtx: memCtx]; + } + + return rc; +} + +- (int) getPrPredecessorChangeList: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + int rc = MAPISTORE_SUCCESS; + NSData *changeList; + + if (isNew) + rc = MAPISTORE_ERR_NOT_FOUND; + else + { + changeList = [(MAPIStoreGCSFolder *)[self container] + predecessorChangeListForMessageWithKey: [self nameInContainer]]; + if (!changeList) + abort (); + *data = [changeList asBinaryInMemCtx: memCtx]; + } + + return rc; +} + - (uint64_t) objectVersion { uint64_t version = 0xffffffffffffffffLL; NSNumber *changeNumber; - if ([sogoObject isNew]) - { -#if 0 - if (_version == 0xffffffffffffffffLL) - { - _version = [[self context] getNewChangeNumber]; - [(MAPIStoreGCSFolder *)[self container] setInitialVersion: _version - forMessage: [self nameInContainer]]; - } - version = _version; -#endif - } - else + if (!isNew) { changeNumber = [(MAPIStoreGCSFolder *) container changeNumberForMessageWithKey: [self nameInContainer]];