Use NSString instances for representing change numbers, rather than NSNumber
parent
1e92fe0395
commit
dec64722c8
|
@ -43,8 +43,8 @@
|
|||
- (BOOL) synchroniseCache;
|
||||
- (void) updateVersionsForMessageWithKey: (NSString *) messageKey
|
||||
withChangeKey: (NSData *) newChangeKey;
|
||||
- (NSNumber *) lastModifiedFromMessageChangeNumber: (NSNumber *) changeNum;
|
||||
- (NSNumber *) changeNumberForMessageWithKey: (NSString *) messageKey;
|
||||
- (NSNumber *) lastModifiedFromMessageChangeNumber: (NSString *) changeNumber;
|
||||
- (NSString *) changeNumberForMessageWithKey: (NSString *) messageKey;
|
||||
- (NSData *) changeKeyForMessageWithKey: (NSString *) messageKey;
|
||||
- (NSData *) predecessorChangeListForMessageWithKey: (NSString *) messageKey;
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#import <Foundation/NSDictionary.h>
|
||||
#import <Foundation/NSException.h>
|
||||
#import <NGExtensions/NSObject+Logs.h>
|
||||
#import <NGExtensions/NSObject+Values.h>
|
||||
#import <EOControl/EOQualifier.h>
|
||||
#import <EOControl/EOFetchSpecification.h>
|
||||
#import <EOControl/EOSortOrdering.h>
|
||||
|
@ -328,9 +329,8 @@ static Class NSNumberK;
|
|||
BOOL rc = YES, foundChange = NO;
|
||||
uint64_t newChangeNum;
|
||||
NSData *changeKey;
|
||||
NSString *cName;
|
||||
NSNumber *ti, *changeNumber, *lastModificationDate, *cVersion,
|
||||
*cLastModified, *cDeleted;
|
||||
NSString *cName, *changeNumber;
|
||||
NSNumber *ti, *lastModificationDate, *cVersion, *cLastModified, *cDeleted;
|
||||
EOFetchSpecification *fs;
|
||||
EOQualifier *searchQualifier, *fetchQualifier;
|
||||
NSUInteger count, max;
|
||||
|
@ -342,6 +342,11 @@ static Class NSNumberK;
|
|||
static NSArray *fields = nil;
|
||||
static EOSortOrdering *sortOrdering = nil;
|
||||
|
||||
/* NOTE: we are using NSString instance for "changeNumber" because
|
||||
NSNumber proved to give very bad performances when used as NSDictionary
|
||||
keys with GNUstep 1.22.1. The bug seems to be solved with 1.24 but many
|
||||
distros still ship an older version. */
|
||||
|
||||
if (!fields)
|
||||
fields = [[NSArray alloc]
|
||||
initWithObjects: @"c_name", @"c_version", @"c_lastmodified",
|
||||
|
@ -429,7 +434,7 @@ static Class NSNumberK;
|
|||
foundChange = YES;
|
||||
|
||||
newChangeNum = [[self context] getNewChangeNumber];
|
||||
changeNumber = [NSNumber numberWithUnsignedLongLong: newChangeNum];
|
||||
changeNumber = [NSString stringWithUnsignedLongLong: newChangeNum];
|
||||
|
||||
[messageEntry setObject: cLastModified forKey: @"c_lastmodified"];
|
||||
[messageEntry setObject: cVersion forKey: @"c_version"];
|
||||
|
@ -485,21 +490,21 @@ static Class NSNumberK;
|
|||
}
|
||||
}
|
||||
|
||||
- (NSNumber *) lastModifiedFromMessageChangeNumber: (NSNumber *) changeNum
|
||||
- (NSNumber *) lastModifiedFromMessageChangeNumber: (NSString *) changeNumber
|
||||
{
|
||||
NSDictionary *mapping;
|
||||
NSNumber *modseq;
|
||||
|
||||
mapping = [[versionsMessage properties] objectForKey: @"VersionMapping"];
|
||||
modseq = [mapping objectForKey: changeNum];
|
||||
modseq = [mapping objectForKey: changeNumber];
|
||||
|
||||
return modseq;
|
||||
}
|
||||
|
||||
- (NSNumber *) changeNumberForMessageWithKey: (NSString *) messageKey
|
||||
- (NSString *) changeNumberForMessageWithKey: (NSString *) messageKey
|
||||
{
|
||||
NSDictionary *messages;
|
||||
NSNumber *changeNumber;
|
||||
NSString *changeNumber;
|
||||
|
||||
messages = [[versionsMessage properties] objectForKey: @"Messages"];
|
||||
changeNumber = [[messages objectForKey: messageKey]
|
||||
|
@ -574,8 +579,8 @@ static Class NSNumberK;
|
|||
inTableType: (uint8_t) tableType
|
||||
{
|
||||
NSArray *deletedKeys, *deletedCNames, *records;
|
||||
NSNumber *changeNumNbr, *lastModified;
|
||||
NSString *cName;
|
||||
NSNumber *lastModified;
|
||||
NSString *cName, *changeNumber;
|
||||
NSDictionary *versionProperties, *messageEntry;
|
||||
NSMutableDictionary *messages;
|
||||
uint64_t maxChangeNum = changeNum, currentChangeNum;
|
||||
|
@ -589,8 +594,8 @@ static Class NSNumberK;
|
|||
{
|
||||
deletedKeys = [NSMutableArray array];
|
||||
|
||||
changeNumNbr = [NSNumber numberWithUnsignedLongLong: changeNum];
|
||||
lastModified = [self lastModifiedFromMessageChangeNumber: changeNumNbr];
|
||||
changeNumber = [NSString stringWithUnsignedLongLong: changeNum];
|
||||
lastModified = [self lastModifiedFromMessageChangeNumber: changeNumber];
|
||||
if (lastModified)
|
||||
{
|
||||
versionProperties = [versionsMessage properties];
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#import <Foundation/NSValue.h>
|
||||
#import <NGObjWeb/SoSecurityManager.h>
|
||||
#import <NGExtensions/NSObject+Logs.h>
|
||||
#import <NGExtensions/NSObject+Values.h>
|
||||
#import <SOGo/SOGoContentObject.h>
|
||||
#import <SOGo/SOGoPermissions.h>
|
||||
#import <SOGo/SOGoUser.h>
|
||||
|
@ -178,7 +179,7 @@
|
|||
- (uint64_t) objectVersion
|
||||
{
|
||||
uint64_t version = ULLONG_MAX;
|
||||
NSNumber *changeNumber;
|
||||
NSString *changeNumber;
|
||||
|
||||
if (!isNew)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue