Monotone-Parent: fa7f4f3829eb5576b8845dcb4c03e5327cc7e354

Monotone-Revision: bed152d621c11e6d16b59bdf26007079a05e1696

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2009-09-22T21:11:08
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2009-09-22 21:11:08 +00:00
parent 3ef9f1cef1
commit fcc5d28eca
4 changed files with 34 additions and 2 deletions

View File

@@ -12,6 +12,16 @@
2009-09-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* SoObjects/Mailer/SOGoMailObject.m (-fetchPlainTextParts:):
handle the fact that the "fetch" key in a RawResponse (NGHashMap)
may not be the only response. Since [NGHashMap objectForKey:]
returns only the first one, we use the new "flattenedDictionaries"
to make sure we can retrieve all requested keys.
* SoObjects/SOGo/NSArray+Utilities.m (-flattenedDictionaries): new
method that merges the keys and values of all contained
dictionaries into one single dictionary.
* Tests/webdavlib.py (_WD_XMLTreeElement.__init__): added a new
optional parameter "attributes" that enables the setting of
element attributes during the rendering of the element.

View File

@@ -33,6 +33,7 @@
#import <NGObjWeb/WOContext+SoObjects.h>
#import <NGObjWeb/WOResponse.h>
#import <NGObjWeb/NSException+HTTP.h>
#import <NGExtensions/NGHashMap.h>
#import <NGExtensions/NSNull+misc.h>
#import <NGExtensions/NSObject+Logs.h>
#import <NGExtensions/NSString+Encoding.h>
@@ -613,6 +614,7 @@ static BOOL debugSoParts = NO;
// TODO: is the name correct or does it also fetch other parts?
NSMutableDictionary *flatContents;
unsigned i, count;
NSArray *results;
id result;
[self debugWithFormat: @"fetch keys: %@", _fetchKeys];
@@ -622,8 +624,9 @@ static BOOL debugSoParts = NO;
result = [result valueForKey: @"RawResponse"]; // hackish
// Note: -valueForKey: doesn't work!
result = [(NSDictionary *)result objectForKey: @"fetch"];
results = [(NGHashMap *)result objectsForKey: @"fetch"];
result = [results flattenedDictionaries];
count = [_fetchKeys count];
flatContents = [NSMutableDictionary dictionaryWithCapacity:count];
for (i = 0; i < count; i++) {

View File

@@ -38,6 +38,7 @@
- (NSArray *) objectsForKey: (NSString *) key
notFoundMarker: (id) marker;
- (NSArray *) flattenedArray;
- (NSDictionary *) flattenedDictionaries;
- (NSArray *) uniqueObjects;

View File

@@ -121,6 +121,24 @@
return flattenedArray;
}
- (NSDictionary *) flattenedDictionaries
{
NSMutableDictionary *newDict;
NSDictionary *currentDictionary;
int count, max;
newDict = [NSMutableDictionary dictionary];
max = [self count];
for (count = 0; count < max; count++)
{
currentDictionary = [self objectAtIndex: count];
[newDict addEntriesFromDictionary: currentDictionary];
}
return newDict;
}
- (NSArray *) uniqueObjects
{
NSMutableArray *newArray;