Monotone-Parent: 1d8c1c9f65708236a07cba9e3a5da2ecbb02515b

Monotone-Revision: cb353a1a9aeca05d7c1e6542c981abe885c1221f

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2010-12-14T20:58:19
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2010-12-14 20:58:19 +00:00
parent 19cd4ee4db
commit 377352b2fd
2 changed files with 30 additions and 21 deletions
+5
View File
@@ -1,5 +1,10 @@
2010-12-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* OpenChange/MAPIStoreContext.m
(-evaluateBitmaskRestriction:intoQualifier:): implemented method.
(-releaseRecordWithFMID:ofTableType:): return MAPI_E_SUCCESS even
when the message passed as parameter was not found.
* OpenChange/MAPIStoreMailContext.m
(-evaluateContentRestriction:intoQualifier:): new overriden method
handling tests on the PR_MESSAGE_CLASS_UNICODE property.
+25 -21
View File
@@ -40,6 +40,8 @@
#import <Mailer/SOGoMailAccount.h>
#import <Mailer/SOGoMailFolder.h>
#import "EOBitmaskQualifier.h"
#import "NSArray+MAPIStore.h"
#import "NSCalendarDate+MAPIStore.h"
#import "NSData+MAPIStore.h"
@@ -229,9 +231,9 @@ MAPIStringForBitmaskRestriction (struct mapi_SBitmaskRestriction *resBitmask)
propName = "<unknown>";
if (resBitmask->relMBR == 0)
format = @"((%s(0x%.8x) & 0x%.8x))";
format = @"((%s(0x%.8x) & 0x%.8x) == 0)";
else
format = @"((^%s(0x%.8x) & 0x%.8x))";
format = @"((%s(0x%.8x) & 0x%.8x) != 0)";
return [NSString stringWithFormat: format,
propName, resBitmask->ulPropTag, resBitmask->ulMask];
@@ -736,10 +738,9 @@ _prepareContextClass (struct mapistore_context *newMemCtx,
else
keys = [NSArray array];
[messageCache setObject: keys forKey: folderURL];
[self logWithFormat: @"message keys for '%@': %@", folderURL, keys];
}
[self logWithFormat: @"message keys for '%@': %@", folderURL, keys];
return keys;
}
@@ -758,10 +759,9 @@ _prepareContextClass (struct mapistore_context *newMemCtx,
else
keys = [NSArray array];
[restrictedMessageCache setObject: keys forKey: folderURL];
[self logWithFormat: @"restricted message keys for '%@': %@", folderURL, keys];
}
[self logWithFormat: @"restricted message keys for '%@': %@", folderURL, keys];
return keys;
}
@@ -1380,15 +1380,23 @@ _prepareContextClass (struct mapistore_context *newMemCtx,
- (MAPIRestrictionState) evaluateBitmaskRestriction: (struct mapi_SBitmaskRestriction *) res
intoQualifier: (EOQualifier **) qualifier
{
[self subclassResponsibility: _cmd];
NSString *property;
return MAPIRestrictionStateAlwaysTrue;
property = [self backendIdentifierForProperty: res->ulPropTag];
if (!property)
[self _raiseUnhandledPropertyException: res->ulPropTag];
*qualifier = [[EOBitmaskQualifier alloc] initWithKey: property
mask: res->ulMask
isZero: (res->relMBR == BMR_EQZ)];
[*qualifier autorelease];
return MAPIRestrictionStateNeedsEval;
}
- (MAPIRestrictionState) evaluateExistRestriction: (struct mapi_SExistRestriction *) res
intoQualifier: (EOQualifier **) qualifier
{
NSString *property;
property = [self backendIdentifierForProperty: res->ulPropTag];
@@ -1455,8 +1463,8 @@ _prepareContextClass (struct mapistore_context *newMemCtx,
@" tableType: %d, queryType: %d, fid: %.16x",
__FUNCTION__, __LINE__, propName, proptag, pos, tableType, queryType, fid];
[self logWithFormat: @"context restriction state is: %@",
MAPIStringForRestrictionState (restrictionState)];
// [self logWithFormat: @"context restriction state is: %@",
// MAPIStringForRestrictionState (restrictionState)];
// if (restriction)
// [self logWithFormat: @" active qualifier: %@", restriction];
@@ -1845,11 +1853,13 @@ _prepareContextClass (struct mapistore_context *newMemCtx,
{
*path = [[objectURL substringFromIndex: 7]
asUnicodeInMemCtx: memCtx];
[self logWithFormat: @"found path for fmid %.16x: '%s'",
fmid, *path];
rc = MAPISTORE_SUCCESS;
}
else
{
[self logWithFormat: @"fmid 0x%.16x was found that is not"
[self warnWithFormat: @"fmid 0x%.16x was found but is not"
@" part of this context (%@, %@)",
fmid, objectURL, uri];
*path = NULL;
@@ -1871,8 +1881,6 @@ _prepareContextClass (struct mapistore_context *newMemCtx,
rc = MAPI_E_NOT_FOUND;
}
[self logWithFormat: @"getPath.... %.16x -> (%s, %d)", fmid, *path, rc];
return rc;
}
@@ -2148,6 +2156,7 @@ _prepareContextClass (struct mapistore_context *newMemCtx,
switch (tableType)
{
case MAPISTORE_MESSAGE_TABLE:
rc = MAPISTORE_SUCCESS;
midNbr = [NSNumber numberWithUnsignedLongLong: fmid];
if ([messages objectForKey: midNbr])
{
@@ -2155,15 +2164,10 @@ _prepareContextClass (struct mapistore_context *newMemCtx,
@" from message cache",
fmid];
[messages removeObjectForKey: midNbr];
rc = MAPISTORE_SUCCESS;
}
else
{
[self errorWithFormat: @"message with mid %.16x not found"
@" in message cache",
fmid];
rc = MAPISTORE_ERR_NOT_FOUND;
}
[self warnWithFormat: @"message with mid %.16x not found"
@" in message cache", fmid];
break;
case MAPISTORE_FOLDER_TABLE:
default: