From 0bfebc1d7caf80ac4aee86f0c2ca12912224b7dd Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Sat, 15 Dec 2012 17:18:23 -0500 Subject: [PATCH 01/41] Bump VERSION to pre5 for development --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 9b35803401..f2864e8013 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.20.0-pre4 \ No newline at end of file +0.20.0-pre5 \ No newline at end of file From b6a94de68aae4923f8f626729d50fbf5cb03ca0c Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Sun, 16 Dec 2012 13:01:31 -0500 Subject: [PATCH 02/41] Remove extraneous assert on deletion case --- Code/Network/RKManagedObjectRequestOperation.m | 1 - 1 file changed, 1 deletion(-) diff --git a/Code/Network/RKManagedObjectRequestOperation.m b/Code/Network/RKManagedObjectRequestOperation.m index b5b8f8d675..16b93288e2 100644 --- a/Code/Network/RKManagedObjectRequestOperation.m +++ b/Code/Network/RKManagedObjectRequestOperation.m @@ -171,7 +171,6 @@ static void RKSetMappedValueForKeyPathInDictionary(id value, NSString *keyPath, } else if ([value isKindOfClass:[NSManagedObject class]]) { // Object becomes nil if deleted value = [value managedObjectContext] ? [managedObjectContext existingObjectWithID:[value objectID] error:&error] : nil; - NSCAssert(value, @"Failed to find existing object with ID %@ in context %@: %@", [value objectID], managedObjectContext, error); } RKSetMappedValueForKeyPathInDictionary(value, keyPath, newDictionary); From 9f228e0280b3c3bf3d38d748e2d15d82a9b9f9ae Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Sun, 16 Dec 2012 20:45:01 -0500 Subject: [PATCH 03/41] Expand test coverage on managed object deletion cases and fix bugs. closes #358 --- .../Network/RKManagedObjectRequestOperation.m | 107 +++++++------ .../RKManagedObjectRequestOperationTest.m | 149 +++++++++++++++++- Tests/Models/Data Model.xcdatamodel/elements | Bin 296857 -> 318568 bytes Tests/Models/Data Model.xcdatamodel/layout | Bin 42306 -> 46781 bytes Tests/Server/server.rb | 7 +- 5 files changed, 215 insertions(+), 48 deletions(-) diff --git a/Code/Network/RKManagedObjectRequestOperation.m b/Code/Network/RKManagedObjectRequestOperation.m index 16b93288e2..f2f5bb9cad 100644 --- a/Code/Network/RKManagedObjectRequestOperation.m +++ b/Code/Network/RKManagedObjectRequestOperation.m @@ -69,22 +69,18 @@ - (NSSet *)keyPaths - (void)visitMapping:(RKMapping *)mapping atKeyPath:(NSString *)keyPath { id actualKeyPath = keyPath ?: [NSNull null]; - if ([self.keyPaths containsObject:actualKeyPath]) return; - - if ([mapping isKindOfClass:[RKEntityMapping class]]) { - [self.mutableKeyPaths addObject:actualKeyPath]; - } else { - if ([mapping isKindOfClass:[RKDynamicMapping class]]) { - RKDynamicMapping *dynamicMapping = (RKDynamicMapping *)mapping; - for (RKMapping *nestedMapping in dynamicMapping.objectMappings) { - [self visitMapping:nestedMapping atKeyPath:keyPath]; - } - } else if ([mapping isKindOfClass:[RKObjectMapping class]]) { - RKObjectMapping *objectMapping = (RKObjectMapping *)mapping; - for (RKRelationshipMapping *relationshipMapping in objectMapping.relationshipMappings) { - NSString *nestedKeyPath = keyPath ? [@[ keyPath, relationshipMapping.destinationKeyPath ] componentsJoinedByString:@"."] : relationshipMapping.destinationKeyPath; - [self visitMapping:relationshipMapping.mapping atKeyPath:nestedKeyPath]; - } + if ([self.keyPaths containsObject:actualKeyPath]) return; + if ([mapping isKindOfClass:[RKEntityMapping class]]) [self.mutableKeyPaths addObject:actualKeyPath]; + if ([mapping isKindOfClass:[RKDynamicMapping class]]) { + RKDynamicMapping *dynamicMapping = (RKDynamicMapping *)mapping; + for (RKMapping *nestedMapping in dynamicMapping.objectMappings) { + [self visitMapping:nestedMapping atKeyPath:keyPath]; + } + } else if ([mapping isKindOfClass:[RKObjectMapping class]]) { + RKObjectMapping *objectMapping = (RKObjectMapping *)mapping; + for (RKRelationshipMapping *relationshipMapping in objectMapping.relationshipMappings) { + NSString *nestedKeyPath = keyPath ? [@[ keyPath, relationshipMapping.destinationKeyPath ] componentsJoinedByString:@"."] : relationshipMapping.destinationKeyPath; + [self visitMapping:relationshipMapping.mapping atKeyPath:nestedKeyPath]; } } } @@ -102,6 +98,28 @@ - (void)visitMapping:(RKMapping *)mapping atKeyPath:(NSString *)keyPath return fetchRequests; } +/** + Returns the set of keys containing the outermost nesting keypath for all children. + For example, given a set containing: 'this', 'this.that', 'another.one.test', 'another.two.test', 'another.one.test.nested' + would return: 'this, 'another.one', 'another.two' + */ +NSSet *RKSetByRemovingSubkeypathsFromSet(NSSet *setOfKeyPaths); +NSSet *RKSetByRemovingSubkeypathsFromSet(NSSet *setOfKeyPaths) +{ + return [setOfKeyPaths objectsPassingTest:^BOOL(NSString *keyPath, BOOL *stop) { + if ([keyPath isEqual:[NSNull null]]) return YES; // Special case the root key path + NSArray *keyPathComponents = [keyPath componentsSeparatedByString:@"."]; + NSMutableSet *parentKeyPaths = [NSMutableSet set]; + for (NSUInteger index = 0; index < [keyPathComponents count] - 1; index++) { + [parentKeyPaths addObject:[[keyPathComponents subarrayWithRange:NSMakeRange(0, index + 1)] componentsJoinedByString:@"."]]; + } + for (NSString *parentKeyPath in parentKeyPaths) { + if ([setOfKeyPaths containsObject:parentKeyPath]) return NO; + } + return YES; + }]; +} + // When we map the root object, it is returned under the key `[NSNull null]` static id RKMappedValueForKeyPathInDictionary(NSString *keyPath, NSDictionary *dictionary) { @@ -110,17 +128,33 @@ static id RKMappedValueForKeyPathInDictionary(NSString *keyPath, NSDictionary *d static void RKSetMappedValueForKeyPathInDictionary(id value, NSString *keyPath, NSMutableDictionary *dictionary) { + NSCParameterAssert(value); + NSCParameterAssert(keyPath); + NSCParameterAssert(dictionary); [keyPath isEqual:[NSNull null]] ? [dictionary setObject:value forKey:keyPath] : [dictionary setValue:value forKeyPath:keyPath]; } +// Precondition: Must be called from within the correct context +static NSManagedObject *RKRefetchManagedObjectInContext(NSManagedObject *managedObject, NSManagedObjectContext *managedObjectContext) +{ + NSManagedObjectID *managedObjectID = [managedObject objectID]; + if (! [managedObject managedObjectContext]) return nil; // Object has been deleted + if ([managedObjectID isTemporaryID]) { + RKLogWarning(@"Unable to refetch managed object %@: the object has a temporary managed object ID.", managedObject); + return managedObject; + } + NSError *error = nil; + NSManagedObject *refetchedObject = [managedObjectContext existingObjectWithID:managedObjectID error:&error]; + NSCAssert(refetchedObject, @"Failed to find existing object with ID %@ in context %@: %@", managedObjectID, managedObjectContext, error); + return refetchedObject; +} + // Finds the key paths for all entity mappings in the graph whose parent objects are not other managed objects static NSDictionary *RKDictionaryFromDictionaryWithManagedObjectsAtKeyPathsRefetchedInContext(NSDictionary *dictionaryOfManagedObjects, NSSet *keyPaths, NSManagedObjectContext *managedObjectContext) { if (! [dictionaryOfManagedObjects count]) return dictionaryOfManagedObjects; NSMutableDictionary *newDictionary = [dictionaryOfManagedObjects mutableCopy]; [managedObjectContext performBlockAndWait:^{ - __block NSError *error = nil; - for (NSString *keyPath in keyPaths) { id value = RKMappedValueForKeyPathInDictionary(keyPath, dictionaryOfManagedObjects); if (! value) { @@ -129,51 +163,31 @@ static void RKSetMappedValueForKeyPathInDictionary(id value, NSString *keyPath, BOOL isMutable = [value isKindOfClass:[NSMutableArray class]]; NSMutableArray *newValue = [[NSMutableArray alloc] initWithCapacity:[value count]]; for (__strong id object in value) { - if ([object isKindOfClass:[NSManagedObject class]]) { - if (![object managedObjectContext]) continue; // Object was deleted - object = [managedObjectContext existingObjectWithID:[object objectID] error:&error]; - NSCAssert(object, @"Failed to find existing object with ID %@ in context %@: %@", [object objectID], managedObjectContext, error); - } - - [newValue addObject:object]; + if ([object isKindOfClass:[NSManagedObject class]]) object = RKRefetchManagedObjectInContext(object, managedObjectContext); + if (object) [newValue addObject:object]; } value = (isMutable) ? newValue : [newValue copy]; } else if ([value isKindOfClass:[NSSet class]]) { BOOL isMutable = [value isKindOfClass:[NSMutableSet class]]; NSMutableSet *newValue = [[NSMutableSet alloc] initWithCapacity:[value count]]; for (__strong id object in value) { - if ([object isKindOfClass:[NSManagedObject class]]) { - if (![object managedObjectContext]) continue; // Object was deleted - object = [managedObjectContext existingObjectWithID:[object objectID] error:&error]; - NSCAssert(object, @"Failed to find existing object with ID %@ in context %@: %@", [object objectID], managedObjectContext, error); - } - - [newValue addObject:object]; + if ([object isKindOfClass:[NSManagedObject class]]) object = RKRefetchManagedObjectInContext(object, managedObjectContext); + if (object) [newValue addObject:object]; } value = (isMutable) ? newValue : [newValue copy]; } else if ([value isKindOfClass:[NSOrderedSet class]]) { BOOL isMutable = [value isKindOfClass:[NSMutableOrderedSet class]]; NSMutableOrderedSet *newValue = [NSMutableOrderedSet orderedSet]; [(NSOrderedSet *)value enumerateObjectsUsingBlock:^(id object, NSUInteger index, BOOL *stop) { - if ([object isKindOfClass:[NSManagedObject class]]) { - if ([object managedObjectContext]) { - object = [managedObjectContext existingObjectWithID:[object objectID] error:&error]; - NSCAssert(object, @"Failed to find existing object with ID %@ in context %@: %@", [object objectID], managedObjectContext, error); - } else { - // Object was deleted - object = nil; - } - } - + if ([object isKindOfClass:[NSManagedObject class]]) object = RKRefetchManagedObjectInContext(object, managedObjectContext); if (object) [newValue setObject:object atIndex:index]; }]; value = (isMutable) ? newValue : [newValue copy]; } else if ([value isKindOfClass:[NSManagedObject class]]) { - // Object becomes nil if deleted - value = [value managedObjectContext] ? [managedObjectContext existingObjectWithID:[value objectID] error:&error] : nil; + value = RKRefetchManagedObjectInContext(value, managedObjectContext); } - RKSetMappedValueForKeyPathInDictionary(value, keyPath, newDictionary); + if (value) RKSetMappedValueForKeyPathInDictionary(value, keyPath, newDictionary); } }]; @@ -482,7 +496,8 @@ - (void)willFinish // Refetch all managed objects nested at key paths within the results dictionary before returning if (self.mappingResult) { - NSDictionary *resultsDictionaryFromOriginalContext = RKDictionaryFromDictionaryWithManagedObjectsAtKeyPathsRefetchedInContext([self.mappingResult dictionary], managedObjectMappingResultKeyPaths, self.managedObjectContext); + NSSet *nonNestedKeyPaths = RKSetByRemovingSubkeypathsFromSet(managedObjectMappingResultKeyPaths); + NSDictionary *resultsDictionaryFromOriginalContext = RKDictionaryFromDictionaryWithManagedObjectsAtKeyPathsRefetchedInContext([self.mappingResult dictionary], nonNestedKeyPaths, self.managedObjectContext); self.mappingResult = [[RKMappingResult alloc] initWithDictionary:resultsDictionaryFromOriginalContext]; } } diff --git a/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m b/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m index 8bf0b92686..37db88cd47 100644 --- a/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m +++ b/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m @@ -16,6 +16,7 @@ @interface RKManagedObjectRequestOperation () - (NSSet *)localObjectsFromFetchRequestsMatchingRequestURL:(NSError **)error; @end +NSSet *RKSetByRemovingSubkeypathsFromSet(NSSet *setOfKeyPaths); @interface RKManagedObjectRequestOperationTest : RKTestCase @@ -367,6 +368,27 @@ - (void)testThatManagedObjectMappedToNSOrderedSetRelationshipOfNonManagedObjects expect([[testUser.friendsOrderedSet firstObject] managedObjectContext]).to.equal(managedObjectStore.persistentStoreManagedObjectContext); } +- (void)testDeletionOfOrphanedManagedObjects +{ + RKManagedObjectStore *managedObjectStore = [RKTestFactory managedObjectStore]; + RKHuman *orphanedHuman = [NSEntityDescription insertNewObjectForEntityForName:@"Human" inManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext]; + RKEntityMapping *entityMapping = [RKEntityMapping mappingForEntityForName:@"Human" inManagedObjectStore:managedObjectStore]; + [entityMapping addAttributeMappingsFromArray:@[ @"name" ]]; + RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:entityMapping pathPattern:nil keyPath:@"human" statusCodes:[NSIndexSet indexSetWithIndex:200]]; + + NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"/JSON/humans/with_to_one_relationship.json" relativeToURL:[RKTestFactory baseURL]]]; + RKManagedObjectRequestOperation *managedObjectRequestOperation = [[RKManagedObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[ responseDescriptor ]]; + RKFetchRequestBlock fetchRequestBlock = ^NSFetchRequest * (NSURL *URL) { + return [NSFetchRequest fetchRequestWithEntityName:@"Human"]; + }; + managedObjectRequestOperation.fetchRequestBlocks = @[ fetchRequestBlock ]; + managedObjectRequestOperation.managedObjectContext = managedObjectStore.persistentStoreManagedObjectContext; + [managedObjectRequestOperation start]; + expect(managedObjectRequestOperation.error).to.beNil(); + expect([managedObjectRequestOperation.mappingResult array]).to.haveCountOf(1); + expect(orphanedHuman.managedObjectContext).to.beNil(); +} + - (void)testDeletionOfOrphanedObjectsMappedOnRelationships { RKManagedObjectStore *managedObjectStore = [RKTestFactory managedObjectStore]; @@ -390,6 +412,131 @@ - (void)testDeletionOfOrphanedObjectsMappedOnRelationships expect(orphanedHuman.managedObjectContext).to.beNil(); } -// TODO: test deletion of nested objects +- (void)testDeletionOfOrphanedTagsOfPosts +{ + RKManagedObjectStore *managedObjectStore = [RKTestFactory managedObjectStore]; + NSManagedObject *orphanedTag = [NSEntityDescription insertNewObjectForEntityForName:@"Tag" inManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext]; + [orphanedTag setValue:@"orphaned" forKey:@"name"]; + RKEntityMapping *postMapping = [RKEntityMapping mappingForEntityForName:@"Post" inManagedObjectStore:managedObjectStore]; + [postMapping addAttributeMappingsFromArray:@[ @"title", @"body" ]]; + RKEntityMapping *tagMapping = [RKEntityMapping mappingForEntityForName:@"Tag" inManagedObjectStore:managedObjectStore]; + [tagMapping addAttributeMappingsFromArray:@[ @"name" ]]; + [postMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"tags" toKeyPath:@"tags" withMapping:tagMapping]]; + RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:postMapping pathPattern:nil keyPath:@"posts" statusCodes:[NSIndexSet indexSetWithIndex:200]]; + + NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"/posts.json" relativeToURL:[RKTestFactory baseURL]]]; + RKManagedObjectRequestOperation *managedObjectRequestOperation = [[RKManagedObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[ responseDescriptor ]]; + RKFetchRequestBlock fetchRequestBlock = ^NSFetchRequest * (NSURL *URL) { + return [NSFetchRequest fetchRequestWithEntityName:@"Tag"]; + }; + managedObjectRequestOperation.fetchRequestBlocks = @[ fetchRequestBlock ]; + managedObjectRequestOperation.managedObjectContext = managedObjectStore.persistentStoreManagedObjectContext; + [managedObjectRequestOperation start]; + expect(managedObjectRequestOperation.error).to.beNil(); + expect([managedObjectRequestOperation.mappingResult array]).to.haveCountOf(1); + expect(orphanedTag.managedObjectContext).to.beNil(); + + // Create 3 tags. Update the post entity so it only points to 2 tags. Tag should be deleted. + // Create 3 tags. Create another post pointing to one of the tags. Update the post entity so it only points to 2 tags. Tag should be deleted. +} + +- (void)testThatDeletionOfOrphanedObjectsCanBeSuppressedByPredicate +{ + RKManagedObjectStore *managedObjectStore = [RKTestFactory managedObjectStore]; + NSManagedObject *tagOnDiferentObject = [NSEntityDescription insertNewObjectForEntityForName:@"Tag" inManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext]; + [tagOnDiferentObject setValue:@"orphaned" forKey:@"name"]; + + NSManagedObject *otherPost = [NSEntityDescription insertNewObjectForEntityForName:@"Post" inManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext]; + [otherPost setValue:[NSSet setWithObject:tagOnDiferentObject] forKey:@"tags"]; + + RKEntityMapping *postMapping = [RKEntityMapping mappingForEntityForName:@"Post" inManagedObjectStore:managedObjectStore]; + [postMapping addAttributeMappingsFromArray:@[ @"title", @"body" ]]; + RKEntityMapping *tagMapping = [RKEntityMapping mappingForEntityForName:@"Tag" inManagedObjectStore:managedObjectStore]; + [tagMapping addAttributeMappingsFromArray:@[ @"name" ]]; + [postMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"tags" toKeyPath:@"tags" withMapping:tagMapping]]; + RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:postMapping pathPattern:nil keyPath:@"posts" statusCodes:[NSIndexSet indexSetWithIndex:200]]; + + NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"/posts.json" relativeToURL:[RKTestFactory baseURL]]]; + RKManagedObjectRequestOperation *managedObjectRequestOperation = [[RKManagedObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[ responseDescriptor ]]; + RKFetchRequestBlock fetchRequestBlock = ^NSFetchRequest * (NSURL *URL) { + NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Tag"]; + fetchRequest.predicate = [NSPredicate predicateWithFormat:@"posts.@count == 0"]; + return fetchRequest; + }; + managedObjectRequestOperation.fetchRequestBlocks = @[ fetchRequestBlock ]; + managedObjectRequestOperation.managedObjectContext = managedObjectStore.persistentStoreManagedObjectContext; + [managedObjectRequestOperation start]; + expect(managedObjectRequestOperation.error).to.beNil(); + expect([managedObjectRequestOperation.mappingResult array]).to.haveCountOf(1); + expect(tagOnDiferentObject.managedObjectContext).notTo.beNil(); +} + +- (void)testThatObjectsOrphanedByRequestOperationAreDeletedAppropriately +{ + // create tags: development, restkit, orphaned + RKManagedObjectStore *managedObjectStore = [RKTestFactory managedObjectStore]; + __block NSManagedObject *post = nil; + __block NSManagedObject *orphanedTag; + __block NSManagedObject *anotherTag; + [managedObjectStore.persistentStoreManagedObjectContext performBlockAndWait:^{ + NSManagedObject *developmentTag = [NSEntityDescription insertNewObjectForEntityForName:@"Tag" inManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext]; + [developmentTag setValue:@"development" forKey:@"name"]; + NSManagedObject *restkitTag = [NSEntityDescription insertNewObjectForEntityForName:@"Tag" inManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext]; + [restkitTag setValue:@"restkit" forKey:@"name"]; + orphanedTag = [NSEntityDescription insertNewObjectForEntityForName:@"Tag" inManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext]; + [orphanedTag setValue:@"orphaned" forKey:@"name"]; + + post = [NSEntityDescription insertNewObjectForEntityForName:@"Post" inManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext]; + [post setValue:@"Post Title" forKey:@"title"]; + [post setValue:[NSSet setWithObjects:developmentTag, restkitTag, orphanedTag, nil] forKey:@"tags"]; + + anotherTag = [NSEntityDescription insertNewObjectForEntityForName:@"Tag" inManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext]; + [anotherTag setValue:@"another" forKey:@"name"]; + NSManagedObject *anotherPost = [NSEntityDescription insertNewObjectForEntityForName:@"Post" inManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext]; + [anotherPost setValue:@"Another Post" forKey:@"title"]; + [anotherPost setValue:[NSSet setWithObject:anotherTag] forKey:@"tags"]; + + BOOL success = [managedObjectStore.persistentStoreManagedObjectContext save:nil]; + }]; + + RKEntityMapping *postMapping = [RKEntityMapping mappingForEntityForName:@"Post" inManagedObjectStore:managedObjectStore]; + postMapping.identificationAttributes = @[ @"title" ]; + [postMapping addAttributeMappingsFromArray:@[ @"title", @"body" ]]; + RKEntityMapping *tagMapping = [RKEntityMapping mappingForEntityForName:@"Tag" inManagedObjectStore:managedObjectStore]; + tagMapping.identificationAttributes = @[ @"name" ]; + [tagMapping addAttributeMappingsFromArray:@[ @"name" ]]; + [postMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"tags" toKeyPath:@"tags" withMapping:tagMapping]]; + RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:postMapping pathPattern:nil keyPath:@"posts" statusCodes:[NSIndexSet indexSetWithIndex:200]]; + + NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"/posts.json" relativeToURL:[RKTestFactory baseURL]]]; + RKManagedObjectRequestOperation *managedObjectRequestOperation = [[RKManagedObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[ responseDescriptor ]]; + RKFetchRequestManagedObjectCache *managedObjectCache = [RKFetchRequestManagedObjectCache new]; + managedObjectRequestOperation.managedObjectCache = managedObjectCache; + RKFetchRequestBlock fetchRequestBlock = ^NSFetchRequest * (NSURL *URL) { + NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Tag"]; + fetchRequest.predicate = [NSPredicate predicateWithFormat:@"posts.@count == 0"]; + return fetchRequest; + }; + managedObjectRequestOperation.fetchRequestBlocks = @[ fetchRequestBlock ]; + managedObjectRequestOperation.managedObjectContext = managedObjectStore.persistentStoreManagedObjectContext; + [managedObjectRequestOperation start]; + expect(managedObjectRequestOperation.error).to.beNil(); + expect([managedObjectRequestOperation.mappingResult array]).to.haveCountOf(1); + + NSSet *tagNames = [post valueForKeyPath:@"tags.name"]; + NSSet *expectedTagNames = [NSSet setWithObjects:@"development", @"restkit", nil ]; + expect(tagNames).to.equal(expectedTagNames); + + expect([orphanedTag hasBeenDeleted]).to.equal(YES); + expect([anotherTag hasBeenDeleted]).to.equal(NO); +} + +- (void)testPruningOfSubkeypathsFromSet +{ + NSSet *keyPaths = [NSSet setWithObjects:@"posts", @"posts.tags", @"another", @"something.else.entirely", @"another.this.that", @"somewhere.out.there", @"some.posts", nil]; + NSSet *prunedSet = RKSetByRemovingSubkeypathsFromSet(keyPaths); + NSSet *expectedSet = [NSSet setWithObjects:@"posts", @"another", @"something.else.entirely", @"somewhere.out.there", @"some.posts", nil]; + expect(prunedSet).to.equal(expectedSet); +} @end diff --git a/Tests/Models/Data Model.xcdatamodel/elements b/Tests/Models/Data Model.xcdatamodel/elements index 96c4ab2413cf32c94042aac6d060717da5b4a85a..9eac237fa4a09a7e188a4a05713963f808e80b43 100644 GIT binary patch literal 318568 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 literal 296857 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

mP%fhWR~g=4C2Li=QWhSb8MZrL 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 diff --git a/Tests/Models/RKChild.h b/Tests/Models/RKChild.h index 960e86f3ad..2ef5a8cb2b 100644 --- a/Tests/Models/RKChild.h +++ b/Tests/Models/RKChild.h @@ -32,5 +32,7 @@ @property (nonatomic, strong) NSNumber *fatherID; @property (nonatomic, strong) RKParent *father; @property (nonatomic, strong) RKParent *mother; +@property (nonatomic, strong) NSArray *friendIDs; +@property (nonatomic, strong) NSSet *friends; @end diff --git a/Tests/Models/RKChild.m b/Tests/Models/RKChild.m index 042bae3b24..39de94f8be 100644 --- a/Tests/Models/RKChild.m +++ b/Tests/Models/RKChild.m @@ -28,5 +28,7 @@ @implementation RKChild @dynamic fatherID; @dynamic father; @dynamic mother; +@dynamic friends; +@dynamic friendIDs; @end From 408072f733995d9bad75d6a29adf27fcabf4c6c5 Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Wed, 19 Dec 2012 22:21:09 -0500 Subject: [PATCH 11/41] Add support and tests for inferring entity identifiers from superentity user info. closes #954 --- Code/CoreData/RKEntityMapping.m | 39 ++++++++++++---------- Tests/Logic/CoreData/RKEntityMappingTest.m | 36 ++++++++++++++++++++ 2 files changed, 57 insertions(+), 18 deletions(-) diff --git a/Code/CoreData/RKEntityMapping.m b/Code/CoreData/RKEntityMapping.m index 5cf76003f3..8dd9bad32f 100644 --- a/Code/CoreData/RKEntityMapping.m +++ b/Code/CoreData/RKEntityMapping.m @@ -36,24 +36,27 @@ static NSArray *RKEntityIdentificationAttributesFromUserInfoOfEntity(NSEntityDescription *entity) { - id userInfoValue = [[entity userInfo] valueForKey:RKEntityIdentificationAttributesUserInfoKey]; - if (userInfoValue) { - NSArray *attributeNames = [userInfoValue isKindOfClass:[NSArray class]] ? userInfoValue : @[ userInfoValue ]; - NSMutableArray *attributes = [NSMutableArray arrayWithCapacity:[attributeNames count]]; - [attributeNames enumerateObjectsUsingBlock:^(NSString *attributeName, NSUInteger idx, BOOL *stop) { - if (! [attributeName isKindOfClass:[NSString class]]) { - [NSException raise:NSInvalidArgumentException format:@"Invalid value given in user info key '%@' of entity '%@': expected an `NSString` or `NSArray` of strings, instead got '%@' (%@)", RKEntityIdentificationAttributesUserInfoKey, [entity name], attributeName, [attributeName class]]; - } - - NSAttributeDescription *attribute = [[entity attributesByName] valueForKey:attributeName]; - if (! attribute) { - [NSException raise:NSInvalidArgumentException format:@"Invalid identifier attribute specified in user info key '%@' of entity '%@': no attribue was found with the name '%@'", RKEntityIdentificationAttributesUserInfoKey, [entity name], attributeName]; - } - - [attributes addObject:attribute]; - }]; - return attributes; - } + do { + id userInfoValue = [[entity userInfo] valueForKey:RKEntityIdentificationAttributesUserInfoKey]; + if (userInfoValue) { + NSArray *attributeNames = [userInfoValue isKindOfClass:[NSArray class]] ? userInfoValue : @[ userInfoValue ]; + NSMutableArray *attributes = [NSMutableArray arrayWithCapacity:[attributeNames count]]; + [attributeNames enumerateObjectsUsingBlock:^(NSString *attributeName, NSUInteger idx, BOOL *stop) { + if (! [attributeName isKindOfClass:[NSString class]]) { + [NSException raise:NSInvalidArgumentException format:@"Invalid value given in user info key '%@' of entity '%@': expected an `NSString` or `NSArray` of strings, instead got '%@' (%@)", RKEntityIdentificationAttributesUserInfoKey, [entity name], attributeName, [attributeName class]]; + } + + NSAttributeDescription *attribute = [[entity attributesByName] valueForKey:attributeName]; + if (! attribute) { + [NSException raise:NSInvalidArgumentException format:@"Invalid identifier attribute specified in user info key '%@' of entity '%@': no attribue was found with the name '%@'", RKEntityIdentificationAttributesUserInfoKey, [entity name], attributeName]; + } + + [attributes addObject:attribute]; + }]; + return attributes; + } + entity = [entity superentity]; + } while (entity); return nil; } diff --git a/Tests/Logic/CoreData/RKEntityMappingTest.m b/Tests/Logic/CoreData/RKEntityMappingTest.m index fb02cf09d7..ca7e2121b8 100644 --- a/Tests/Logic/CoreData/RKEntityMappingTest.m +++ b/Tests/Logic/CoreData/RKEntityMappingTest.m @@ -504,4 +504,40 @@ - (void)testInferenceOfSnakeCasedEntityNameWithAbbreviation expect([identificationAttributes valueForKey:@"name"]).to.equal(attributeNames); } +- (void)testEntityIdentifierInferenceSearchesParentEntities +{ + NSEntityDescription *entity = [[NSEntityDescription alloc] init]; + [entity setName:@"Monkey"]; + NSEntityDescription *parentEntity = [[NSEntityDescription alloc] init]; + [parentEntity setName:@"Parent"]; + [parentEntity setSubentities:@[ entity ]]; + NSAttributeDescription *identifierAttribute = [NSAttributeDescription new]; + [identifierAttribute setName:@"monkeyID"]; + [parentEntity setProperties:@[ identifierAttribute ]]; + NSArray *identificationAttributes = RKIdentificationAttributesInferredFromEntity(entity); + expect(identificationAttributes).notTo.beNil(); + NSArray *attributeNames = @[ @"monkeyID" ]; + expect([identificationAttributes valueForKey:@"name"]).to.equal(attributeNames); +} + +- (void)testEntityIdentifierInferenceFromUserInfoSearchesParentEntities +{ + NSEntityDescription *entity = [[NSEntityDescription alloc] init]; + [entity setName:@"Monkey"]; + NSAttributeDescription *identifierAttribute = [NSAttributeDescription new]; + [identifierAttribute setName:@"monkeyID"]; // We ignore this by specifying the userInfo key + NSAttributeDescription *nameAttribute = [NSAttributeDescription new]; + [nameAttribute setName:@"name"]; + [entity setProperties:@[ identifierAttribute, nameAttribute ]]; + [entity setUserInfo:@{ RKEntityIdentificationAttributesUserInfoKey: @"name" }]; + + NSEntityDescription *subentity = [NSEntityDescription new]; + [subentity setName:@"SubMonkey"]; + [entity setSubentities:@[ subentity ]]; + NSArray *identificationAttributes = RKIdentificationAttributesInferredFromEntity(subentity); + expect(identificationAttributes).notTo.beNil(); + NSArray *attributeNames = @[ @"name" ]; + expect([identificationAttributes valueForKey:@"name"]).to.equal(attributeNames); +} + @end From ef038aed7321bae749f7d04a0cf7db498ac77327 Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Wed, 19 Dec 2012 23:02:52 -0500 Subject: [PATCH 12/41] Add a unit test for concurrent mapping of managed object request operations targetting the same unique Core Data objects. closes #1079 --- Tests/Fixtures/JSON/humans/1.json | 2 +- ...agedObjectMappingOperationDataSourceTest.m | 5 --- .../RKManagedObjectRequestOperationTest.m | 38 +++++++++++++++++++ 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/Tests/Fixtures/JSON/humans/1.json b/Tests/Fixtures/JSON/humans/1.json index 96d2488cba..86c92e325c 100644 --- a/Tests/Fixtures/JSON/humans/1.json +++ b/Tests/Fixtures/JSON/humans/1.json @@ -1 +1 @@ -{"human":{"birthday":null,"created_at":null,"updated_at":null,"sex":null,"name":"Blake Watters","id":null,"age":28}} +{"human":{"birthday":null,"created_at":null,"updated_at":null,"sex":null,"name":"Blake Watters","id":1,"age":28}} diff --git a/Tests/Logic/CoreData/RKManagedObjectMappingOperationDataSourceTest.m b/Tests/Logic/CoreData/RKManagedObjectMappingOperationDataSourceTest.m index d998a98d06..a33f8a42e4 100644 --- a/Tests/Logic/CoreData/RKManagedObjectMappingOperationDataSourceTest.m +++ b/Tests/Logic/CoreData/RKManagedObjectMappingOperationDataSourceTest.m @@ -996,11 +996,6 @@ - (void)testMappingAPayloadContainingRepeatedObjectsDoesNotYieldDuplicatesWithIn - (void)testThatMappingObjectsWithTheSameIdentificationAttributesAcrossTwoContextsDoesNotCreateDuplicateObjects { - // Create an object store - // Create 2 contexts with common parent - // Create an in memory managed object cache - // Map the - RKManagedObjectStore *managedObjectStore = [RKTestFactory managedObjectStore]; RKInMemoryManagedObjectCache *inMemoryCache = [[RKInMemoryManagedObjectCache alloc] initWithManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext]; managedObjectStore.managedObjectCache = inMemoryCache; diff --git a/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m b/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m index 997454b9f1..360653ee04 100644 --- a/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m +++ b/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m @@ -539,4 +539,42 @@ - (void)testPruningOfSubkeypathsFromSet expect(prunedSet).to.equal(expectedSet); } +- (void)testThatMappingObjectsWithTheSameIdentificationAttributesAcrossTwoObjectRequestOperationConcurrentlyDoesNotCreateDuplicateObjects +{ + RKManagedObjectStore *managedObjectStore = [RKTestFactory managedObjectStore]; + RKInMemoryManagedObjectCache *inMemoryCache = [[RKInMemoryManagedObjectCache alloc] initWithManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext]; + managedObjectStore.managedObjectCache = inMemoryCache; + RKEntityMapping *mapping = [RKEntityMapping mappingForEntityForName:@"Human" inManagedObjectStore:managedObjectStore]; + mapping.identificationAttributes = @[ @"railsID" ]; + [mapping addAttributeMappingsFromArray:@[ @"name" ]]; + [mapping addAttributeMappingsFromDictionary:@{ @"id": @"railsID" }]; + + RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping pathPattern:nil keyPath:@"human" statusCodes:nil]; + + NSURL *URL = [NSURL URLWithString:@"humans/1" relativeToURL:[RKTestFactory baseURL]]; + NSURLRequest *request = [NSURLRequest requestWithURL:URL]; + RKManagedObjectRequestOperation *firstOperation = [[RKManagedObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[ responseDescriptor ]]; + firstOperation.managedObjectContext = managedObjectStore.persistentStoreManagedObjectContext; + firstOperation.managedObjectCache = inMemoryCache; + RKManagedObjectRequestOperation *secondOperation = [[RKManagedObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[ responseDescriptor ]]; + secondOperation.managedObjectContext = managedObjectStore.persistentStoreManagedObjectContext; + secondOperation.managedObjectCache = inMemoryCache; + + NSOperationQueue *operationQueue = [NSOperationQueue new]; + [operationQueue setMaxConcurrentOperationCount:2]; + [operationQueue setSuspended:YES]; + [operationQueue addOperation:firstOperation]; + [operationQueue addOperation:secondOperation]; + + // Start both operations + [operationQueue setSuspended:NO]; + [operationQueue waitUntilAllOperationsAreFinished]; + + // Now pull the count back from the parent context + NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Human"]; + fetchRequest.predicate = [NSPredicate predicateWithFormat:@"railsID == 1"]; + NSArray *fetchedObjects = [managedObjectStore.persistentStoreManagedObjectContext executeFetchRequest:fetchRequest error:nil]; + expect(fetchedObjects).to.haveCountOf(1); +} + @end From fccfd7724fb15c19d923e0f7afeacc0417b7d2df Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Thu, 20 Dec 2012 18:59:14 -0500 Subject: [PATCH 13/41] Add truncation example code to the resetPersistentStores block --- Code/CoreData/RKManagedObjectStore.h | 29 +++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/Code/CoreData/RKManagedObjectStore.h b/Code/CoreData/RKManagedObjectStore.h index 85c9ae41b1..bbf2a45e9b 100644 --- a/Code/CoreData/RKManagedObjectStore.h +++ b/Code/CoreData/RKManagedObjectStore.h @@ -38,9 +38,6 @@ The managed object context hierarchy is designed to isolate the main thread from disk I/O and avoid deadlocks. Because the primary context manages its own private queue, saving the main queue context will not result in the objects being saved to the persistent store. The primary context must be saved as well for objects to be persisted to disk. It is also worth noting that because of the parent/child context hierarchy, objects created on the main thread will not obtain permanent managed object ID's even after the primary context has been saved. If you need to refer to the permanent representations of objects created on the main thread after a save, you may ask the main queue context to obtain permanent managed objects for your objects via `obtainPermanentIDsForObjects:error:`. Be warned that when obtaining permanent managed object ID's, you must include all newly created objects that are reachable from the object you are concerned with in the set of objects provided to `obtainPermanentIDsForObjects:error:`. This means any newly created object in a one-to-one or one-to-many relationship must be provided or you will face a crash from the managed object context. This is due to a bug in Core Data still present in iOS5, but fixed in iOS6 (see Open Radar http://openradar.appspot.com/11478919). - - @see `NSManagedObjectContext (RKAdditions)` - @see `NSEntityDescription (RKAdditions)` */ @interface RKManagedObjectStore : NSObject @@ -151,6 +148,32 @@ @bug This method will implictly result in the managed object contexts associated with the receiver to be discarded and recreated. Any managed objects or additional child contexts associated with the store will need to be discarded or else exceptions may be raised (i.e. `NSObjectInaccessibleException`). Also note that care must be taken to cancel/suspend all mapping operations, reset all managed object contexts, and disconnect all `NSFetchedResultController` objects that are associated with managed object contexts using the persistent stores of the receiver before attempting a reset. Failure to completely disconnect usage before calling this method is likely to result in a deadlock. + + As an alternative to resetting the persistent store, you may wish to consider simply deleting all managed objects out of the managed object context. If your data set is not very large, this can be a performant operation and is significantly easier to implement correctly. An example implementation for truncating all managed objects from the store is provided below: + + NSBlockOpertation *operation = [NSBlockOperation blockOperationWithBlock:^{ + NSManagedObjectContext *managedObjectContext = [RKManagedObjectStore defaultStore].persistentStoreManagedObjectContext; + [managedObjectContext performBlockAndWait:^{ + NSError *error = nil; + for (NSEntityDescription *entity in [RKManagedObjectStore defaultStore].managedObjectModel) { + NSFetchRequest *fetchRequest = [NSFetchRequest new]; + [fetchRequest setEntity:entity]; + [fetchRequest setIncludesSubentities:NO]; + NSArray *objects = [managedObjectContext executeFetchRequest:fetchRequest error:&error]; + if (! objects) RKLogWarning(@"Failed execution of fetch request %@: %@", fetchRequest, error); + for (NSManagedObject *managedObject in objects) { + [managedObjectContext deleteObject:managedObjectContext]; + } + } + + BOOL success = [managedObjectContext save:&error]; + if (!success) RKLogWarning(@"Failed saving managed object context: %@", error); + }]; + }]; + [operation setCompletionBlock:^{ + // Do stuff once the truncation is complete + }]; + [operation start]; */ - (BOOL)resetPersistentStores:(NSError **)error; From 953431a71a4c37aba05068b6fd846b3f0789031f Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Thu, 20 Dec 2012 19:01:49 -0500 Subject: [PATCH 14/41] Clean up registration of the bundled MIME Type implementations. refs #1097 --- Code/Support/RKMIMETypeSerialization.m | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/Code/Support/RKMIMETypeSerialization.m b/Code/Support/RKMIMETypeSerialization.m index 1d8f91a3ba..fc2cf90b0c 100644 --- a/Code/Support/RKMIMETypeSerialization.m +++ b/Code/Support/RKMIMETypeSerialization.m @@ -23,6 +23,7 @@ #import "RKSerialization.h" #import "RKLog.h" #import "RKURLEncodedSerialization.h" +#import "RKNSJSONSerialization.h" // Define logging component #undef RKLogComponent @@ -101,29 +102,13 @@ - (id)init } - (void)addRegistrationsForKnownSerializations -{ - Class serializationClass = nil; - +{ // URL Encoded [self.registrations addObject:[[RKMIMETypeSerializationRegistration alloc] initWithMIMEType:RKMIMETypeFormURLEncoded serializationClass:[RKURLEncodedSerialization class]]]; // JSON - NSArray *JSONSerializationClassNames = @[ @"RKNSJSONSerialization", @"RKJSONKitSerialization" ]; - for (NSString *serializationClassName in JSONSerializationClassNames) { - serializationClass = NSClassFromString(serializationClassName); - if (serializationClass) { - RKLogInfo(@"JSON Serialization class '%@' detected: Registering for MIME Type '%@", serializationClassName, RKMIMETypeJSON); - [self.registrations addObject:[[RKMIMETypeSerializationRegistration alloc] initWithMIMEType:RKMIMETypeJSON - serializationClass:serializationClass]]; - } - } - - // XML -// parserClass = NSClassFromString(@"RKXMLParserXMLReader"); -// if (parserClass) { -// [self setParserClass:parserClass forMIMEType:RKMIMETypeXML]; -// [self setParserClass:parserClass forMIMEType:RKMIMETypeTextXML]; -// } + [self.registrations addObject:[[RKMIMETypeSerializationRegistration alloc] initWithMIMEType:RKMIMETypeJSON + serializationClass:[RKNSJSONSerialization class]]]; } #pragma mark - Public From e748238a5b17b1c5808dd33e7d0bd6fb99373fb0 Mon Sep 17 00:00:00 2001 From: William Barksdale Date: Thu, 20 Dec 2012 11:13:17 -0500 Subject: [PATCH 15/41] More explicit installation directions Made explicit some instructions that required prior understanding of cocoapods in order to understand. --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 10fec6ad3c..3601ee0675 100644 --- a/README.md +++ b/README.md @@ -516,9 +516,11 @@ $ [sudo] gem install cocoapods $ pod setup ``` -Edit your Podfile and add RestKit: +Change to the directory of your Xcode project, and Create and Edit your Podfile and add RestKit: ``` bash +$ cd /path/to/MyProject +$ touch Podfile $ edit Podfile platform :ios, '5.0' # Or platform :osx, '10.7' @@ -535,6 +537,12 @@ Install into your project: $ pod install ``` +Open your project in Xcode from the .xcworkspace file (not the usual project file) + +``` bash +$ open MyProject.xcworkspace +``` + Please note that if your installation fails, it may be because you are installing with a version of Git lower than CocoaPods is expecting. Please ensure that you are running Git **>= 1.8.0** by executing `git --version`. You can get a full picture of the installation details by executing `pod install --verbose`. ### From a Release Package or as a Git submodule From 0cc9ce671ed8569946e41e0d4f9553557ad0a71b Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Thu, 20 Dec 2012 22:16:42 -0500 Subject: [PATCH 16/41] Improve the error messages for failure to match any key paths in the mapper --- Code/ObjectMapping/RKMapperOperation.m | 21 ++++++++++---- .../RKManagedObjectRequestOperationTest.m | 10 +++++-- .../RKObjectMappingNextGenTest.m | 28 +++++++++++++++++-- 3 files changed, 50 insertions(+), 9 deletions(-) diff --git a/Code/ObjectMapping/RKMapperOperation.m b/Code/ObjectMapping/RKMapperOperation.m index 77031d2732..2cd53b8a41 100644 --- a/Code/ObjectMapping/RKMapperOperation.m +++ b/Code/ObjectMapping/RKMapperOperation.m @@ -37,6 +37,18 @@ return ([keyPath isEqual:[NSNull null]]) ? nil : keyPath; } + +static NSString *RKFailureReasonErrorStringForMappingNotFoundError(id representation, NSDictionary *mappingsDictionary) +{ + NSMutableString *failureReason = [NSMutableString string]; + [failureReason appendFormat:@"The mapping operation was unable to find any nested object representations at the key paths searched: %@", [[mappingsDictionary allKeys] componentsJoinedByString:@", "]]; + if ([representation respondsToSelector:@selector(allKeys)]) { + [failureReason appendFormat:@"\nThe representation inputted to the mapper was found to contain nested object representations at the following key paths: %@", [[representation allKeys] componentsJoinedByString:@", "]]; + } + [failureReason appendFormat:@"\nThis likely indicates that you have misconfigured the key paths for your mappings."]; + return failureReason; +} + @interface RKMapperOperation () @property (nonatomic, strong, readwrite) NSError *error; @@ -365,11 +377,10 @@ - (void)main // If the content is empty, we don't consider it an error BOOL isEmpty = [self.representation respondsToSelector:@selector(count)] && ([self.representation count] == 0); if (foundMappable == NO && !isEmpty) { - NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithObjectsAndKeys: - NSLocalizedString(@"Unable to find any mappings for the given content", nil), NSLocalizedDescriptionKey, - [NSNull null], RKMappingErrorKeyPathErrorKey, - self.errors, RKDetailedErrorsKey, - nil]; + NSMutableDictionary *userInfo = [@{ NSLocalizedDescriptionKey: NSLocalizedString(@"No mappable object representations were found at the key paths searched.", nil), + NSLocalizedFailureReasonErrorKey: RKFailureReasonErrorStringForMappingNotFoundError(self.representation, self.mappingsDictionary), + RKMappingErrorKeyPathErrorKey: [NSNull null], + RKDetailedErrorsKey: self.errors} mutableCopy]; NSError *compositeError = [[NSError alloc] initWithDomain:RKErrorDomain code:RKMappingErrorNotFound userInfo:userInfo]; self.error = compositeError; return; diff --git a/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m b/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m index 360653ee04..16dc619bbe 100644 --- a/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m +++ b/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m @@ -551,8 +551,14 @@ - (void)testThatMappingObjectsWithTheSameIdentificationAttributesAcrossTwoObject RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping pathPattern:nil keyPath:@"human" statusCodes:nil]; - NSURL *URL = [NSURL URLWithString:@"humans/1" relativeToURL:[RKTestFactory baseURL]]; - NSURLRequest *request = [NSURLRequest requestWithURL:URL]; +// NSURL *URL = [NSURL URLWithString:@"humans/1" relativeToURL:[RKTestFactory baseURL]]; + [RKMIMETypeSerialization registerClass:[RKNSJSONSerialization class] forMIMEType:@"text/plain"]; + NSURL *URL = [NSURL URLWithString:@"http://restkit.org/human_1.json"]; + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL]; +// [request setCachePolicy:NSURLRequestReturnCacheDataDontLoad]; +// NSData *JSON = [RKTestFixture dataWithContentsOfFixture:@"1.json"]; +// [RKTestHelpers cacheResponseForRequest:request withResponseData:JSON]; + RKManagedObjectRequestOperation *firstOperation = [[RKManagedObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[ responseDescriptor ]]; firstOperation.managedObjectContext = managedObjectStore.persistentStoreManagedObjectContext; firstOperation.managedObjectCache = inMemoryCache; diff --git a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m index 28de10b22e..e278d4b1f6 100644 --- a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m +++ b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m @@ -595,7 +595,7 @@ - (void)testShouldAddAnErrorWhenAttemptingToMapADictionaryWithoutAnObjectMapping NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [mapper start]; - assertThat([mapper.error localizedDescription], is(equalTo(@"Unable to find any mappings for the given content"))); + assertThat([mapper.error localizedDescription], is(equalTo(@"No mappable object representations were found at the key paths searched."))); } - (void)testShouldAddAnErrorWhenAttemptingToMapACollectionWithoutAnObjectMapping @@ -604,7 +604,31 @@ - (void)testShouldAddAnErrorWhenAttemptingToMapACollectionWithoutAnObjectMapping id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"users.json"]; RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [mapper start]; - assertThat([mapper.error localizedDescription], is(equalTo(@"Unable to find any mappings for the given content"))); + assertThat([mapper.error localizedDescription], is(equalTo(@"No mappable object representations were found at the key paths searched."))); +} + +- (void)testThatAnErrorIsSetWithAHelpfulDescriptionWhenNoKeyPathsMatchTheArrayOfObjectsRepresentationBeingMapped +{ + RKObjectMapping *mapping1 = [RKObjectMapping mappingForClass:[NSMutableDictionary class]]; + RKObjectMapping *mapping2 = [RKObjectMapping mappingForClass:[NSMutableDictionary class]]; + NSDictionary *mappingsDictionary = @{ @"this": mapping1, @"that": mapping2 }; + id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"users.json"]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; + [mapper start]; + assertThat([mapper.error localizedDescription], is(equalTo(@"No mappable object representations were found at the key paths searched."))); + assertThat([mapper.error localizedFailureReason], is(equalTo(@"The mapping operation was unable to find any nested object representations at the key paths searched: this, that\nThis likely indicates that you have misconfigured the key paths for your mappings."))); +} + +- (void)testThatAnErrorIsSetWithAHelpfulDescriptionWhenNoKeyPathsMatchTheObjectRepresentationBeingMapped +{ + RKObjectMapping *mapping1 = [RKObjectMapping mappingForClass:[NSMutableDictionary class]]; + RKObjectMapping *mapping2 = [RKObjectMapping mappingForClass:[NSMutableDictionary class]]; + NSDictionary *mappingsDictionary = @{ @"this": mapping1, @"that": mapping2 }; + id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"RailsUser.json"]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; + [mapper start]; + assertThat([mapper.error localizedDescription], is(equalTo(@"No mappable object representations were found at the key paths searched."))); + assertThat([mapper.error localizedFailureReason], is(equalTo(@"The mapping operation was unable to find any nested object representations at the key paths searched: this, that\nThe representation inputted to the mapper was found to contain nested object representations at the following key paths: user\nThis likely indicates that you have misconfigured the key paths for your mappings."))); } #pragma mark RKMapperOperationDelegate Tests From dc16dc7e8f1e4a4cfcfda9df09fff325376f448a Mon Sep 17 00:00:00 2001 From: Jeff Arena Date: Fri, 21 Dec 2012 11:03:36 -0500 Subject: [PATCH 17/41] Change to future date test spec --- Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m index e278d4b1f6..20525cfb69 100644 --- a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m +++ b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m @@ -1321,7 +1321,7 @@ - (void)testShouldMapNSDateDistantFutureDateStringToADate [mapping addPropertyMapping:birthDateMapping]; NSMutableDictionary *dictionary = [[RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"] mutableCopy]; - [dictionary setObject:@"4001-01-01 00:00:00 +0000" forKey:@"birthdate"]; + [dictionary setObject:@"3001-01-01T00:00:00Z" forKey:@"birthdate"]; RKTestUser *user = [RKTestUser user]; RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:dictionary destinationObject:user mapping:mapping]; RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new]; @@ -1332,7 +1332,7 @@ - (void)testShouldMapNSDateDistantFutureDateStringToADate NSDateFormatter *dateFormatter = [NSDateFormatter new]; dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"]; [dateFormatter setDateFormat:@"MM/dd/yyyy"]; - assertThat([dateFormatter stringFromDate:user.birthDate], is(equalTo(@"01/01/4001"))); + assertThat([dateFormatter stringFromDate:user.birthDate], is(equalTo(@"01/01/3001"))); } #pragma mark - Relationship Mapping From 0fc1cbe271ba242acdf241015dfafc0b12c3fc00 Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Fri, 21 Dec 2012 13:29:18 -0500 Subject: [PATCH 18/41] Add explicit configuration instructions for Core Data to the README.md. refs #1101 --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index 3601ee0675..c365e03cfe 100644 --- a/README.md +++ b/README.md @@ -215,6 +215,7 @@ RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescrip NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://restkit.org/articles/888.json"]]; RKManagedObjectRequestOperation *operation = [[RKManagedObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[responseDescriptor]]; operation.managedObjectContext = managedObjectStore.mainQueueManagedObjectContext; +operation.managedObjectCache = managedObjectStore.managedObjectCache; [operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *result) { Article *article = [result firstObject]; NSLog(@"Mapped the article: %@", article); @@ -270,6 +271,18 @@ RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithStr }]; ``` +### Configure Core Data Integration with the Object Manager +``` objective-c +NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil]; +RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel]; +NSString *path = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"Store.sqlite"]; +[managedObjectStore addSQLitePersistentStoreAtPath:path fromSeedDatabaseAtPath:nil withConfiguration:nil options:nil error:nil]; +[managedObjectStore createManagedObjectContexts]; + +RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://restkit.org"]]; +manager.managedObjectStore = managedObjectStore; +``` + ### Load a Collection of Objects at a Path ``` objective-c RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://restkit.org"]; From 913b8a1b9ebc8f6a44d587eb12c8ed464007ae93 Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Fri, 21 Dec 2012 14:11:05 -0500 Subject: [PATCH 19/41] Initialize RKPaginator with an operation queue. This avoids deadlocks when working with `RKManagedObjectRequestOperation` instances bound to the main thread. This is a workaround to deal with object request operations being non-concurrent and executing in the calling thread context. refs #1076 --- Code/Network/RKPaginator.m | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Code/Network/RKPaginator.m b/Code/Network/RKPaginator.m index 8894baae85..191d33a0ff 100644 --- a/Code/Network/RKPaginator.m +++ b/Code/Network/RKPaginator.m @@ -71,6 +71,7 @@ - (id)initWithRequest:(NSURLRequest *)request self.objectCount = NSNotFound; self.perPage = RKPaginatorDefaultPerPage; self.loaded = NO; + self.operationQueue = [NSOperationQueue new]; } return self; @@ -208,11 +209,7 @@ - (void)loadPage:(NSUInteger)pageNumber } }]; - if (self.operationQueue) { - [self.operationQueue addOperation:self.objectRequestOperation]; - } else { - [self.objectRequestOperation start]; - } + [self.operationQueue addOperation:self.objectRequestOperation]; } - (void)waitUntilFinished From 0f0268722417784a7a7a49bf39160b5d320e3ddb Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Fri, 21 Dec 2012 15:49:25 -0500 Subject: [PATCH 20/41] Fixing broken links on the README and preparing pages for docs refresh --- README.md | 62 +++++++++++++++++++++++++++---------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index c365e03cfe..5be6d3b6b5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # RestKit -RestKit is a modern Objective-C framework for implementing RESTful web services clients on iOS and Mac OS X. It provides a powerful [object mapping]() engine that seamlessly integrates with [Core Data](http://developer.apple.com/library/mac/#documentation/cocoa/Conceptual/CoreData/cdProgrammingGuide.html) and a simple set of networking primitives for mapping HTTP requests and responses built on top of [AFNetworking](https://github.com/AFNetworking/AFNetworking). It has an elegant, carefully designed set of APIs that make accessing and modeling RESTful resources feel almost magical. For example, here's how to access the Twitter public timeline and turn the JSON contents into an array of Tweet objects: +RestKit is a modern Objective-C framework for implementing RESTful web services clients on iOS and Mac OS X. It provides a powerful [object mapping](https://github.com/RestKit/RestKit/wiki/Object-mapping) engine that seamlessly integrates with [Core Data](http://developer.apple.com/library/mac/#documentation/cocoa/Conceptual/CoreData/cdProgrammingGuide.html) and a simple set of networking primitives for mapping HTTP requests and responses built on top of [AFNetworking](https://github.com/AFNetworking/AFNetworking). It has an elegant, carefully designed set of APIs that make accessing and modeling RESTful resources feel almost magical. For example, here's how to access the Twitter public timeline and turn the JSON contents into an array of Tweet objects: ``` objective-c @interface Tweet : NSObject @@ -29,11 +29,11 @@ RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWith ## Getting Started - [Download RestKit](https://github.com/RestKit/RestKit/downloads) and play with the [examples](https://github.com/RestKit/RestKit/tree/development/Examples) for iPhone and Mac OS X -- First time with RestKit? Read the ["Overview"](#Overview) section below and then check out the ["Getting Acquainted with RestKit"]() tutorial and [Object Mapping Reference](https://github.com/RestKit/RestKit/wiki/Object-mapping) documents in the wiki to jump right in. -- Upgrading from RestKit 0.9.x or 0.10.x? Read the ["Upgrading to RestKit 0.20.x"]() guide in the wiki -- Adding RestKit to an existing [AFNetworking]() application? Read the [AFNetworking Integration]() document to learn details about how the frameworks fit together. -- Review the [source code API documentation](http://restkit.org/api/0.20.0) for a detailed look at the classes and API's in RestKit -- Still need some help? Get support from [Stack Overflow](), the [RestKit mailing list](http://groups.google.com/group/restkit) or ping us on [Twitter](http://twitter.com/RestKit) +- First time with RestKit? Read the ["Overview"](#Overview) section below and then check out the ["Getting Acquainted with RestKit"](https://github.com/RestKit/RestKit/wiki/Getting-Acquainted-with-RestKit) tutorial and [Object Mapping Reference](https://github.com/RestKit/RestKit/wiki/Object-mapping) documents in the wiki to jump right in. +- Upgrading from RestKit 0.9.x or 0.10.x? Read the ["Upgrading to RestKit 0.20.x"](https://github.com/RestKit/RestKit/wiki/Upgrading-from-v0.10.x-to-v0.20.0) guide in the wiki +- Adding RestKit to an existing [AFNetworking](http://afnetworking.org) application? Read the [AFNetworking Integration](https://github.com/RestKit/RestKit/wiki/AFNetworking-Integration) document to learn details about how the frameworks fit together. +- Review the [source code API documentation](http://restkit.org/api/latest) for a detailed look at the classes and API's in RestKit. A great place to start is [RKObjectManager](http://restkit.org/api/latest/Classes/RKObjectManager.html). +- Still need some help? Get support from [Stack Overflow](http://stackoverflow.com/questions/tagged/restkit), the [RestKit mailing list](http://groups.google.com/group/restkit) or ping us on [Twitter](http://twitter.com/RestKit) ## Overview @@ -56,52 +56,52 @@ RestKit is broken into several modules that cleanly separate the mapping engine - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
Object Mapping
RKObjectMappingRKObjectMapping Encapsulates configuration for transforming object representations as expressed by key-value coding keypaths.
RKAttributeMappingRKAttributeMapping Specifies a desired transformation between attributes within an object or entity mapping in terms of a source and destination key path.
RKRelationshipMappingRKRelationshipMapping Specifies a desired mapping of a nested to-one or to-many child objects in in terms of a source and destination key path and an RKObjectMapping with which to map the attributes of the child object.
RKDynamicMappingRKDynamicMapping Specifies a flexible mapping in which the decision about which RKObjectMapping is to be used to process a given document is deferred to run time.
RKObjectMapperRKObjectMapper Provides an interface for mapping a parsed document into a set of local domain objects.
RKObjectMappingOperationRKObjectMappingOperation An NSOperation that performs a mapping between object representations using an RKObjectMapping.
Networking
RKRequestDescriptorRKRequestDescriptor Describes a request that can be sent from the application to a remote web application for a given object type.
RKResponseDescriptorRKResponseDescriptor Describes an object mappable response that may be returned from a remote web application in terms of an object mapping, a key path, a SOCKit pattern for matching the URL, and a set of status codes that define the circumstances in which the mapping is appropriate for a given response.
RKObjectParameterizationRKObjectParameterization Performs mapping of a given object into an NSDictionary represenation suitable for use as the parameters of an HTTP request.
RKObjectRequestOperationRKObjectRequestOperation An NSOperation that sends an HTTP request and performs object mapping on the parsed response body using the configurations expressed in a set of RKResponseDescriptor objects.
RKResponseMapperOperationRKResponseMapperOperation An NSOperation that provides support for object mapping an NSHTTPURLResponse using a set of RKResponseDescriptor objects.
RKObjectManagerRKObjectManager Captures the common patterns for communicating with a RESTful web application over HTTP using object mapping including:
  • Centralizing RKRequestDescriptor and RKResponseDescriptor configurations
  • @@ -113,32 +113,32 @@ RestKit is broken into several modules that cleanly separate the mapping engine
RKRouterRKRouter Generates NSURL objects from a base URL and a set of RKRoute objects describing relative paths used by the application.
RKRouteRKRoute Describes a single relative path for a given object type and HTTP method, the relationship of an object, or a symbolic name.
Core Data
RKManagedObjectStoreRKManagedObjectStore Encapsulates Core Data configuration including an NSManagedObjectModel, a NSPersistentStoreCoordinator, and a pair of NSManagedObjectContext objects.
RKEntityMappingRKEntityMapping Models a mapping for transforming an object representation into a NSManagedObject instance for a given NSEntityDescription.
RKConnectionDescriptionRKConnectionDescription Describes a mapping for establishing a relationship between Core Data entities using foreign key attributes.
RKManagedObjectRequestOperationRKManagedObjectRequestOperation An NSOperation subclass that sends an HTTP request and performs object mapping on the parsed response body to create NSManagedObject instances, establishes relationships between objects using RKConnectionDescription objects, and cleans up orphaned objects that no longer exist in the remote backend system.
RKManagedObjectImporterRKManagedObjectImporter Provides support for bulk mapping of managed objects using RKEntityMapping objects for two use cases:
  1. Bulk importing of parsed documents into an NSPersistentStore.
  2. @@ -148,24 +148,24 @@ RestKit is broken into several modules that cleanly separate the mapping engine
Search
RKSearchIndexerRKSearchIndexer Provides support for generating a full-text searchable index within Core Data for string attributes of entities within an application.
RKSearchPredicateRKSearchPredicate Generates an NSCompoundPredicate given a string of text that will search an index built with an RKSearchIndexer across any indexed entity.
Testing
RKMappingTestRKMappingTest Provides support for unit testing object mapping configurations given a parsed document and an object or entity mapping. Expectations are configured in terms of expected key path mappings and/or expected transformation results.
RKTestFixtureRKTestFixture Provides an interface for easily generating test fixture data for unit testing.
RKTestFactoryRKTestFactory Provides support for creating objects for use in testing.
@@ -504,7 +504,7 @@ If you are including the RestKit sources directly into a project that does not y ### Serialization Formats -RestKit provides a pluggable interface for handling arbitrary serialization formats via the [`RKSerialization`](http://restkit.org/api/0.20.0/Classes/RKSerialization.html) protocol and the [`RKMIMETypeSerialization`](http://restkit.org/api/0.20.0/Classes/RKMIMETypeSerialization.html) class. Out of the box, RestKit supports handling the [JSON](http://www.json.org/) format for serializing and deserializing object representations via the [`NSJSONSerialization`](http://developer.apple.com/library/mac/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html) class. +RestKit provides a pluggable interface for handling arbitrary serialization formats via the [`RKSerialization`](http://restkit.org/api/latest/Classes/RKSerialization.html) protocol and the [`RKMIMETypeSerialization`](http://restkit.org/api/latest/Classes/RKMIMETypeSerialization.html) class. Out of the box, RestKit supports handling the [JSON](http://www.json.org/) format for serializing and deserializing object representations via the [`NSJSONSerialization`](http://developer.apple.com/library/mac/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html) class. #### Additional Serializations From 929cd44bd7f780d3932251d984d3b84a46d063f7 Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Fri, 21 Dec 2012 16:00:43 -0500 Subject: [PATCH 21/41] Undo previous paginator change. Instead, pass a reference to the operation queue from the `RKObjectManager` to any Paginator objects constructed through the manager. refs #1076 --- Code/Network/RKObjectManager.m | 1 + Code/Network/RKPaginator.m | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Code/Network/RKObjectManager.m b/Code/Network/RKObjectManager.m index 6ba30a25b4..8044cb1425 100644 --- a/Code/Network/RKObjectManager.m +++ b/Code/Network/RKObjectManager.m @@ -526,6 +526,7 @@ - (RKPaginator *)paginatorWithPathPattern:(NSString *)pathPattern paginator.managedObjectContext = self.managedObjectStore.mainQueueManagedObjectContext; paginator.managedObjectCache = self.managedObjectStore.managedObjectCache; paginator.fetchRequestBlocks = self.fetchRequestBlocks; + paginator.operationQueue = self.operationQueue; return paginator; } diff --git a/Code/Network/RKPaginator.m b/Code/Network/RKPaginator.m index 191d33a0ff..8894baae85 100644 --- a/Code/Network/RKPaginator.m +++ b/Code/Network/RKPaginator.m @@ -71,7 +71,6 @@ - (id)initWithRequest:(NSURLRequest *)request self.objectCount = NSNotFound; self.perPage = RKPaginatorDefaultPerPage; self.loaded = NO; - self.operationQueue = [NSOperationQueue new]; } return self; @@ -209,7 +208,11 @@ - (void)loadPage:(NSUInteger)pageNumber } }]; - [self.operationQueue addOperation:self.objectRequestOperation]; + if (self.operationQueue) { + [self.operationQueue addOperation:self.objectRequestOperation]; + } else { + [self.objectRequestOperation start]; + } } - (void)waitUntilFinished From b78deb3eedbe3fd0ed0e48a5df38eae733f18064 Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Sat, 22 Dec 2012 14:54:49 -0500 Subject: [PATCH 22/41] Use `instancetype` in constructors for increased subclassing friendliness --- Code/CoreData/RKConnectionDescription.h | 4 ++-- Code/CoreData/RKConnectionDescription.m | 4 ++-- Code/CoreData/RKEntityByAttributeCache.h | 2 +- Code/CoreData/RKEntityCache.h | 2 +- Code/CoreData/RKEntityCache.m | 2 -- Code/CoreData/RKEntityMapping.h | 4 ++-- Code/CoreData/RKEntityMapping.m | 8 ++++---- Code/CoreData/RKInMemoryManagedObjectCache.h | 2 +- Code/CoreData/RKManagedObjectImporter.h | 4 ++-- .../CoreData/RKManagedObjectMappingOperationDataSource.h | 2 +- .../CoreData/RKManagedObjectMappingOperationDataSource.m | 2 +- Code/CoreData/RKManagedObjectStore.h | 8 ++++---- Code/CoreData/RKManagedObjectStore.m | 7 +++---- Code/CoreData/RKRelationshipConnectionOperation.h | 6 +++--- Code/CoreData/RKRelationshipConnectionOperation.m | 6 +++--- Code/Network/RKObjectManager.h | 6 +++--- Code/Network/RKObjectManager.m | 4 ++-- Code/Network/RKObjectRequestOperation.h | 4 ++-- Code/Network/RKPaginator.h | 6 +++--- Code/Network/RKRequestDescriptor.h | 6 +++--- Code/Network/RKRequestDescriptor.m | 2 +- Code/Network/RKResponseDescriptor.h | 8 ++++---- Code/Network/RKResponseDescriptor.m | 8 ++++---- Code/Network/RKResponseMapperOperation.h | 6 +++--- Code/Network/RKRoute.h | 6 +++--- Code/Network/RKRoute.m | 6 +++--- Code/Network/RKRouter.h | 2 +- Code/ObjectMapping/RKAttributeMapping.h | 2 +- Code/ObjectMapping/RKAttributeMapping.m | 2 +- Code/ObjectMapping/RKMapperOperation.h | 2 +- Code/ObjectMapping/RKMappingOperation.h | 2 +- Code/ObjectMapping/RKMappingResult.h | 2 +- Code/ObjectMapping/RKObjectMapping.h | 9 ++++----- Code/ObjectMapping/RKObjectMapping.m | 8 ++++---- Code/ObjectMapping/RKRelationshipMapping.h | 2 +- Code/ObjectMapping/RKRelationshipMapping.m | 2 +- Code/Support/RKDotNetDateFormatter.h | 2 +- Code/Support/RKDotNetDateFormatter.m | 4 ++-- Code/Support/RKPathMatcher.h | 4 ++-- Code/Support/RKPathMatcher.m | 8 ++++---- Code/Testing/RKConnectionTestExpectation.h | 4 ++-- Code/Testing/RKConnectionTestExpectation.m | 4 ++-- Code/Testing/RKMappingTest.h | 4 ++-- Code/Testing/RKMappingTest.m | 2 +- Code/Testing/RKPropertyMappingTestExpectation.h | 8 ++++---- Code/Testing/RKPropertyMappingTestExpectation.m | 8 ++++---- Tests/Logic/ObjectMapping/RKMappingOperationTest.m | 2 +- 47 files changed, 102 insertions(+), 106 deletions(-) diff --git a/Code/CoreData/RKConnectionDescription.h b/Code/CoreData/RKConnectionDescription.h index c42ac1f789..fb580dbba6 100644 --- a/Code/CoreData/RKConnectionDescription.h +++ b/Code/CoreData/RKConnectionDescription.h @@ -88,7 +88,7 @@ @param sourceToDestinationEntityAttributes A dictionary specifying how attributes on the source entity correspond to attributes on the destination entity. @return The receiver, initialized with the given relationship and attributes. */ -- (id)initWithRelationship:(NSRelationshipDescription *)relationship attributes:(NSDictionary *)sourceToDestinationEntityAttributes; +- (instancetype)initWithRelationship:(NSRelationshipDescription *)relationship attributes:(NSDictionary *)sourceToDestinationEntityAttributes; /** The dictionary of attributes specifying how attributes on the source entity for the relationship correspond to attributes on the destination entity. @@ -115,7 +115,7 @@ @param keyPath The key path from which to read the value that is to be set for the relationship. @return The receiver, initialized with the given relationship and key path. */ -- (id)initWithRelationship:(NSRelationshipDescription *)relationship keyPath:(NSString *)keyPath; +- (instancetype)initWithRelationship:(NSRelationshipDescription *)relationship keyPath:(NSString *)keyPath; /** The key path that is to be evaluated to obtain the value for the relationship. diff --git a/Code/CoreData/RKConnectionDescription.m b/Code/CoreData/RKConnectionDescription.m index 1e5a8911b2..f05dcdfd9a 100644 --- a/Code/CoreData/RKConnectionDescription.m +++ b/Code/CoreData/RKConnectionDescription.m @@ -44,7 +44,7 @@ @interface RKConnectionDescription () @implementation RKConnectionDescription -- (id)initWithRelationship:(NSRelationshipDescription *)relationship attributes:(NSDictionary *)attributes +- (instancetype)initWithRelationship:(NSRelationshipDescription *)relationship attributes:(NSDictionary *)attributes { NSParameterAssert(relationship); NSParameterAssert(attributes); @@ -63,7 +63,7 @@ - (id)initWithRelationship:(NSRelationshipDescription *)relationship attributes: return self; } -- (id)initWithRelationship:(NSRelationshipDescription *)relationship keyPath:(NSString *)keyPath +- (instancetype)initWithRelationship:(NSRelationshipDescription *)relationship keyPath:(NSString *)keyPath { NSParameterAssert(relationship); NSParameterAssert(keyPath); diff --git a/Code/CoreData/RKEntityByAttributeCache.h b/Code/CoreData/RKEntityByAttributeCache.h index 06f3faf7bc..8f4d57c312 100644 --- a/Code/CoreData/RKEntityByAttributeCache.h +++ b/Code/CoreData/RKEntityByAttributeCache.h @@ -46,7 +46,7 @@ @return The receiver, initialized with the given entity, attribute, and managed object context. */ -- (id)initWithEntity:(NSEntityDescription *)entity attributes:(NSArray *)attributeNames managedObjectContext:(NSManagedObjectContext *)context; +- (instancetype)initWithEntity:(NSEntityDescription *)entity attributes:(NSArray *)attributeNames managedObjectContext:(NSManagedObjectContext *)context; ///----------------------------- /// @name Getting Cache Identity diff --git a/Code/CoreData/RKEntityCache.h b/Code/CoreData/RKEntityCache.h index d791b86dba..2a5938fa7c 100644 --- a/Code/CoreData/RKEntityCache.h +++ b/Code/CoreData/RKEntityCache.h @@ -43,7 +43,7 @@ @param context The managed object context containing objects to be cached. @returns self, initialized with context. */ -- (id)initWithManagedObjectContext:(NSManagedObjectContext *)context; +- (instancetype)initWithManagedObjectContext:(NSManagedObjectContext *)context; /** The managed object context with which the receiver is associated. diff --git a/Code/CoreData/RKEntityCache.m b/Code/CoreData/RKEntityCache.m index 90920277d5..e9c7cea099 100644 --- a/Code/CoreData/RKEntityCache.m +++ b/Code/CoreData/RKEntityCache.m @@ -27,7 +27,6 @@ @interface RKEntityCache () @implementation RKEntityCache - - (id)initWithManagedObjectContext:(NSManagedObjectContext *)context { NSAssert(context, @"Cannot initialize entity cache with a nil context"); @@ -45,7 +44,6 @@ - (id)init return [self initWithManagedObjectContext:nil]; } - - (void)cacheObjectsForEntity:(NSEntityDescription *)entity byAttributes:(NSArray *)attributeNames { NSParameterAssert(entity); diff --git a/Code/CoreData/RKEntityMapping.h b/Code/CoreData/RKEntityMapping.h index e7a2f57529..248a11b7f1 100644 --- a/Code/CoreData/RKEntityMapping.h +++ b/Code/CoreData/RKEntityMapping.h @@ -68,7 +68,7 @@ @param entity An entity with which to initialize the receiver. @returns The receiver, initialized with the given entity. */ -- (id)initWithEntity:(NSEntityDescription *)entity; +- (instancetype)initWithEntity:(NSEntityDescription *)entity; /** A convenience initializer that creates and returns an entity mapping for the entity with the given name in @@ -83,7 +83,7 @@ @param managedObjectStore A managed object store containing the managed object model in which an entity with the given name is defined. @return A new entity mapping for the entity with the given name in the managed object model of the given managed object store. */ -+ (id)mappingForEntityForName:(NSString *)entityName inManagedObjectStore:(RKManagedObjectStore *)managedObjectStore; ++ (instancetype)mappingForEntityForName:(NSString *)entityName inManagedObjectStore:(RKManagedObjectStore *)managedObjectStore; ///--------------------------- /// @name Accessing the Entity diff --git a/Code/CoreData/RKEntityMapping.m b/Code/CoreData/RKEntityMapping.m index 8dd9bad32f..9e66610a0c 100644 --- a/Code/CoreData/RKEntityMapping.m +++ b/Code/CoreData/RKEntityMapping.m @@ -140,20 +140,20 @@ @implementation RKEntityMapping @synthesize identificationAttributes = _identificationAttributes; -+ (id)mappingForClass:(Class)objectClass ++ (instancetype)mappingForClass:(Class)objectClass { @throw [NSException exceptionWithName:NSInternalInconsistencyException reason:[NSString stringWithFormat:@"You must provide a managedObjectStore. Invoke mappingForClass:inManagedObjectStore: instead."] userInfo:nil]; } -+ (id)mappingForEntityForName:(NSString *)entityName inManagedObjectStore:(RKManagedObjectStore *)managedObjectStore ++ (instancetype)mappingForEntityForName:(NSString *)entityName inManagedObjectStore:(RKManagedObjectStore *)managedObjectStore { NSEntityDescription *entity = [[managedObjectStore.managedObjectModel entitiesByName] objectForKey:entityName]; return [[self alloc] initWithEntity:entity]; } -- (id)initWithEntity:(NSEntityDescription *)entity +- (instancetype)initWithEntity:(NSEntityDescription *)entity { NSAssert(entity, @"Cannot initialize an RKEntityMapping without an entity. Maybe you want RKObjectMapping instead?"); Class objectClass = NSClassFromString([entity managedObjectClassName]); @@ -167,7 +167,7 @@ - (id)initWithEntity:(NSEntityDescription *)entity return self; } -- (id)initWithClass:(Class)objectClass +- (instancetype)initWithClass:(Class)objectClass { self = [super initWithClass:objectClass]; if (self) { diff --git a/Code/CoreData/RKInMemoryManagedObjectCache.h b/Code/CoreData/RKInMemoryManagedObjectCache.h index 6e725752f2..73c4e167f1 100644 --- a/Code/CoreData/RKInMemoryManagedObjectCache.h +++ b/Code/CoreData/RKInMemoryManagedObjectCache.h @@ -35,6 +35,6 @@ @param managedObjectContext The managed object context with which to initialize the receiver. @return The receiver, initialized with the given managed object context. */ -- (id)initWithManagedObjectContext:(NSManagedObjectContext *)managedObjectContext; +- (instancetype)initWithManagedObjectContext:(NSManagedObjectContext *)managedObjectContext; @end diff --git a/Code/CoreData/RKManagedObjectImporter.h b/Code/CoreData/RKManagedObjectImporter.h index 38e22276c8..c855d5bc36 100644 --- a/Code/CoreData/RKManagedObjectImporter.h +++ b/Code/CoreData/RKManagedObjectImporter.h @@ -55,7 +55,7 @@ @warning As this initialization code path is typical for generating seed databases, the value of `resetsStoreBeforeImporting` is initialized to **YES**. */ -- (id)initWithManagedObjectModel:(NSManagedObjectModel *)managedObjectModel storePath:(NSString *)storePath; +- (instancetype)initWithManagedObjectModel:(NSManagedObjectModel *)managedObjectModel storePath:(NSString *)storePath; /** Initializes the receiver with a given persistent store in which to persist imported managed objects. @@ -69,7 +69,7 @@ managed object model are determined from the given persistent store and a new managed object context with the private queue concurrency type is constructed. */ -- (id)initWithPersistentStore:(NSPersistentStore *)persistentStore; +- (instancetype)initWithPersistentStore:(NSPersistentStore *)persistentStore; /** A Boolean value indicating whether existing managed objects in the persistent store should diff --git a/Code/CoreData/RKManagedObjectMappingOperationDataSource.h b/Code/CoreData/RKManagedObjectMappingOperationDataSource.h index c785ccba9f..9f8c19d9fa 100644 --- a/Code/CoreData/RKManagedObjectMappingOperationDataSource.h +++ b/Code/CoreData/RKManagedObjectMappingOperationDataSource.h @@ -42,7 +42,7 @@ @param managedObjectCache The managed object cache used by the receiver to find existing object instances by their identification attributes. @return The receiver, initialized with the given managed object context and managed objet cache. */ -- (id)initWithManagedObjectContext:(NSManagedObjectContext *)managedObjectContext cache:(id)managedObjectCache; +- (instancetype)initWithManagedObjectContext:(NSManagedObjectContext *)managedObjectContext cache:(id)managedObjectCache; ///----------------------------------------------------- /// @name Accessing the Managed Object Context and Cache diff --git a/Code/CoreData/RKManagedObjectMappingOperationDataSource.m b/Code/CoreData/RKManagedObjectMappingOperationDataSource.m index 340abe0dd2..61591bef95 100644 --- a/Code/CoreData/RKManagedObjectMappingOperationDataSource.m +++ b/Code/CoreData/RKManagedObjectMappingOperationDataSource.m @@ -128,7 +128,7 @@ @interface RKManagedObjectMappingOperationDataSource () @implementation RKManagedObjectMappingOperationDataSource -- (id)initWithManagedObjectContext:(NSManagedObjectContext *)managedObjectContext cache:(id)managedObjectCache +- (instancetype)initWithManagedObjectContext:(NSManagedObjectContext *)managedObjectContext cache:(id)managedObjectCache { NSParameterAssert(managedObjectContext); diff --git a/Code/CoreData/RKManagedObjectStore.h b/Code/CoreData/RKManagedObjectStore.h index bbf2a45e9b..54f3945875 100644 --- a/Code/CoreData/RKManagedObjectStore.h +++ b/Code/CoreData/RKManagedObjectStore.h @@ -50,7 +50,7 @@ @return The default managed object store. */ -+ (RKManagedObjectStore *)defaultStore; ++ (instancetype)defaultStore; /** Sets the default managed object store for the application. @@ -76,7 +76,7 @@ RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel]; */ -- (id)initWithManagedObjectModel:(NSManagedObjectModel *)managedObjectModel; +- (instancetype)initWithManagedObjectModel:(NSManagedObjectModel *)managedObjectModel; /** Initializes the receiver with an existing persistent store coordinator. @@ -88,7 +88,7 @@ @param persistentStoreCoordinator The persistent store coordinator with which to initialize the receiver. @return The receiver, initialized with the managed object model of the given persistent store coordinator and the persistent store coordinator. */ -- (id)initWithPersistentStoreCoordinator:(NSPersistentStoreCoordinator *)persistentStoreCoordinator; +- (instancetype)initWithPersistentStoreCoordinator:(NSPersistentStoreCoordinator *)persistentStoreCoordinator; /** Initializes the receiver with a managed object model obtained by merging the models from all of the application's non-framework bundles. @@ -98,7 +98,7 @@ @warning Obtaining a managed object model by merging all bundles may result in an application error if versioned object models are in use. */ -- (id)init; +- (instancetype)init; ///----------------------------------------------------------------------------- /// @name Configuring Persistent Stores diff --git a/Code/CoreData/RKManagedObjectStore.m b/Code/CoreData/RKManagedObjectStore.m index 2a18785d02..ee11aa4c5f 100644 --- a/Code/CoreData/RKManagedObjectStore.m +++ b/Code/CoreData/RKManagedObjectStore.m @@ -45,8 +45,7 @@ @interface RKManagedObjectStore () @implementation RKManagedObjectStore - -+ (RKManagedObjectStore *)defaultStore ++ (instancetype)defaultStore { return defaultStore; } @@ -58,7 +57,7 @@ + (void)setDefaultStore:(RKManagedObjectStore *)managedObjectStore } } -- (id)initWithManagedObjectModel:(NSManagedObjectModel *)managedObjectModel +- (instancetype)initWithManagedObjectModel:(NSManagedObjectModel *)managedObjectModel { self = [super init]; if (self) { @@ -74,7 +73,7 @@ - (id)initWithManagedObjectModel:(NSManagedObjectModel *)managedObjectModel return self; } -- (id)initWithPersistentStoreCoordinator:(NSPersistentStoreCoordinator *)persistentStoreCoordinator +- (instancetype)initWithPersistentStoreCoordinator:(NSPersistentStoreCoordinator *)persistentStoreCoordinator { self = [self initWithManagedObjectModel:persistentStoreCoordinator.managedObjectModel]; if (self) { diff --git a/Code/CoreData/RKRelationshipConnectionOperation.h b/Code/CoreData/RKRelationshipConnectionOperation.h index 5fc0cf3735..6be6081afb 100644 --- a/Code/CoreData/RKRelationshipConnectionOperation.h +++ b/Code/CoreData/RKRelationshipConnectionOperation.h @@ -44,9 +44,9 @@ @param managedObjectCache The managed object cache from which to attempt to fetch a matching object to satisfy the connection. @return The receiver, initialized with the given managed object, connection mapping, and managed object cache. */ -- (id)initWithManagedObject:(NSManagedObject *)managedObject - connection:(RKConnectionDescription *)connection - managedObjectCache:(id)managedObjectCache; +- (instancetype)initWithManagedObject:(NSManagedObject *)managedObject + connection:(RKConnectionDescription *)connection + managedObjectCache:(id)managedObjectCache; ///-------------------------------------------- /// @name Accessing Details About the Operation diff --git a/Code/CoreData/RKRelationshipConnectionOperation.m b/Code/CoreData/RKRelationshipConnectionOperation.m index 9d9e16074f..0817a6b023 100644 --- a/Code/CoreData/RKRelationshipConnectionOperation.m +++ b/Code/CoreData/RKRelationshipConnectionOperation.m @@ -65,9 +65,9 @@ @interface RKRelationshipConnectionOperation () @implementation RKRelationshipConnectionOperation -- (id)initWithManagedObject:(NSManagedObject *)managedObject - connection:(RKConnectionDescription *)connection - managedObjectCache:(id)managedObjectCache; +- (instancetype)initWithManagedObject:(NSManagedObject *)managedObject + connection:(RKConnectionDescription *)connection + managedObjectCache:(id)managedObjectCache; { NSParameterAssert(managedObject); NSAssert([managedObject isKindOfClass:[NSManagedObject class]], @"Relationship connection requires an instance of NSManagedObject"); diff --git a/Code/Network/RKObjectManager.h b/Code/Network/RKObjectManager.h index b9808982b5..217496cbf1 100644 --- a/Code/Network/RKObjectManager.h +++ b/Code/Network/RKObjectManager.h @@ -231,7 +231,7 @@ RKMappingResult, RKRequestDescriptor, RKResponseDescriptor; @return The shared manager instance. */ -+ (RKObjectManager *)sharedManager; ++ (instancetype)sharedManager; /** Set the shared instance of the object manager @@ -252,7 +252,7 @@ RKMappingResult, RKRequestDescriptor, RKResponseDescriptor; @param baseURL The base URL with which to initialize the `AFHTTPClient` object @return A new `RKObjectManager` initialized with an `AFHTTPClient` that was initialized with the given baseURL. */ -+ (id)managerWithBaseURL:(NSURL *)baseURL; ++ (instancetype)managerWithBaseURL:(NSURL *)baseURL; /** Initializes the receiver with the given AFNetworking HTTP client object, adopting the network configuration from the client. @@ -262,7 +262,7 @@ RKMappingResult, RKRequestDescriptor, RKResponseDescriptor; @param client The AFNetworking HTTP client with which to initialize the receiver. @return The receiver, initialized with the given client. */ -- (id)initWithHTTPClient:(AFHTTPClient *)client; +- (instancetype)initWithHTTPClient:(AFHTTPClient *)client; ///------------------------------------------ /// @name Accessing Object Manager Properties diff --git a/Code/Network/RKObjectManager.m b/Code/Network/RKObjectManager.m index 8044cb1425..9cb1c629e2 100644 --- a/Code/Network/RKObjectManager.m +++ b/Code/Network/RKObjectManager.m @@ -223,7 +223,7 @@ - (id)initWithHTTPClient:(AFHTTPClient *)client return self; } -+ (RKObjectManager *)sharedManager ++ (instancetype)sharedManager { return sharedManager; } @@ -381,7 +381,7 @@ - (RKManagedObjectRequestOperation *)managedObjectRequestOperationWithRequest:(N { RKManagedObjectRequestOperation *operation = [[RKManagedObjectRequestOperation alloc] initWithHTTPRequestOperation:[self HTTPOperationWithRequest:request] responseDescriptors:self.responseDescriptors]; [operation setCompletionBlockWithSuccess:success failure:failure]; - operation.managedObjectContext = managedObjectContext; + operation.managedObjectContext = managedObjectContext ?: self.managedObjectStore.mainQueueManagedObjectContext; operation.managedObjectCache = self.managedObjectStore.managedObjectCache; operation.fetchRequestBlocks = self.fetchRequestBlocks; return operation; diff --git a/Code/Network/RKObjectRequestOperation.h b/Code/Network/RKObjectRequestOperation.h index e1e725e2d8..6f11e4da9f 100644 --- a/Code/Network/RKObjectRequestOperation.h +++ b/Code/Network/RKObjectRequestOperation.h @@ -73,7 +73,7 @@ @param responseDescriptors An array of `RKResponseDescriptor` objects specifying how object mapping is to be performed on the response loaded by the network operation. @return The receiver, initialized with the given request and response descriptors. */ -- (id)initWithHTTPRequestOperation:(RKHTTPRequestOperation *)requestOperation responseDescriptors:(NSArray *)responseDescriptors; +- (instancetype)initWithHTTPRequestOperation:(RKHTTPRequestOperation *)requestOperation responseDescriptors:(NSArray *)responseDescriptors; /** Initializes an object request operation with a request object and a set of response descriptors. @@ -87,7 +87,7 @@ @param responseDescriptors An array of `RKResponseDescriptor` objects specifying how object mapping is to be performed on the response loaded by the network operation. @return The receiver, initialized with the given request and response descriptors. */ -- (id)initWithRequest:(NSURLRequest *)request responseDescriptors:(NSArray *)responseDescriptors; +- (instancetype)initWithRequest:(NSURLRequest *)request responseDescriptors:(NSArray *)responseDescriptors; ///--------------------------------- /// @name Configuring Object Mapping diff --git a/Code/Network/RKPaginator.h b/Code/Network/RKPaginator.h index ada67ed97b..99cde3e70c 100644 --- a/Code/Network/RKPaginator.h +++ b/Code/Network/RKPaginator.h @@ -56,9 +56,9 @@ @param responseDescriptors An array of response descriptors describing how to map object representations loaded by object request operations dispatched by the paginator. @return The receiver, initialized with the request, pagination mapping, and response descriptors. */ -- (id)initWithRequest:(NSURLRequest *)request - paginationMapping:(RKObjectMapping *)paginationMapping - responseDescriptors:(NSArray *)responseDescriptors; +- (instancetype)initWithRequest:(NSURLRequest *)request + paginationMapping:(RKObjectMapping *)paginationMapping + responseDescriptors:(NSArray *)responseDescriptors; /** A URL with a path pattern for building a complete URL from diff --git a/Code/Network/RKRequestDescriptor.h b/Code/Network/RKRequestDescriptor.h index 44072d32d6..2e7c05c50b 100644 --- a/Code/Network/RKRequestDescriptor.h +++ b/Code/Network/RKRequestDescriptor.h @@ -46,9 +46,9 @@ @see [RKObjectMapping requestMapping] @warning An exception will be raised if the objectClass of the given mapping is not `[NSMutableDictionary class]`. */ -+ (id)requestDescriptorWithMapping:(RKMapping *)mapping - objectClass:(Class)objectClass - rootKeyPath:(NSString *)rootKeyPath; ++ (instancetype)requestDescriptorWithMapping:(RKMapping *)mapping + objectClass:(Class)objectClass + rootKeyPath:(NSString *)rootKeyPath; ///----------------------------------------------------- /// @name Getting Information About a Request Descriptor diff --git a/Code/Network/RKRequestDescriptor.m b/Code/Network/RKRequestDescriptor.m index 6eb6c65f0f..aa24f0c26d 100644 --- a/Code/Network/RKRequestDescriptor.m +++ b/Code/Network/RKRequestDescriptor.m @@ -52,7 +52,7 @@ @interface RKRequestDescriptor () @implementation RKRequestDescriptor -+ (id)requestDescriptorWithMapping:(RKMapping *)mapping objectClass:(Class)objectClass rootKeyPath:(NSString *)rootKeyPath ++ (instancetype)requestDescriptorWithMapping:(RKMapping *)mapping objectClass:(Class)objectClass rootKeyPath:(NSString *)rootKeyPath { NSParameterAssert(mapping); NSParameterAssert(objectClass); diff --git a/Code/Network/RKResponseDescriptor.h b/Code/Network/RKResponseDescriptor.h index 48f85cae01..38993880bc 100644 --- a/Code/Network/RKResponseDescriptor.h +++ b/Code/Network/RKResponseDescriptor.h @@ -41,10 +41,10 @@ @param statusCodes A set of HTTP status codes for which the mapping is to be used. @return A new `RKResponseDescriptor` object. */ -+ (RKResponseDescriptor *)responseDescriptorWithMapping:(RKMapping *)mapping - pathPattern:(NSString *)pathPattern - keyPath:(NSString *)keyPath - statusCodes:(NSIndexSet *)statusCodes; ++ (instancetype)responseDescriptorWithMapping:(RKMapping *)mapping + pathPattern:(NSString *)pathPattern + keyPath:(NSString *)keyPath + statusCodes:(NSIndexSet *)statusCodes; ///------------------------------------------------------ /// @name Getting Information About a Response Descriptor diff --git a/Code/Network/RKResponseDescriptor.m b/Code/Network/RKResponseDescriptor.m index b19621ce6b..d8cc8179f1 100644 --- a/Code/Network/RKResponseDescriptor.m +++ b/Code/Network/RKResponseDescriptor.m @@ -65,10 +65,10 @@ @interface RKResponseDescriptor () @implementation RKResponseDescriptor -+ (RKResponseDescriptor *)responseDescriptorWithMapping:(RKMapping *)mapping - pathPattern:(NSString *)pathPattern - keyPath:(NSString *)keyPath - statusCodes:(NSIndexSet *)statusCodes ++ (instancetype)responseDescriptorWithMapping:(RKMapping *)mapping + pathPattern:(NSString *)pathPattern + keyPath:(NSString *)keyPath + statusCodes:(NSIndexSet *)statusCodes { NSParameterAssert(mapping); RKResponseDescriptor *mappingDescriptor = [self new]; diff --git a/Code/Network/RKResponseMapperOperation.h b/Code/Network/RKResponseMapperOperation.h index 703f452346..34328465ee 100644 --- a/Code/Network/RKResponseMapperOperation.h +++ b/Code/Network/RKResponseMapperOperation.h @@ -53,9 +53,9 @@ @param responseDescriptors An array whose elements are `RKResponseDescriptor` objects specifying object mapping configurations that may be applied to the response. @return The receiver, initialized with the response, data, and response descriptor objects. */ -- (id)initWithResponse:(NSHTTPURLResponse *)response - data:(NSData *)data - responseDescriptors:(NSArray *)responseDescriptors; +- (instancetype)initWithResponse:(NSHTTPURLResponse *)response + data:(NSData *)data + responseDescriptors:(NSArray *)responseDescriptors; ///------------------------------ /// @name Accessing Response Data diff --git a/Code/Network/RKRoute.h b/Code/Network/RKRoute.h index d7536bf334..2d38d7eecb 100644 --- a/Code/Network/RKRoute.h +++ b/Code/Network/RKRoute.h @@ -48,7 +48,7 @@ @param method The request method of the route. @return A new named route object with the given name, path pattern and request method. */ -+ (id)routeWithName:(NSString *)name pathPattern:(NSString *)pathPattern method:(RKRequestMethod)method; ++ (instancetype)routeWithName:(NSString *)name pathPattern:(NSString *)pathPattern method:(RKRequestMethod)method; /** Creates and returns a new class route object with the given object class, path pattern and method. @@ -58,7 +58,7 @@ @param method The request method of the route. @return A new class route object with the given object class, path pattern and request method. */ -+ (id)routeWithClass:(Class)objectClass pathPattern:(NSString *)pathPattern method:(RKRequestMethod)method; ++ (instancetype)routeWithClass:(Class)objectClass pathPattern:(NSString *)pathPattern method:(RKRequestMethod)method; /** Creates and returns a new relationship route object with the given relationship name, object class, path pattern and method. @@ -69,7 +69,7 @@ @param method The request method of the route. @return A new class route object with the given object class, path pattern and request method. */ -+ (id)routeWithRelationshipName:(NSString *)name objectClass:(Class)objectClass pathPattern:(NSString *)pathPattern method:(RKRequestMethod)method; ++ (instancetype)routeWithRelationshipName:(NSString *)name objectClass:(Class)objectClass pathPattern:(NSString *)pathPattern method:(RKRequestMethod)method; ///--------------------------------- /// @name Accessing Route Attributes diff --git a/Code/Network/RKRoute.m b/Code/Network/RKRoute.m index e29e98a808..94d6323a20 100644 --- a/Code/Network/RKRoute.m +++ b/Code/Network/RKRoute.m @@ -38,7 +38,7 @@ @interface RKRelationshipRoute : RKRoute @implementation RKRoute -+ (id)routeWithName:(NSString *)name pathPattern:(NSString *)pathPattern method:(RKRequestMethod)method ++ (instancetype)routeWithName:(NSString *)name pathPattern:(NSString *)pathPattern method:(RKRequestMethod)method { NSParameterAssert(name); NSParameterAssert(pathPattern); @@ -49,7 +49,7 @@ + (id)routeWithName:(NSString *)name pathPattern:(NSString *)pathPattern method: return route; } -+ (id)routeWithClass:(Class)objectClass pathPattern:(NSString *)pathPattern method:(RKRequestMethod)method ++ (instancetype)routeWithClass:(Class)objectClass pathPattern:(NSString *)pathPattern method:(RKRequestMethod)method { NSParameterAssert(objectClass); NSParameterAssert(pathPattern); @@ -60,7 +60,7 @@ + (id)routeWithClass:(Class)objectClass pathPattern:(NSString *)pathPattern meth return route; } -+ (id)routeWithRelationshipName:(NSString *)relationshipName objectClass:(Class)objectClass pathPattern:(NSString *)pathPattern method:(RKRequestMethod)method ++ (instancetype)routeWithRelationshipName:(NSString *)relationshipName objectClass:(Class)objectClass pathPattern:(NSString *)pathPattern method:(RKRequestMethod)method { NSParameterAssert(relationshipName); NSParameterAssert(objectClass); diff --git a/Code/Network/RKRouter.h b/Code/Network/RKRouter.h index 4bb3cdb4a4..3a8c322e2c 100644 --- a/Code/Network/RKRouter.h +++ b/Code/Network/RKRouter.h @@ -49,7 +49,7 @@ @param baseURL The base URL with which to initialize the receiver. @return The receiver, initialized with the given base URL. */ -- (id)initWithBaseURL:(NSURL *)baseURL; +- (instancetype)initWithBaseURL:(NSURL *)baseURL; ///---------------------- /// @name Generating URLs diff --git a/Code/ObjectMapping/RKAttributeMapping.h b/Code/ObjectMapping/RKAttributeMapping.h index deb461f4c6..4573da276b 100644 --- a/Code/ObjectMapping/RKAttributeMapping.h +++ b/Code/ObjectMapping/RKAttributeMapping.h @@ -55,6 +55,6 @@ @param destinationKeyPath The key path on the destination object on which to set the mapped data. @return A newly created attribute mapping object that is ready to be added to an object mapping. */ -+ (RKAttributeMapping *)attributeMappingFromKeyPath:(NSString *)sourceKeyPath toKeyPath:(NSString *)destinationKeyPath; ++ (instancetype)attributeMappingFromKeyPath:(NSString *)sourceKeyPath toKeyPath:(NSString *)destinationKeyPath; @end diff --git a/Code/ObjectMapping/RKAttributeMapping.m b/Code/ObjectMapping/RKAttributeMapping.m index 3a479f328d..80ef7adeb0 100644 --- a/Code/ObjectMapping/RKAttributeMapping.m +++ b/Code/ObjectMapping/RKAttributeMapping.m @@ -27,7 +27,7 @@ @interface RKAttributeMapping () @implementation RKAttributeMapping -+ (RKAttributeMapping *)attributeMappingFromKeyPath:(NSString *)sourceKeyPath toKeyPath:(NSString *)destinationKeyPath ++ (instancetype)attributeMappingFromKeyPath:(NSString *)sourceKeyPath toKeyPath:(NSString *)destinationKeyPath { NSParameterAssert(sourceKeyPath); NSParameterAssert(destinationKeyPath); diff --git a/Code/ObjectMapping/RKMapperOperation.h b/Code/ObjectMapping/RKMapperOperation.h index b818d17af5..b2a1b233fd 100644 --- a/Code/ObjectMapping/RKMapperOperation.h +++ b/Code/ObjectMapping/RKMapperOperation.h @@ -79,7 +79,7 @@ @param mappingsDictionary An `NSDictionary` wherein the keys are mappable key paths in `object` and the values are `RKMapping` objects specifying how the representations at its key path are to be mapped. @return The receiver, initialized with the given object and and dictionary of key paths to mappings. */ -- (id)initWithRepresentation:(id)representation mappingsDictionary:(NSDictionary *)mappingsDictionary; +- (instancetype)initWithRepresentation:(id)representation mappingsDictionary:(NSDictionary *)mappingsDictionary; ///------------------------------------------ /// @name Accessing Mapping Result and Errors diff --git a/Code/ObjectMapping/RKMappingOperation.h b/Code/ObjectMapping/RKMappingOperation.h index 344980d458..df60662ebf 100644 --- a/Code/ObjectMapping/RKMappingOperation.h +++ b/Code/ObjectMapping/RKMappingOperation.h @@ -147,7 +147,7 @@ @param objectOrDynamicMapping An instance of `RKObjectMapping` or `RKDynamicMapping` defining how the mapping is to be performed. @return The receiver, initialized with a source object, a destination object, and a mapping. */ -- (id)initWithSourceObject:(id)sourceObject destinationObject:(id)destinationObject mapping:(RKMapping *)objectOrDynamicMapping; +- (instancetype)initWithSourceObject:(id)sourceObject destinationObject:(id)destinationObject mapping:(RKMapping *)objectOrDynamicMapping; ///-------------------------------------- /// @name Accessing Mapping Configuration diff --git a/Code/ObjectMapping/RKMappingResult.h b/Code/ObjectMapping/RKMappingResult.h index de53e4db47..b4d7bce9a8 100644 --- a/Code/ObjectMapping/RKMappingResult.h +++ b/Code/ObjectMapping/RKMappingResult.h @@ -35,7 +35,7 @@ @param dictionary A dictionary wherein the keys represent mapped key paths and the values represent the objects mapped at those key paths. Cannot be nil. @return The receiver, initialized with the given dictionary. */ -- (id)initWithDictionary:(NSDictionary *)dictionary; +- (instancetype)initWithDictionary:(NSDictionary *)dictionary; ///---------------------------------------- /// @name Retrieving Result Representations diff --git a/Code/ObjectMapping/RKObjectMapping.h b/Code/ObjectMapping/RKObjectMapping.h index bb20f9d497..d4b735e983 100644 --- a/Code/ObjectMapping/RKObjectMapping.h +++ b/Code/ObjectMapping/RKObjectMapping.h @@ -75,7 +75,7 @@ @param objectClass The class that the mapping targets. @return A new mapping object. */ -+ (id)mappingForClass:(Class)objectClass; ++ (instancetype)mappingForClass:(Class)objectClass; /** Initializes the receiver with a given object class. This is the designated initializer. @@ -83,7 +83,7 @@ @param objectClass The class that the mapping targets. Cannot be `nil`. @return The receiver, initialized with the given class. */ -- (id)initWithClass:(Class)objectClass; +- (instancetype)initWithClass:(Class)objectClass; /** Returns an object mapping with an `objectClass` of `NSMutableDictionary`. @@ -94,7 +94,7 @@ @see `RKObjectParameterization` @see `RKObjectManager` */ -+ (id)requestMapping; ++ (instancetype)requestMapping; ///--------------------------------- /// @name Managing Property Mappings @@ -298,7 +298,7 @@ quickly generate a corresponding serialization mapping from a configured object mapping. The inverse mapping will have the source and destination keyPaths swapped for all attribute and relationship mappings. */ -- (RKObjectMapping *)inverseMapping; +- (instancetype)inverseMapping; ///--------------------------------------------------- /// @name Obtaining Information About the Target Class @@ -313,7 +313,6 @@ @return The class of the property. */ - (Class)classForProperty:(NSString *)propertyName; -// TODO: Can I eliminate this and just use classForKeyPath:???? /** Returns the class of the attribute or relationship property of the target `objectClass` at the given key path. diff --git a/Code/ObjectMapping/RKObjectMapping.m b/Code/ObjectMapping/RKObjectMapping.m index 2ecf4b56cf..8eb74ed642 100644 --- a/Code/ObjectMapping/RKObjectMapping.m +++ b/Code/ObjectMapping/RKObjectMapping.m @@ -51,12 +51,12 @@ @interface RKObjectMapping () @implementation RKObjectMapping -+ (id)mappingForClass:(Class)objectClass ++ (instancetype)mappingForClass:(Class)objectClass { return [[self alloc] initWithClass:objectClass]; } -+ (id)requestMapping ++ (instancetype)requestMapping { return [self mappingForClass:[NSMutableDictionary class]]; } @@ -264,7 +264,7 @@ - (void)removePropertyMapping:(RKPropertyMapping *)attributeOrRelationshipMappin } } -- (RKObjectMapping *)inverseMappingAtDepth:(NSInteger)depth +- (instancetype)inverseMappingAtDepth:(NSInteger)depth { NSAssert(depth < RKObjectMappingMaximumInverseMappingRecursionDepth, @"Exceeded max recursion level in inverseMapping. This is likely due to a loop in the serialization graph. To break this loop, specify one-way relationships by setting serialize to NO in mapKeyPath:toRelationship:withObjectMapping:serialize:"); RKObjectMapping *inverseMapping = [RKObjectMapping mappingForClass:[NSMutableDictionary class]]; @@ -284,7 +284,7 @@ - (RKObjectMapping *)inverseMappingAtDepth:(NSInteger)depth return inverseMapping; } -- (RKObjectMapping *)inverseMapping +- (instancetype)inverseMapping { return [self inverseMappingAtDepth:0]; } diff --git a/Code/ObjectMapping/RKRelationshipMapping.h b/Code/ObjectMapping/RKRelationshipMapping.h index e40db308b3..decd8cd017 100644 --- a/Code/ObjectMapping/RKRelationshipMapping.h +++ b/Code/ObjectMapping/RKRelationshipMapping.h @@ -42,7 +42,7 @@ @param destinationKeyPath The key path on the destination object to set the object mapped results. @param mapping A mapping object describing how to map the data retrieved from `sourceKeyPath` that is to be set on `destinationKeyPath`. */ -+ (RKRelationshipMapping *)relationshipMappingFromKeyPath:(NSString *)sourceKeyPath toKeyPath:(NSString *)destinationKeyPath withMapping:(RKMapping *)mapping; ++ (instancetype)relationshipMappingFromKeyPath:(NSString *)sourceKeyPath toKeyPath:(NSString *)destinationKeyPath withMapping:(RKMapping *)mapping; ///---------------------------------------- /// @name Accessing the Destination Mapping diff --git a/Code/ObjectMapping/RKRelationshipMapping.m b/Code/ObjectMapping/RKRelationshipMapping.m index 254eda902f..cd90925127 100644 --- a/Code/ObjectMapping/RKRelationshipMapping.m +++ b/Code/ObjectMapping/RKRelationshipMapping.m @@ -29,7 +29,7 @@ @interface RKRelationshipMapping () @implementation RKRelationshipMapping -+ (RKRelationshipMapping *)relationshipMappingFromKeyPath:(NSString *)sourceKeyPath toKeyPath:(NSString *)destinationKeyPath withMapping:(RKMapping *)mapping ++ (instancetype)relationshipMappingFromKeyPath:(NSString *)sourceKeyPath toKeyPath:(NSString *)destinationKeyPath withMapping:(RKMapping *)mapping { RKRelationshipMapping *relationshipMapping = [self new]; relationshipMapping.sourceKeyPath = sourceKeyPath; diff --git a/Code/Support/RKDotNetDateFormatter.h b/Code/Support/RKDotNetDateFormatter.h index 9eaaded4c8..03bc2b4b32 100644 --- a/Code/Support/RKDotNetDateFormatter.h +++ b/Code/Support/RKDotNetDateFormatter.h @@ -37,7 +37,7 @@ @return An autoreleased `RKDotNetDateFormatter` object @see dotNetDateFormatter */ -+ (RKDotNetDateFormatter *)dotNetDateFormatterWithTimeZone:(NSTimeZone *)timeZone; ++ (instancetype)dotNetDateFormatterWithTimeZone:(NSTimeZone *)timeZone; /** Returns an `NSDate` object from an ASP.NET style date string respresentation, as seen in JSON. diff --git a/Code/Support/RKDotNetDateFormatter.m b/Code/Support/RKDotNetDateFormatter.m index 2a98a4e033..96ce68e9ff 100644 --- a/Code/Support/RKDotNetDateFormatter.m +++ b/Code/Support/RKDotNetDateFormatter.m @@ -33,9 +33,9 @@ - (NSString *)millisecondsFromString:(NSString *)string; @implementation RKDotNetDateFormatter -+ (RKDotNetDateFormatter *)dotNetDateFormatterWithTimeZone:(NSTimeZone *)newTimeZone ++ (instancetype)dotNetDateFormatterWithTimeZone:(NSTimeZone *)newTimeZone { - RKDotNetDateFormatter *formatter = [[RKDotNetDateFormatter alloc] init]; + RKDotNetDateFormatter *formatter = [self new]; if (newTimeZone) formatter.timeZone = newTimeZone; return formatter; } diff --git a/Code/Support/RKPathMatcher.h b/Code/Support/RKPathMatcher.h index 72fef5af92..1eaa8aaf99 100644 --- a/Code/Support/RKPathMatcher.h +++ b/Code/Support/RKPathMatcher.h @@ -40,7 +40,7 @@ @param pathString The string to evaluate and parse, such as `/districts/tx/upper/?apikey=GC5512354` @return An instantiated `RKPathMatcher` without an established pattern. */ -+ (RKPathMatcher *)pathMatcherWithPath:(NSString *)pathString; ++ (instancetype)pathMatcherWithPath:(NSString *)pathString; /** Determines if the path string matches the provided pattern, and yields a dictionary with the resulting matched key/value pairs. Use of this method should be preceded by `pathMatcherWithPath:` Pattern strings should include encoded parameter keys, delimited by a single colon at the beginning of the key name. @@ -74,7 +74,7 @@ @param patternString The pattern to use for evaluating, such as `/:entityName/:stateID/:chamber/` @return An instantiated `RKPathMatcher` with an established pattern. */ -+ (RKPathMatcher *)pathMatcherWithPattern:(NSString *)patternString; ++ (instancetype)pathMatcherWithPattern:(NSString *)patternString; /** Determines if the given path string matches a pattern, and yields a dictionary with the resulting matched key/value pairs. Use of this method should be preceded by `pathMatcherWithPattern:`. diff --git a/Code/Support/RKPathMatcher.m b/Code/Support/RKPathMatcher.m index 85d94276f3..c3357cd43c 100644 --- a/Code/Support/RKPathMatcher.m +++ b/Code/Support/RKPathMatcher.m @@ -59,18 +59,18 @@ - (id)copyWithZone:(NSZone *)zone return copy; } -+ (RKPathMatcher *)pathMatcherWithPattern:(NSString *)patternString ++ (instancetype)pathMatcherWithPattern:(NSString *)patternString { NSAssert(patternString != NULL, @"Pattern string must not be empty in order to perform pattern matching."); - RKPathMatcher *matcher = [[RKPathMatcher alloc] init]; + RKPathMatcher *matcher = [self new]; matcher.socPattern = [SOCPattern patternWithString:patternString]; matcher.patternString = patternString; return matcher; } -+ (RKPathMatcher *)pathMatcherWithPath:(NSString *)pathString ++ (instancetype)pathMatcherWithPath:(NSString *)pathString { - RKPathMatcher *matcher = [[RKPathMatcher alloc] init]; + RKPathMatcher *matcher = [self new]; matcher.sourcePath = pathString; matcher.rootPath = pathString; return matcher; diff --git a/Code/Testing/RKConnectionTestExpectation.h b/Code/Testing/RKConnectionTestExpectation.h index e8f9910c6d..5ad9a60a7e 100644 --- a/Code/Testing/RKConnectionTestExpectation.h +++ b/Code/Testing/RKConnectionTestExpectation.h @@ -40,7 +40,7 @@ @param value The value that is expected to be set for the relationship when the connection is established. @return A newly constructed connection expectation, initialized with the given relationship name, attributes dictionary, and expected value. */ -+ (id)expectationWithRelationshipName:(NSString *)relationshipName attributes:(NSDictionary *)attributes value:(id)value; ++ (instancetype)expectationWithRelationshipName:(NSString *)relationshipName attributes:(NSDictionary *)attributes value:(id)value; /** Initializes the receiver with the given relationship name, attributes dictionary, and value. @@ -50,7 +50,7 @@ @param value The value that is expected to be set for the relationship when the connection is established. @return The receiver, initialized with the given relationship name, attributes dictionary, and expected value. */ -- (id)initWithRelationshipName:(NSString *)relationshipName attributes:(NSDictionary *)attributes value:(id)value; +- (instancetype)initWithRelationshipName:(NSString *)relationshipName attributes:(NSDictionary *)attributes value:(id)value; ///------------------------------------ /// @name Accessing Expectation Details diff --git a/Code/Testing/RKConnectionTestExpectation.m b/Code/Testing/RKConnectionTestExpectation.m index ff4250ea6e..4f2a3af9f2 100644 --- a/Code/Testing/RKConnectionTestExpectation.m +++ b/Code/Testing/RKConnectionTestExpectation.m @@ -30,12 +30,12 @@ @interface RKConnectionTestExpectation () @implementation RKConnectionTestExpectation -+ (id)expectationWithRelationshipName:(NSString *)relationshipName attributes:(NSDictionary *)attributes value:(id)value ++ (instancetype)expectationWithRelationshipName:(NSString *)relationshipName attributes:(NSDictionary *)attributes value:(id)value { return [[self alloc] initWithRelationshipName:relationshipName attributes:attributes value:value]; } -- (id)initWithRelationshipName:(NSString *)relationshipName attributes:(NSDictionary *)attributes value:(id)value +- (instancetype)initWithRelationshipName:(NSString *)relationshipName attributes:(NSDictionary *)attributes value:(id)value { NSParameterAssert(relationshipName); NSAssert(value == nil || diff --git a/Code/Testing/RKMappingTest.h b/Code/Testing/RKMappingTest.h index d92d4d30fa..9c6d0f0df1 100644 --- a/Code/Testing/RKMappingTest.h +++ b/Code/Testing/RKMappingTest.h @@ -95,7 +95,7 @@ extern NSString * const RKMappingTestExpectationErrorKey; @param destinationObject The destionation object being to. @return A new mapping test object for a mapping, a source object and a destination object. */ -+ (RKMappingTest *)testForMapping:(RKMapping *)mapping sourceObject:(id)sourceObject destinationObject:(id)destinationObject; ++ (instancetype)testForMapping:(RKMapping *)mapping sourceObject:(id)sourceObject destinationObject:(id)destinationObject; /** Initializes the receiver with a given object mapping, source object, and destination object. @@ -105,7 +105,7 @@ extern NSString * const RKMappingTestExpectationErrorKey; @param destinationObject The destionation object being to. @return The receiver, initialized with mapping, sourceObject and destinationObject. */ -- (id)initWithMapping:(RKMapping *)mapping sourceObject:(id)sourceObject destinationObject:(id)destinationObject; +- (instancetype)initWithMapping:(RKMapping *)mapping sourceObject:(id)sourceObject destinationObject:(id)destinationObject; ///---------------------------- /// @name Managing Expectations diff --git a/Code/Testing/RKMappingTest.m b/Code/Testing/RKMappingTest.m index 06007e0b03..a6464bcbef 100644 --- a/Code/Testing/RKMappingTest.m +++ b/Code/Testing/RKMappingTest.m @@ -130,7 +130,7 @@ - (void)verifyExpectation:(RKPropertyMappingTestExpectation *)expectation; @implementation RKMappingTest -+ (RKMappingTest *)testForMapping:(RKMapping *)mapping sourceObject:(id)sourceObject destinationObject:(id)destinationObject ++ (instancetype)testForMapping:(RKMapping *)mapping sourceObject:(id)sourceObject destinationObject:(id)destinationObject { return [[self alloc] initWithMapping:mapping sourceObject:sourceObject destinationObject:destinationObject]; } diff --git a/Code/Testing/RKPropertyMappingTestExpectation.h b/Code/Testing/RKPropertyMappingTestExpectation.h index f7962d65fa..58b0f8567e 100644 --- a/Code/Testing/RKPropertyMappingTestExpectation.h +++ b/Code/Testing/RKPropertyMappingTestExpectation.h @@ -48,7 +48,7 @@ typedef BOOL (^RKMappingTestExpectationEvaluationBlock)(RKPropertyMappingTestExp @param destinationKeyPath A key path on the destination object that should be mapped onto. @return An expectation specifying that sourceKeyPath should be mapped to destinationKeyPath. */ -+ (RKPropertyMappingTestExpectation *)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath; ++ (instancetype)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath; /** Creates and returns a new expectation specifying that a key path in a source object should be mapped to another key path on a destination object with a given value. @@ -58,7 +58,7 @@ typedef BOOL (^RKMappingTestExpectationEvaluationBlock)(RKPropertyMappingTestExp @param value The value that is expected to be assigned to the destination object at destinationKeyPath. @return An expectation specifying that sourceKeyPath should be mapped to destinationKeyPath with value. */ -+ (RKPropertyMappingTestExpectation *)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath value:(id)value; ++ (instancetype)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath value:(id)value; /** Creates and returns a new expectation specifying that a key path in a source object should be mapped to another key path on a destinaton object and that the attribute mapping and value should evaluate to true with a given block. @@ -68,7 +68,7 @@ typedef BOOL (^RKMappingTestExpectationEvaluationBlock)(RKPropertyMappingTestExp @param evaluationBlock A block with which to evaluate the success of the mapping. @return An expectation specifying that sourceKeyPath should be mapped to destinationKeyPath with value. */ -+ (RKPropertyMappingTestExpectation *)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath evaluationBlock:(RKMappingTestExpectationEvaluationBlock)evaluationBlock; ++ (instancetype)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath evaluationBlock:(RKMappingTestExpectationEvaluationBlock)evaluationBlock; /** Creates and returns a new expectation specifying that a key path in a source object should be mapped to another key path on a destinaton object using a specific object mapping for the relationship. @@ -78,7 +78,7 @@ typedef BOOL (^RKMappingTestExpectationEvaluationBlock)(RKPropertyMappingTestExp @param mapping An object mapping that is expected to be used for mapping the nested relationship. @return An expectation specifying that sourceKeyPath should be mapped to destinationKeyPath using a specific object mapping. */ -+ (RKPropertyMappingTestExpectation *)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath mapping:(RKMapping *)mapping; ++ (instancetype)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath mapping:(RKMapping *)mapping; ///------------------------- /// @name Expectation Values diff --git a/Code/Testing/RKPropertyMappingTestExpectation.m b/Code/Testing/RKPropertyMappingTestExpectation.m index 6b016f58dc..8023f57426 100644 --- a/Code/Testing/RKPropertyMappingTestExpectation.m +++ b/Code/Testing/RKPropertyMappingTestExpectation.m @@ -31,7 +31,7 @@ @interface RKPropertyMappingTestExpectation () @implementation RKPropertyMappingTestExpectation -+ (RKPropertyMappingTestExpectation *)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath ++ (instancetype)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath { RKPropertyMappingTestExpectation *expectation = [self new]; expectation.sourceKeyPath = sourceKeyPath; @@ -40,7 +40,7 @@ + (RKPropertyMappingTestExpectation *)expectationWithSourceKeyPath:(NSString *)s return expectation; } -+ (RKPropertyMappingTestExpectation *)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath value:(id)value ++ (instancetype)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath value:(id)value { RKPropertyMappingTestExpectation *expectation = [self new]; expectation.sourceKeyPath = sourceKeyPath; @@ -50,7 +50,7 @@ + (RKPropertyMappingTestExpectation *)expectationWithSourceKeyPath:(NSString *)s return expectation; } -+ (RKPropertyMappingTestExpectation *)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath evaluationBlock:(RKMappingTestExpectationEvaluationBlock)evaluationBlock ++ (instancetype)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath evaluationBlock:(RKMappingTestExpectationEvaluationBlock)evaluationBlock { RKPropertyMappingTestExpectation *expectation = [self new]; expectation.sourceKeyPath = sourceKeyPath; @@ -60,7 +60,7 @@ + (RKPropertyMappingTestExpectation *)expectationWithSourceKeyPath:(NSString *)s return expectation; } -+ (RKPropertyMappingTestExpectation *)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath mapping:(RKMapping *)mapping ++ (instancetype)expectationWithSourceKeyPath:(NSString *)sourceKeyPath destinationKeyPath:(NSString *)destinationKeyPath mapping:(RKMapping *)mapping { RKPropertyMappingTestExpectation *expectation = [self new]; expectation.sourceKeyPath = sourceKeyPath; diff --git a/Tests/Logic/ObjectMapping/RKMappingOperationTest.m b/Tests/Logic/ObjectMapping/RKMappingOperationTest.m index a89864c820..fa6d5a1f5a 100644 --- a/Tests/Logic/ObjectMapping/RKMappingOperationTest.m +++ b/Tests/Logic/ObjectMapping/RKMappingOperationTest.m @@ -434,7 +434,7 @@ - (void)testCancellationOfMapperOperation RKObjectMapping *childMapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; [childMapping addAttributeMappingsFromArray:@[@"name"]]; - RKEntityMapping *parentMapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; + RKObjectMapping *parentMapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; [parentMapping addAttributeMappingsFromArray:@[@"name"]]; [parentMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"children" toKeyPath:@"friends" withMapping:childMapping]]; NSDictionary *mappingsDictionary = @{ @"parents": parentMapping }; From 7984d4f2ac967198462e35963607ab49cb617ea3 Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Sat, 22 Dec 2012 16:36:55 -0500 Subject: [PATCH 23/41] Reimplement inverseMapping so that it no longer sucks. fixes #864, #1058 * Inversing non intelligently walks the mapping graph, ensuring that cyclic graphs are resolved properly * Copy all attributes from the parent to the inverse mapping (date formatters, etc) --- Code/ObjectMapping/RKObjectMapping.h | 8 +- Code/ObjectMapping/RKObjectMapping.m | 105 +++++++++++++----- .../Logic/ObjectMapping/RKObjectMappingTest.m | 14 +++ 3 files changed, 94 insertions(+), 33 deletions(-) diff --git a/Code/ObjectMapping/RKObjectMapping.h b/Code/ObjectMapping/RKObjectMapping.h index d4b735e983..e6f0cefe49 100644 --- a/Code/ObjectMapping/RKObjectMapping.h +++ b/Code/ObjectMapping/RKObjectMapping.h @@ -294,9 +294,11 @@ @property (nonatomic, strong) NSFormatter *preferredDateFormatter; /** - Generates an inverse mapping for the rules specified within this object mapping. This can be used to - quickly generate a corresponding serialization mapping from a configured object mapping. The inverse - mapping will have the source and destination keyPaths swapped for all attribute and relationship mappings. + Generates an inverse mapping for the rules specified within this object mapping. + + This can be used to quickly generate a corresponding serialization mapping from a configured object mapping. The inverse mapping will have the source and destination keyPaths swapped for all attribute and relationship mappings. All mapping configuration and date formatters are copied from the parent to the inverse mapping. + + @return A new mapping that will map the inverse of the receiver. */ - (instancetype)inverseMapping; diff --git a/Code/ObjectMapping/RKObjectMapping.m b/Code/ObjectMapping/RKObjectMapping.m index 8eb74ed642..15e8a0acd5 100644 --- a/Code/ObjectMapping/RKObjectMapping.m +++ b/Code/ObjectMapping/RKObjectMapping.m @@ -18,6 +18,7 @@ // limitations under the License. // +#import #import "RKObjectMapping.h" #import "RKRelationshipMapping.h" #import "RKPropertyInspector.h" @@ -30,13 +31,71 @@ // Constants NSString * const RKObjectMappingNestingAttributeKeyName = @""; -static NSUInteger RKObjectMappingMaximumInverseMappingRecursionDepth = 100; // Private declaration NSDate *RKDateFromStringWithFormatters(NSString *dateString, NSArray *formatters); static RKSourceToDesinationKeyTransformationBlock defaultSourceToDestinationKeyTransformationBlock = nil; +@interface RKObjectMapping (Copying) +- (void)copyPropertiesFromMapping:(RKObjectMapping *)mapping; +@end + +@interface RKMappingInverter : NSObject +@property (nonatomic, strong) RKObjectMapping *mapping; +@property (nonatomic, strong) NSMutableDictionary *invertedMappings; + +- (id)initWithMapping:(RKObjectMapping *)mapping; +- (RKObjectMapping *)inverseMapping; +@end + +@implementation RKMappingInverter + +- (id)initWithMapping:(RKObjectMapping *)mapping +{ + self = [self init]; + if (self) { + self.mapping = mapping; + self.invertedMappings = [NSMutableDictionary dictionary]; + } + return self; +} + +- (RKObjectMapping *)invertMapping:(RKObjectMapping *)mapping +{ + // Use an NSValue to obtain a non-copied key into our inversed mappings dictionary + NSValue *dictionaryKey = [NSValue valueWithNonretainedObject:mapping]; + RKObjectMapping *inverseMapping = [self.invertedMappings objectForKey:dictionaryKey]; + if (inverseMapping) return inverseMapping; + + inverseMapping = [RKObjectMapping mappingForClass:[NSMutableDictionary class]]; + [self.invertedMappings setObject:inverseMapping forKey:dictionaryKey]; + [inverseMapping copyPropertiesFromMapping:mapping]; + + for (RKAttributeMapping *attributeMapping in mapping.attributeMappings) { + [inverseMapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:attributeMapping.destinationKeyPath toKeyPath:attributeMapping.sourceKeyPath]]; + } + + for (RKRelationshipMapping *relationshipMapping in mapping.relationshipMappings) { + RKObjectMapping *mapping = (RKObjectMapping *) relationshipMapping.mapping; + if (! [mapping isKindOfClass:[RKObjectMapping class]]) { + RKLogWarning(@"Unable to generate inverse mapping for relationship '%@': %@ relationships cannot be inversed.", relationshipMapping.sourceKeyPath, NSStringFromClass([mapping class])); + continue; + } + RKMapping *inverseRelationshipMapping = [self invertMapping:mapping]; + if (inverseRelationshipMapping) [inverseMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:relationshipMapping.destinationKeyPath toKeyPath:relationshipMapping.sourceKeyPath withMapping:inverseRelationshipMapping]]; + } + + return inverseMapping; +} + +- (RKObjectMapping *)inverseMapping +{ + return [self invertMapping:self.mapping]; +} + +@end + @interface RKPropertyMapping () @property (nonatomic, weak, readwrite) RKObjectMapping *objectMapping; @end @@ -77,21 +136,26 @@ - (id)initWithClass:(Class)objectClass return self; } +- (void)copyPropertiesFromMapping:(RKObjectMapping *)mapping +{ + self.setDefaultValueForMissingAttributes = mapping.setDefaultValueForMissingAttributes; + self.setNilForMissingRelationships = mapping.setNilForMissingRelationships; + self.forceCollectionMapping = mapping.forceCollectionMapping; + self.performKeyValueValidation = mapping.performKeyValueValidation; + self.dateFormatters = mapping.dateFormatters; + self.preferredDateFormatter = mapping.preferredDateFormatter; + self.sourceToDestinationKeyTransformationBlock = self.sourceToDestinationKeyTransformationBlock; +} + - (id)copyWithZone:(NSZone *)zone { RKObjectMapping *copy = [[[self class] allocWithZone:zone] init]; copy.objectClass = self.objectClass; - copy.setDefaultValueForMissingAttributes = self.setDefaultValueForMissingAttributes; - copy.setNilForMissingRelationships = self.setNilForMissingRelationships; - copy.forceCollectionMapping = self.forceCollectionMapping; - copy.performKeyValueValidation = self.performKeyValueValidation; - copy.dateFormatters = self.dateFormatters; - copy.preferredDateFormatter = self.preferredDateFormatter; + [copy copyPropertiesFromMapping:self]; copy.mutablePropertyMappings = [NSMutableArray new]; - copy.sourceToDestinationKeyTransformationBlock = self.sourceToDestinationKeyTransformationBlock; for (RKPropertyMapping *propertyMapping in self.propertyMappings) { - [copy addPropertyMapping:propertyMapping]; + [copy addPropertyMapping:[propertyMapping copy]]; } return copy; @@ -264,29 +328,10 @@ - (void)removePropertyMapping:(RKPropertyMapping *)attributeOrRelationshipMappin } } -- (instancetype)inverseMappingAtDepth:(NSInteger)depth -{ - NSAssert(depth < RKObjectMappingMaximumInverseMappingRecursionDepth, @"Exceeded max recursion level in inverseMapping. This is likely due to a loop in the serialization graph. To break this loop, specify one-way relationships by setting serialize to NO in mapKeyPath:toRelationship:withObjectMapping:serialize:"); - RKObjectMapping *inverseMapping = [RKObjectMapping mappingForClass:[NSMutableDictionary class]]; - for (RKAttributeMapping *attributeMapping in self.attributeMappings) { - [inverseMapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:attributeMapping.destinationKeyPath toKeyPath:attributeMapping.sourceKeyPath]]; - } - - for (RKRelationshipMapping *relationshipMapping in self.relationshipMappings) { - RKMapping *mapping = relationshipMapping.mapping; - if (! [mapping isKindOfClass:[RKObjectMapping class]]) { - RKLogWarning(@"Unable to generate inverse mapping for relationship '%@': %@ relationships cannot be inversed.", relationshipMapping.sourceKeyPath, NSStringFromClass([mapping class])); - continue; - } - [inverseMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:relationshipMapping.destinationKeyPath toKeyPath:relationshipMapping.sourceKeyPath withMapping:[(RKObjectMapping *)mapping inverseMappingAtDepth:depth+1]]]; - } - - return inverseMapping; -} - - (instancetype)inverseMapping { - return [self inverseMappingAtDepth:0]; + RKMappingInverter *mappingInverter = [[RKMappingInverter alloc] initWithMapping:self]; + return [mappingInverter inverseMapping]; } - (void)addAttributeMappingFromKeyOfRepresentationToAttribute:(NSString *)attributeName diff --git a/Tests/Logic/ObjectMapping/RKObjectMappingTest.m b/Tests/Logic/ObjectMapping/RKObjectMappingTest.m index 41d818f4a7..6f97a52df9 100644 --- a/Tests/Logic/ObjectMapping/RKObjectMappingTest.m +++ b/Tests/Logic/ObjectMapping/RKObjectMappingTest.m @@ -219,4 +219,18 @@ - (void)testDefaultSourceToDestinationKeyTransformationBlock expect([mapping.propertyMappingsByDestinationKeyPath allKeys]).to.equal(expectedNames); } +- (void)testBreakageOfRecursiveInverseCyclicGraphs +{ + RKObjectMapping *parentMapping = [RKObjectMapping mappingForClass:[NSObject class]]; + [parentMapping addAttributeMappingsFromDictionary:@{ @"first_name": @"firstName", @"last_name": @"lastName" }]; + RKObjectMapping *childMapping = [RKObjectMapping mappingForClass:[NSObject class]]; + [childMapping addAttributeMappingsFromDictionary:@{ @"first_name": @"firstName", @"last_name": @"lastName" }]; + [parentMapping addRelationshipMappingWithSourceKeyPath:@"children" mapping:childMapping]; + [childMapping addRelationshipMappingWithSourceKeyPath:@"parents" mapping:parentMapping]; + RKObjectMapping *inverseMapping = [parentMapping inverseMapping]; + expect([inverseMapping propertyMappingsBySourceKeyPath][@"firstName"]).notTo.beNil(); + expect([inverseMapping propertyMappingsBySourceKeyPath][@"lastName"]).notTo.beNil(); + expect([inverseMapping propertyMappingsBySourceKeyPath][@"children"]).notTo.beNil(); +} + @end From 0a033596da6c9446e2bcf4cd67febc83b81b2ca7 Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Sat, 22 Dec 2012 19:03:30 -0500 Subject: [PATCH 24/41] Relax the use of use an the informal procotol for the `errorMessage` property in favor of the `description` method. closes #1104, closes #1087, closes #1095 * Change contract to the use the `description` method instead of `errorMessage`. This makes it work with any class out of the box * Add import for RKErrorMessage to the Support.h header so it is immediately available * Fix incorrect keyPath in the README.md * Add additional notes about how the errors are constructed to the README --- Code/Network/RKResponseMapperOperation.h | 4 +-- Code/Network/RKResponseMapperOperation.m | 2 +- Code/ObjectMapping/RKErrorMessage.h | 4 --- Code/ObjectMapping/RKErrorMessage.m | 3 +- Code/Support.h | 1 + README.md | 4 ++- .../Network/RKResponseMapperOperationTest.m | 29 +++++++++++++++++++ 7 files changed, 37 insertions(+), 10 deletions(-) diff --git a/Code/Network/RKResponseMapperOperation.h b/Code/Network/RKResponseMapperOperation.h index 34328465ee..bd518f3892 100644 --- a/Code/Network/RKResponseMapperOperation.h +++ b/Code/Network/RKResponseMapperOperation.h @@ -197,9 +197,9 @@ /** Returns a representation of a mapping result as an `NSError` value. - The returned `NSError` object is in the `RKErrorDomain` domain and has the `RKMappingErrorFromMappingResult` code. The value for the `NSLocalizedDescriptionKey` is computed by retrieving the objects in the mapping result as an array, evaluating `valueForKeyPath:@"errorMessage"` against the array, and joining the returned error messages by comma to form a single string value. The source error objects are returned with the `NSError` in the `userInfo` dictionary under the `RKObjectMapperErrorObjectsKey` key. + The returned `NSError` object is in the `RKErrorDomain` domain and has the `RKMappingErrorFromMappingResult` code. The value for the `NSLocalizedDescriptionKey` is computed by retrieving the objects in the mapping result as an array, evaluating `valueForKeyPath:@"description"` against the array, and joining the returned error messages by comma to form a single string value. The source error objects are returned with the `NSError` in the `userInfo` dictionary under the `RKObjectMapperErrorObjectsKey` key. - The `errorMessage` property is significant as it is an informal protocol that must be adopted by objects wishing to representing response errors. + This implementation assumes that the class used to represent the response error will return a string description of the client side error when sent the `description` message. @return An error object representing the objects contained in the mapping result. @see `RKErrorMessage` diff --git a/Code/Network/RKResponseMapperOperation.m b/Code/Network/RKResponseMapperOperation.m index ddfe301bbe..93d50a1f2b 100644 --- a/Code/Network/RKResponseMapperOperation.m +++ b/Code/Network/RKResponseMapperOperation.m @@ -37,7 +37,7 @@ NSArray *collection = [mappingResult array]; NSString *description = nil; if ([collection count] > 0) { - description = [[collection valueForKeyPath:@"errorMessage"] componentsJoinedByString:@", "]; + description = [[collection valueForKeyPath:@"description"] componentsJoinedByString:@", "]; } else { RKLogWarning(@"Expected mapping result to contain at least one object to construct an error"); } diff --git a/Code/ObjectMapping/RKErrorMessage.h b/Code/ObjectMapping/RKErrorMessage.h index 929d1fde4e..2aea33face 100644 --- a/Code/ObjectMapping/RKErrorMessage.h +++ b/Code/ObjectMapping/RKErrorMessage.h @@ -23,10 +23,6 @@ /** The `RKErrorMessage` is a simple class used for representing error messages returned by a remote backend system with which the client application is communicating. Error messages are typically returned in a response body in the Client Error class (status code 4xx range). - ## Error Message Informal Protocol - - The `errorMessage` property method is the sole method of an informal protocol that must be adopted by objects wishing to represent error messages within RestKit. This protocol is by the `RKErrorFromMappingResult` function when constructing `NSError` messages from a mapped response body. - @see `RKErrorFromMappingResult` */ @interface RKErrorMessage : NSObject diff --git a/Code/ObjectMapping/RKErrorMessage.m b/Code/ObjectMapping/RKErrorMessage.m index 6ff7bc859d..1a102c4aa7 100644 --- a/Code/ObjectMapping/RKErrorMessage.m +++ b/Code/ObjectMapping/RKErrorMessage.m @@ -24,8 +24,7 @@ @implementation RKErrorMessage - (NSString *)description { - return [NSString stringWithFormat:@"<%@:%p error message = \"%@\" userInfo = %@>", - NSStringFromClass([self class]), self, self.errorMessage, self.userInfo]; + return self.errorMessage; } @end diff --git a/Code/Support.h b/Code/Support.h index fdc8522687..5fe1d7895a 100644 --- a/Code/Support.h +++ b/Code/Support.h @@ -20,6 +20,7 @@ // Load shared support code #import "RKErrors.h" +#import "RKErrorMessage.h" #import "RKMIMETypes.h" #import "RKLog.h" #import "RKPathMatcher.h" diff --git a/README.md b/README.md index 5be6d3b6b5..54da48540f 100644 --- a/README.md +++ b/README.md @@ -230,9 +230,10 @@ operation.managedObjectCache = managedObjectStore.managedObjectCache; // GET /articles/error.json returns a 422 (Unprocessable Entity) // JSON looks like {"errors": "Some Error Has Occurred"} +// You can map errors to any class, but `RKErrorMessage` is included for free RKObjectMapping *errorMapping = [RKObjectMapping mappingForClass:[RKErrorMessage class]]; // The entire value at the source key path containing the errors maps to the message -[errorMapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:[NSNull null] toKeyPath:@"message"]]; +[errorMapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:[NSNull null] toKeyPath:@"errorMessage"]]; NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassClientError); // Any response in the 4xx status code range with an "errors" key path uses this mapping @@ -241,6 +242,7 @@ RKResponseDescriptor *errorDescriptor = [RKResponseDescriptor responseDescriptor NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://restkit.org/articles/error.json"]]; RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[errorDescriptor]]; [operation setCompletionBlockWithSuccess:nil failure:^(RKObjectRequestOperation *operation, NSError *error) { + // The `description` method of the class the error is mapped to is used to construct the value of the localizedDescription NSLog(@"Loaded this error: %@", [error localizedDescription]); }]; ``` diff --git a/Tests/Logic/Network/RKResponseMapperOperationTest.m b/Tests/Logic/Network/RKResponseMapperOperationTest.m index b1cf03bcdd..484d582614 100644 --- a/Tests/Logic/Network/RKResponseMapperOperationTest.m +++ b/Tests/Logic/Network/RKResponseMapperOperationTest.m @@ -14,6 +14,20 @@ NSString *RKPathAndQueryStringFromURLRelativeToURL(NSURL *URL, NSURL *baseURL); +@interface RKServerError : NSObject +@property (nonatomic, copy) NSString *message; +@property (nonatomic, assign) NSInteger code; +@end + +@implementation RKServerError + +- (NSString *)description +{ + return [NSString stringWithFormat:@"%@ (%ld)", self.message, (long) self.code]; +} + +@end + @interface RKObjectResponseMapperOperationTest : RKTestCase @end @@ -121,6 +135,21 @@ - (void)testThatMappingEmptyJSONDictionaryClientErrorResponseReturnsErrorNoDescr expect([mapper.error localizedDescription]).to.equal(@"Loaded an unprocessable client error response (422)"); } +- (void)testMappingServerErrorToCustomErrorClass +{ + RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKServerError class]]; + [mapping addAttributeMappingsFromArray:@[ @"code", @"message" ]]; + RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping pathPattern:nil keyPath:nil statusCodes:[NSIndexSet indexSetWithIndex:422]]; + NSURL *URL = [NSURL URLWithString:@"http://restkit.org"]; + NSHTTPURLResponse *response = [[NSHTTPURLResponse alloc] initWithURL:URL statusCode:422 HTTPVersion:@"1.1" headerFields:@{@"Content-Type": @"application/json"}]; + NSData *data = [@"{\"code\": 12345, \"message\": \"This is the error message\"}" dataUsingEncoding:NSUTF8StringEncoding]; + RKObjectResponseMapperOperation *mapper = [[RKObjectResponseMapperOperation alloc] initWithResponse:response data:data responseDescriptors:@[responseDescriptor]]; + [mapper start]; + expect(mapper.error).notTo.beNil(); + expect(mapper.error.code).to.equal(RKMappingErrorFromMappingResult); + expect([mapper.error localizedDescription]).to.equal(@"This is the error message (12345)"); +} + #pragma mark - Response Descriptor Matching - (void)testThatResponseMapperMatchesBaseURLWithoutPathAppropriately From bc719087ac1741bab09b3087b6e800be58fc8d21 Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Sun, 23 Dec 2012 00:26:33 -0500 Subject: [PATCH 25/41] Intelligently set the `targetObject` by exploring the mapping graph in `appropriateObjectRequestOperationWithObject:` to better support cases in which you POST/PUT one object, but map back another. fixes #1081 --- Code/Network/RKObjectManager.m | 30 ++++++++++++++++++- .../Logic/ObjectMapping/RKObjectManagerTest.m | 22 ++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/Code/Network/RKObjectManager.m b/Code/Network/RKObjectManager.m index 9cb1c629e2..4ec15a4907 100644 --- a/Code/Network/RKObjectManager.m +++ b/Code/Network/RKObjectManager.m @@ -169,6 +169,34 @@ static BOOL RKDoesArrayOfResponseDescriptorsContainEntityMapping(NSArray *respon return NO; } +static BOOL RKDoesArrayOfResponseDescriptorsContainMappingForClass(NSArray *responseDescriptors, Class classToBeMapped) +{ + // Visit all mappings accessible from the object graphs of all response descriptors + NSMutableSet *accessibleMappings = [NSMutableSet set]; + for (RKResponseDescriptor *responseDescriptor in responseDescriptors) { + if (! [accessibleMappings containsObject:responseDescriptor.mapping]) { + RKMappingGraphVisitor *graphVisitor = [[RKMappingGraphVisitor alloc] initWithMapping:responseDescriptor.mapping]; + [accessibleMappings unionSet:graphVisitor.mappings]; + } + } + + // Enumerate all mappings and search for a mapping matching the class + for (RKMapping *mapping in accessibleMappings) { + if ([mapping isKindOfClass:[RKObjectMapping class]]) { + if ([[(RKObjectMapping *)mapping objectClass] isSubclassOfClass:classToBeMapped]) return YES; + } + + if ([mapping isKindOfClass:[RKDynamicMapping class]]) { + RKDynamicMapping *dynamicMapping = (RKDynamicMapping *)mapping; + for (RKObjectMapping *mapping in dynamicMapping.objectMappings) { + if ([[(RKObjectMapping *)mapping objectClass] isSubclassOfClass:classToBeMapped]) return YES; + } + } + } + + return NO; +} + static NSString *RKMIMETypeFromAFHTTPClientParameterEncoding(AFHTTPClientParameterEncoding encoding) { switch (encoding) { @@ -419,7 +447,7 @@ - (id)appropriateObjectRequestOperationWithObject:(id)object operation = [self objectRequestOperationWithRequest:request success:nil failure:nil]; } - operation.targetObject = object; + if (RKDoesArrayOfResponseDescriptorsContainMappingForClass(self.responseDescriptors, [object class])) operation.targetObject = object; return operation; } diff --git a/Tests/Logic/ObjectMapping/RKObjectManagerTest.m b/Tests/Logic/ObjectMapping/RKObjectManagerTest.m index 6a5499e2c1..4438020d50 100644 --- a/Tests/Logic/ObjectMapping/RKObjectManagerTest.m +++ b/Tests/Logic/ObjectMapping/RKObjectManagerTest.m @@ -574,6 +574,28 @@ - (void)testChangingHTTPClient expect([manager.baseURL absoluteString]).to.equal(@"http://google.com/"); } +- (void)testPostingOneObjectAndGettingResponseMatchingAnotherClass +{ + RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[RKTestFactory baseURL]]; + RKObjectMapping *userMapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; + [userMapping addAttributeMappingsFromDictionary:@{ @"fullname": @"name" }]; + RKObjectMapping *metaMapping = [RKObjectMapping mappingForClass:[NSMutableDictionary class]]; + [metaMapping addAttributeMappingsFromArray:@[ @"status", @"version" ]]; + RKResponseDescriptor *metaResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:metaMapping pathPattern:nil keyPath:@"meta" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]; + + [manager addResponseDescriptorsFromArray:@[ metaResponseDescriptor ]]; + RKTestUser *user = [RKTestUser new]; + RKObjectRequestOperation *requestOperation = [manager appropriateObjectRequestOperationWithObject:user method:RKRequestMethodPOST path:@"/ComplexUser" parameters:nil]; + [requestOperation start]; + [requestOperation waitUntilFinished]; + + expect(requestOperation.error).to.beNil(); + expect(requestOperation.mappingResult).notTo.beNil(); + expect([requestOperation.mappingResult array]).to.haveCountOf(1); + NSDictionary *expectedObject = @{ @"status": @"ok", @"version": @"0.3" }; + expect([requestOperation.mappingResult firstObject]).to.equal(expectedObject); +} + - (void)testPostingOneObjectAndGettingResponseMatchingMultipleDescriptors { RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[RKTestFactory baseURL]]; From a67bb48ece2b5bc42bf82b95c77c2528a7a8e392 Mon Sep 17 00:00:00 2001 From: Charlie Savage Date: Sun, 23 Dec 2012 21:58:59 -0700 Subject: [PATCH 26/41] Reimplement connection matchers and add test case. --- Code/CoreData/RKConnectionDescription.h | 6 +++ .../RKRelationshipConnectionOperation.m | 4 ++ .../RKRelationshipConnectionOperationTest.m | 47 +++++++++++++++++++ 3 files changed, 57 insertions(+) diff --git a/Code/CoreData/RKConnectionDescription.h b/Code/CoreData/RKConnectionDescription.h index c42ac1f789..6997d60387 100644 --- a/Code/CoreData/RKConnectionDescription.h +++ b/Code/CoreData/RKConnectionDescription.h @@ -19,6 +19,7 @@ // #import +#import "RKDynamicMappingMatcher.h" /** The `RKConnectionDescription` class describes a means for connecting a Core Data relationship. Connections can be established either by foreign key, in which case one or more attribute values on the source entity correspond to matching values on the destination entity, or by key path, in which case a key path is evaluated on the object graph to obtain a value for the relationship. Connection objects are used by instances of `RKRelationshipConnectionOperation` to connect a relationship of a given managed object. @@ -156,4 +157,9 @@ */ @property (nonatomic, copy) NSPredicate *predicate; +/** + An optional matcher that filters the source object to be connected. + */ +@property (nonatomic, strong) RKDynamicMappingMatcher* matcher; + @end diff --git a/Code/CoreData/RKRelationshipConnectionOperation.m b/Code/CoreData/RKRelationshipConnectionOperation.m index 9d9e16074f..8323cf3770 100644 --- a/Code/CoreData/RKRelationshipConnectionOperation.m +++ b/Code/CoreData/RKRelationshipConnectionOperation.m @@ -139,6 +139,10 @@ - (id)relationshipValueWithConnectionResult:(id)result - (id)findConnected { id connectionResult = nil; + + if (self.connection.matcher && ![self.connection.matcher matches:self.managedObject]) + return nil; + if ([self.connection isForeignKeyConnection]) { NSDictionary *attributeValues = RKConnectionAttributeValuesWithObject(self.connection, self.managedObject); NSSet *managedObjects = [self.managedObjectCache managedObjectsWithEntity:[self.connection.relationship destinationEntity] diff --git a/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m b/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m index c4187b4638..bfa0981ce3 100644 --- a/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m +++ b/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m @@ -256,4 +256,51 @@ - (void)testNotConnectingToSubentities expect(secondChild.friends).to.equal(expectedFriends); } +- (void)testConnectionMatcher +{ + RKHuman *human = [RKTestFactory insertManagedObjectForEntityForName:@"Human" inManagedObjectContext:nil withProperties:nil]; + human.sex = @"female"; + RKCat *asia = [RKTestFactory insertManagedObjectForEntityForName:@"Cat" inManagedObjectContext:nil withProperties:nil]; + asia.sex = @"female"; + RKCat *lola = [RKTestFactory insertManagedObjectForEntityForName:@"Cat" inManagedObjectContext:nil withProperties:nil]; + lola.sex = @"female"; + RKCat *roy = [RKTestFactory insertManagedObjectForEntityForName:@"Cat" inManagedObjectContext:nil withProperties:nil]; + roy.sex = @"male"; + + RKEntityMapping *mapping = [RKEntityMapping mappingForEntityForName:@"Human" inManagedObjectStore:[RKTestFactory managedObjectStore]]; + [mapping addConnectionForRelationship:@"cats" connectedBy:@"sex"]; + RKFetchRequestManagedObjectCache *managedObjectCache = [RKFetchRequestManagedObjectCache new]; + RKConnectionDescription *connection = [mapping connectionForRelationship:@"cats"]; + + RKEntityMapping *catMapping = [RKEntityMapping mappingForEntityForName:@"Cat" inManagedObjectStore:[RKTestFactory managedObjectStore]]; + connection.matcher = [[RKDynamicMappingMatcher alloc] initWithKeyPath:@"sex" expectedValue:@"male" objectMapping:catMapping]; + + RKRelationshipConnectionOperation *operation = [[RKRelationshipConnectionOperation alloc] initWithManagedObject:human connection:connection managedObjectCache:managedObjectCache]; + [operation start]; + assertThat(human.cats, hasCountOf(0)); +} + +- (void)testConnectionPredicate +{ + RKHuman *human = [RKTestFactory insertManagedObjectForEntityForName:@"Human" inManagedObjectContext:nil withProperties:nil]; + human.sex = @"female"; + + RKCat *asia = [RKTestFactory insertManagedObjectForEntityForName:@"Cat" inManagedObjectContext:nil withProperties:@{@"birthYear": @2011}]; + asia.sex = @"female"; + RKCat *lola = [RKTestFactory insertManagedObjectForEntityForName:@"Cat" inManagedObjectContext:nil withProperties:@{@"birthYear": @2012}]; + lola.sex = @"female"; + + RKEntityMapping *mapping = [RKEntityMapping mappingForEntityForName:@"Human" inManagedObjectStore:[RKTestFactory managedObjectStore]]; + [mapping addConnectionForRelationship:@"cats" connectedBy:@"sex"]; + RKFetchRequestManagedObjectCache *managedObjectCache = [RKFetchRequestManagedObjectCache new]; + RKConnectionDescription *connection = [mapping connectionForRelationship:@"cats"]; + connection.predicate = [NSPredicate predicateWithFormat:@"birthYear = 2011"]; + + + RKRelationshipConnectionOperation *operation = [[RKRelationshipConnectionOperation alloc] initWithManagedObject:human connection:connection managedObjectCache:managedObjectCache]; + [operation start]; + assertThat(human.cats, hasCountOf(1)); + assertThat(human.cats, hasItems(asia, nil)); +} + @end From b3899ac191b2df85fb39367168f02f5fd5c57c7a Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Mon, 24 Dec 2012 16:18:39 -0500 Subject: [PATCH 27/41] Add support for mapping a relationship directly from the parent object representation, rather than at a nested key path. closes #859 * Update documentation in RKRelationshipMapping.h --- Code/ObjectMapping/RKMapperOperation.h | 4 +- Code/ObjectMapping/RKMappingOperation.m | 3 +- Code/ObjectMapping/RKRelationshipMapping.h | 8 +- .../RKObjectMappingNextGenTest.m | 113 ++++++++---------- Tests/Models/RKTestUser.h | 6 + Tests/Models/RKTestUser.m | 3 + 6 files changed, 73 insertions(+), 64 deletions(-) diff --git a/Code/ObjectMapping/RKMapperOperation.h b/Code/ObjectMapping/RKMapperOperation.h index b2a1b233fd..cd5ac81ef5 100644 --- a/Code/ObjectMapping/RKMapperOperation.h +++ b/Code/ObjectMapping/RKMapperOperation.h @@ -50,9 +50,11 @@ Note that the keys of the dictionary are **key paths**. Deeply nested content can be mapped by specifying the full key path as the key of the mappings dictionary. - ### The NSNull Key + ### Mapping the Root Object Representation A mapping set for the key `[NSNull null]` value has special significance to the mapper operation. When a mapping is encountered with the a null key, the entire `representation` is processed using the given mapping. This provides support for mapping content that does not have an outer nesting attribute. + + Note that it is possible to map the same representation with multiple mappings, including a combination of a root key mapping and nested keypaths. ## Data Source diff --git a/Code/ObjectMapping/RKMappingOperation.m b/Code/ObjectMapping/RKMappingOperation.m index f74511a99d..c9c42cca32 100644 --- a/Code/ObjectMapping/RKMappingOperation.m +++ b/Code/ObjectMapping/RKMappingOperation.m @@ -532,7 +532,8 @@ - (BOOL)applyRelationshipMappings for (RKRelationshipMapping *relationshipMapping in [self relationshipMappings]) { if ([self isCancelled]) return NO; - id value = [self.sourceObject valueForKeyPath:relationshipMapping.sourceKeyPath]; + // The nil source keyPath indicates that we want to map directly from the parent representation + id value = (relationshipMapping.sourceKeyPath == nil) ? self.sourceObject : [self.sourceObject valueForKeyPath:relationshipMapping.sourceKeyPath]; // Track that we applied this mapping [mappingsApplied addObject:relationshipMapping]; diff --git a/Code/ObjectMapping/RKRelationshipMapping.h b/Code/ObjectMapping/RKRelationshipMapping.h index decd8cd017..0f0b96b4dd 100644 --- a/Code/ObjectMapping/RKRelationshipMapping.h +++ b/Code/ObjectMapping/RKRelationshipMapping.h @@ -26,6 +26,12 @@ The `RKRelationshipMapping` class is used to describe relationships of a class in an `RKObjectMapping` or an entity in an `RKEntityMapping` object. `RKRelationshipMapping` extends `RKPropertyMapping` to describe features specific to relationships, including the `RKMapping` object describing how to map the destination object. + + Relationship mappings are described in terms of a source key path, which identifies a key in the parent object representation under which the data for the relationship is nested, and a destination key path, which specifies the key path at which the mapped object is to be assigned on the parent entity. The key-paths of the property mappings of the `RKMapping` object in the relationship mapping are evaluated against the nested object representationship at the source key path. + + ## Mapping a Non-nested Relationship from the Parent Representation + + It can often be desirable to map data for a relationship directly from the parent object representation, rather than under a nested key path. When a relationship mapping is constructed with a `nil` value for the source key path, then the `RKMapping` object is evaluated against the parent representation. */ @interface RKRelationshipMapping : RKPropertyMapping @@ -38,7 +44,7 @@ The mapping may describe a to-one or a to-many relationship. The appropriate handling of the source representation is deferred until run-time and is determined by performing reflection on the data retrieved from the source object representation by sending a `valueForKeyPath:` message where the key path is the value given in `sourceKeyPath`. If an `NSArray`, `NSSet` or `NSOrderedSet` object is returned, the related object representation is processed as a to-many collection. Otherwise the representation is considered to be a to-one. - @param sourceKeyPath A key path from which to retrieve data in the source object representation that is to be mapped as a relationship. + @param sourceKeyPath A key path from which to retrieve data in the source object representation that is to be mapped as a relationship. If `nil`, then the mapping is performed directly against the parent object representation. @param destinationKeyPath The key path on the destination object to set the object mapped results. @param mapping A mapping object describing how to map the data retrieved from `sourceKeyPath` that is to be set on `destinationKeyPath`. */ diff --git a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m index 20525cfb69..cb95e011ec 100644 --- a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m +++ b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m @@ -183,19 +183,18 @@ - (void)testShouldGenerateRelationshipMappings assertThat(mapping.propertyMappingsBySourceKeyPath[@"another"], isNot(nilValue())); } -// TODO: Decide about inverse... -//- (void)testShouldGenerateAnInverseMappings -//{ -// RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; -// [mapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:@"first_name" toKeyPath:@"firstName"]]; -// [mapping addAttributeMappingsFromArray:@[@"city", @"state", @"zip"]]; -// RKObjectMapping *otherMapping = [RKObjectMapping mappingForClass:[RKTestAddress class]]; -// [otherMapping addAttributeMappingsFromArray:@[@"street"]]; -// [mapping mapRelationship:@"address" withMapping:otherMapping]; -// RKObjectMapping *inverse = [mapping inverseMapping]; -// assertThat(inverse.objectClass, is(equalTo([NSMutableDictionary class]))); -// assertThat([inverse mappingForKeyPath:@"firstName"], isNot(nilValue())); -//} +- (void)testShouldGenerateAnInverseMappings +{ + RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; + [mapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:@"first_name" toKeyPath:@"firstName"]]; + [mapping addAttributeMappingsFromArray:@[@"city", @"state", @"zip"]]; + RKObjectMapping *otherMapping = [RKObjectMapping mappingForClass:[RKTestAddress class]]; + [otherMapping addAttributeMappingsFromArray:@[@"street"]]; + [mapping addRelationshipMappingWithSourceKeyPath:@"address" mapping:otherMapping]; + RKObjectMapping *inverse = [mapping inverseMapping]; + assertThat(inverse.objectClass, is(equalTo([NSMutableDictionary class]))); + assertThat([inverse propertyMappingsBySourceKeyPath][@"firstName"], isNot(nilValue())); +} - (void)testShouldLetYouRetrieveMappingsByAttribute { @@ -251,7 +250,6 @@ - (void)testShouldMapACollectionOfSimpleObjectDictionaries assertThat(blake.name, is(equalTo(@"Blake Watters"))); } -// TODO: This doesn't really test anything anymore... - (void)testShouldDetermineTheObjectMappingByConsultingTheMappingProviderWhenThereIsATargetObject { RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; @@ -284,9 +282,6 @@ - (void)testShouldMapToATargetObject RKAttributeMapping *nameMapping = [RKAttributeMapping attributeMappingFromKeyPath:@"name" toKeyPath:@"name"]; [mapping addPropertyMapping:nameMapping]; - NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:mapping forKey:[NSNull null]]; - id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:@{[NSNull null] : mapping}]; RKTestUser *user = [RKTestUser user]; @@ -305,11 +300,8 @@ - (void)testShouldCreateANewInstanceOfTheAppropriateDestinationObjectWhenThereIs RKAttributeMapping *nameMapping = [RKAttributeMapping attributeMappingFromKeyPath:@"name" toKeyPath:@"name"]; [mapping addPropertyMapping:nameMapping]; - NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:mapping forKey:[NSNull null]]; - id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:@{ [NSNull null]: mapping }]; [mapper start]; id mappingResult = [mapper.mappingResult firstObject]; assertThatBool([mappingResult isKindOfClass:[RKTestUser class]], is(equalToBool(YES))); @@ -324,11 +316,8 @@ - (void)testShouldMapWithoutATargetMapping RKAttributeMapping *nameMapping = [RKAttributeMapping attributeMappingFromKeyPath:@"name" toKeyPath:@"name"]; [mapping addPropertyMapping:nameMapping]; - NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:mapping forKey:[NSNull null]]; - id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:@{ [NSNull null]: mapping }]; [mapper start]; RKTestUser *user = [mapper.mappingResult firstObject]; assertThat(user, is(notNilValue())); @@ -343,11 +332,9 @@ - (void)testShouldMapACollectionOfObjects [mapping addPropertyMapping:idMapping]; RKAttributeMapping *nameMapping = [RKAttributeMapping attributeMappingFromKeyPath:@"name" toKeyPath:@"name"]; [mapping addPropertyMapping:nameMapping]; - NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:mapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"users.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:@{ [NSNull null]: mapping }]; [mapper start]; NSArray *users = [mapper.mappingResult array]; assertThatBool([users isKindOfClass:[NSArray class]], is(equalToBool(YES))); @@ -535,14 +522,12 @@ - (void)testShouldBeAbleToMapFromAUserObjectToADictionary [mapping addPropertyMapping:idMapping]; RKAttributeMapping *nameMapping = [RKAttributeMapping attributeMappingFromKeyPath:@"name" toKeyPath:@"name"]; [mapping addPropertyMapping:nameMapping]; - NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:mapping forKey:[NSNull null]]; RKTestUser *user = [RKTestUser user]; user.name = @"Blake Watters"; user.userID = [NSNumber numberWithInt:123]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:user mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:user mappingsDictionary:@{ [NSNull null]: mapping }]; [mapper start]; RKMappingResult *result = mapper.mappingResult; NSDictionary *userInfo = [result firstObject]; @@ -579,11 +564,9 @@ - (void)testShouldAddAnErrorWhenYouTryToMapAnArrayToATargetObject [mapping addPropertyMapping:idMapping]; RKAttributeMapping *nameMapping = [RKAttributeMapping attributeMappingFromKeyPath:@"name" toKeyPath:@"name"]; [mapping addPropertyMapping:nameMapping]; - NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:mapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"users.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:@{ [NSNull null]: mapping }]; mapper.targetObject = [RKTestUser user]; [mapper start]; assertThatInteger(mapper.error.code, is(equalToInt(RKMappingErrorTypeMismatch))); @@ -592,8 +575,7 @@ - (void)testShouldAddAnErrorWhenYouTryToMapAnArrayToATargetObject - (void)testShouldAddAnErrorWhenAttemptingToMapADictionaryWithoutAnObjectMapping { id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; - NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:@{}]; [mapper start]; assertThat([mapper.error localizedDescription], is(equalTo(@"No mappable object representations were found at the key paths searched."))); } @@ -637,11 +619,9 @@ - (void)testShouldInformTheDelegateWhenMappingBegins { id mockDelegate = [OCMockObject niceMockForProtocol:@protocol(RKMapperOperationDelegate)]; RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; - NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:mapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"users.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:@{ [NSNull null]: mapping }]; [[mockDelegate expect] mapperWillStartMapping:mapper]; mapper.delegate = mockDelegate; [mapper start]; @@ -652,11 +632,9 @@ - (void)testShouldInformTheDelegateWhenMappingEnds { id mockDelegate = [OCMockObject niceMockForProtocol:@protocol(RKMapperOperationDelegate)]; RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; - NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:mapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"users.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:@{ [NSNull null]: mapping }]; [[mockDelegate stub] mapperWillStartMapping:mapper]; [[mockDelegate expect] mapperDidFinishMapping:mapper]; mapper.delegate = mockDelegate; @@ -668,11 +646,9 @@ - (void)testShouldInformTheDelegateWhenCheckingForObjectMappingForKeyPathIsSucce { id mockDelegate = [OCMockObject niceMockForProtocol:@protocol(RKMapperOperationDelegate)]; RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; - NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:mapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:@{ [NSNull null]: mapping }]; [[mockDelegate expect] mapper:mapper didFindRepresentationOrArrayOfRepresentations:OCMOCK_ANY atKeyPath:nil]; mapper.delegate = mockDelegate; [mapper start]; @@ -700,11 +676,9 @@ - (void)testShouldNotifyTheDelegateWhenItDidMapAnObject RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; RKAttributeMapping *nameMapping = [RKAttributeMapping attributeMappingFromKeyPath:@"name" toKeyPath:@"name"]; [mapping addPropertyMapping:nameMapping]; - NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:mapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:@{ [NSNull null]: mapping }]; [[mockDelegate expect] mapper:mapper didFinishMappingOperation:OCMOCK_ANY forKeyPath:nil]; mapper.delegate = mockDelegate; [mapper start]; @@ -722,11 +696,9 @@ - (void)testShouldNotifyTheDelegateWhenItFailedToMapAnObject id mockDelegate = [OCMockObject niceMockForProtocol:@protocol(RKMapperOperationDelegate)]; RKObjectMapping *mapping = [RKObjectMapping mappingForClass:NSClassFromString(@"OCPartialMockObject")]; [mapping addAttributeMappingsFromArray:@[@"name"]]; - NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:mapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:@{ [NSNull null]: mapping }]; RKTestUser *exampleUser = [RKTestUser new]; id mockObject = [OCMockObject partialMockForObject:exampleUser]; [[[mockObject expect] andCall:@selector(fakeValidateValue:forKeyPath:error:) onObject:self] validateValue:(id __autoreleasing *)[OCMArg anyPointer] forKeyPath:OCMOCK_ANY error:(NSError * __autoreleasing *)[OCMArg anyPointer]]; @@ -767,7 +739,7 @@ - (void)testShouldConsiderADictionaryContainingOnlyNullValuesForKeysMappable RKAttributeMapping *nameMapping = [RKAttributeMapping attributeMappingFromKeyPath:@"name" toKeyPath:@"name"]; [mapping addPropertyMapping:nameMapping]; - NSMutableDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:[NSNull null], @"name", nil]; + NSDictionary *dictionary = @{ @"name": [NSNull null] }; RKTestUser *user = [RKTestUser user]; RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:dictionary destinationObject:user mapping:mapping]; @@ -1641,7 +1613,7 @@ - (void)testShouldMapASingleObjectDynamically }]; NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:dynamicMapping forKey:@""]; + [mappingsDictionary setObject:dynamicMapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"boy.json"]; RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; @@ -1662,7 +1634,7 @@ - (void)testShouldMapASingleObjectDynamicallyWithADeclarativeMatcher [dynamicMapping setObjectMapping:girlMapping whenValueOfKeyPath:@"type" isEqualTo:@"Girl"]; NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:dynamicMapping forKey:@""]; + [mappingsDictionary setObject:dynamicMapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"boy.json"]; RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; @@ -1683,7 +1655,7 @@ - (void)testShouldACollectionOfObjectsDynamically [dynamicMapping setObjectMapping:girlMapping whenValueOfKeyPath:@"type" isEqualTo:@"Girl"]; NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:dynamicMapping forKey:@""]; + [mappingsDictionary setObject:dynamicMapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"mixed.json"]; RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; @@ -1710,7 +1682,7 @@ - (void)testShouldMapARelationshipDynamically [boyMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"friends" toKeyPath:@"friends" withMapping:dynamicMapping]];; NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:dynamicMapping forKey:@""]; + [mappingsDictionary setObject:dynamicMapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"friends.json"]; RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; @@ -1746,7 +1718,7 @@ - (void)testShouldBeAbleToDeclineMappingAnObjectByReturningANilObjectMapping }]; NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:dynamicMapping forKey:@""]; + [mappingsDictionary setObject:dynamicMapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"mixed.json"]; RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; @@ -1778,7 +1750,7 @@ - (void)testShouldBeAbleToDeclineMappingObjectsInARelationshipByReturningANilObj [boyMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"friends" toKeyPath:@"friends" withMapping:dynamicMapping]];; NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:dynamicMapping forKey:@""]; + [mappingsDictionary setObject:dynamicMapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"friends.json"]; RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; @@ -1809,7 +1781,7 @@ - (void)testShouldMapATargetObjectWithADynamicMapping }]; NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:dynamicMapping forKey:@""]; + [mappingsDictionary setObject:dynamicMapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"boy.json"]; Boy *blake = [Boy new]; @@ -1831,7 +1803,7 @@ - (void)testShouldFailWithAnErrorIfATargetObjectIsProvidedAndTheDynamicMappingRe }]; NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:dynamicMapping forKey:@""]; + [mappingsDictionary setObject:dynamicMapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"boy.json"]; Boy *blake = [Boy new]; @@ -1857,7 +1829,7 @@ - (void)testShouldFailWithAnErrorIfATargetObjectIsProvidedAndTheDynamicMappingRe }]; NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - [mappingsDictionary setObject:dynamicMapping forKey:@""]; + [mappingsDictionary setObject:dynamicMapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"girl.json"]; Boy *blake = [Boy new]; @@ -2129,4 +2101,23 @@ - (void)testMappingMultipleKeyPathsAtRootOfObject expect([mapper.mappingResult array]).to.haveCountOf(4); } +- (void)testAggregatingPropertyMappingUsingNilKeyPath +{ + NSDictionary *objectRepresentation = @{ @"name": @"Blake", @"latitude": @(125.55), @"longitude": @(200.5) }; + RKObjectMapping *userMapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; + [userMapping addAttributeMappingsFromArray:@[ @"name" ]]; + RKObjectMapping *coordinateMapping = [RKObjectMapping mappingForClass:[RKTestCoordinate class]]; + [coordinateMapping addAttributeMappingsFromArray:@[ @"latitude", @"longitude" ]]; + [userMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:nil toKeyPath:@"coordinate" withMapping:coordinateMapping]]; + RKTestUser *user = [RKTestUser new]; + RKMappingOperation *mappingOperation = [[RKMappingOperation alloc] initWithSourceObject:objectRepresentation destinationObject:user mapping:userMapping]; + RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new]; + mappingOperation.dataSource = dataSource; + [mappingOperation start]; + expect(mappingOperation.error).to.beNil(); + expect(user.coordinate).notTo.beNil(); + expect(user.coordinate.latitude).to.equal(125.55); + expect(user.coordinate.longitude).to.equal(200.5); +} + @end diff --git a/Tests/Models/RKTestUser.h b/Tests/Models/RKTestUser.h index bb90c76e4b..34e4089998 100644 --- a/Tests/Models/RKTestUser.h +++ b/Tests/Models/RKTestUser.h @@ -9,6 +9,11 @@ #import #import "RKTestAddress.h" +@interface RKTestCoordinate : NSObject +@property (nonatomic, assign) double latitude; +@property (nonatomic, assign) double longitude; +@end + @interface RKTestUser : NSObject @property (nonatomic, strong) NSNumber *userID; @@ -28,6 +33,7 @@ @property (nonatomic, strong) NSSet *friendsSet; @property (nonatomic, strong) NSOrderedSet *friendsOrderedSet; @property (nonatomic, strong) NSData *data; +@property (nonatomic, strong) RKTestCoordinate *coordinate; + (RKTestUser *)user; diff --git a/Tests/Models/RKTestUser.m b/Tests/Models/RKTestUser.m index 38656abd48..ce1640620c 100644 --- a/Tests/Models/RKTestUser.m +++ b/Tests/Models/RKTestUser.m @@ -9,6 +9,9 @@ #import "RKTestUser.h" #import "RKLog.h" +@implementation RKTestCoordinate +@end + @implementation RKTestUser + (RKTestUser *)user From ea304c5ec4d50c9a30580a220941ebe459ca00f8 Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Mon, 24 Dec 2012 18:00:20 -0500 Subject: [PATCH 28/41] Update test to run against local test server instead of restkit.org --- .../Logic/Network/RKManagedObjectRequestOperationTest.m | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m b/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m index 16dc619bbe..5a84363672 100644 --- a/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m +++ b/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m @@ -551,13 +551,10 @@ - (void)testThatMappingObjectsWithTheSameIdentificationAttributesAcrossTwoObject RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping pathPattern:nil keyPath:@"human" statusCodes:nil]; -// NSURL *URL = [NSURL URLWithString:@"humans/1" relativeToURL:[RKTestFactory baseURL]]; - [RKMIMETypeSerialization registerClass:[RKNSJSONSerialization class] forMIMEType:@"text/plain"]; - NSURL *URL = [NSURL URLWithString:@"http://restkit.org/human_1.json"]; + NSURL *URL = [NSURL URLWithString:@"humans/1" relativeToURL:[RKTestFactory baseURL]]; +// [RKMIMETypeSerialization registerClass:[RKNSJSONSerialization class] forMIMEType:@"text/plain"]; +// NSURL *URL = [NSURL URLWithString:@"http://restkit.org/human_1.json"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL]; -// [request setCachePolicy:NSURLRequestReturnCacheDataDontLoad]; -// NSData *JSON = [RKTestFixture dataWithContentsOfFixture:@"1.json"]; -// [RKTestHelpers cacheResponseForRequest:request withResponseData:JSON]; RKManagedObjectRequestOperation *firstOperation = [[RKManagedObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[ responseDescriptor ]]; firstOperation.managedObjectContext = managedObjectStore.persistentStoreManagedObjectContext; From 285b75ea2a6d0261049486d6a8b74bc211630684 Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Mon, 24 Dec 2012 18:29:00 -0500 Subject: [PATCH 29/41] Eliminate connection matchers in favor of source and destination predicates. closes #1105 --- Code/CoreData/RKConnectionDescription.h | 9 ++++----- Code/CoreData/RKConnectionDescription.m | 2 +- Code/CoreData/RKRelationshipConnectionOperation.m | 6 ++---- .../CoreData/RKRelationshipConnectionOperationTest.m | 10 ++++------ 4 files changed, 11 insertions(+), 16 deletions(-) diff --git a/Code/CoreData/RKConnectionDescription.h b/Code/CoreData/RKConnectionDescription.h index 52959e3ae2..d564ccfb80 100644 --- a/Code/CoreData/RKConnectionDescription.h +++ b/Code/CoreData/RKConnectionDescription.h @@ -19,7 +19,6 @@ // #import -#import "RKDynamicMappingMatcher.h" /** The `RKConnectionDescription` class describes a means for connecting a Core Data relationship. Connections can be established either by foreign key, in which case one or more attribute values on the source entity correspond to matching values on the destination entity, or by key path, in which case a key path is evaluated on the object graph to obtain a value for the relationship. Connection objects are used by instances of `RKRelationshipConnectionOperation` to connect a relationship of a given managed object. @@ -153,13 +152,13 @@ @property (nonatomic, assign) BOOL includesSubentities; /** - An optional predicate for filtering objects to be connected. + An optional predicate for conditionally evaluating the connection based on the state of the source object. */ -@property (nonatomic, copy) NSPredicate *predicate; +@property (nonatomic, strong) NSPredicate *sourcePredicate; /** - An optional matcher that filters the source object to be connected. + An optional predicate for filtering objects to be connected. */ -@property (nonatomic, strong) RKDynamicMappingMatcher* matcher; +@property (nonatomic, copy) NSPredicate *destinationPredicate; @end diff --git a/Code/CoreData/RKConnectionDescription.m b/Code/CoreData/RKConnectionDescription.m index f05dcdfd9a..538f329cee 100644 --- a/Code/CoreData/RKConnectionDescription.m +++ b/Code/CoreData/RKConnectionDescription.m @@ -80,7 +80,7 @@ - (id)init if ([self class] == [RKConnectionDescription class]) { @throw [NSException exceptionWithName:NSInternalInconsistencyException reason:[NSString stringWithFormat:@"%@ Failed to call designated initializer. " - "Invoke initWithRelationship:sourceKeyPath:destinationKeyPath:matcher: instead.", + "Invoke initWithRelationship:attributes: instead.", NSStringFromClass([self class])] userInfo:nil]; } diff --git a/Code/CoreData/RKRelationshipConnectionOperation.m b/Code/CoreData/RKRelationshipConnectionOperation.m index e443c3f2d9..8c49bc7120 100644 --- a/Code/CoreData/RKRelationshipConnectionOperation.m +++ b/Code/CoreData/RKRelationshipConnectionOperation.m @@ -139,16 +139,14 @@ - (id)relationshipValueWithConnectionResult:(id)result - (id)findConnected { id connectionResult = nil; - - if (self.connection.matcher && ![self.connection.matcher matches:self.managedObject]) - return nil; + if (self.connection.sourcePredicate && ![self.connection.sourcePredicate evaluateWithObject:self.managedObject]) return nil; if ([self.connection isForeignKeyConnection]) { NSDictionary *attributeValues = RKConnectionAttributeValuesWithObject(self.connection, self.managedObject); NSSet *managedObjects = [self.managedObjectCache managedObjectsWithEntity:[self.connection.relationship destinationEntity] attributeValues:attributeValues inManagedObjectContext:self.managedObjectContext]; - if (self.connection.predicate) managedObjects = [managedObjects filteredSetUsingPredicate:self.connection.predicate]; + if (self.connection.destinationPredicate) managedObjects = [managedObjects filteredSetUsingPredicate:self.connection.destinationPredicate]; if (!self.connection.includesSubentities) managedObjects = [managedObjects filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"entity == %@", [self.connection.relationship destinationEntity]]]; if ([self.connection.relationship isToMany]) { connectionResult = managedObjects; diff --git a/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m b/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m index bfa0981ce3..b44a6b61ad 100644 --- a/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m +++ b/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m @@ -256,7 +256,7 @@ - (void)testNotConnectingToSubentities expect(secondChild.friends).to.equal(expectedFriends); } -- (void)testConnectionMatcher +- (void)testConnectionWithSourcePredicate { RKHuman *human = [RKTestFactory insertManagedObjectForEntityForName:@"Human" inManagedObjectContext:nil withProperties:nil]; human.sex = @"female"; @@ -271,16 +271,14 @@ - (void)testConnectionMatcher [mapping addConnectionForRelationship:@"cats" connectedBy:@"sex"]; RKFetchRequestManagedObjectCache *managedObjectCache = [RKFetchRequestManagedObjectCache new]; RKConnectionDescription *connection = [mapping connectionForRelationship:@"cats"]; - - RKEntityMapping *catMapping = [RKEntityMapping mappingForEntityForName:@"Cat" inManagedObjectStore:[RKTestFactory managedObjectStore]]; - connection.matcher = [[RKDynamicMappingMatcher alloc] initWithKeyPath:@"sex" expectedValue:@"male" objectMapping:catMapping]; + connection.sourcePredicate = [NSPredicate predicateWithFormat:@"sex == %@", @"male"]; RKRelationshipConnectionOperation *operation = [[RKRelationshipConnectionOperation alloc] initWithManagedObject:human connection:connection managedObjectCache:managedObjectCache]; [operation start]; assertThat(human.cats, hasCountOf(0)); } -- (void)testConnectionPredicate +- (void)testConnectionWithDestinationPredicate { RKHuman *human = [RKTestFactory insertManagedObjectForEntityForName:@"Human" inManagedObjectContext:nil withProperties:nil]; human.sex = @"female"; @@ -294,7 +292,7 @@ - (void)testConnectionPredicate [mapping addConnectionForRelationship:@"cats" connectedBy:@"sex"]; RKFetchRequestManagedObjectCache *managedObjectCache = [RKFetchRequestManagedObjectCache new]; RKConnectionDescription *connection = [mapping connectionForRelationship:@"cats"]; - connection.predicate = [NSPredicate predicateWithFormat:@"birthYear = 2011"]; + connection.destinationPredicate = [NSPredicate predicateWithFormat:@"birthYear = 2011"]; RKRelationshipConnectionOperation *operation = [[RKRelationshipConnectionOperation alloc] initWithManagedObject:human connection:connection managedObjectCache:managedObjectCache]; From aecc1db3524079c1a72d2ddc2f63f98fa5c6d12a Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Tue, 25 Dec 2012 14:50:13 -0500 Subject: [PATCH 30/41] Add support, tests, and documentation for the deletion of External Storage directory when an instance of `RKManagedObjectStore` is reset. closes #677 --- Code/CoreData/RKManagedObjectStore.h | 2 +- Code/CoreData/RKManagedObjectStore.m | 16 +++++ .../Logic/CoreData/RKManagedObjectStoreTest.m | 56 ++++++++++++++++++ Tests/Models/Data Model.xcdatamodel/elements | Bin 322018 -> 325425 bytes Tests/Models/Data Model.xcdatamodel/layout | Bin 46897 -> 46892 bytes 5 files changed, 73 insertions(+), 1 deletion(-) diff --git a/Code/CoreData/RKManagedObjectStore.h b/Code/CoreData/RKManagedObjectStore.h index 54f3945875..d50fd4969c 100644 --- a/Code/CoreData/RKManagedObjectStore.h +++ b/Code/CoreData/RKManagedObjectStore.h @@ -140,7 +140,7 @@ error:(NSError **)error; /** - Resets the persistent stores in the receiver's persistent store coordinator and recreates them. If a store being reset is backed by a file on disk (such as a SQLite file), the file will be removed prior to recreating the store. If the store was originally created using a seed database, the seed will be recopied to reset the store to its seeded state. + Resets the persistent stores in the receiver's persistent store coordinator and recreates them. If a store being reset is backed by a file on disk (such as a SQLite file), the file will be removed prior to recreating the store. If the store was originally created using a seed database, the seed will be recopied to reset the store to its seeded state. If the managed object model uses External Storage for any of its entities, then the external storage directory will be recursively deleted when the store is reset. @param error On input, a pointer to an error object. If an error occurs, this pointer is set to an actual error object containing the error information. You may specify nil for this parameter if you do not want the error information. @return A Boolean value indicating if the reset was successful. diff --git a/Code/CoreData/RKManagedObjectStore.m b/Code/CoreData/RKManagedObjectStore.m index ee11aa4c5f..c945718270 100644 --- a/Code/CoreData/RKManagedObjectStore.m +++ b/Code/CoreData/RKManagedObjectStore.m @@ -225,6 +225,22 @@ - (BOOL)resetPersistentStores:(NSError **)error if (error) *error = localError; return NO; } + + // Check for and remove an external storage directory + NSString *supportDirectoryName = [NSString stringWithFormat:@".%@_SUPPORT", [[URL lastPathComponent] stringByDeletingPathExtension]]; + NSURL *supportDirectoryFileURL = [NSURL URLWithString:supportDirectoryName relativeToURL:[URL URLByDeletingLastPathComponent]]; + BOOL isDirectory = NO; + if ([[NSFileManager defaultManager] fileExistsAtPath:[supportDirectoryFileURL path] isDirectory:&isDirectory]) { + if (isDirectory) { + if (! [[NSFileManager defaultManager] removeItemAtURL:supportDirectoryFileURL error:&localError]) { + RKLogError(@"Failed to remove persistent store Support directory at URL %@: %@", supportDirectoryFileURL, localError); + if (error) *error = localError; + return NO; + } + } else { + RKLogWarning(@"Found external support item for store at path that is not a directory: %@", [supportDirectoryFileURL path]); + } + } } else { RKLogDebug(@"Skipped removal of persistent store file: URL for persistent store is not a file URL. (%@)", URL); } diff --git a/Tests/Logic/CoreData/RKManagedObjectStoreTest.m b/Tests/Logic/CoreData/RKManagedObjectStoreTest.m index 703081d192..4fd252c507 100644 --- a/Tests/Logic/CoreData/RKManagedObjectStoreTest.m +++ b/Tests/Logic/CoreData/RKManagedObjectStoreTest.m @@ -271,4 +271,60 @@ - (void)testResetPersistentStoresDoesNotTriggerDeadlock }]; } +- (void)testCleanupOfExternalStorageDirectoryOnReset +{ + RKManagedObjectStore *managedObjectStore = [RKTestFactory managedObjectStore]; + NSPersistentStore *store = [managedObjectStore persistentStoreCoordinator].persistentStores[0]; + + // Check that there is a support directory + NSString *supportDirectoryName = [NSString stringWithFormat:@".%@_SUPPORT", [[store.URL lastPathComponent] stringByDeletingPathExtension]]; + NSURL *supportDirectoryFileURL = [NSURL URLWithString:supportDirectoryName relativeToURL:[store.URL URLByDeletingLastPathComponent]]; + + BOOL isDirectory = NO; + BOOL supportDirectoryExists = [[NSFileManager defaultManager] fileExistsAtPath:[supportDirectoryFileURL path] isDirectory:&isDirectory]; + expect(supportDirectoryExists).to.equal(YES); + expect(isDirectory).to.equal(YES); + NSError *error = nil; + NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:[supportDirectoryFileURL path] error:&error]; + NSDate *creationDate = attributes[NSFileCreationDate]; + + BOOL success = [managedObjectStore resetPersistentStores:&error]; + expect(success).to.equal(YES); + + attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:[supportDirectoryFileURL path] error:&error]; + NSDate *newCreationDate = attributes[NSFileCreationDate]; + + expect([creationDate laterDate:newCreationDate]).to.equal(newCreationDate); +} + +- (void)testThatPersistentStoreWithLongNameHasExternalStorageResetCorrectly +{ + // Create a store with an object to serve as our seed database + RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] init]; + NSError *error = nil; + NSString *storePath = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"This is the Store.sqlite"]; + NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:storePath fromSeedDatabaseAtPath:nil withConfiguration:nil options:nil error:&error]; + assertThat(persistentStore, is(notNilValue())); + [managedObjectStore createManagedObjectContexts]; + + // Check that there is a support directory + NSString *supportDirectoryName = [NSString stringWithFormat:@".%@_SUPPORT", [[persistentStore.URL lastPathComponent] stringByDeletingPathExtension]]; + NSString *supportDirectoryPath = [[[[persistentStore URL] path] stringByDeletingLastPathComponent] stringByAppendingPathComponent:supportDirectoryName]; + + BOOL isDirectory = NO; + BOOL supportDirectoryExists = [[NSFileManager defaultManager] fileExistsAtPath:supportDirectoryPath isDirectory:&isDirectory]; + expect(supportDirectoryExists).to.equal(YES); + expect(isDirectory).to.equal(YES); + NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:supportDirectoryPath error:&error]; + NSDate *creationDate = attributes[NSFileCreationDate]; + + BOOL success = [managedObjectStore resetPersistentStores:&error]; + expect(success).to.equal(YES); + + attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:supportDirectoryPath error:&error]; + NSDate *newCreationDate = attributes[NSFileCreationDate]; + + expect([creationDate laterDate:newCreationDate]).to.equal(newCreationDate); +} + @end diff --git a/Tests/Models/Data Model.xcdatamodel/elements b/Tests/Models/Data Model.xcdatamodel/elements index 4a2cdf976b6caa00867d2b40ea7cb641ecc02615..8e4d8206ed27df3bed849f97eea355767b79edca 100644 GIT binary patch literal 325425 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

jfF#VLky$iahCMbihemJnF7NXp_SfhW?6A>i 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 xe9kX)qBC8Ip+CCL@VhzVcYO1VSZ1Sv diff --git a/Tests/Models/Data Model.xcdatamodel/layout b/Tests/Models/Data Model.xcdatamodel/layout index 4398b87a0df1f6539e9495e4b29ddff068277b38..7d5f8c37ebf8145cc8e1af6232eeaf88ec5b6381 100644 GIT binary patch delta 20449 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%0D7PrjDBq}{sPL$$ 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

rXd4)EG{6dF9r$X1lz`~Hiu)@f~w!$fe z(+X!6{!uuuaDL&U!li{P3Re}bF8s4_SK;2mYlZg;9~C|=d{OwS2rgn4$rOz#8ds!V zN{|xS z5^f2v#J0q~#IeMs#J$9`#Ji-vq^G2>WJ<~Ok|QO@N=}xXDLG$qQB-oJ8MO>9qnEMDWXd$l^vVp&Ov*TA4rQ5TIc1GyEoJRxU1hyxQ_B{VohUn9 zcBSlE*^RRMWe>|`%N5E+s^uEx+U0uXhUJ0fA?0D^k>%0lapj5S$>nL~MdhXC<>gi7 zE6Z1xuPfhBzNvgm`S$W%<$KHbmme>GS^lQ{UHOOdPZgvJY6VaMSIAdPs8Fa-tnjVy zuL!CLt%#_Is)(&fs7S6zt;nswE2dOTub5TwN5#B~1r>`bmR4-6*et5pTCtpJ+y(<$cQ!6tnvn%r|t11^&F0I^C zxxeyI<s-UWns;a7ns`jd`s@|&ps%cf*t9DiG zsoGz4uDb%^tx!1+lCDoH=8oC>HH|%XV&~UinSi^~i(+%euE;d|l_`4BoL>d{5>_*wf zv5n&!CpJ!Q3~Nkj6gCz&mNr&2E^l1fxTbNiabx4A#;uJz8h1DDZ9Lj|uJK|MtqE#E znix&2CfTO3P2-y;Hcf7_Y;tIFZSrXH5;gfWB{rosWj5tBn)F3p0+%1dDW`Xs@1C7YS3!jYT9bvYT0VtYTN44n$eown%639Eov=o zt!S-k6}4_@J=A)>^-}AV)@yC7Hkr0DZR6S|woPhNYEx~~XwzylYO`#!ZVPUUX-jNN zX-jX*Y!kKBw>7o3w6(WQZ`<2;pzTK6Em7Ouwtw0lwmob6*gmOUsa?N4q&>Vnp*^`h zwLP!BpnY2Vy!IvS%iCAAuWeu7e!2ax_Ur9`x8H8R*M7hKVf&K~k913?keu8=&J4#chz=H?V8m!r)yrr>a4Zb~=QJ+_?8gi@LBjD#G6l-jWMF8zV^PJzA1e(`xf*q?OWA1*te-~ zd*7bEgMG*P&i7sKyWMxc?@8awzJL2Z_LKX;es=%Z{)zoc{p$TX{f7N!{g(X>{jU9j z{-FNo{*?aA{=ELO{_6hP{-*x+{{H^u{p Date: Tue, 25 Dec 2012 23:53:01 -0500 Subject: [PATCH 31/41] Add support for skipping relationship connections if all connection attributes evaluate to nil. Add support for establishing connections when some connection attributes evaluate to nil. fixes #1099 closes #1102 --- .../RKRelationshipConnectionOperation.m | 5 ++- .../RKRelationshipConnectionOperationTest.m | 39 +++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/Code/CoreData/RKRelationshipConnectionOperation.m b/Code/CoreData/RKRelationshipConnectionOperation.m index 8c49bc7120..4cb50c10ac 100644 --- a/Code/CoreData/RKRelationshipConnectionOperation.m +++ b/Code/CoreData/RKRelationshipConnectionOperation.m @@ -45,9 +45,9 @@ static id RKMutableSetValueForRelationship(NSRelationshipDescription *relationsh for (NSString *sourceAttribute in connection.attributes) { NSString *destinationAttribute = [connection.attributes objectForKey:sourceAttribute]; id sourceValue = [managedObject valueForKey:sourceAttribute]; - [destinationEntityAttributeValues setValue:sourceValue forKey:destinationAttribute]; + [destinationEntityAttributeValues setValue:sourceValue ?: [NSNull null] forKey:destinationAttribute]; } - return destinationEntityAttributeValues; + return [[destinationEntityAttributeValues allValues] isEqualToArray:@[ [NSNull null] ]] ? nil : destinationEntityAttributeValues; } @interface RKRelationshipConnectionOperation () @@ -143,6 +143,7 @@ - (id)findConnected if ([self.connection isForeignKeyConnection]) { NSDictionary *attributeValues = RKConnectionAttributeValuesWithObject(self.connection, self.managedObject); + if ([attributeValues count] == 0) return nil; NSSet *managedObjects = [self.managedObjectCache managedObjectsWithEntity:[self.connection.relationship destinationEntity] attributeValues:attributeValues inManagedObjectContext:self.managedObjectContext]; diff --git a/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m b/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m index b44a6b61ad..ba6c815e02 100644 --- a/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m +++ b/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m @@ -301,4 +301,43 @@ - (void)testConnectionWithDestinationPredicate assertThat(human.cats, hasItems(asia, nil)); } +- (void)testConnectionOfOptionalRelationshipIsSkippedWhenAllConnectionAttributesEvaluateToNil +{ + RKHuman *human = [RKTestFactory insertManagedObjectForEntityForName:@"Human" inManagedObjectContext:nil withProperties:nil]; + RKCat __unused *asia = [RKTestFactory insertManagedObjectForEntityForName:@"Cat" inManagedObjectContext:nil withProperties:@{@"birthYear": @2011}]; + RKCat __unused *lola = [RKTestFactory insertManagedObjectForEntityForName:@"Cat" inManagedObjectContext:nil withProperties:@{@"birthYear": @2012}]; + + RKEntityMapping *mapping = [RKEntityMapping mappingForEntityForName:@"Human" inManagedObjectStore:[RKTestFactory managedObjectStore]]; + [mapping addConnectionForRelationship:@"cats" connectedBy:@"sex"]; + RKFetchRequestManagedObjectCache *managedObjectCache = [RKFetchRequestManagedObjectCache new]; + RKConnectionDescription *connection = [mapping connectionForRelationship:@"cats"]; + + RKRelationshipConnectionOperation *operation = [[RKRelationshipConnectionOperation alloc] initWithManagedObject:human connection:connection managedObjectCache:managedObjectCache]; + [operation start]; + assertThat(human.cats, hasCountOf(0)); +} + +- (void)testConnectionOfOptionalRelationshipIsEvaluatedWhenAtLeastOneAttributeEvaluatesToNonNil +{ + RKHuman *human = [RKTestFactory insertManagedObjectForEntityForName:@"Human" inManagedObjectContext:nil withProperties:nil]; + human.sex = @"female"; + + RKCat *asia = [RKTestFactory insertManagedObjectForEntityForName:@"Cat" inManagedObjectContext:nil withProperties:@{@"birthYear": @2011}]; + asia.sex = @"female"; + asia.name = @"Asia"; + RKCat *lola = [RKTestFactory insertManagedObjectForEntityForName:@"Cat" inManagedObjectContext:nil withProperties:@{@"birthYear": @2012}]; + lola.sex = @"female"; + lola.name = nil; + + RKEntityMapping *mapping = [RKEntityMapping mappingForEntityForName:@"Human" inManagedObjectStore:[RKTestFactory managedObjectStore]]; + [mapping addConnectionForRelationship:@"cats" connectedBy:@[ @"sex", @"name" ]]; + RKFetchRequestManagedObjectCache *managedObjectCache = [RKFetchRequestManagedObjectCache new]; + RKConnectionDescription *connection = [mapping connectionForRelationship:@"cats"]; + + RKRelationshipConnectionOperation *operation = [[RKRelationshipConnectionOperation alloc] initWithManagedObject:human connection:connection managedObjectCache:managedObjectCache]; + [operation start]; + assertThat(human.cats, hasCountOf(1)); + assertThat(human.cats, hasItems(lola, nil)); +} + @end From d1568cad6311037a0e2f7d5b525aabeb01556f28 Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Wed, 26 Dec 2012 00:20:56 -0500 Subject: [PATCH 32/41] Add support for mapping singular values to collections. fixes #1046 --- Code/ObjectMapping/RKMappingOperation.m | 3 ++ .../RKObjectMappingNextGenTest.m | 54 +++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/Code/ObjectMapping/RKMappingOperation.m b/Code/ObjectMapping/RKMappingOperation.m index c9c42cca32..a30b31f436 100644 --- a/Code/ObjectMapping/RKMappingOperation.m +++ b/Code/ObjectMapping/RKMappingOperation.m @@ -71,6 +71,9 @@ id RKTransformedValueWithClass(id value, Class destinationType, NSValueTransform if ([value isKindOfClass:destinationType]) { // No transformation necessary return value; + } else if (RKClassIsCollection(destinationType) && !RKObjectIsCollection(value)) { + // Call ourself recursively with an array value to transform as appropriate + return RKTransformedValueWithClass(@[ value ], destinationType, dateToStringValueTransformer); } else if ([sourceType isSubclassOfClass:[NSString class]] && [destinationType isSubclassOfClass:[NSDate class]]) { // String -> Date return [dateToStringValueTransformer transformedValue:value]; diff --git a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m index cb95e011ec..403a6fab22 100644 --- a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m +++ b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m @@ -1307,6 +1307,54 @@ - (void)testShouldMapNSDateDistantFutureDateStringToADate assertThat([dateFormatter stringFromDate:user.birthDate], is(equalTo(@"01/01/3001"))); } +- (void)testMappingASingularValueToAnArray +{ + RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; + [mapping addAttributeMappingsFromArray:@[ @"favoriteColors" ]]; + + NSDictionary *dictionary = @{ @"favoriteColors": @"Blue" }; + RKTestUser *user = [RKTestUser user]; + RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:dictionary destinationObject:user mapping:mapping]; + RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new]; + operation.dataSource = dataSource; + NSError *error = nil; + [operation performMapping:&error]; + + assertThat(user.favoriteColors, is(equalTo(@[ @"Blue" ]))); +} + +- (void)testMappingASingularValueToASet +{ + RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; + [mapping addAttributeMappingsFromArray:@[ @"friendsSet" ]]; + + NSDictionary *dictionary = @{ @"friendsSet": @"Jeff" }; + RKTestUser *user = [RKTestUser user]; + RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:dictionary destinationObject:user mapping:mapping]; + RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new]; + operation.dataSource = dataSource; + NSError *error = nil; + [operation performMapping:&error]; + + assertThat(user.friendsSet, is(equalTo([NSSet setWithObject:@"Jeff" ]))); +} + +- (void)testMappingASingularValueToAnOrderedSet +{ + RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; + [mapping addAttributeMappingsFromArray:@[ @"friendsOrderedSet" ]]; + + NSDictionary *dictionary = @{ @"friendsOrderedSet": @"Jeff" }; + RKTestUser *user = [RKTestUser user]; + RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:dictionary destinationObject:user mapping:mapping]; + RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new]; + operation.dataSource = dataSource; + NSError *error = nil; + [operation performMapping:&error]; + + assertThat(user.friendsOrderedSet, is(equalTo([NSOrderedSet orderedSetWithObject:@"Jeff" ]))); +} + #pragma mark - Relationship Mapping - (void)testShouldMapANestedObject @@ -1593,6 +1641,12 @@ - (void)testShouldNotNilOutTheRelationshipIfItIsMissingAndCurrentlyNilOnTheTarge [mockUser verify]; } +- (void)testAppendingLoadedObjectsOntoRelationshipInsteadOfReplacing +{ + // Behaviors: Replace, Append, Nullify. AssignmentPolicy + // Load the +} + #pragma mark - RKDynamicMapping - (void)testShouldMapASingleObjectDynamically From 7d63ca36ac0e79f252b2938ff0a4da0dfab1ecaf Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Wed, 26 Dec 2012 10:53:16 -0500 Subject: [PATCH 33/41] Improve relationship connection behaviors when all connection attributes resolve to `nil`. Add logic for skipping the connection entirely. refs #1099 --- .../RKRelationshipConnectionOperation.m | 27 ++++++++++++++----- .../RKRelationshipConnectionOperationTest.m | 26 ++++++++++++++++++ 2 files changed, 46 insertions(+), 7 deletions(-) diff --git a/Code/CoreData/RKRelationshipConnectionOperation.m b/Code/CoreData/RKRelationshipConnectionOperation.m index 4cb50c10ac..a6df90bc5f 100644 --- a/Code/CoreData/RKRelationshipConnectionOperation.m +++ b/Code/CoreData/RKRelationshipConnectionOperation.m @@ -38,6 +38,11 @@ static id RKMutableSetValueForRelationship(NSRelationshipDescription *relationsh return [relationship isOrdered] ? [NSMutableOrderedSet orderedSet] : [NSMutableSet set]; } +static BOOL RKConnectionAttributeValuesIsNotConnectable(NSDictionary *attributeValues) +{ + return [[NSSet setWithArray:[attributeValues allValues]] isEqualToSet:[NSSet setWithObject:[NSNull null]]]; +} + static NSDictionary *RKConnectionAttributeValuesWithObject(RKConnectionDescription *connection, NSManagedObject *managedObject) { NSCAssert([connection isForeignKeyConnection], @"Only valid for a foreign key connection"); @@ -47,7 +52,7 @@ static id RKMutableSetValueForRelationship(NSRelationshipDescription *relationsh id sourceValue = [managedObject valueForKey:sourceAttribute]; [destinationEntityAttributeValues setValue:sourceValue ?: [NSNull null] forKey:destinationAttribute]; } - return [[destinationEntityAttributeValues allValues] isEqualToArray:@[ [NSNull null] ]] ? nil : destinationEntityAttributeValues; + return RKConnectionAttributeValuesIsNotConnectable(destinationEntityAttributeValues) ? nil : destinationEntityAttributeValues; } @interface RKRelationshipConnectionOperation () @@ -136,14 +141,19 @@ - (id)relationshipValueWithConnectionResult:(id)result return result; } -- (id)findConnected +- (id)findConnected:(BOOL *)shouldConnectRelationship { + *shouldConnectRelationship = YES; id connectionResult = nil; if (self.connection.sourcePredicate && ![self.connection.sourcePredicate evaluateWithObject:self.managedObject]) return nil; if ([self.connection isForeignKeyConnection]) { NSDictionary *attributeValues = RKConnectionAttributeValuesWithObject(self.connection, self.managedObject); - if ([attributeValues count] == 0) return nil; + // If there are no attribute values available for connecting, skip the connection entirely + if (! attributeValues) { + *shouldConnectRelationship = NO; + return nil; + } NSSet *managedObjects = [self.managedObjectCache managedObjectsWithEntity:[self.connection.relationship destinationEntity] attributeValues:attributeValues inManagedObjectContext:self.managedObjectContext]; @@ -174,10 +184,13 @@ - (void)main NSString *relationshipName = self.connection.relationship.name; RKLogTrace(@"Connecting relationship '%@' with mapping: %@", relationshipName, self.connection); [self.managedObjectContext performBlockAndWait:^{ - self.connectedValue = [self findConnected]; - [self.managedObject setValue:self.connectedValue forKeyPath:relationshipName]; - RKLogDebug(@"Connected relationship '%@' to object '%@'", relationshipName, self.connectedValue); - if (self.connectionBlock) self.connectionBlock(self, self.connectedValue); + BOOL shouldConnect = YES; + self.connectedValue = [self findConnected:&shouldConnect]; + if (shouldConnect) { + [self.managedObject setValue:self.connectedValue forKeyPath:relationshipName]; + RKLogDebug(@"Connected relationship '%@' to object '%@'", relationshipName, self.connectedValue); + if (self.connectionBlock) self.connectionBlock(self, self.connectedValue); + } }]; } diff --git a/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m b/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m index ba6c815e02..9de95afeb2 100644 --- a/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m +++ b/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m @@ -340,4 +340,30 @@ - (void)testConnectionOfOptionalRelationshipIsEvaluatedWhenAtLeastOneAttributeEv assertThat(human.cats, hasItems(lola, nil)); } +- (void)testConnectionOfOptionalRelationshipIsSkippedWhenAllAttributesEvaluateToNil +{ + RKHuman *human = [RKTestFactory insertManagedObjectForEntityForName:@"Human" inManagedObjectContext:nil withProperties:nil]; + + RKCat *asia = [RKTestFactory insertManagedObjectForEntityForName:@"Cat" inManagedObjectContext:nil withProperties:@{@"birthYear": @2011}]; + asia.sex = @"female"; + asia.name = @"Asia"; + RKCat *lola = [RKTestFactory insertManagedObjectForEntityForName:@"Cat" inManagedObjectContext:nil withProperties:@{@"birthYear": @2012}]; + lola.sex = @"female"; + lola.name = nil; + + human.cats = [NSSet setWithObject:asia]; + + RKEntityMapping *mapping = [RKEntityMapping mappingForEntityForName:@"Human" inManagedObjectStore:[RKTestFactory managedObjectStore]]; + [mapping addConnectionForRelationship:@"cats" connectedBy:@[ @"sex", @"name" ]]; + RKFetchRequestManagedObjectCache *managedObjectCache = [RKFetchRequestManagedObjectCache new]; + RKConnectionDescription *connection = [mapping connectionForRelationship:@"cats"]; + + RKRelationshipConnectionOperation *operation = [[RKRelationshipConnectionOperation alloc] initWithManagedObject:human connection:connection managedObjectCache:managedObjectCache]; + [operation start]; + + // Operation should be skipped due to lack of connectable attributes + assertThat(human.cats, hasCountOf(1)); + assertThat(human.cats, hasItems(asia, nil)); +} + @end From 8d1db8c3a103024508c491a7ffd3cacc08788a1a Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Wed, 26 Dec 2012 11:03:34 -0500 Subject: [PATCH 34/41] Add type transformation verifying nested keypath type transformations work as expected. closes #912 --- .../RKObjectMappingNextGenTest.m | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m index 403a6fab22..9d89286aed 100644 --- a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m +++ b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m @@ -1355,6 +1355,26 @@ - (void)testMappingASingularValueToAnOrderedSet assertThat(user.friendsOrderedSet, is(equalTo([NSOrderedSet orderedSetWithObject:@"Jeff" ]))); } +- (void)testTypeTransformationAtKeyPath +{ + RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; + RKAttributeMapping *websiteMapping = [RKAttributeMapping attributeMappingFromKeyPath:@"this.that" toKeyPath:@"address.addressID"]; + [mapping addPropertyMapping:websiteMapping]; + + NSDictionary *dictionary = @{ @"this": @{ @"that": @"12345" }}; + RKTestUser *user = [RKTestUser user]; + RKTestAddress *address = [RKTestAddress new]; + user.address = address; + RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:dictionary destinationObject:user mapping:mapping]; + RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new]; + operation.dataSource = dataSource; + NSError *error = nil; + [operation performMapping:&error]; + + assertThat(user.address.addressID, is(instanceOf([NSNumber class]))); + assertThat(user.address.addressID, is(equalTo(@(12345)))); +} + #pragma mark - Relationship Mapping - (void)testShouldMapANestedObject From b858f2753f5ec9d5c3f45b71151293b4ca7f9a88 Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Wed, 26 Dec 2012 14:40:59 -0500 Subject: [PATCH 35/41] Grow up support for mapping to primitives by avoiding crashes due to null conversions. fixes #1043, fixes #741, fixes #703 --- Code/CoreData/RKEntityMapping.m | 2 +- Code/CoreData/RKPropertyInspector+CoreData.h | 2 +- Code/CoreData/RKPropertyInspector+CoreData.m | 54 ++++++++++----- Code/ObjectMapping/RKAttributeMapping.h | 2 +- Code/ObjectMapping/RKAttributeMapping.m | 1 - Code/ObjectMapping/RKMappingOperation.m | 37 +++++++---- Code/ObjectMapping/RKObjectMapping.m | 4 +- Code/ObjectMapping/RKPropertyInspector.h | 48 +++++++++++--- Code/ObjectMapping/RKPropertyInspector.m | 65 +++++++++++++------ Tests/Logic/CoreData/RKEntityMappingTest.m | 4 +- .../Network/RKObjectRequestOperationTest.m | 2 +- .../RKObjectMappingNextGenTest.m | 50 +++++++++++++- Tests/Models/RKTestUser.h | 1 + 13 files changed, 203 insertions(+), 69 deletions(-) diff --git a/Code/CoreData/RKEntityMapping.m b/Code/CoreData/RKEntityMapping.m index 9e66610a0c..1c52de3c2d 100644 --- a/Code/CoreData/RKEntityMapping.m +++ b/Code/CoreData/RKEntityMapping.m @@ -278,7 +278,7 @@ - (Class)classForKeyPath:(NSString *)keyPath NSArray *components = [keyPath componentsSeparatedByString:@"."]; Class propertyClass = self.objectClass; for (NSString *property in components) { - propertyClass = [[RKPropertyInspector sharedInspector] classForPropertyNamed:property ofClass:propertyClass]; + propertyClass = [[RKPropertyInspector sharedInspector] classForPropertyNamed:property ofClass:propertyClass isPrimitive:nil]; if (! propertyClass) propertyClass = [[RKPropertyInspector sharedInspector] classForPropertyNamed:property ofEntity:self.entity]; if (! propertyClass) break; } diff --git a/Code/CoreData/RKPropertyInspector+CoreData.h b/Code/CoreData/RKPropertyInspector+CoreData.h index e34d2b864b..2afbc8d636 100644 --- a/Code/CoreData/RKPropertyInspector+CoreData.h +++ b/Code/CoreData/RKPropertyInspector+CoreData.h @@ -31,7 +31,7 @@ @param entity The entity to retrieve the properties names and classes of. @return A dictionary containing the names and classes of the given entity. */ -- (NSDictionary *)propertyNamesAndClassesForEntity:(NSEntityDescription *)entity; +- (NSDictionary *)propertyInspectionForEntity:(NSEntityDescription *)entity; /** Returns the class used to represent the property with the given name on the given entity. diff --git a/Code/CoreData/RKPropertyInspector+CoreData.m b/Code/CoreData/RKPropertyInspector+CoreData.m index 0d196aa500..396330ee5c 100644 --- a/Code/CoreData/RKPropertyInspector+CoreData.m +++ b/Code/CoreData/RKPropertyInspector+CoreData.m @@ -31,14 +31,14 @@ @implementation RKPropertyInspector (CoreData) -- (NSDictionary *)propertyNamesAndClassesForEntity:(NSEntityDescription *)entity +- (NSDictionary *)propertyInspectionForEntity:(NSEntityDescription *)entity { - NSMutableDictionary *propertyNamesAndTypes = [_propertyNamesToTypesCache objectForKey:[entity name]]; - if (propertyNamesAndTypes) { - return propertyNamesAndTypes; + NSMutableDictionary *entityInspection = [_inspectionCache objectForKey:[entity name]]; + if (entityInspection) { + return entityInspection; } - propertyNamesAndTypes = [NSMutableDictionary dictionary]; + entityInspection = [NSMutableDictionary dictionary]; for (NSString *name in [entity attributesByName]) { NSAttributeDescription *attributeDescription = [[entity attributesByName] valueForKey:name]; if ([attributeDescription attributeValueClassName]) { @@ -46,7 +46,10 @@ - (NSDictionary *)propertyNamesAndClassesForEntity:(NSEntityDescription *)entity if ([cls isSubclassOfClass:[NSNumber class]] && [attributeDescription attributeType] == NSBooleanAttributeType) { cls = objc_getClass("NSCFBoolean") ?: objc_getClass("__NSCFBoolean") ?: cls; } - [propertyNamesAndTypes setValue:cls forKey:name]; + NSDictionary *propertyInspection = @{ RKPropertyInspectionNameKey: name, + RKPropertyInspectionKeyValueCodingClassKey: cls, + RKPropertyInspectionIsPrimitiveKey: @(NO) }; + [entityInspection setValue:propertyInspection forKey:name]; } else if ([attributeDescription attributeType] == NSTransformableAttributeType && ![name isEqualToString:@"_mapkit_hasPanoramaID"]) { @@ -60,7 +63,10 @@ - (NSDictionary *)propertyNamesAndClassesForEntity:(NSEntityDescription *)entity const char *attr = property_getAttributes(prop); Class destinationClass = RKKeyValueCodingClassFromPropertyAttributes(attr); if (destinationClass) { - [propertyNamesAndTypes setObject:destinationClass forKey:name]; + NSDictionary *propertyInspection = @{ RKPropertyInspectionNameKey: name, + RKPropertyInspectionKeyValueCodingClassKey: destinationClass, + RKPropertyInspectionIsPrimitiveKey: @(NO) }; + [entityInspection setObject:propertyInspection forKey:name]; } } } @@ -68,39 +74,55 @@ - (NSDictionary *)propertyNamesAndClassesForEntity:(NSEntityDescription *)entity for (NSString *name in [entity relationshipsByName]) { NSRelationshipDescription *relationshipDescription = [[entity relationshipsByName] valueForKey:name]; if ([relationshipDescription isToMany]) { - [propertyNamesAndTypes setValue:[NSSet class] forKey:name]; + if ([relationshipDescription isOrdered]) { + NSDictionary *propertyInspection = @{ RKPropertyInspectionNameKey: name, + RKPropertyInspectionKeyValueCodingClassKey: [NSOrderedSet class], + RKPropertyInspectionIsPrimitiveKey: @(NO) }; + [entityInspection setObject:propertyInspection forKey:name]; + } else { + NSDictionary *propertyInspection = @{ RKPropertyInspectionNameKey: name, + RKPropertyInspectionKeyValueCodingClassKey: [NSSet class], + RKPropertyInspectionIsPrimitiveKey: @(NO) }; + [entityInspection setObject:propertyInspection forKey:name]; + } } else { NSEntityDescription *destinationEntity = [relationshipDescription destinationEntity]; Class destinationClass = NSClassFromString([destinationEntity managedObjectClassName]); - [propertyNamesAndTypes setValue:destinationClass forKey:name]; + NSDictionary *propertyInspection = @{ RKPropertyInspectionNameKey: name, + RKPropertyInspectionKeyValueCodingClassKey: destinationClass, + RKPropertyInspectionIsPrimitiveKey: @(NO) }; + [entityInspection setObject:propertyInspection forKey:name]; } } - [_propertyNamesToTypesCache setObject:propertyNamesAndTypes forKey:[entity name]]; - RKLogDebug(@"Cached property names and types for Entity '%@': %@", entity, propertyNamesAndTypes); - return propertyNamesAndTypes; + [_inspectionCache setObject:entityInspection forKey:[entity name]]; + RKLogDebug(@"Cached property inspection for Entity '%@': %@", entity, entityInspection); + return entityInspection; } - (Class)classForPropertyNamed:(NSString *)propertyName ofEntity:(NSEntityDescription *)entity { - return [[self propertyNamesAndClassesForEntity:entity] valueForKey:propertyName]; + NSDictionary *entityInspection = [self propertyInspectionForEntity:entity]; + NSDictionary *propertyInspection = [entityInspection objectForKey:propertyName]; + return [propertyInspection objectForKey:RKPropertyInspectionKeyValueCodingClassKey]; } @end @interface NSManagedObject (RKPropertyInspection) -- (Class)rk_classForPropertyAtKeyPath:(NSString *)keyPath; +- (Class)rk_classForPropertyAtKeyPath:(NSString *)keyPath isPrimitive:(BOOL *)isPrimitive; @end @implementation NSManagedObject (RKPropertyInspection) -- (Class)rk_classForPropertyAtKeyPath:(NSString *)keyPath +- (Class)rk_classForPropertyAtKeyPath:(NSString *)keyPath isPrimitive:(BOOL *)isPrimitive { NSArray *components = [keyPath componentsSeparatedByString:@"."]; Class propertyClass = [self class]; for (NSString *property in components) { + if (isPrimitive) *isPrimitive = NO; // Core Data does not enable you to model primitives propertyClass = [[RKPropertyInspector sharedInspector] classForPropertyNamed:property ofEntity:[self entity]]; - propertyClass = propertyClass ?: [[RKPropertyInspector sharedInspector] classForPropertyNamed:property ofClass:propertyClass]; + propertyClass = propertyClass ?: [[RKPropertyInspector sharedInspector] classForPropertyNamed:property ofClass:propertyClass isPrimitive:isPrimitive]; if (! propertyClass) break; } diff --git a/Code/ObjectMapping/RKAttributeMapping.h b/Code/ObjectMapping/RKAttributeMapping.h index 4573da276b..6d08f968cf 100644 --- a/Code/ObjectMapping/RKAttributeMapping.h +++ b/Code/ObjectMapping/RKAttributeMapping.h @@ -51,7 +51,7 @@ mapped and attempts to transform the source content into the type of the desination property specified by the mapping. In this case, an NSDateFormatter object would be used to process the inbound `NSString` into an outbound `NSDate` object. - @param sourceKeyPath The key path on the source object from which to read the data being mapped. + @param sourceKeyPath The key path on the source object from which to read the data being mapped. If `nil`, then the entire source object representation is mapped to the specified destination attribute. @param destinationKeyPath The key path on the destination object on which to set the mapped data. @return A newly created attribute mapping object that is ready to be added to an object mapping. */ diff --git a/Code/ObjectMapping/RKAttributeMapping.m b/Code/ObjectMapping/RKAttributeMapping.m index 80ef7adeb0..a09064507a 100644 --- a/Code/ObjectMapping/RKAttributeMapping.m +++ b/Code/ObjectMapping/RKAttributeMapping.m @@ -29,7 +29,6 @@ @implementation RKAttributeMapping + (instancetype)attributeMappingFromKeyPath:(NSString *)sourceKeyPath toKeyPath:(NSString *)destinationKeyPath { - NSParameterAssert(sourceKeyPath); NSParameterAssert(destinationKeyPath); RKAttributeMapping *attributeMapping = [self new]; attributeMapping.sourceKeyPath = sourceKeyPath; diff --git a/Code/ObjectMapping/RKMappingOperation.m b/Code/ObjectMapping/RKMappingOperation.m index a30b31f436..df6e276462 100644 --- a/Code/ObjectMapping/RKMappingOperation.m +++ b/Code/ObjectMapping/RKMappingOperation.m @@ -151,6 +151,16 @@ id RKTransformedValueWithClass(id value, Class destinationType, NSValueTransform return nil; } +// Returns the appropriate value for `nil` value of a primitive type +static id RKPrimitiveValueForNilValueOfClass(Class keyValueCodingClass) +{ + if ([keyValueCodingClass isSubclassOfClass:[NSNumber class]]) { + return @(0); + } else { + return nil; + } +} + // Key comes from: [[_nestedAttributeSubstitution allKeys] lastObject]] AND [[_nestedAttributeSubstitution allValues] lastObject]; NSArray *RKApplyNestingAttributeValueToMappings(NSString *attributeName, id value, NSArray *propertyMappings); NSArray *RKApplyNestingAttributeValueToMappings(NSString *attributeName, id value, NSArray *propertyMappings) @@ -229,7 +239,7 @@ - (id)transformValue:(id)value atKeyPath:(NSString *)keyPath toType:(Class)desti { RKLogTrace(@"Found transformable value at keyPath '%@'. Transforming from type '%@' to '%@'", keyPath, NSStringFromClass([value class]), NSStringFromClass(destinationType)); RKDateToStringValueTransformer *transformer = [[RKDateToStringValueTransformer alloc] initWithDateToStringFormatter:self.objectMapping.preferredDateFormatter stringToDateFormatters:self.objectMapping.dateFormatters]; - id transformedValue = RKTransformedValueWithClass(value, destinationType, transformer); + id transformedValue = RKTransformedValueWithClass(value, destinationType, transformer); if (transformedValue != value) return transformedValue; RKLogWarning(@"Failed transformation of value at keyPath '%@'. No strategy for transforming from '%@' to '%@'", keyPath, NSStringFromClass([value class]), NSStringFromClass(destinationType)); @@ -237,11 +247,6 @@ - (id)transformValue:(id)value atKeyPath:(NSString *)keyPath toType:(Class)desti return nil; } -- (BOOL)isValue:(id)sourceValue equalToValue:(id)destinationValue -{ - return RKObjectIsEqualToObject(sourceValue, destinationValue); -} - - (BOOL)validateValue:(id *)value atKeyPath:(NSString *)keyPath { BOOL success = YES; @@ -290,7 +295,7 @@ - (BOOL)shouldSetValue:(id *)value atKeyPath:(NSString *)keyPath return [self validateValue:value atKeyPath:keyPath]; } - if (! [self isValue:*value equalToValue:currentValue]) { + if (! RKObjectIsEqualToObject(*value, currentValue)) { // Validate value for key return [self validateValue:value atKeyPath:keyPath]; } @@ -347,6 +352,16 @@ - (void)applyAttributeMapping:(RKAttributeMapping *)attributeMapping withValue:( if (type && NO == [[value class] isSubclassOfClass:type]) { value = [self transformValue:value atKeyPath:attributeMapping.sourceKeyPath toType:type]; } + + // If we have a nil value for a primitive property, we need to coerce it into a KVC usable value or bail out + if (value == nil && RKPropertyInspectorIsPropertyAtKeyPathOfObjectPrimitive(attributeMapping.destinationKeyPath, self.destinationObject)) { + RKLogDebug(@"Detected `nil` value transformation for primitive property at keyPath '%@'", attributeMapping.destinationKeyPath); + value = RKPrimitiveValueForNilValueOfClass(type); + if (! value) { + RKLogTrace(@"Skipped mapping of attribute value from keyPath '%@ to keyPath '%@' -- Unable to transform `nil` into primitive value representation", attributeMapping.sourceKeyPath, attributeMapping.destinationKeyPath); + return; + } + } RKSetIntermediateDictionaryValuesOnObjectForKeyPath(self.destinationObject, attributeMapping.destinationKeyPath); @@ -384,13 +399,7 @@ - (BOOL)applyAttributeMappings:(NSArray *)attributeMappings continue; } - id value = nil; - if ([attributeMapping.sourceKeyPath isEqualToString:@""]) { - value = self.sourceObject; - } else { - value = [self.sourceObject valueForKeyPath:attributeMapping.sourceKeyPath]; - } - + id value = (attributeMapping.sourceKeyPath == nil) ? self.sourceObject : [self.sourceObject valueForKeyPath:attributeMapping.sourceKeyPath]; if (value) { appliedMappings = YES; [self applyAttributeMapping:attributeMapping withValue:value]; diff --git a/Code/ObjectMapping/RKObjectMapping.m b/Code/ObjectMapping/RKObjectMapping.m index 15e8a0acd5..00ced82c2a 100644 --- a/Code/ObjectMapping/RKObjectMapping.m +++ b/Code/ObjectMapping/RKObjectMapping.m @@ -373,7 +373,7 @@ - (id)defaultValueForAttribute:(NSString *)attributeName - (Class)classForProperty:(NSString *)propertyName { - return [[RKPropertyInspector sharedInspector] classForPropertyNamed:propertyName ofClass:self.objectClass]; + return [[RKPropertyInspector sharedInspector] classForPropertyNamed:propertyName ofClass:self.objectClass isPrimitive:nil]; } - (Class)classForKeyPath:(NSString *)keyPath @@ -381,7 +381,7 @@ - (Class)classForKeyPath:(NSString *)keyPath NSArray *components = [keyPath componentsSeparatedByString:@"."]; Class propertyClass = self.objectClass; for (NSString *property in components) { - propertyClass = [[RKPropertyInspector sharedInspector] classForPropertyNamed:property ofClass:propertyClass]; + propertyClass = [[RKPropertyInspector sharedInspector] classForPropertyNamed:property ofClass:propertyClass isPrimitive:nil]; if (! propertyClass) break; } diff --git a/Code/ObjectMapping/RKPropertyInspector.h b/Code/ObjectMapping/RKPropertyInspector.h index 404b8924b3..f2f6dc8ede 100644 --- a/Code/ObjectMapping/RKPropertyInspector.h +++ b/Code/ObjectMapping/RKPropertyInspector.h @@ -22,12 +22,33 @@ @class NSEntityDescription; +///-------------------------------------------------- +/// @name Keys for the Property Inspection Dictionary +///-------------------------------------------------- + /** - The `RKPropertyInspector` class provides an interface for introspecting the properties and attributes of classes using the reflection capabilities of the Objective-C runtime. Once inspected, the properties and types are cached. + The name of the property + */ +extern NSString * const RKPropertyInspectionNameKey; + +/** + The class used for key-value coding access to the property. + + If the property is an object object type, then the class set for this key will be the type of the property. If the property is a primitive, then the class set for the key will be the boxed type used for KVC access to the property. For example, an `NSInteger` property is boxed to an `NSNumber` for KVC purposes. + */ +extern NSString * const RKPropertyInspectionKeyValueCodingClassKey; + +/** + A Boolean value that indicates if the property is a primitive (non-object) value. + */ +extern NSString * const RKPropertyInspectionIsPrimitiveKey; + +/** + The `RKPropertyInspector` class provides an interface for introspecting the properties and attributes of classes using the reflection capabilities of the Objective-C runtime. Once inspected, the properties inspection details are cached. */ @interface RKPropertyInspector : NSObject { @protected - NSCache *_propertyNamesToTypesCache; + NSCache *_inspectionCache; } ///----------------------------------------------- @@ -46,21 +67,22 @@ ///------------------------------------------------------ /** - Returns a dictionary of names and types for the properties of a given class. - - @param objectClass The class to retrieve the property name and types for. - @return A dictionary containing metadata about the properties of the given class, where the keys in the dictionary are the property names and the values are `Class` objects specifying the type of the property. + Returns a dictionary keyed by property name that includes the key-value coding class of the property and a Boolean indicating if the property is backed by a primitive (non-object) value. The dictionary for each property includes details about the key-value coding class representing the property and if the property is backed by a primitive type. + + @param objectClass The class to inspect the properties of. + @return A dictionary keyed by property name that includes details about all declared properties of the class. */ -- (NSDictionary *)propertyNamesAndTypesForClass:(Class)objectClass; +- (NSDictionary *)propertyInspectionForClass:(Class)objectClass; /** Returns the `Class` object specifying the type of the property with given name on a class. @param propertyName The name of the property to retrieve the type of. @param objectClass The class to retrieve the property from. + @param isPrimitive A pointer to a Boolean value to set indicating if the specified property is of a primitive (non-object) type. @return A `Class` object specifying the type of the requested property. */ -- (Class)classForPropertyNamed:(NSString *)propertyName ofClass:(Class)objectClass; +- (Class)classForPropertyNamed:(NSString *)propertyName ofClass:(Class)objectClass isPrimitive:(BOOL *)isPrimitive; @end @@ -74,6 +96,16 @@ Given a key path to a string property, this will return an `NSString`, etc. @param keyPath The key path to the property to retrieve the class of. + @param object The object to evaluate. @return The class of the property at the given key path. */ Class RKPropertyInspectorGetClassForPropertyAtKeyPathOfObject(NSString *keyPath, id object); + +/** + Returns a Boolean value indicating if the property at the specified key path for a given object is modeled by a primitive type. + + @param keyPath The key path to inspect the property of. + @param object The object to evaluate. + @return `YES` if the property is a primitive, else `NO`. + */ +BOOL RKPropertyInspectorIsPropertyAtKeyPathOfObjectPrimitive(NSString *keyPath, id object); diff --git a/Code/ObjectMapping/RKPropertyInspector.m b/Code/ObjectMapping/RKPropertyInspector.m index 3c5fcc0eff..3f559858cc 100644 --- a/Code/ObjectMapping/RKPropertyInspector.m +++ b/Code/ObjectMapping/RKPropertyInspector.m @@ -27,6 +27,10 @@ #undef RKLogComponent #define RKLogComponent RKlcl_cRestKitObjectMapping +NSString * const RKPropertyInspectionNameKey = @"name"; +NSString * const RKPropertyInspectionKeyValueCodingClassKey = @"keyValueCodingClass"; +NSString * const RKPropertyInspectionIsPrimitiveKey = @"isPrimitive"; + @implementation RKPropertyInspector + (RKPropertyInspector *)sharedInspector @@ -44,22 +48,21 @@ - (id)init { self = [super init]; if (self) { - _propertyNamesToTypesCache = [[NSCache alloc] init]; + _inspectionCache = [[NSCache alloc] init]; } return self; } -- (NSDictionary *)propertyNamesAndTypesForClass:(Class)theClass +- (NSDictionary *)propertyInspectionForClass:(Class)objectClass { - NSMutableDictionary *propertyNames = [_propertyNamesToTypesCache objectForKey:theClass]; - if (propertyNames) { - return propertyNames; - } - propertyNames = [NSMutableDictionary dictionary]; + NSMutableDictionary *inspection = [_inspectionCache objectForKey:objectClass]; + if (inspection) return inspection; + + inspection = [NSMutableDictionary dictionary]; //include superclass properties - Class currentClass = theClass; + Class currentClass = objectClass; while (currentClass != nil) { // Get the raw list of properties unsigned int outCount = 0; @@ -75,9 +78,20 @@ - (NSDictionary *)propertyNamesAndTypesForClass:(Class)theClass if (attr) { Class aClass = RKKeyValueCodingClassFromPropertyAttributes(attr); if (aClass) { - NSString *propNameObj = [[NSString alloc] initWithCString:propName encoding:NSUTF8StringEncoding]; - if (propNameObj) { - [propertyNames setObject:aClass forKey:propNameObj]; + NSString *propNameString = [[NSString alloc] initWithCString:propName encoding:NSUTF8StringEncoding]; + if (propNameString) { + BOOL isPrimitive = NO; + if (attr) { + const char *typeIdentifierLoc = strchr(attr, 'T'); + if (typeIdentifierLoc) { + isPrimitive = (typeIdentifierLoc[1] != '@'); + } + } + + NSDictionary *propertyInspection = @{ RKPropertyInspectionNameKey: propNameString, + RKPropertyInspectionKeyValueCodingClassKey: aClass, + RKPropertyInspectionIsPrimitiveKey: @(isPrimitive) }; + [inspection setObject:propertyInspection forKey:propNameString]; } } } @@ -88,32 +102,34 @@ - (NSDictionary *)propertyNamesAndTypesForClass:(Class)theClass currentClass = [currentClass superclass]; } - [_propertyNamesToTypesCache setObject:propertyNames forKey:theClass]; - RKLogDebug(@"Cached property names and types for Class '%@': %@", NSStringFromClass(theClass), propertyNames); - return propertyNames; + [_inspectionCache setObject:inspection forKey:objectClass]; + RKLogDebug(@"Cached property inspection for Class '%@': %@", NSStringFromClass(objectClass), inspection); + return inspection; } -- (Class)classForPropertyNamed:(NSString *)propertyName ofClass:(Class)objectClass +- (Class)classForPropertyNamed:(NSString *)propertyName ofClass:(Class)objectClass isPrimitive:(BOOL *)isPrimitive { - NSDictionary *dictionary = [self propertyNamesAndTypesForClass:objectClass]; - return [dictionary objectForKey:propertyName]; + NSDictionary *classInspection = [self propertyInspectionForClass:objectClass]; + NSDictionary *propertyInspection = [classInspection objectForKey:propertyName]; + if (isPrimitive) *isPrimitive = [[propertyInspection objectForKey:RKPropertyInspectionIsPrimitiveKey] boolValue]; + return [propertyInspection objectForKey:RKPropertyInspectionKeyValueCodingClassKey]; } @end @interface NSObject (RKPropertyInspection) -- (Class)rk_classForPropertyAtKeyPath:(NSString *)keyPath; +- (Class)rk_classForPropertyAtKeyPath:(NSString *)keyPath isPrimitive:(BOOL *)isPrimitive; @end @implementation NSObject (RKPropertyInspection) -- (Class)rk_classForPropertyAtKeyPath:(NSString *)keyPath +- (Class)rk_classForPropertyAtKeyPath:(NSString *)keyPath isPrimitive:(BOOL *)isPrimitive { NSArray *components = [keyPath componentsSeparatedByString:@"."]; Class propertyClass = [self class]; for (NSString *property in components) { - propertyClass = [[RKPropertyInspector sharedInspector] classForPropertyNamed:property ofClass:propertyClass]; + propertyClass = [[RKPropertyInspector sharedInspector] classForPropertyNamed:property ofClass:propertyClass isPrimitive:isPrimitive]; if (! propertyClass) break; } @@ -124,5 +140,12 @@ - (Class)rk_classForPropertyAtKeyPath:(NSString *)keyPath Class RKPropertyInspectorGetClassForPropertyAtKeyPathOfObject(NSString *keyPath, id object) { - return [object rk_classForPropertyAtKeyPath:keyPath]; + return [object rk_classForPropertyAtKeyPath:keyPath isPrimitive:nil]; +} + +BOOL RKPropertyInspectorIsPropertyAtKeyPathOfObjectPrimitive(NSString *keyPath, id object) +{ + BOOL isPrimitive = NO; + [object rk_classForPropertyAtKeyPath:keyPath isPrimitive:&isPrimitive]; + return isPrimitive; } diff --git a/Tests/Logic/CoreData/RKEntityMappingTest.m b/Tests/Logic/CoreData/RKEntityMappingTest.m index ca7e2121b8..46c674f762 100644 --- a/Tests/Logic/CoreData/RKEntityMappingTest.m +++ b/Tests/Logic/CoreData/RKEntityMappingTest.m @@ -120,8 +120,8 @@ - (void)testShouldIncludeTransformableAttributesInPropertyNamesAndTypes assertThat([propertiesByName objectForKey:@"favoriteColors"], is(notNilValue())); assertThat([relationshipsByName objectForKey:@"favoriteColors"], is(nilValue())); - NSDictionary *propertyNamesAndTypes = [[RKPropertyInspector sharedInspector] propertyNamesAndClassesForEntity:entity]; - assertThat([propertyNamesAndTypes objectForKey:@"favoriteColors"], is(notNilValue())); + NSDictionary *propertyNamesAndTypes = [[RKPropertyInspector sharedInspector] propertyInspectionForEntity:entity]; + assertThat([propertyNamesAndTypes objectForKey:@"favoriteColors"][RKPropertyInspectionKeyValueCodingClassKey], is(notNilValue())); } - (void)testThatMappingAnEmptyArrayOnToAnExistingRelationshipDisassociatesTheRelatedObjects diff --git a/Tests/Logic/Network/RKObjectRequestOperationTest.m b/Tests/Logic/Network/RKObjectRequestOperationTest.m index 62f261aec8..2a0aab2b02 100644 --- a/Tests/Logic/Network/RKObjectRequestOperationTest.m +++ b/Tests/Logic/Network/RKObjectRequestOperationTest.m @@ -54,7 +54,7 @@ - (RKResponseDescriptor *)responseDescriptorForComplexUser - (RKResponseDescriptor *)errorResponseDescriptor { RKObjectMapping *errorMapping = [RKObjectMapping mappingForClass:[RKErrorMessage class]]; - [errorMapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:@"" toKeyPath:@"errorMessage"]]; + [errorMapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:nil toKeyPath:@"errorMessage"]]; NSMutableIndexSet *errorCodes = [NSMutableIndexSet indexSet]; [errorCodes addIndexes:RKStatusCodeIndexSetForClass(RKStatusCodeClassClientError)]; diff --git a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m index 9d89286aed..0504747f38 100644 --- a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m +++ b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m @@ -309,7 +309,6 @@ - (void)testShouldCreateANewInstanceOfTheAppropriateDestinationObjectWhenThereIs - (void)testShouldMapWithoutATargetMapping { - RKLogConfigureByName("RestKit/ObjectMapping", RKLogLevelTrace); RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; RKAttributeMapping *idMapping = [RKAttributeMapping attributeMappingFromKeyPath:@"id" toKeyPath:@"userID"]; [mapping addPropertyMapping:idMapping]; @@ -1375,6 +1374,55 @@ - (void)testTypeTransformationAtKeyPath assertThat(user.address.addressID, is(equalTo(@(12345)))); } +- (void)testThatAttributeMappingToAPrimitiveValueFromNullDoesNotCrash +{ + RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; + [mapping addAttributeMappingsFromArray:@[ @"age" ]]; + + NSDictionary *dictionary = @{ @"age": [NSNull null] }; + RKTestUser *user = [RKTestUser user]; + RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:dictionary destinationObject:user mapping:mapping]; + RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new]; + operation.dataSource = dataSource; + NSError *error = nil; + [operation performMapping:&error]; + + expect(user.age).to.equal(0); +} + +- (void)testThatAttributeMappingToAPrimitiveValueFromUnexpectedObjectTypeDoesNotCrash +{ + RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; + [mapping addAttributeMappingsFromArray:@[ @"age" ]]; + + NSDictionary *dictionary = @{ @"age": @{ @"wrong": @"data" }}; + RKTestUser *user = [RKTestUser user]; + RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:dictionary destinationObject:user mapping:mapping]; + RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new]; + operation.dataSource = dataSource; + NSError *error = nil; + [operation performMapping:&error]; + + expect(user.age).to.equal(0); +} + +- (void)testThatMappingNullValueToTransformablePropertyDoesNotGenerateWarning +{ + RKManagedObjectStore *managedObjectStore = [RKTestFactory managedObjectStore]; + RKEntityMapping *humanMapping = [RKEntityMapping mappingForEntityForName:@"Human" inManagedObjectStore:managedObjectStore]; + [humanMapping addAttributeMappingsFromArray:@[ @"catIDs" ]]; + + NSDictionary *dictionary = @{ @"catsIDs": [NSNull null] }; + RKHuman *human = [NSEntityDescription insertNewObjectForEntityForName:@"Human" inManagedObjectContext:managedObjectStore.mainQueueManagedObjectContext]; + RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:dictionary destinationObject:human mapping:humanMapping]; + RKManagedObjectMappingOperationDataSource *dataSource = [[RKManagedObjectMappingOperationDataSource alloc] initWithManagedObjectContext:managedObjectStore.mainQueueManagedObjectContext cache:nil]; + operation.dataSource = dataSource; + NSError *error = nil; + [operation performMapping:&error]; + + expect(human.catIDs).to.beNil(); +} + #pragma mark - Relationship Mapping - (void)testShouldMapANestedObject diff --git a/Tests/Models/RKTestUser.h b/Tests/Models/RKTestUser.h index 34e4089998..0d4a6c4b48 100644 --- a/Tests/Models/RKTestUser.h +++ b/Tests/Models/RKTestUser.h @@ -34,6 +34,7 @@ @property (nonatomic, strong) NSOrderedSet *friendsOrderedSet; @property (nonatomic, strong) NSData *data; @property (nonatomic, strong) RKTestCoordinate *coordinate; +@property (nonatomic, assign) NSInteger age; + (RKTestUser *)user; From 92458a1e880bf78a01f305fbfa5a7cd8cac21ecd Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Wed, 26 Dec 2012 17:56:39 -0500 Subject: [PATCH 36/41] Enable support for mapping a relationship flexibly via assignment policies. You can now map a relationship and assign its value by setting, replacing, or unioning (combining) the relationship. closes #1073, closes #989 --- ...KManagedObjectMappingOperationDataSource.m | 28 +++ Code/ObjectMapping/RKMappingErrors.h | 3 +- Code/ObjectMapping/RKMappingOperation.m | 40 ++++ .../RKMappingOperationDataSource.h | 12 +- Code/ObjectMapping/RKRelationshipMapping.h | 28 +++ Code/ObjectMapping/RKRelationshipMapping.m | 10 + .../RKObjectMappingNextGenTest.m | 178 +++++++++++++++++- 7 files changed, 294 insertions(+), 5 deletions(-) diff --git a/Code/CoreData/RKManagedObjectMappingOperationDataSource.m b/Code/CoreData/RKManagedObjectMappingOperationDataSource.m index 61591bef95..3339c0ba7e 100644 --- a/Code/CoreData/RKManagedObjectMappingOperationDataSource.m +++ b/Code/CoreData/RKManagedObjectMappingOperationDataSource.m @@ -29,6 +29,8 @@ #import "RKRelationshipConnectionOperation.h" #import "RKMappingErrors.h" #import "RKValueTransformers.h" +#import "RKRelationshipMapping.h" +#import "RKObjectUtilities.h" extern NSString * const RKObjectMappingNestingAttributeKeyName; @@ -280,4 +282,30 @@ - (void)updateCacheWithChangesFromContextWillSaveNotification:(NSNotification *) } } +- (BOOL)mappingOperation:(RKMappingOperation *)mappingOperation deleteExistingValueOfRelationshipWithMapping:(RKRelationshipMapping *)relationshipMapping error:(NSError **)error +{ + // Validate the assignment policy + if (! relationshipMapping.assignmentPolicy == RKReplaceAssignmentPolicy) { + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: @"Unable to satisfy deletion request: Relationship mapping was expected to have an assignment policy of `RKReplaceAssignmentPolicy`, but did not." }; + NSError *localError = [NSError errorWithDomain:RKErrorDomain code:RKMappingErrorInvalidAssignmentPolicy userInfo:userInfo]; + if (error) *error = localError; + return NO; + } + + // Delete any managed objects at the destination key path from the context + id existingValue = [mappingOperation.destinationObject valueForKeyPath:relationshipMapping.destinationKeyPath]; + if ([existingValue isKindOfClass:[NSManagedObject class]]) { + [self.managedObjectContext deleteObject:existingValue]; + } else { + if (RKObjectIsCollection(existingValue)) { + for (NSManagedObject *managedObject in existingValue) { + if (! [managedObject isKindOfClass:[NSManagedObject class]]) continue; + [self.managedObjectContext deleteObject:managedObject]; + } + } + } + + return YES; +} + @end diff --git a/Code/ObjectMapping/RKMappingErrors.h b/Code/ObjectMapping/RKMappingErrors.h index 25c9c264f8..794e70340a 100644 --- a/Code/ObjectMapping/RKMappingErrors.h +++ b/Code/ObjectMapping/RKMappingErrors.h @@ -30,7 +30,8 @@ enum { RKMappingErrorUnableToDetermineMapping = 1006, // The mapping operation was unable to obtain a concrete object mapping from a given dynamic mapping RKMappingErrorNilDestinationObject = 1007, // The mapping operation failed due to a nil destination object. RKMappingErrorNilManagedObjectCache = 1008, // A managed object cache is required to satisfy the mapping, but none was given. - RKMappingErrorMappingDeclined = 1009 // Mapping was declined by a callback. + RKMappingErrorMappingDeclined = 1009, // Mapping was declined by a callback. + RKMappingErrorInvalidAssignmentPolicy = 1010, // The assignment policy for the relationship is invalid. }; extern NSString * const RKMappingErrorKeyPathErrorKey; // The key path the error is associated with diff --git a/Code/ObjectMapping/RKMappingOperation.m b/Code/ObjectMapping/RKMappingOperation.m index df6e276462..fb78e79465 100644 --- a/Code/ObjectMapping/RKMappingOperation.m +++ b/Code/ObjectMapping/RKMappingOperation.m @@ -444,10 +444,35 @@ - (BOOL)mapNestedObject:(id)anObject toObject:(id)anotherObject withRelationship return YES; } +- (BOOL)applyReplaceAssignmentPolicyForRelationshipMapping:(RKRelationshipMapping *)relationshipMapping +{ + if (relationshipMapping.assignmentPolicy == RKReplaceAssignmentPolicy) { + if ([self.dataSource respondsToSelector:@selector(mappingOperation:deleteExistingValueOfRelationshipWithMapping:error:)]) { + NSError *error = nil; + BOOL success = [self.dataSource mappingOperation:self deleteExistingValueOfRelationshipWithMapping:relationshipMapping error:&error]; + if (! success) { + RKLogError(@"Failed to delete existing value of relationship mapped with RKReplaceAssignmentPolicy: %@", error); + self.error = error; + return NO; + } + } else { + RKLogWarning(@"Requested mapping with `RKReplaceAssignmentPolicy` assignment policy, but the data source does not support it. Mapping has proceeded identically to the `RKSetAssignmentPolicy`."); + } + } + + return YES; +} + - (BOOL)mapOneToOneRelationshipWithValue:(id)value mapping:(RKRelationshipMapping *)relationshipMapping { // One to one relationship RKLogDebug(@"Mapping one to one relationship value at keyPath '%@' to '%@'", relationshipMapping.sourceKeyPath, relationshipMapping.destinationKeyPath); + + if (relationshipMapping.assignmentPolicy == RKUnionAssignmentPolicy) { + NSDictionary *userInfo = @{ NSLocalizedDescriptionKey: @"Invalid assignment policy: cannot union a one-to-one relationship." }; + self.error = [NSError errorWithDomain:RKErrorDomain code:RKMappingErrorInvalidAssignmentPolicy userInfo:userInfo]; + return NO; + } id destinationObject = [self destinationObjectForMappingRepresentation:value withMapping:relationshipMapping.mapping]; if (! destinationObject) { @@ -458,6 +483,10 @@ - (BOOL)mapOneToOneRelationshipWithValue:(id)value mapping:(RKRelationshipMappin // If the relationship has changed, set it if ([self shouldSetValue:&destinationObject atKeyPath:relationshipMapping.destinationKeyPath]) { + if (! [self applyReplaceAssignmentPolicyForRelationshipMapping:relationshipMapping]) { + return NO; + } + RKLogTrace(@"Mapped relationship object from keyPath '%@' to '%@'. Value: %@", relationshipMapping.sourceKeyPath, relationshipMapping.destinationKeyPath, destinationObject); [self.destinationObject setValue:destinationObject forKey:relationshipMapping.destinationKeyPath]; } else { @@ -500,6 +529,14 @@ - (BOOL)mapOneToManyRelationshipWithValue:(id)value mapping:(RKRelationshipMappi RKLogWarning(@"WARNING: Detected a relationship mapping for a collection containing another collection. This is probably not what you want. Consider using a KVC collection operator (such as @unionOfArrays) to flatten your mappable collection."); RKLogWarning(@"Key path '%@' yielded collection containing another collection rather than a collection of objects: %@", relationshipMapping.sourceKeyPath, value); } + + if (relationshipMapping.assignmentPolicy == RKUnionAssignmentPolicy) { + RKLogDebug(@"Mapping relationship with union assignment policy: constructing combined relationship value."); + id existingObjects = [self.destinationObject valueForKeyPath:relationshipMapping.destinationKeyPath]; + NSArray *existingObjectsArray = RKTransformedValueWithClass(existingObjects, [NSArray class], nil); + [relationshipCollection addObjectsFromArray:existingObjectsArray]; + } + for (id nestedObject in value) { id mappableObject = [self destinationObjectForMappingRepresentation:nestedObject withMapping:relationshipMapping.mapping]; if (! mappableObject) { @@ -520,6 +557,9 @@ - (BOOL)mapOneToManyRelationshipWithValue:(id)value mapping:(RKRelationshipMappi // If the relationship has changed, set it if ([self shouldSetValue:&valueForRelationship atKeyPath:relationshipMapping.destinationKeyPath]) { + if (! [self applyReplaceAssignmentPolicyForRelationshipMapping:relationshipMapping]) { + return NO; + } if (! [self mapCoreDataToManyRelationshipValue:valueForRelationship withMapping:relationshipMapping]) { RKLogTrace(@"Mapped relationship object from keyPath '%@' to '%@'. Value: %@", relationshipMapping.sourceKeyPath, relationshipMapping.destinationKeyPath, valueForRelationship); [self.destinationObject setValue:valueForRelationship forKeyPath:relationshipMapping.destinationKeyPath]; diff --git a/Code/ObjectMapping/RKMappingOperationDataSource.h b/Code/ObjectMapping/RKMappingOperationDataSource.h index de2d426737..df9ed009f0 100644 --- a/Code/ObjectMapping/RKMappingOperationDataSource.h +++ b/Code/ObjectMapping/RKMappingOperationDataSource.h @@ -20,7 +20,7 @@ #import -@class RKObjectMapping, RKMappingOperation; +@class RKObjectMapping, RKMappingOperation, RKRelationshipMapping; /** An object that adopts the `RKMappingOperationDataSource` protocol is responsible for the retrieval or creation of target objects within an `RKMapperOperation` or `RKMappingOperation`. A data source is responsible for meeting the requirements of the underlying data store implementation and must return a key-value coding compliant object instance that can be used as the target object of a mapping operation. It is also responsible for commiting any changes necessary to the underlying data store once a mapping operation has completed its work. @@ -56,4 +56,14 @@ */ - (BOOL)commitChangesForMappingOperation:(RKMappingOperation *)mappingOperation error:(NSError **)error; +/** + Tells the data source to delete the existing value for a relationship that has been mapped with an assignment policy of `RKReplaceAssignmentPolicy`. + + @param mappingOperation The mapping operation that is executing. + @param relationshipMapping The relationship mapping for which the existing value is being replaced. + @param error A pointer to an error to be set in the event that the deletion operation could not be completed. + @return A Boolean value indicating if the existing objects for the relationship were successfully deleted. + */ +- (BOOL)mappingOperation:(RKMappingOperation *)mappingOperation deleteExistingValueOfRelationshipWithMapping:(RKRelationshipMapping *)relationshipMapping error:(NSError **)error; + @end diff --git a/Code/ObjectMapping/RKRelationshipMapping.h b/Code/ObjectMapping/RKRelationshipMapping.h index 0f0b96b4dd..73ff8b975d 100644 --- a/Code/ObjectMapping/RKRelationshipMapping.h +++ b/Code/ObjectMapping/RKRelationshipMapping.h @@ -22,6 +22,12 @@ @class RKMapping; +typedef enum { + RKSetAssignmentPolicy, // Set the relationship to the new value and leave the existing objects alone, breaking the relationship to existing objects at the destination. This is the default policy for `RKRelationshipMapping`. + RKReplaceAssignmentPolicy, // Set the relationship to the new value and destroy the previous value, replacing the existing objects at the destination of the relationship. + RKUnionAssignmentPolicy, // Set the relationship to the union of the existing value and the new value being assigned. Only applicable for to-many relationships. +} RKAssignmentPolicy; + /** The `RKRelationshipMapping` class is used to describe relationships of a class in an `RKObjectMapping` or an entity in an `RKEntityMapping` object. @@ -32,6 +38,15 @@ ## Mapping a Non-nested Relationship from the Parent Representation It can often be desirable to map data for a relationship directly from the parent object representation, rather than under a nested key path. When a relationship mapping is constructed with a `nil` value for the source key path, then the `RKMapping` object is evaluated against the parent representation. + + ## Assignment Policy + + When mapping a relationship, the typical desired behavior is to set the destination of the relationship to the newly mapped values from the object representation being processed. There are times in which it is desirable to use different assignment behaviors. The way in which the relationship is assigned can be controlled by the assignmentPolicy property. There are currently three distinct assignment policies available: + + 1. `RKSetAssignmentPolicy` - Instructs the mapper to assign the new destination value to the relationship directly. No further action is taken and the relationship to the old objects is broken. This is the default assignment policy. + 1. `RKReplaceAssignmentPolicy` - Instructs the mapper to assign the new destination value to the relationship and delete any existing object or objects at the destination. The deletion behavior is contextual based on the type of objects being mapped (i.e. Core Data vs NSObject) and is delegated to the mapping operation data source. + 1. `RKUnionAssignmentPolicy` - Instructs the mapper to build a new value for the relationship by unioning the existing value with the new value and set the combined value to the relationship. The union assignment policy is only appropriate for use with a to-many relationship. + */ @interface RKRelationshipMapping : RKPropertyMapping @@ -59,4 +74,17 @@ */ @property (nonatomic, strong, readonly) RKMapping *mapping; +///---------------------------------------- +/// @name Configuring the Assignment Policy +///---------------------------------------- + +/** + The assignment policy to use when applying the relationship mapping. + + The assignment policy determines how a relationship is set when there are existing objects at the destination of the relationship. The existing values can be disconnected from the parent and left in the graph (`RKSetAssignmentPolicy`), deleted and replaced by the new value (`RKReplaceAssignmentPolicy`), or the new value can be unioned with the existing objects to create a new combined value (`RKUnionAssignmentPolicy`). + + **Default**: `RKSetAssignmentPolicy` + */ +@property (nonatomic, assign) RKAssignmentPolicy assignmentPolicy; + @end diff --git a/Code/ObjectMapping/RKRelationshipMapping.m b/Code/ObjectMapping/RKRelationshipMapping.m index cd90925127..6d69512d7d 100644 --- a/Code/ObjectMapping/RKRelationshipMapping.m +++ b/Code/ObjectMapping/RKRelationshipMapping.m @@ -38,10 +38,20 @@ + (instancetype)relationshipMappingFromKeyPath:(NSString *)sourceKeyPath toKeyPa return relationshipMapping; } +- (id)init +{ + self = [super init]; + if (self) { + self.assignmentPolicy = RKSetAssignmentPolicy; + } + return self; +} + - (id)copyWithZone:(NSZone *)zone { RKRelationshipMapping *copy = [super copyWithZone:zone]; copy.mapping = self.mapping; + copy.assignmentPolicy = self.assignmentPolicy; return copy; } diff --git a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m index 0504747f38..f458c40e06 100644 --- a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m +++ b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m @@ -1709,10 +1709,182 @@ - (void)testShouldNotNilOutTheRelationshipIfItIsMissingAndCurrentlyNilOnTheTarge [mockUser verify]; } -- (void)testAppendingLoadedObjectsOntoRelationshipInsteadOfReplacing +#pragma mark Assignment Policies + +- (void)testThatAttemptingToUnionOneToOneRelationshipGeneratesMappingError { - // Behaviors: Replace, Append, Nullify. AssignmentPolicy - // Load the + RKTestUser *user = [RKTestUser new]; + RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; + RKObjectMapping *addressMapping = [RKObjectMapping mappingForClass:[RKTestAddress class]]; + [mapping addAttributeMappingsFromArray:@[ @"name" ]]; + RKRelationshipMapping *relationshipMapping = [RKRelationshipMapping relationshipMappingFromKeyPath:@"address" toKeyPath:@"address" withMapping:addressMapping]; + relationshipMapping.assignmentPolicy = RKUnionAssignmentPolicy; + [mapping addPropertyMapping:relationshipMapping]; + + NSDictionary *dictionary = @{ @"address": @{ @"city": @"NYC" } }; + RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:dictionary destinationObject:user mapping:mapping]; + RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new]; + operation.dataSource = dataSource; + + NSError *error = nil; + [operation performMapping:&error]; + expect(error).notTo.beNil(); + expect(error.code).to.equal(RKMappingErrorInvalidAssignmentPolicy); + expect([error localizedDescription]).to.equal(@"Invalid assignment policy: cannot union a one-to-one relationship."); +} + +- (void)testUnionAssignmentPolicyWithSet +{ + RKTestUser *user = [RKTestUser new]; + RKTestUser *friend = [RKTestUser new]; + friend.name = @"Jeff"; + user.friendsSet = [NSSet setWithObject:friend]; + RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; + [mapping addAttributeMappingsFromArray:@[ @"name" ]]; + RKRelationshipMapping *relationshipMapping = [RKRelationshipMapping relationshipMappingFromKeyPath:@"friendsSet" toKeyPath:@"friendsSet" withMapping:mapping]; + relationshipMapping.assignmentPolicy = RKUnionAssignmentPolicy; + [mapping addPropertyMapping:relationshipMapping]; + + NSDictionary *dictionary = @{ @"friendsSet": @[ @{ @"name": @"Zach" } ] }; + RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:dictionary destinationObject:user mapping:mapping]; + RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new]; + operation.dataSource = dataSource; + + NSError *error = nil; + [operation performMapping:&error]; + expect([user.friendsSet count]).to.equal(2); + NSArray *names = [user.friendsSet valueForKey:@"name"]; + assertThat(names, hasItems(@"Jeff", @"Zach", nil)); +} + +- (void)testUnionAssignmentPolicyWithOrderedSet +{ + RKTestUser *user = [RKTestUser new]; + RKTestUser *friend = [RKTestUser new]; + friend.name = @"Jeff"; + user.friendsOrderedSet = [NSOrderedSet orderedSetWithObject:friend]; + RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; + [mapping addAttributeMappingsFromArray:@[ @"name" ]]; + RKRelationshipMapping *relationshipMapping = [RKRelationshipMapping relationshipMappingFromKeyPath:@"friendsOrderedSet" toKeyPath:@"friendsOrderedSet" withMapping:mapping]; + relationshipMapping.assignmentPolicy = RKUnionAssignmentPolicy; + [mapping addPropertyMapping:relationshipMapping]; + + NSDictionary *dictionary = @{ @"friendsOrderedSet": @[ @{ @"name": @"Zach" } ] }; + RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:dictionary destinationObject:user mapping:mapping]; + RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new]; + operation.dataSource = dataSource; + + NSError *error = nil; + [operation performMapping:&error]; + expect([user.friendsOrderedSet count]).to.equal(2); + NSArray *names = [user.friendsOrderedSet valueForKey:@"name"]; + assertThat(names, hasItems(@"Jeff", @"Zach", nil)); +} + +- (void)testUnionAssignmentPolicyWithArray +{ + RKTestUser *user = [RKTestUser new]; + RKTestUser *friend = [RKTestUser new]; + friend.name = @"Jeff"; + user.friends = [NSArray arrayWithObject:friend]; + RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; + [mapping addAttributeMappingsFromArray:@[ @"name" ]]; + RKRelationshipMapping *relationshipMapping = [RKRelationshipMapping relationshipMappingFromKeyPath:@"friends" toKeyPath:@"friends" withMapping:mapping]; + relationshipMapping.assignmentPolicy = RKUnionAssignmentPolicy; + [mapping addPropertyMapping:relationshipMapping]; + + NSDictionary *dictionary = @{ @"friends": @[ @{ @"name": @"Zach" } ] }; + RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:dictionary destinationObject:user mapping:mapping]; + RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new]; + operation.dataSource = dataSource; + + NSError *error = nil; + [operation performMapping:&error]; + expect([user.friends count]).to.equal(2); + NSArray *names = [user.friends valueForKey:@"name"]; + assertThat(names, hasItems(@"Jeff", @"Zach", nil)); +} + +- (void)testReplacementPolicyForUnmanagedRelationship +{ + RKTestUser *user = [RKTestUser new]; + RKTestUser *friend = [RKTestUser new]; + friend.name = @"Jeff"; + user.friends = [NSArray arrayWithObject:friend]; + RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; + [mapping addAttributeMappingsFromArray:@[ @"name" ]]; + RKRelationshipMapping *relationshipMapping = [RKRelationshipMapping relationshipMappingFromKeyPath:@"friends" toKeyPath:@"friends" withMapping:mapping]; + relationshipMapping.assignmentPolicy = RKReplaceAssignmentPolicy; + [mapping addPropertyMapping:relationshipMapping]; + + NSDictionary *dictionary = @{ @"friends": @[ @{ @"name": @"Zach" } ] }; + RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:dictionary destinationObject:user mapping:mapping]; + RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new]; + operation.dataSource = dataSource; + + NSError *error = nil; + [operation performMapping:&error]; + expect([user.friends count]).to.equal(1); + NSArray *names = [user.friends valueForKey:@"name"]; + assertThat(names, hasItems(@"Zach", nil)); +} + +- (void)testReplacmentPolicyForToManyCoreDataRelationshipDeletesExistingValues +{ + RKManagedObjectStore *managedObjectStore = [RKTestFactory managedObjectStore]; + RKHuman *human = [NSEntityDescription insertNewObjectForEntityForName:@"Human" inManagedObjectContext:managedObjectStore.mainQueueManagedObjectContext]; + RKCat *existingCat = [NSEntityDescription insertNewObjectForEntityForName:@"Cat" inManagedObjectContext:managedObjectStore.mainQueueManagedObjectContext]; + existingCat.name = @"Lola"; + human.cats = [NSSet setWithObject:existingCat]; + + RKEntityMapping *entityMapping = [RKEntityMapping mappingForEntityForName:@"Human" inManagedObjectStore:managedObjectStore]; + [entityMapping addAttributeMappingsFromArray:@[ @"name" ]]; + RKEntityMapping *catMapping = [RKEntityMapping mappingForEntityForName:@"Cat" inManagedObjectStore:managedObjectStore]; + [catMapping addAttributeMappingsFromArray:@[ @"name" ]]; + catMapping.identificationAttributes = @[ @"name" ]; + RKRelationshipMapping *relationshipMapping = [RKRelationshipMapping relationshipMappingFromKeyPath:@"cats" toKeyPath:@"cats" withMapping:catMapping]; + relationshipMapping.assignmentPolicy = RKReplaceAssignmentPolicy; + [entityMapping addPropertyMapping:relationshipMapping]; + + NSDictionary *dictionary = @{ @"name": @"Blake", @"cats": @[ @{ @"name": @"Roy" } ] }; + RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:dictionary destinationObject:human mapping:entityMapping]; + RKManagedObjectMappingOperationDataSource *dataSource = [[RKManagedObjectMappingOperationDataSource alloc] initWithManagedObjectContext:managedObjectStore.mainQueueManagedObjectContext cache:nil]; + operation.dataSource = dataSource; + + NSError *error = nil; + [operation performMapping:&error]; + expect([human.cats count]).to.equal(1); + NSArray *names = [human.cats valueForKey:@"name"]; + assertThat(names, hasItems(@"Roy", nil)); + expect([existingCat isDeleted]).to.equal(YES); +} + +- (void)testReplacmentPolicyForToOneCoreDataRelationshipDeletesExistingValues +{ + RKManagedObjectStore *managedObjectStore = [RKTestFactory managedObjectStore]; + RKHuman *human = [NSEntityDescription insertNewObjectForEntityForName:@"Human" inManagedObjectContext:managedObjectStore.mainQueueManagedObjectContext]; + RKCat *existingCat = [NSEntityDescription insertNewObjectForEntityForName:@"Cat" inManagedObjectContext:managedObjectStore.mainQueueManagedObjectContext]; + existingCat.name = @"Lola"; + human.favoriteCat = existingCat; + + RKEntityMapping *entityMapping = [RKEntityMapping mappingForEntityForName:@"Human" inManagedObjectStore:managedObjectStore]; + [entityMapping addAttributeMappingsFromArray:@[ @"name" ]]; + RKEntityMapping *catMapping = [RKEntityMapping mappingForEntityForName:@"Cat" inManagedObjectStore:managedObjectStore]; + [catMapping addAttributeMappingsFromArray:@[ @"name" ]]; + catMapping.identificationAttributes = @[ @"name" ]; + RKRelationshipMapping *relationshipMapping = [RKRelationshipMapping relationshipMappingFromKeyPath:@"favoriteCat" toKeyPath:@"favoriteCat" withMapping:catMapping]; + relationshipMapping.assignmentPolicy = RKReplaceAssignmentPolicy; + [entityMapping addPropertyMapping:relationshipMapping]; + + NSDictionary *dictionary = @{ @"name": @"Blake", @"favoriteCat": @{ @"name": @"Roy" } }; + RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:dictionary destinationObject:human mapping:entityMapping]; + RKManagedObjectMappingOperationDataSource *dataSource = [[RKManagedObjectMappingOperationDataSource alloc] initWithManagedObjectContext:managedObjectStore.mainQueueManagedObjectContext cache:nil]; + operation.dataSource = dataSource; + + NSError *error = nil; + [operation performMapping:&error]; + expect(human.favoriteCat.name).to.equal(@"Roy"); + expect([existingCat isDeleted]).to.equal(YES); } #pragma mark - RKDynamicMapping From 62aa987d170413057fc835b9c433384dad5e152e Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Wed, 26 Dec 2012 19:17:05 -0500 Subject: [PATCH 37/41] Fix another instance of subscripted access --- Code/Network/RKManagedObjectRequestOperation.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Code/Network/RKManagedObjectRequestOperation.m b/Code/Network/RKManagedObjectRequestOperation.m index f2f5bb9cad..979d994ee0 100644 --- a/Code/Network/RKManagedObjectRequestOperation.m +++ b/Code/Network/RKManagedObjectRequestOperation.m @@ -200,7 +200,7 @@ static void RKSetMappedValueForKeyPathInDictionary(id value, NSString *keyPath, NSCParameterAssert(responseDescriptors); NSArray *baseURLs = [responseDescriptors valueForKeyPath:@"@distinctUnionOfObjects.baseURL"]; if ([baseURLs count] == 1) { - NSURL *baseURL = baseURLs[0]; + NSURL *baseURL = [baseURLs objectAtIndex:0]; NSString *pathAndQueryString = RKPathAndQueryStringFromURLRelativeToURL(URL, baseURL); URL = [NSURL URLWithString:pathAndQueryString relativeToURL:baseURL]; } From 379269010f9b9cec65762a54034d9830537c6cc2 Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Wed, 26 Dec 2012 19:18:59 -0500 Subject: [PATCH 38/41] Fix additional usage of subscript access in dictionary merge routine --- Code/Support/RKDictionaryUtilities.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Code/Support/RKDictionaryUtilities.m b/Code/Support/RKDictionaryUtilities.m index 4a31e2e2ff..3842e19feb 100644 --- a/Code/Support/RKDictionaryUtilities.m +++ b/Code/Support/RKDictionaryUtilities.m @@ -16,9 +16,9 @@ id obj1 = dict1[key2]; if ([obj1 isKindOfClass:[NSDictionary class]] && [obj2 isKindOfClass:[NSDictionary class]]) { NSDictionary *mergedSubdict = RKDictionaryByMergingDictionaryWithDictionary(obj1, obj2); - mergedDictionary[key2] = mergedSubdict; + [mergedDictionary setValue:mergedSubdict forKey:key2]; } else { - mergedDictionary[key2] = obj2; + [mergedDictionary setValue:obj2 forKey:key2]; } }]; From 12938622a8b99f70203af2c07cd4e4172715e438 Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Wed, 26 Dec 2012 19:30:22 -0500 Subject: [PATCH 39/41] Another subscripted access stragler --- Code/Support/RKDictionaryUtilities.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Code/Support/RKDictionaryUtilities.m b/Code/Support/RKDictionaryUtilities.m index 3842e19feb..5f2a31a9fb 100644 --- a/Code/Support/RKDictionaryUtilities.m +++ b/Code/Support/RKDictionaryUtilities.m @@ -13,7 +13,7 @@ NSMutableDictionary *mergedDictionary = [dict1 mutableCopy]; [dict2 enumerateKeysAndObjectsUsingBlock:^(id key2, id obj2, BOOL *stop) { - id obj1 = dict1[key2]; + id obj1 = [dict1 valueForKey:key2]; if ([obj1 isKindOfClass:[NSDictionary class]] && [obj2 isKindOfClass:[NSDictionary class]]) { NSDictionary *mergedSubdict = RKDictionaryByMergingDictionaryWithDictionary(obj1, obj2); [mergedDictionary setValue:mergedSubdict forKey:key2]; From 26fc8dd61f5a44ba7515b21b696f32dfa310d48e Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Wed, 26 Dec 2012 20:23:44 -0500 Subject: [PATCH 40/41] Claw back performance lost due to addition of External Binary Storage to the Unit Testing model --- .../Logic/CoreData/RKManagedObjectStoreTest.m | 20 +++++++++++++----- Tests/Models/Data Model.xcdatamodel/elements | Bin 325425 -> 322018 bytes Tests/Models/Data Model.xcdatamodel/layout | Bin 46892 -> 46897 bytes 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Tests/Logic/CoreData/RKManagedObjectStoreTest.m b/Tests/Logic/CoreData/RKManagedObjectStoreTest.m index 4fd252c507..8bc14794d3 100644 --- a/Tests/Logic/CoreData/RKManagedObjectStoreTest.m +++ b/Tests/Logic/CoreData/RKManagedObjectStoreTest.m @@ -273,18 +273,28 @@ - (void)testResetPersistentStoresDoesNotTriggerDeadlock - (void)testCleanupOfExternalStorageDirectoryOnReset { - RKManagedObjectStore *managedObjectStore = [RKTestFactory managedObjectStore]; - NSPersistentStore *store = [managedObjectStore persistentStoreCoordinator].persistentStores[0]; + RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] init]; + NSEntityDescription *humanEntity = [managedObjectStore.managedObjectModel entitiesByName][@"Human"]; + NSAttributeDescription *photoAttribute = [[NSAttributeDescription alloc] init]; + [photoAttribute setName:@"photo"]; + [photoAttribute setAttributeType:NSTransformableAttributeType]; + [photoAttribute setAllowsExternalBinaryDataStorage:YES]; + NSArray *newProperties = [[humanEntity properties] arrayByAddingObject:photoAttribute]; + [humanEntity setProperties:newProperties]; + NSError *error = nil; + NSString *storePath = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"RKTestsStore.sqlite"]; + NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:storePath fromSeedDatabaseAtPath:nil withConfiguration:nil options:nil error:&error]; + assertThat(persistentStore, is(notNilValue())); + [managedObjectStore createManagedObjectContexts]; // Check that there is a support directory - NSString *supportDirectoryName = [NSString stringWithFormat:@".%@_SUPPORT", [[store.URL lastPathComponent] stringByDeletingPathExtension]]; - NSURL *supportDirectoryFileURL = [NSURL URLWithString:supportDirectoryName relativeToURL:[store.URL URLByDeletingLastPathComponent]]; + NSString *supportDirectoryName = [NSString stringWithFormat:@".%@_SUPPORT", [[persistentStore.URL lastPathComponent] stringByDeletingPathExtension]]; + NSURL *supportDirectoryFileURL = [NSURL URLWithString:supportDirectoryName relativeToURL:[persistentStore.URL URLByDeletingLastPathComponent]]; BOOL isDirectory = NO; BOOL supportDirectoryExists = [[NSFileManager defaultManager] fileExistsAtPath:[supportDirectoryFileURL path] isDirectory:&isDirectory]; expect(supportDirectoryExists).to.equal(YES); expect(isDirectory).to.equal(YES); - NSError *error = nil; NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:[supportDirectoryFileURL path] error:&error]; NSDate *creationDate = attributes[NSFileCreationDate]; diff --git a/Tests/Models/Data Model.xcdatamodel/elements b/Tests/Models/Data Model.xcdatamodel/elements index 8e4d8206ed27df3bed849f97eea355767b79edca..4a2cdf976b6caa00867d2b40ea7cb641ecc02615 100644 GIT binary patch literal 322018 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 xe9kX)qBC8Ip+CCL@VhzVcYO1VSZ1Sv literal 325425 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

jfF#VLky$iahCMbihemJnF7NXp_SfhW?6A>i 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 delta 20438 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 Date: Wed, 26 Dec 2012 20:27:58 -0500 Subject: [PATCH 41/41] Set Podspec to point at pre5 --- RestKit.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RestKit.podspec b/RestKit.podspec index 2bcdb42241..845e7e1208 100644 --- a/RestKit.podspec +++ b/RestKit.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'RestKit' - s.version = '0.20.0pre4' + s.version = '0.20.0pre5' s.summary = 'RestKit is a framework for consuming and modeling RESTful web resources on iOS and OS X.' s.homepage = 'http://www.restkit.org' s.author = { 'Blake Watters' => 'blakewatters@gmail.com' }

;r1%gp1N1$a%GicBZ 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 literal 42306 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 nchbA {:status => 'OK'}}.to_json + {:human => {:status => 'OK'}}.to_json end post '/echo_params' do @@ -299,6 +299,11 @@ def render_fixture(path, options = {}) content_type 'application/json' render_fixture('/JSON/ComplexNestedUser.json', :status => 200) end + + get '/posts.json' do + content_type 'application/json' + { :posts => [{:title => 'Post Title', :body => 'Some body.', :tags => [{ :name => 'development' }, { :name => 'restkit' }] }] }.to_json + end # start the server if ruby file executed directly run! if app_file == $0 From 97b60e64b19008b8597cac2919303b8fff322d0f Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Mon, 17 Dec 2012 22:08:18 -0500 Subject: [PATCH 04/41] Set AFNetworking headers to Public for OS X Framework target --- RestKit.xcodeproj/project.pbxproj | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/RestKit.xcodeproj/project.pbxproj b/RestKit.xcodeproj/project.pbxproj index e1b0bd3070..fb94a83ded 100644 --- a/RestKit.xcodeproj/project.pbxproj +++ b/RestKit.xcodeproj/project.pbxproj @@ -417,43 +417,43 @@ 259AC481162B05C80012D2F9 /* RKObjectRequestOperationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 259AC480162B05C80012D2F9 /* RKObjectRequestOperationTest.m */; }; 259AC482162B05C80012D2F9 /* RKObjectRequestOperationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 259AC480162B05C80012D2F9 /* RKObjectRequestOperationTest.m */; }; 259B96D51604CCCC0000C250 /* AFHTTPClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96C21604CCCC0000C250 /* AFHTTPClient.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 259B96D61604CCCC0000C250 /* AFHTTPClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96C21604CCCC0000C250 /* AFHTTPClient.h */; }; + 259B96D61604CCCC0000C250 /* AFHTTPClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96C21604CCCC0000C250 /* AFHTTPClient.h */; settings = {ATTRIBUTES = (Public, ); }; }; 259B96D71604CCCC0000C250 /* AFHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 259B96C31604CCCC0000C250 /* AFHTTPClient.m */; }; 259B96D81604CCCC0000C250 /* AFHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 259B96C31604CCCC0000C250 /* AFHTTPClient.m */; }; 259B96D91604CCCC0000C250 /* AFHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96C41604CCCC0000C250 /* AFHTTPRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 259B96DA1604CCCC0000C250 /* AFHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96C41604CCCC0000C250 /* AFHTTPRequestOperation.h */; }; + 259B96DA1604CCCC0000C250 /* AFHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96C41604CCCC0000C250 /* AFHTTPRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 259B96DB1604CCCC0000C250 /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 259B96C51604CCCC0000C250 /* AFHTTPRequestOperation.m */; }; 259B96DC1604CCCC0000C250 /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 259B96C51604CCCC0000C250 /* AFHTTPRequestOperation.m */; }; 259B96DD1604CCCC0000C250 /* AFImageRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96C61604CCCC0000C250 /* AFImageRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 259B96DE1604CCCC0000C250 /* AFImageRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96C61604CCCC0000C250 /* AFImageRequestOperation.h */; }; + 259B96DE1604CCCC0000C250 /* AFImageRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96C61604CCCC0000C250 /* AFImageRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 259B96DF1604CCCC0000C250 /* AFImageRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 259B96C71604CCCC0000C250 /* AFImageRequestOperation.m */; }; 259B96E01604CCCC0000C250 /* AFImageRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 259B96C71604CCCC0000C250 /* AFImageRequestOperation.m */; }; 259B96E11604CCCC0000C250 /* AFJSONRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96C81604CCCC0000C250 /* AFJSONRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 259B96E21604CCCC0000C250 /* AFJSONRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96C81604CCCC0000C250 /* AFJSONRequestOperation.h */; }; + 259B96E21604CCCC0000C250 /* AFJSONRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96C81604CCCC0000C250 /* AFJSONRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 259B96E31604CCCC0000C250 /* AFJSONRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 259B96C91604CCCC0000C250 /* AFJSONRequestOperation.m */; }; 259B96E41604CCCC0000C250 /* AFJSONRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 259B96C91604CCCC0000C250 /* AFJSONRequestOperation.m */; }; 259B96E51604CCCC0000C250 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 259B96CA1604CCCC0000C250 /* AFNetworkActivityIndicatorManager.m */; }; 259B96E61604CCCC0000C250 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 259B96CA1604CCCC0000C250 /* AFNetworkActivityIndicatorManager.m */; }; 259B96E71604CCCC0000C250 /* AFPropertyListRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96CB1604CCCC0000C250 /* AFPropertyListRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 259B96E81604CCCC0000C250 /* AFPropertyListRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96CB1604CCCC0000C250 /* AFPropertyListRequestOperation.h */; }; + 259B96E81604CCCC0000C250 /* AFPropertyListRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96CB1604CCCC0000C250 /* AFPropertyListRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 259B96E91604CCCC0000C250 /* AFPropertyListRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 259B96CC1604CCCC0000C250 /* AFPropertyListRequestOperation.m */; }; 259B96EA1604CCCC0000C250 /* AFPropertyListRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 259B96CC1604CCCC0000C250 /* AFPropertyListRequestOperation.m */; }; 259B96EB1604CCCC0000C250 /* AFURLConnectionOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96CD1604CCCC0000C250 /* AFURLConnectionOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 259B96EC1604CCCC0000C250 /* AFURLConnectionOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96CD1604CCCC0000C250 /* AFURLConnectionOperation.h */; }; + 259B96EC1604CCCC0000C250 /* AFURLConnectionOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96CD1604CCCC0000C250 /* AFURLConnectionOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 259B96ED1604CCCC0000C250 /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 259B96CE1604CCCC0000C250 /* AFURLConnectionOperation.m */; }; 259B96EE1604CCCC0000C250 /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 259B96CE1604CCCC0000C250 /* AFURLConnectionOperation.m */; }; 259B96EF1604CCCC0000C250 /* AFXMLRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96CF1604CCCC0000C250 /* AFXMLRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 259B96F01604CCCC0000C250 /* AFXMLRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96CF1604CCCC0000C250 /* AFXMLRequestOperation.h */; }; + 259B96F01604CCCC0000C250 /* AFXMLRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96CF1604CCCC0000C250 /* AFXMLRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 259B96F11604CCCC0000C250 /* AFXMLRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 259B96D01604CCCC0000C250 /* AFXMLRequestOperation.m */; }; 259B96F21604CCCC0000C250 /* AFXMLRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 259B96D01604CCCC0000C250 /* AFXMLRequestOperation.m */; }; 259B96F31604CCCC0000C250 /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 259B96D11604CCCC0000C250 /* UIImageView+AFNetworking.m */; }; 259B96F41604CCCC0000C250 /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 259B96D11604CCCC0000C250 /* UIImageView+AFNetworking.m */; }; 259B96F51604CCCC0000C250 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96D21604CCCC0000C250 /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 259B96F61604CCCC0000C250 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96D21604CCCC0000C250 /* AFNetworkActivityIndicatorManager.h */; }; + 259B96F61604CCCC0000C250 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96D21604CCCC0000C250 /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; 259B96F71604CCCC0000C250 /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96D31604CCCC0000C250 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 259B96F81604CCCC0000C250 /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96D31604CCCC0000C250 /* UIImageView+AFNetworking.h */; }; + 259B96F81604CCCC0000C250 /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96D31604CCCC0000C250 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; 259B96F91604CCCC0000C250 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96D41604CCCC0000C250 /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 259B96FA1604CCCC0000C250 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96D41604CCCC0000C250 /* AFNetworking.h */; }; + 259B96FA1604CCCC0000C250 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 259B96D41604CCCC0000C250 /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; 259D983C154F6C90008C90F5 /* benchmark_parents_and_children.json in Resources */ = {isa = PBXBuildFile; fileRef = 259D983B154F6C90008C90F5 /* benchmark_parents_and_children.json */; }; 259D983D154F6C90008C90F5 /* benchmark_parents_and_children.json in Resources */ = {isa = PBXBuildFile; fileRef = 259D983B154F6C90008C90F5 /* benchmark_parents_and_children.json */; }; 259D98541550C69A008C90F5 /* RKEntityByAttributeCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 259D98521550C69A008C90F5 /* RKEntityByAttributeCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; From 862e84a515404389a5541b65346d28c1ea2e6da2 Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Tue, 18 Dec 2012 22:00:35 -0500 Subject: [PATCH 05/41] Hook the `RKManagedObjectMappingOperationDataSource` into the Managed Object Context save lifecycle to avoid the creation of duplicate objects during sequential mapping operations --- Code/CoreData/RKManagedObjectImporter.m | 2 +- ...KManagedObjectMappingOperationDataSource.m | 41 +++++++++ Code/Network/RKResponseMapperOperation.m | 4 +- Code/ObjectMapping/RKMapperOperation.h | 28 +++--- Code/ObjectMapping/RKMapperOperation.m | 89 +++++++++++-------- .../ObjectMapping/RKMapperOperation_Private.h | 8 +- Code/ObjectMapping/RKMappingOperation.m | 1 - Tests/Logic/CoreData/RKEntityMappingTest.m | 2 +- ...agedObjectMappingOperationDataSourceTest.m | 71 ++++++++++++++- .../RKManagedObjectRequestOperationTest.m | 2 +- .../ObjectMapping/RKMappingOperationTest.m | 2 +- .../RKObjectMappingNextGenTest.m | 84 ++++++++--------- 12 files changed, 226 insertions(+), 108 deletions(-) diff --git a/Code/CoreData/RKManagedObjectImporter.m b/Code/CoreData/RKManagedObjectImporter.m index a639425666..d0cc0ab406 100644 --- a/Code/CoreData/RKManagedObjectImporter.m +++ b/Code/CoreData/RKManagedObjectImporter.m @@ -213,7 +213,7 @@ - (NSUInteger)importObjectsFromFileAtPath:(NSString *)path withMapping:(RKMappin } NSDictionary *mappingDictionary = @{ (keyPath ?: [NSNull null]) : mapping }; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:parsedData mappingsDictionary:mappingDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:parsedData mappingsDictionary:mappingDictionary]; mapper.mappingOperationDataSource = self.mappingOperationDataSource; __block RKMappingResult *mappingResult; [self.managedObjectContext performBlockAndWait:^{ diff --git a/Code/CoreData/RKManagedObjectMappingOperationDataSource.m b/Code/CoreData/RKManagedObjectMappingOperationDataSource.m index 44795b7d11..340abe0dd2 100644 --- a/Code/CoreData/RKManagedObjectMappingOperationDataSource.m +++ b/Code/CoreData/RKManagedObjectMappingOperationDataSource.m @@ -136,11 +136,21 @@ - (id)initWithManagedObjectContext:(NSManagedObjectContext *)managedObjectContex if (self) { self.managedObjectContext = managedObjectContext; self.managedObjectCache = managedObjectCache; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(updateCacheWithChangesFromContextWillSaveNotification:) + name:NSManagedObjectContextWillSaveNotification + object:managedObjectContext]; } return self; } +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + - (id)mappingOperation:(RKMappingOperation *)mappingOperation targetObjectForRepresentation:(NSDictionary *)representation withMapping:(RKObjectMapping *)mapping { NSAssert(representation, @"Mappable data cannot be nil"); @@ -239,4 +249,35 @@ - (BOOL)commitChangesForMappingOperation:(RKMappingOperation *)mappingOperation return YES; } +// NOTE: In theory we should be able to use the userInfo dictionary, but the dictionary was coming in empty (12/18/2012) +- (void)updateCacheWithChangesFromContextWillSaveNotification:(NSNotification *)notification +{ + NSSet *objectsToAdd = [[self.managedObjectContext insertedObjects] setByAddingObjectsFromSet:[self.managedObjectContext updatedObjects]]; + + __block BOOL success; + __block NSError *error = nil; + [self.managedObjectContext performBlockAndWait:^{ + success = [self.managedObjectContext obtainPermanentIDsForObjects:[objectsToAdd allObjects] error:&error]; + }]; + + if (! success) { + RKLogWarning(@"Failed obtaining permanent managed object ID's for %ld objects: the managed object cache was not updated and duplicate objects may be created.", (long) [objectsToAdd count]); + RKLogError(@"Obtaining permanent managed object IDs failed with error: %@", error); + return; + } + + // Update the cache + if ([self.managedObjectCache respondsToSelector:@selector(didFetchObject:)]) { + for (NSManagedObject *managedObject in objectsToAdd) { + [self.managedObjectCache didFetchObject:managedObject]; + } + } + + if ([self.managedObjectCache respondsToSelector:@selector(didDeleteObject::)]) { + for (NSManagedObject *managedObject in [self.managedObjectContext deletedObjects]) { + [self.managedObjectCache didDeleteObject:managedObject]; + } + } +} + @end diff --git a/Code/Network/RKResponseMapperOperation.m b/Code/Network/RKResponseMapperOperation.m index 9f272ee731..ddfe301bbe 100644 --- a/Code/Network/RKResponseMapperOperation.m +++ b/Code/Network/RKResponseMapperOperation.m @@ -287,7 +287,7 @@ @implementation RKObjectResponseMapperOperation - (RKMappingResult *)performMappingWithObject:(id)sourceObject error:(NSError **)error { RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new]; - self.mapperOperation = [[RKMapperOperation alloc] initWithObject:sourceObject mappingsDictionary:self.responseMappingsDictionary]; + self.mapperOperation = [[RKMapperOperation alloc] initWithRepresentation:sourceObject mappingsDictionary:self.responseMappingsDictionary]; self.mapperOperation.mappingOperationDataSource = dataSource; if (NSLocationInRange(self.response.statusCode, RKStatusCodeRangeForClass(RKStatusCodeClassSuccessful))) { self.mapperOperation.targetObject = self.targetObject; @@ -327,7 +327,7 @@ - (RKMappingResult *)performMappingWithObject:(id)sourceObject error:(NSError ** self.operationQueue = [NSOperationQueue new]; [self.managedObjectContext performBlockAndWait:^{ // Configure the mapper - self.mapperOperation = [[RKMapperOperation alloc] initWithObject:sourceObject mappingsDictionary:self.responseMappingsDictionary]; + self.mapperOperation = [[RKMapperOperation alloc] initWithRepresentation:sourceObject mappingsDictionary:self.responseMappingsDictionary]; self.mapperOperation.delegate = self.mapperDelegate; // Configure a data source to defer execution of connection operations until mapping is complete diff --git a/Code/ObjectMapping/RKMapperOperation.h b/Code/ObjectMapping/RKMapperOperation.h index eb5bfff716..b818d17af5 100644 --- a/Code/ObjectMapping/RKMapperOperation.h +++ b/Code/ObjectMapping/RKMapperOperation.h @@ -37,7 +37,7 @@ ## Mappings Dictionary - The mappings dictionary describes how to object map the source object. The keys of the dictionary are key paths into the `sourceObject` and the values are `RKMapping` objects describing how to map the representations at the corresponding key path. This dictionary based approach enables a single document to contain an arbitrary number of object representations that can be mapped independently. Consider the following example JSON structure: + The mappings dictionary describes how to object map the source object. The keys of the dictionary are key paths into the `representation` and the values are `RKMapping` objects describing how to map the representations at the corresponding key path. This dictionary based approach enables a single document to contain an arbitrary number of object representations that can be mapped independently. Consider the following example JSON structure: { "tags": [ "hacking", "phreaking" ], "authors": [ "Captain Crunch", "Emmanuel Goldstein" ], "magazine": { "title": "2600 The Hacker Quarterly" } } @@ -52,7 +52,7 @@ ### The NSNull Key - A mapping set for the key `[NSNull null]` value has special significance to the mapper operation. When a mapping is encountered with the a null key, the entire `sourceObject` is processed using the given mapping. This provides support for mapping content that does not have an outer nesting attribute. + A mapping set for the key `[NSNull null]` value has special significance to the mapper operation. When a mapping is encountered with the a null key, the entire `representation` is processed using the given mapping. This provides support for mapping content that does not have an outer nesting attribute. ## Data Source @@ -60,7 +60,7 @@ ## Target Object - If a `targetObject` is configured on the mapper operation, all mapping work on the `sourceObject` will target the specified object. For transient `NSObject` mappings, this ensures that the properties of an existing object are updated rather than an new object being created for the mapped representation. If an array of representations is being processed and a `targetObject` is provided, it must be a mutable collection object else an exception will be raised. + If a `targetObject` is configured on the mapper operation, all mapping work on the `representation` will target the specified object. For transient `NSObject` mappings, this ensures that the properties of an existing object are updated rather than an new object being created for the mapped representation. If an array of representations is being processed and a `targetObject` is provided, it must be a mutable collection object else an exception will be raised. ## Core Data @@ -75,11 +75,11 @@ /** Initializes the operation with a source object and a mappings dictionary. - @param object An `NSDictionary` or `NSArray` of `NSDictionary` object representations to be mapped into local domain objects. + @param representation An `NSDictionary` or `NSArray` of `NSDictionary` object representations to be mapped into local domain objects. @param mappingsDictionary An `NSDictionary` wherein the keys are mappable key paths in `object` and the values are `RKMapping` objects specifying how the representations at its key path are to be mapped. @return The receiver, initialized with the given object and and dictionary of key paths to mappings. */ -- (id)initWithObject:(id)object mappingsDictionary:(NSDictionary *)mappingsDictionary; +- (id)initWithRepresentation:(id)representation mappingsDictionary:(NSDictionary *)mappingsDictionary; ///------------------------------------------ /// @name Accessing Mapping Result and Errors @@ -100,14 +100,14 @@ ///------------------------------------- /** - The source object representation against which the mapping is performed. + The representation of one or more objects against which the mapping is performed. Either an `NSDictionary` or an `NSArray` of `NSDictionary` objects. */ -@property (nonatomic, strong, readonly) id sourceObject; +@property (nonatomic, strong, readonly) id representation; /** - A dictionary of key paths to `RKMapping` objects specifying how object representations in the `sourceObject` are to be mapped. + A dictionary of key paths to `RKMapping` objects specifying how object representations in the `representation` are to be mapped. Please see the above discussion for in-depth details about the mappings dictionary. */ @@ -130,6 +130,8 @@ */ @property (nonatomic, weak) id delegate; +- (BOOL)execute:(NSError **)error; + @end ///-------------------------------------- @@ -177,7 +179,7 @@ @param mapper The mapper operation performing the mapping. @param dictionaryOrArrayOfDictionaries The `NSDictictionary` or `NSArray` of `NSDictionary` object representations that was found at the `keyPath`. - @param keyPath The key path that the representation was read from in the `sourceObject`. If the `keyPath` was `[NSNull null]` in the `mappingsDictionary`, it will be given as `nil` to the delegate. + @param keyPath The key path that the representation was read from in the `representation`. If the `keyPath` was `[NSNull null]` in the `mappingsDictionary`, it will be given as `nil` to the delegate. */ - (void)mapper:(RKMapperOperation *)mapper didFindRepresentationOrArrayOfRepresentations:(id)dictionaryOrArrayOfDictionaries atKeyPath:(NSString *)keyPath; @@ -194,11 +196,11 @@ ///---------------------------------------------- /** - Tells the delegate that the mapper is about to start a mapping operation to map a representation found in the `sourceObject`. + Tells the delegate that the mapper is about to start a mapping operation to map a representation found in the `representation`. @param mapper The mapper operation performing the mapping. @param mappingOperation The mapping operation that is about to be started. - @param keyPath The key path that was mapped. A `nil` key path indicates that the mapping matched the entire `sourceObject`. + @param keyPath The key path that was mapped. A `nil` key path indicates that the mapping matched the entire `representation`. */ - (void)mapper:(RKMapperOperation *)mapper willStartMappingOperation:(RKMappingOperation *)mappingOperation forKeyPath:(NSString *)keyPath; @@ -207,7 +209,7 @@ @param mapper The mapper operation performing the mapping. @param mappingOperation The mapping operation that has finished. - @param keyPath The key path that was mapped. A `nil` key path indicates that the mapping matched the entire `sourceObject`. + @param keyPath The key path that was mapped. A `nil` key path indicates that the mapping matched the entire `representation`. */ - (void)mapper:(RKMapperOperation *)mapper didFinishMappingOperation:(RKMappingOperation *)mappingOperation forKeyPath:(NSString *)keyPath; @@ -216,7 +218,7 @@ @param mapper The mapper operation performing the mapping. @param mappingOperation The mapping operation that has failed. - @param keyPath The key path that was mapped. A `nil` key path indicates that the mapping matched the entire `sourceObject`. + @param keyPath The key path that was mapped. A `nil` key path indicates that the mapping matched the entire `representation`. @param error The error that occurred during the execution of the mapping operation. */ - (void)mapper:(RKMapperOperation *)mapper didFailMappingOperation:(RKMappingOperation *)mappingOperation forKeyPath:(NSString *)keyPath withError:(NSError *)error; diff --git a/Code/ObjectMapping/RKMapperOperation.m b/Code/ObjectMapping/RKMapperOperation.m index dd8db29397..77031d2732 100644 --- a/Code/ObjectMapping/RKMapperOperation.m +++ b/Code/ObjectMapping/RKMapperOperation.m @@ -42,18 +42,18 @@ @interface RKMapperOperation () @property (nonatomic, strong, readwrite) NSError *error; @property (nonatomic, strong, readwrite) RKMappingResult *mappingResult; @property (nonatomic, strong) NSMutableArray *mappingErrors; -@property (nonatomic, strong) id sourceObject; +@property (nonatomic, strong) id representation; @property (nonatomic, strong, readwrite) NSDictionary *mappingsDictionary; @end @implementation RKMapperOperation -- (id)initWithObject:(id)object mappingsDictionary:(NSDictionary *)mappingsDictionary; +- (id)initWithRepresentation:(id)representation mappingsDictionary:(NSDictionary *)mappingsDictionary; { self = [super init]; if (self) { - self.sourceObject = object; + self.representation = representation; self.mappingsDictionary = mappingsDictionary; self.mappingErrors = [NSMutableArray new]; self.mappingOperationDataSource = [RKObjectMappingOperationDataSource new]; @@ -117,16 +117,17 @@ - (BOOL)isNullCollection:(id)object #pragma mark - Mapping Primitives -- (id)mapObject:(id)mappableObject atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping +// Maps a singular object representation +- (id)mapRepresentation:(id)representation atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping { - NSAssert([mappableObject respondsToSelector:@selector(setValue:forKeyPath:)], @"Expected self.object to be KVC compliant"); + NSAssert([representation respondsToSelector:@selector(setValue:forKeyPath:)], @"Expected self.object to be KVC compliant"); id destinationObject = nil; if (self.targetObject) { destinationObject = self.targetObject; RKObjectMapping *objectMapping = nil; if ([mapping isKindOfClass:[RKDynamicMapping class]]) { - objectMapping = [(RKDynamicMapping *)mapping objectMappingForRepresentation:mappableObject]; + objectMapping = [(RKDynamicMapping *)mapping objectMappingForRepresentation:representation]; } else if ([mapping isKindOfClass:[RKObjectMapping class]]) { objectMapping = (RKObjectMapping *)mapping; } else { @@ -142,15 +143,15 @@ - (id)mapObject:(id)mappableObject atKeyPath:(NSString *)keyPath usingMapping:(R return nil; } else { // There is more than one mapping present. We are likely mapping secondary key paths to new objects - destinationObject = [self objectWithMapping:mapping andData:mappableObject]; + destinationObject = [self objectForRepresentation:representation withMapping:mapping]; } } } else { - destinationObject = [self objectWithMapping:mapping andData:mappableObject]; + destinationObject = [self objectForRepresentation:representation withMapping:mapping]; } if (mapping && destinationObject) { - BOOL success = [self mapFromObject:mappableObject toObject:destinationObject atKeyPath:keyPath usingMapping:mapping]; + BOOL success = [self mapRepresentation:representation toObject:destinationObject atKeyPath:keyPath usingMapping:mapping]; if (success) { return destinationObject; } @@ -163,28 +164,29 @@ - (id)mapObject:(id)mappableObject atKeyPath:(NSString *)keyPath usingMapping:(R return nil; } -- (NSArray *)mapCollection:(NSArray *)mappableObjects atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping +// Map a collection of object representations +- (NSArray *)mapRepresentations:(id)representations atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping { - NSAssert(mappableObjects != nil, @"Cannot map without an collection of mappable objects"); + NSAssert(representations != nil, @"Cannot map without an collection of mappable objects"); NSAssert(mapping != nil, @"Cannot map without a mapping to consult"); - NSArray *objectsToMap = mappableObjects; + NSArray *objectsToMap = representations; if (mapping.forceCollectionMapping) { // If we have forced mapping of a dictionary, map each subdictionary - if ([mappableObjects isKindOfClass:[NSDictionary class]]) { + if ([representations isKindOfClass:[NSDictionary class]]) { RKLogDebug(@"Collection mapping forced for NSDictionary, mapping each key/value independently..."); - objectsToMap = [NSMutableArray arrayWithCapacity:[mappableObjects count]]; - for (id key in mappableObjects) { - NSDictionary *dictionaryToMap = [NSDictionary dictionaryWithObject:[mappableObjects valueForKey:key] forKey:key]; + objectsToMap = [NSMutableArray arrayWithCapacity:[representations count]]; + for (id key in representations) { + NSDictionary *dictionaryToMap = [NSDictionary dictionaryWithObject:[representations valueForKey:key] forKey:key]; [(NSMutableArray *)objectsToMap addObject:dictionaryToMap]; } } else { - RKLogWarning(@"Collection mapping forced but mappable objects is of type '%@' rather than NSDictionary", NSStringFromClass([mappableObjects class])); + RKLogWarning(@"Collection mapping forced but representations is of type '%@' rather than NSDictionary", NSStringFromClass([representations class])); } } // Ensure we are mapping onto a mutable collection if there is a target - NSMutableArray *mappedObjects = self.targetObject ? self.targetObject : [NSMutableArray arrayWithCapacity:[mappableObjects count]]; + NSMutableArray *mappedObjects = self.targetObject ? self.targetObject : [NSMutableArray arrayWithCapacity:[representations count]]; if (NO == [mappedObjects respondsToSelector:@selector(addObject:)]) { NSString *errorMessage = [NSString stringWithFormat: @"Cannot map a collection of objects onto a non-mutable collection. Unexpected destination object type '%@'", @@ -194,12 +196,12 @@ - (NSArray *)mapCollection:(NSArray *)mappableObjects atKeyPath:(NSString *)keyP } for (id mappableObject in objectsToMap) { - id destinationObject = [self objectWithMapping:mapping andData:mappableObject]; + id destinationObject = [self objectForRepresentation:mappableObject withMapping:mapping]; if (! destinationObject) { continue; } - BOOL success = [self mapFromObject:mappableObject toObject:destinationObject atKeyPath:keyPath usingMapping:mapping]; + BOOL success = [self mapRepresentation:mappableObject toObject:destinationObject atKeyPath:keyPath usingMapping:mapping]; if (success) { [mappedObjects addObject:destinationObject]; } @@ -209,7 +211,7 @@ - (NSArray *)mapCollection:(NSArray *)mappableObjects atKeyPath:(NSString *)keyP } // The workhorse of this entire process. Emits object loading operations -- (BOOL)mapFromObject:(id)mappableObject toObject:(id)destinationObject atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping +- (BOOL)mapRepresentation:(id)mappableObject toObject:(id)destinationObject atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping { NSAssert(destinationObject != nil, @"Cannot map without a target object to assign the results to"); NSAssert(mappableObject != nil, @"Cannot map without a collection of attributes"); @@ -239,16 +241,16 @@ - (BOOL)mapFromObject:(id)mappableObject toObject:(id)destinationObject atKeyPat } } -- (id)objectWithMapping:(RKMapping *)mapping andData:(id)mappableData +- (id)objectForRepresentation:(id)representation withMapping:(RKMapping *)mapping { NSAssert([mapping isKindOfClass:[RKMapping class]], @"Expected an RKMapping object"); NSAssert(self.mappingOperationDataSource, @"Cannot find or instantiate objects without a data source"); RKObjectMapping *objectMapping = nil; if ([mapping isKindOfClass:[RKDynamicMapping class]]) { - objectMapping = [(RKDynamicMapping *)mapping objectMappingForRepresentation:mappableData]; + objectMapping = [(RKDynamicMapping *)mapping objectMappingForRepresentation:representation]; if (! objectMapping) { - RKLogDebug(@"Mapping %@ declined mapping for data %@: returned nil objectMapping", mapping, mappableData); + RKLogDebug(@"Mapping %@ declined mapping for representation %@: returned nil objectMapping", mapping, representation); } } else if ([mapping isKindOfClass:[RKObjectMapping class]]) { objectMapping = (RKObjectMapping *)mapping; @@ -257,27 +259,29 @@ - (id)objectWithMapping:(RKMapping *)mapping andData:(id)mappableData } if (objectMapping) { - return [self.mappingOperationDataSource mappingOperation:nil targetObjectForRepresentation:mappableData withMapping:objectMapping]; + return [self.mappingOperationDataSource mappingOperation:nil targetObjectForRepresentation:representation withMapping:objectMapping]; } return nil; } -- (id)performMappingForObject:(id)mappableValue atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping +- (id)mapRepresentationOrRepresentations:(id)mappableValue atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping { id mappingResult; if (mapping.forceCollectionMapping || [mappableValue isKindOfClass:[NSArray class]] || [mappableValue isKindOfClass:[NSSet class]]) { RKLogDebug(@"Found mappable collection at keyPath '%@': %@", keyPath, mappableValue); - mappingResult = [self mapCollection:mappableValue atKeyPath:keyPath usingMapping:mapping]; + mappingResult = [self mapRepresentations:mappableValue atKeyPath:keyPath usingMapping:mapping]; } else { RKLogDebug(@"Found mappable data at keyPath '%@': %@", keyPath, mappableValue); - mappingResult = [self mapObject:mappableValue atKeyPath:keyPath usingMapping:mapping]; + mappingResult = [self mapRepresentation:mappableValue atKeyPath:keyPath usingMapping:mapping]; } return mappingResult; } -- (NSMutableDictionary *)performKeyPathMappingUsingMappingDictionary:(NSDictionary *)mappingsByKeyPath +#pragma mark - + +- (NSMutableDictionary *)mapSourceRepresentationWithMappingsDictionary:(NSDictionary *)mappingsByKeyPath { BOOL foundMappable = NO; NSMutableDictionary *results = [NSMutableDictionary dictionary]; @@ -285,18 +289,18 @@ - (NSMutableDictionary *)performKeyPathMappingUsingMappingDictionary:(NSDictiona if ([self isCancelled]) return nil; id mappingResult = nil; - id mappableValue = nil; + id nestedRepresentation = nil; RKLogTrace(@"Examining keyPath '%@' for mappable content...", keyPath); if ([keyPath isEqual:[NSNull null]] || [keyPath isEqualToString:@""]) { - mappableValue = self.sourceObject; + nestedRepresentation = self.representation; } else { - mappableValue = [self.sourceObject valueForKeyPath:keyPath]; + nestedRepresentation = [self.representation valueForKeyPath:keyPath]; } // Not found... - if (mappableValue == nil || mappableValue == [NSNull null] || [self isNullCollection:mappableValue]) { + if (nestedRepresentation == nil || nestedRepresentation == [NSNull null] || [self isNullCollection:nestedRepresentation]) { RKLogDebug(@"Found unmappable value at keyPath: %@", keyPath); if ([self.delegate respondsToSelector:@selector(mapper:didNotFindRepresentationOrArrayOfRepresentationsAtKeyPath:)]) { @@ -310,10 +314,10 @@ - (NSMutableDictionary *)performKeyPathMappingUsingMappingDictionary:(NSDictiona foundMappable = YES; RKMapping *mapping = [mappingsByKeyPath objectForKey:keyPath]; if ([self.delegate respondsToSelector:@selector(mapper:didFindRepresentationOrArrayOfRepresentations:atKeyPath:)]) { - [self.delegate mapper:self didFindRepresentationOrArrayOfRepresentations:mappableValue atKeyPath:RKDelegateKeyPathFromKeyPath(keyPath)]; + [self.delegate mapper:self didFindRepresentationOrArrayOfRepresentations:nestedRepresentation atKeyPath:RKDelegateKeyPathFromKeyPath(keyPath)]; } - mappingResult = [self performMappingForObject:mappableValue atKeyPath:keyPath usingMapping:mapping]; + mappingResult = [self mapRepresentationOrRepresentations:nestedRepresentation atKeyPath:keyPath usingMapping:mapping]; if (mappingResult) { [results setObject:mappingResult forKey:keyPath]; @@ -336,12 +340,12 @@ - (void)cancel - (void)main { - NSAssert(self.sourceObject != nil, @"Cannot perform object mapping without a source object to map from"); + NSAssert(self.representation != nil, @"Cannot perform object mapping without a source object to map from"); NSAssert(self.mappingsDictionary, @"Cannot perform object mapping without a dictionary of mappings"); if ([self isCancelled]) return; - RKLogDebug(@"Performing object mapping sourceObject: %@\n and targetObject: %@", self.sourceObject, self.targetObject); + RKLogDebug(@"Executing mapping operation for representation: %@\n and targetObject: %@", self.representation, self.targetObject); if ([self.delegate respondsToSelector:@selector(mapperWillStartMapping:)]) { [self.delegate mapperWillStartMapping:self]; @@ -349,7 +353,7 @@ - (void)main // Perform the mapping BOOL foundMappable = NO; - NSMutableDictionary *results = [self performKeyPathMappingUsingMappingDictionary:self.mappingsDictionary]; + NSMutableDictionary *results = [self mapSourceRepresentationWithMappingsDictionary:self.mappingsDictionary]; if ([self isCancelled]) return; foundMappable = (results != nil); @@ -359,7 +363,7 @@ - (void)main // If we found nothing eligible for mapping in the content, add an unmappable key path error and fail mapping // If the content is empty, we don't consider it an error - BOOL isEmpty = [self.sourceObject respondsToSelector:@selector(count)] && ([self.sourceObject count] == 0); + BOOL isEmpty = [self.representation respondsToSelector:@selector(count)] && ([self.representation count] == 0); if (foundMappable == NO && !isEmpty) { NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithObjectsAndKeys: NSLocalizedString(@"Unable to find any mappings for the given content", nil), NSLocalizedDescriptionKey, @@ -376,4 +380,11 @@ - (void)main if (results) self.mappingResult = [[RKMappingResult alloc] initWithDictionary:results]; } +- (BOOL)execute:(NSError **)error +{ + [self start]; + if (error) *error = self.error; + return self.mappingResult != nil; +} + @end diff --git a/Code/ObjectMapping/RKMapperOperation_Private.h b/Code/ObjectMapping/RKMapperOperation_Private.h index 1be7fd9c78..c31e01d22d 100644 --- a/Code/ObjectMapping/RKMapperOperation_Private.h +++ b/Code/ObjectMapping/RKMapperOperation_Private.h @@ -20,9 +20,9 @@ @interface RKMapperOperation (Private) -- (id)mapObject:(id)mappableObject atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping; -- (NSArray *)mapCollection:(NSArray *)mappableObjects atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping; -- (BOOL)mapFromObject:(id)mappableObject toObject:(id)destinationObject atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping; -- (id)objectWithMapping:(RKMapping *)objectMapping andData:(id)mappableData; +- (id)mapRepresentation:(id)mappableObject atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping; +- (NSArray *)mapRepresentations:(NSArray *)mappableObjects atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping; +- (BOOL)mapRepresentation:(id)mappableObject toObject:(id)destinationObject atKeyPath:(NSString *)keyPath usingMapping:(RKMapping *)mapping; +- (id)objectForRepresentation:(id)representation withMapping:(RKMapping *)mapping; @end diff --git a/Code/ObjectMapping/RKMappingOperation.m b/Code/ObjectMapping/RKMappingOperation.m index d334f4963b..f74511a99d 100644 --- a/Code/ObjectMapping/RKMappingOperation.m +++ b/Code/ObjectMapping/RKMappingOperation.m @@ -148,7 +148,6 @@ id RKTransformedValueWithClass(id value, Class destinationType, NSValueTransform return nil; } -// Applies // Key comes from: [[_nestedAttributeSubstitution allKeys] lastObject]] AND [[_nestedAttributeSubstitution allValues] lastObject]; NSArray *RKApplyNestingAttributeValueToMappings(NSString *attributeName, id value, NSArray *propertyMappings); NSArray *RKApplyNestingAttributeValueToMappings(NSString *attributeName, id value, NSArray *propertyMappings) diff --git a/Tests/Logic/CoreData/RKEntityMappingTest.m b/Tests/Logic/CoreData/RKEntityMappingTest.m index 3fc2b9bd0d..fb02cf09d7 100644 --- a/Tests/Logic/CoreData/RKEntityMappingTest.m +++ b/Tests/Logic/CoreData/RKEntityMappingTest.m @@ -76,7 +76,7 @@ - (void)testShouldMapACollectionOfObjectsWithDynamicKeys attributeValues:@{ @"name": @"rachit" } inManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"DynamicKeys.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; RKManagedObjectMappingOperationDataSource *dataSource = [[RKManagedObjectMappingOperationDataSource alloc] initWithManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext cache:managedObjectStore.managedObjectCache]; mapper.mappingOperationDataSource = dataSource; diff --git a/Tests/Logic/CoreData/RKManagedObjectMappingOperationDataSourceTest.m b/Tests/Logic/CoreData/RKManagedObjectMappingOperationDataSourceTest.m index b51be8e889..d998a98d06 100644 --- a/Tests/Logic/CoreData/RKManagedObjectMappingOperationDataSourceTest.m +++ b/Tests/Logic/CoreData/RKManagedObjectMappingOperationDataSourceTest.m @@ -902,7 +902,7 @@ - (void)testShouldConnectRelationshipsByPrimaryKeyRegardlessOfOrder [operationQueue setSuspended:YES]; mappingOperationDataSource.operationQueue = operationQueue; [managedObjectContext performBlockAndWait:^{ - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:JSON mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:JSON mappingsDictionary:mappingsDictionary]; mapper.mappingOperationDataSource = mappingOperationDataSource; [mapper start]; }]; @@ -945,7 +945,7 @@ - (void)testMappingAPayloadContainingRepeatedObjectsDoesNotYieldDuplicatesWithFe NSDictionary *mappingsDictionary = @{ @"parents": parentMapping }; NSDictionary *JSON = [RKTestFixture parsedObjectWithContentsOfFixture:@"parents_and_children.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:JSON mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:JSON mappingsDictionary:mappingsDictionary]; mapper.mappingOperationDataSource = mappingOperationDataSource; [mapper start]; @@ -977,7 +977,7 @@ - (void)testMappingAPayloadContainingRepeatedObjectsDoesNotYieldDuplicatesWithIn NSDictionary *mappingsDictionary = @{ @"parents": parentMapping }; NSDictionary *JSON = [RKTestFixture parsedObjectWithContentsOfFixture:@"parents_and_children.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:JSON mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:JSON mappingsDictionary:mappingsDictionary]; mapper.mappingOperationDataSource = mappingOperationDataSource; [mapper start]; @@ -994,6 +994,71 @@ - (void)testMappingAPayloadContainingRepeatedObjectsDoesNotYieldDuplicatesWithIn assertThatInteger(childrenCount, is(equalToInteger(4))); } +- (void)testThatMappingObjectsWithTheSameIdentificationAttributesAcrossTwoContextsDoesNotCreateDuplicateObjects +{ + // Create an object store + // Create 2 contexts with common parent + // Create an in memory managed object cache + // Map the + + RKManagedObjectStore *managedObjectStore = [RKTestFactory managedObjectStore]; + RKInMemoryManagedObjectCache *inMemoryCache = [[RKInMemoryManagedObjectCache alloc] initWithManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext]; + managedObjectStore.managedObjectCache = inMemoryCache; + NSEntityDescription *humanEntity = [NSEntityDescription entityForName:@"Human" inManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext]; + RKEntityMapping *mapping = [RKEntityMapping mappingForEntityForName:@"Human" inManagedObjectStore:managedObjectStore]; + mapping.identificationAttributes = @[ @"railsID" ]; + [mapping addAttributeMappingsFromArray:@[ @"name", @"railsID" ]]; + + // Create two contexts with common parent + NSManagedObjectContext *firstContext = [managedObjectStore newChildManagedObjectContextWithConcurrencyType:NSPrivateQueueConcurrencyType]; + NSManagedObjectContext *secondContext = [managedObjectStore newChildManagedObjectContextWithConcurrencyType:NSPrivateQueueConcurrencyType]; + + // Map into the first context + NSDictionary *objectRepresentation = @{ @"name": @"Blake", @"railsID": @(31337) }; + + // Check that the cache contains a value for our identification attributes + __block BOOL success; + __block NSError *error; + [firstContext performBlockAndWait:^{ + RKManagedObjectMappingOperationDataSource *dataSource = [[RKManagedObjectMappingOperationDataSource alloc] initWithManagedObjectContext:firstContext + cache:inMemoryCache]; + RKMapperOperation *mapperOperation = [[RKMapperOperation alloc] initWithRepresentation:objectRepresentation mappingsDictionary:@{ [NSNull null]: mapping }]; + mapperOperation.mappingOperationDataSource = dataSource; + success = [mapperOperation execute:&error]; + expect(success).to.equal(YES); + expect([mapperOperation.mappingResult count]).to.equal(1); + + [firstContext save:nil]; + }]; + + // Check that there is an entry in the cache + NSSet *objects = [inMemoryCache managedObjectsWithEntity:humanEntity attributeValues:@{ @"railsID": @(31337) } inManagedObjectContext:firstContext]; + expect(objects).to.haveCountOf(1); + + // Map into the second context + [secondContext performBlockAndWait:^{ + RKManagedObjectMappingOperationDataSource *dataSource = [[RKManagedObjectMappingOperationDataSource alloc] initWithManagedObjectContext:secondContext + cache:inMemoryCache]; + RKMapperOperation *mapperOperation = [[RKMapperOperation alloc] initWithRepresentation:objectRepresentation mappingsDictionary:@{ [NSNull null]: mapping }]; + mapperOperation.mappingOperationDataSource = dataSource; + success = [mapperOperation execute:&error]; + expect(success).to.equal(YES); + expect([mapperOperation.mappingResult count]).to.equal(1); + + [secondContext save:nil]; + }]; + + // Now check the count + objects = [inMemoryCache managedObjectsWithEntity:humanEntity attributeValues:@{ @"railsID": @(31337) } inManagedObjectContext:secondContext]; + expect(objects).to.haveCountOf(1); + + // Now pull the count back from the parent context + NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Human"]; + fetchRequest.predicate = [NSPredicate predicateWithFormat:@"railsID == 31337"]; + NSArray *fetchedObjects = [managedObjectStore.persistentStoreManagedObjectContext executeFetchRequest:fetchRequest error:nil]; + expect(fetchedObjects).to.haveCountOf(1); +} + - (void)testConnectingToSubentitiesByFetchRequestCache { diff --git a/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m b/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m index 37db88cd47..997454b9f1 100644 --- a/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m +++ b/Tests/Logic/Network/RKManagedObjectRequestOperationTest.m @@ -496,7 +496,7 @@ - (void)testThatObjectsOrphanedByRequestOperationAreDeletedAppropriately [anotherPost setValue:@"Another Post" forKey:@"title"]; [anotherPost setValue:[NSSet setWithObject:anotherTag] forKey:@"tags"]; - BOOL success = [managedObjectStore.persistentStoreManagedObjectContext save:nil]; + [managedObjectStore.persistentStoreManagedObjectContext save:nil]; }]; RKEntityMapping *postMapping = [RKEntityMapping mappingForEntityForName:@"Post" inManagedObjectStore:managedObjectStore]; diff --git a/Tests/Logic/ObjectMapping/RKMappingOperationTest.m b/Tests/Logic/ObjectMapping/RKMappingOperationTest.m index c8a4dac13f..a89864c820 100644 --- a/Tests/Logic/ObjectMapping/RKMappingOperationTest.m +++ b/Tests/Logic/ObjectMapping/RKMappingOperationTest.m @@ -441,7 +441,7 @@ - (void)testCancellationOfMapperOperation NSOperationQueue *operationQueue = [NSOperationQueue new]; NSDictionary *JSON = [RKTestFixture parsedObjectWithContentsOfFixture:@"benchmark_parents_and_children.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:JSON mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:JSON mappingsDictionary:mappingsDictionary]; [operationQueue addOperation:mapper]; [mapper cancel]; [operationQueue waitUntilAllOperationsAreFinished]; diff --git a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m index 2f11a6b6b3..34e0fb031d 100644 --- a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m +++ b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m @@ -228,7 +228,7 @@ - (void)testShouldPerformBasicMapping mapper.mappingOperationDataSource = [RKObjectMappingOperationDataSource new]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; RKTestUser *user = [RKTestUser user]; - BOOL success = [mapper mapFromObject:userInfo toObject:user atKeyPath:@"" usingMapping:mapping]; + BOOL success = [mapper mapRepresentation:userInfo toObject:user atKeyPath:@"" usingMapping:mapping]; assertThatBool(success, is(equalToBool(YES))); assertThatInt([user.userID intValue], is(equalToInt(31337))); assertThat(user.name, is(equalTo(@"Blake Watters"))); @@ -245,7 +245,7 @@ - (void)testShouldMapACollectionOfSimpleObjectDictionaries RKMapperOperation *mapper = [RKMapperOperation new]; mapper.mappingOperationDataSource = [RKObjectMappingOperationDataSource new]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"users.json"]; - NSArray *users = [mapper mapCollection:userInfo atKeyPath:@"" usingMapping:mapping]; + NSArray *users = [mapper mapRepresentations:userInfo atKeyPath:@"" usingMapping:mapping]; assertThatUnsignedInteger([users count], is(equalToInt(3))); RKTestUser *blake = [users objectAtIndex:0]; assertThat(blake.name, is(equalTo(@"Blake Watters"))); @@ -259,7 +259,7 @@ - (void)testShouldDetermineTheObjectMappingByConsultingTheMappingProviderWhenThe [mappingsDictionary setObject:mapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; mapper.targetObject = [RKTestUser user]; [mapper start]; } @@ -268,7 +268,7 @@ - (void)testShouldAddAnErrorWhenTheKeyPathMappingAndObjectClassDoNotAgree { RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:@{[NSNull null] : mapping}]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:@{[NSNull null] : mapping}]; NSDictionary *dictionary = [NSDictionary new]; mapper.targetObject = dictionary; [mapper start]; @@ -288,7 +288,7 @@ - (void)testShouldMapToATargetObject [mappingsDictionary setObject:mapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:@{[NSNull null] : mapping}]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:@{[NSNull null] : mapping}]; RKTestUser *user = [RKTestUser user]; mapper.targetObject = user; [mapper start]; @@ -309,7 +309,7 @@ - (void)testShouldCreateANewInstanceOfTheAppropriateDestinationObjectWhenThereIs [mappingsDictionary setObject:mapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [mapper start]; id mappingResult = [mapper.mappingResult firstObject]; assertThatBool([mappingResult isKindOfClass:[RKTestUser class]], is(equalToBool(YES))); @@ -328,7 +328,7 @@ - (void)testShouldMapWithoutATargetMapping [mappingsDictionary setObject:mapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [mapper start]; RKTestUser *user = [mapper.mappingResult firstObject]; assertThat(user, is(notNilValue())); @@ -347,7 +347,7 @@ - (void)testShouldMapACollectionOfObjects [mappingsDictionary setObject:mapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"users.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [mapper start]; NSArray *users = [mapper.mappingResult array]; assertThatBool([users isKindOfClass:[NSArray class]], is(equalToBool(YES))); @@ -369,7 +369,7 @@ - (void)testShouldMapACollectionOfObjectsWithDynamicKeys id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"DynamicKeys.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [mapper start]; NSArray *users = [mapper.mappingResult array]; assertThatBool([users isKindOfClass:[NSArray class]], is(equalToBool(YES))); @@ -395,7 +395,7 @@ - (void)testShouldMapACollectionOfObjectsWithDynamicKeysAndRelationships [mappingsDictionary setObject:mapping forKey:@"users"]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"DynamicKeysWithRelationship.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [mapper start]; RKMappingResult *result = mapper.mappingResult; NSArray *users = [result array]; @@ -433,7 +433,7 @@ - (void)testShouldMapANestedArrayOfObjectsWithDynamicKeysAndArrayRelationships [mappingsDictionary setObject:mapping forKey:@"groups"]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"DynamicKeysWithNestedRelationship.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [mapper start]; RKMappingResult *result = mapper.mappingResult; @@ -489,7 +489,7 @@ - (void)testShouldMapANestedArrayOfObjectsWithDynamicKeysAndSetRelationships [mappingsDictionary setObject:mapping forKey:@"groups"]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"DynamicKeysWithNestedRelationship.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [mapper start]; RKMappingResult *result = mapper.mappingResult; @@ -542,7 +542,7 @@ - (void)testShouldBeAbleToMapFromAUserObjectToADictionary user.name = @"Blake Watters"; user.userID = [NSNumber numberWithInt:123]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:user mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:user mappingsDictionary:mappingsDictionary]; [mapper start]; RKMappingResult *result = mapper.mappingResult; NSDictionary *userInfo = [result firstObject]; @@ -561,7 +561,7 @@ - (void)testShouldMapRegisteredSubKeyPathsOfAnUnmappableDictionaryAndReturnTheRe [mappingsDictionary setObject:mapping forKey:@"user"]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"nested_user.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [mapper start]; NSDictionary *dictionary = [mapper.mappingResult dictionary]; assertThatBool([dictionary isKindOfClass:[NSDictionary class]], is(equalToBool(YES))); @@ -583,7 +583,7 @@ - (void)testShouldAddAnErrorWhenYouTryToMapAnArrayToATargetObject [mappingsDictionary setObject:mapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"users.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; mapper.targetObject = [RKTestUser user]; [mapper start]; assertThatInteger(mapper.error.code, is(equalToInt(RKMappingErrorTypeMismatch))); @@ -593,7 +593,7 @@ - (void)testShouldAddAnErrorWhenAttemptingToMapADictionaryWithoutAnObjectMapping { id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [mapper start]; assertThat([mapper.error localizedDescription], is(equalTo(@"Unable to find any mappings for the given content"))); } @@ -602,7 +602,7 @@ - (void)testShouldAddAnErrorWhenAttemptingToMapACollectionWithoutAnObjectMapping { NSMutableDictionary *mappingsDictionary = [NSMutableDictionary dictionary]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"users.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [mapper start]; assertThat([mapper.error localizedDescription], is(equalTo(@"Unable to find any mappings for the given content"))); } @@ -617,7 +617,7 @@ - (void)testShouldInformTheDelegateWhenMappingBegins [mappingsDictionary setObject:mapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"users.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [[mockDelegate expect] mapperWillStartMapping:mapper]; mapper.delegate = mockDelegate; [mapper start]; @@ -632,7 +632,7 @@ - (void)testShouldInformTheDelegateWhenMappingEnds [mappingsDictionary setObject:mapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"users.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [[mockDelegate stub] mapperWillStartMapping:mapper]; [[mockDelegate expect] mapperDidFinishMapping:mapper]; mapper.delegate = mockDelegate; @@ -648,7 +648,7 @@ - (void)testShouldInformTheDelegateWhenCheckingForObjectMappingForKeyPathIsSucce [mappingsDictionary setObject:mapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [[mockDelegate expect] mapper:mapper didFindRepresentationOrArrayOfRepresentations:OCMOCK_ANY atKeyPath:nil]; mapper.delegate = mockDelegate; [mapper start]; @@ -662,7 +662,7 @@ - (void)testShouldInformTheDelegateWhenCheckingForObjectMappingForKeyPathIsNotSu [mappingsDictionary setObject:mapping forKey:@"users"]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; id mockDelegate = [OCMockObject niceMockForProtocol:@protocol(RKMapperOperationDelegate)]; [[mockDelegate expect] mapper:mapper didNotFindRepresentationOrArrayOfRepresentationsAtKeyPath:@"users"]; mapper.delegate = mockDelegate; @@ -680,7 +680,7 @@ - (void)testShouldNotifyTheDelegateWhenItDidMapAnObject [mappingsDictionary setObject:mapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [[mockDelegate expect] mapper:mapper didFinishMappingOperation:OCMOCK_ANY forKeyPath:nil]; mapper.delegate = mockDelegate; [mapper start]; @@ -702,7 +702,7 @@ - (void)testShouldNotifyTheDelegateWhenItFailedToMapAnObject [mappingsDictionary setObject:mapping forKey:[NSNull null]]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; RKTestUser *exampleUser = [RKTestUser new]; id mockObject = [OCMockObject partialMockForObject:exampleUser]; [[[mockObject expect] andCall:@selector(fakeValidateValue:forKeyPath:error:) onObject:self] validateValue:(id __autoreleasing *)[OCMArg anyPointer] forKeyPath:OCMOCK_ANY error:(NSError * __autoreleasing *)[OCMArg anyPointer]]; @@ -1306,7 +1306,7 @@ - (void)testShouldMapANestedObject mapper.mappingOperationDataSource = [RKObjectMappingOperationDataSource new]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; RKTestUser *user = [RKTestUser user]; - BOOL success = [mapper mapFromObject:userInfo toObject:user atKeyPath:@"" usingMapping:userMapping]; + BOOL success = [mapper mapRepresentation:userInfo toObject:user atKeyPath:@"" usingMapping:userMapping]; assertThatBool(success, is(equalToBool(YES))); assertThat(user.name, is(equalTo(@"Blake Watters"))); assertThat(user.address, isNot(nilValue())); @@ -1328,7 +1328,7 @@ - (void)testShouldMapANestedObjectToCollection mapper.mappingOperationDataSource = [RKObjectMappingOperationDataSource new]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; RKTestUser *user = [RKTestUser user]; - BOOL success = [mapper mapFromObject:userInfo toObject:user atKeyPath:@"" usingMapping:userMapping]; + BOOL success = [mapper mapRepresentation:userInfo toObject:user atKeyPath:@"" usingMapping:userMapping]; assertThatBool(success, is(equalToBool(YES))); assertThat(user.name, is(equalTo(@"Blake Watters"))); assertThat(user.friends, isNot(nilValue())); @@ -1351,7 +1351,7 @@ - (void)testShouldMapANestedObjectToOrderedSetCollection mapper.mappingOperationDataSource = [RKObjectMappingOperationDataSource new]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; RKTestUser *user = [RKTestUser user]; - BOOL success = [mapper mapFromObject:userInfo toObject:user atKeyPath:@"" usingMapping:userMapping]; + BOOL success = [mapper mapRepresentation:userInfo toObject:user atKeyPath:@"" usingMapping:userMapping]; assertThatBool(success, is(equalToBool(YES))); assertThat(user.name, is(equalTo(@"Blake Watters"))); assertThat(user.friendsOrderedSet, isNot(nilValue())); @@ -1371,7 +1371,7 @@ - (void)testShouldMapANestedObjectCollection mapper.mappingOperationDataSource = [RKObjectMappingOperationDataSource new]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; RKTestUser *user = [RKTestUser user]; - BOOL success = [mapper mapFromObject:userInfo toObject:user atKeyPath:@"" usingMapping:userMapping]; + BOOL success = [mapper mapRepresentation:userInfo toObject:user atKeyPath:@"" usingMapping:userMapping]; assertThatBool(success, is(equalToBool(YES))); assertThat(user.name, is(equalTo(@"Blake Watters"))); assertThat(user.friends, isNot(nilValue())); @@ -1393,7 +1393,7 @@ - (void)testShouldMapANestedArrayIntoASet mapper.mappingOperationDataSource = [RKObjectMappingOperationDataSource new]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; RKTestUser *user = [RKTestUser user]; - BOOL success = [mapper mapFromObject:userInfo toObject:user atKeyPath:@"" usingMapping:userMapping]; + BOOL success = [mapper mapRepresentation:userInfo toObject:user atKeyPath:@"" usingMapping:userMapping]; assertThatBool(success, is(equalToBool(YES))); assertThat(user.name, is(equalTo(@"Blake Watters"))); assertThat(user.friendsSet, isNot(nilValue())); @@ -1416,7 +1416,7 @@ - (void)testShouldMapANestedArrayIntoAnOrderedSet mapper.mappingOperationDataSource = [RKObjectMappingOperationDataSource new]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; RKTestUser *user = [RKTestUser user]; - BOOL success = [mapper mapFromObject:userInfo toObject:user atKeyPath:@"" usingMapping:userMapping]; + BOOL success = [mapper mapRepresentation:userInfo toObject:user atKeyPath:@"" usingMapping:userMapping]; assertThatBool(success, is(equalToBool(YES))); assertThat(user.name, is(equalTo(@"Blake Watters"))); assertThat(user.friendsOrderedSet, isNot(nilValue())); @@ -1448,7 +1448,7 @@ - (void)testShouldNotSetThePropertyWhenTheNestedObjectIsIdentical RKMapperOperation *mapper = [RKMapperOperation new]; mapper.mappingOperationDataSource = [RKObjectMappingOperationDataSource new]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"]; - [mapper mapFromObject:userInfo toObject:user atKeyPath:@"" usingMapping:userMapping]; + [mapper mapRepresentation:userInfo toObject:user atKeyPath:@"" usingMapping:userMapping]; } - (void)testSkippingOfIdenticalObjectsInformsDelegate @@ -1508,7 +1508,7 @@ - (void)testShouldNotSetThePropertyWhenTheNestedObjectCollectionIsIdentical id mockUser = [OCMockObject partialMockForObject:user]; [[mockUser reject] setFriends:OCMOCK_ANY]; - [mapper mapFromObject:userInfo toObject:mockUser atKeyPath:@"" usingMapping:userMapping]; + [mapper mapRepresentation:userInfo toObject:mockUser atKeyPath:@"" usingMapping:userMapping]; [mockUser verify]; } @@ -1597,7 +1597,7 @@ - (void)testShouldMapASingleObjectDynamically [mappingsDictionary setObject:dynamicMapping forKey:@""]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"boy.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [mapper start]; Boy *user = [mapper.mappingResult firstObject]; assertThat(user, is(instanceOf([Boy class]))); @@ -1618,7 +1618,7 @@ - (void)testShouldMapASingleObjectDynamicallyWithADeclarativeMatcher [mappingsDictionary setObject:dynamicMapping forKey:@""]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"boy.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [mapper start]; Boy *user = [mapper.mappingResult firstObject]; assertThat(user, is(instanceOf([Boy class]))); @@ -1639,7 +1639,7 @@ - (void)testShouldACollectionOfObjectsDynamically [mappingsDictionary setObject:dynamicMapping forKey:@""]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"mixed.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [mapper start]; NSArray *objects = [mapper.mappingResult array]; expect(objects).to.haveCountOf(2); @@ -1666,7 +1666,7 @@ - (void)testShouldMapARelationshipDynamically [mappingsDictionary setObject:dynamicMapping forKey:@""]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"friends.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [mapper start]; Boy *blake = [mapper.mappingResult firstObject]; NSArray *friends = blake.friends; @@ -1702,7 +1702,7 @@ - (void)testShouldBeAbleToDeclineMappingAnObjectByReturningANilObjectMapping [mappingsDictionary setObject:dynamicMapping forKey:@""]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"mixed.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [mapper start]; NSArray *boys = [mapper.mappingResult array]; assertThat(boys, hasCountOf(1)); @@ -1734,7 +1734,7 @@ - (void)testShouldBeAbleToDeclineMappingObjectsInARelationshipByReturningANilObj [mappingsDictionary setObject:dynamicMapping forKey:@""]; id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"friends.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; [mapper start]; Boy *blake = [mapper.mappingResult firstObject]; assertThat(blake, is(notNilValue())); @@ -1766,7 +1766,7 @@ - (void)testShouldMapATargetObjectWithADynamicMapping id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"boy.json"]; Boy *blake = [Boy new]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; mapper.targetObject = blake; [mapper start]; Boy *user = [mapper.mappingResult firstObject]; @@ -1788,7 +1788,7 @@ - (void)testShouldFailWithAnErrorIfATargetObjectIsProvidedAndTheDynamicMappingRe id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"boy.json"]; Boy *blake = [Boy new]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; mapper.targetObject = blake; [mapper start]; Boy *user = [mapper.mappingResult firstObject]; @@ -1814,7 +1814,7 @@ - (void)testShouldFailWithAnErrorIfATargetObjectIsProvidedAndTheDynamicMappingRe id userInfo = [RKTestFixture parsedObjectWithContentsOfFixture:@"girl.json"]; Boy *blake = [Boy new]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:userInfo mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:userInfo mappingsDictionary:mappingsDictionary]; mapper.targetObject = blake; [mapper start]; Boy *user = [mapper.mappingResult firstObject]; @@ -2048,7 +2048,7 @@ - (void)testUpdatingArrayOfExistingCats human2.railsID = [NSNumber numberWithInt:202]; [managedObjectStore.persistentStoreManagedObjectContext save:nil]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:array mappingsDictionary:mappingsDictionary]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:array mappingsDictionary:mappingsDictionary]; RKFetchRequestManagedObjectCache *managedObjectCache = [[RKFetchRequestManagedObjectCache alloc] init]; mapper.mappingOperationDataSource = [[RKManagedObjectMappingOperationDataSource alloc] initWithManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext cache:managedObjectCache]; @@ -2072,7 +2072,7 @@ - (void)testMappingMultipleKeyPathsAtRootOfObject [mapping2 addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:@"catId" toKeyPath:@"userID"]]; NSDictionary *dictionary = [RKTestFixture parsedObjectWithContentsOfFixture:@"SameKeyDifferentTargetClasses.json"]; - RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithObject:dictionary mappingsDictionary:@{ @"products": mapping1, @"categories": mapping2 }]; + RKMapperOperation *mapper = [[RKMapperOperation alloc] initWithRepresentation:dictionary mappingsDictionary:@{ @"products": mapping1, @"categories": mapping2 }]; RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new]; mapper.mappingOperationDataSource = dataSource; [mapper start]; From 477d04b9a9d5b743c67543d40996624c9d968aec Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Wed, 19 Dec 2012 13:35:28 -0500 Subject: [PATCH 06/41] Add support for logging the elapsed time. Guard against attempts to log non-HTTP request operations. --- Code/Network/RKHTTPRequestOperation.m | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/Code/Network/RKHTTPRequestOperation.m b/Code/Network/RKHTTPRequestOperation.m index d07d57cc51..3cbd0081b2 100644 --- a/Code/Network/RKHTTPRequestOperation.m +++ b/Code/Network/RKHTTPRequestOperation.m @@ -18,6 +18,7 @@ // limitations under the License. // +#import #import "RKHTTPRequestOperation.h" #import "RKLog.h" #import "lcl_RK.h" @@ -126,9 +127,17 @@ - (void)dealloc [[NSNotificationCenter defaultCenter] removeObserver:self]; } +static void *RKHTTPRequestOperationStartDate = &RKHTTPRequestOperationStartDate; + - (void)HTTPOperationDidStart:(NSNotification *)notification { RKHTTPRequestOperation *operation = [notification object]; + + if (![operation isKindOfClass:[AFHTTPRequestOperation class]]) { + return; + } + + objc_setAssociatedObject(operation, RKHTTPRequestOperationStartDate, [NSDate date], OBJC_ASSOCIATION_RETAIN_NONATOMIC); if ((_RKlcl_component_level[(__RKlcl_log_symbol(RKlcl_cRestKitNetwork))]) >= (__RKlcl_log_symbol(RKlcl_vTrace))) { NSString *body = nil; @@ -147,19 +156,27 @@ - (void)HTTPOperationDidStart:(NSNotification *)notification - (void)HTTPOperationDidFinish:(NSNotification *)notification { RKHTTPRequestOperation *operation = [notification object]; + + if (![operation isKindOfClass:[AFHTTPRequestOperation class]]) { + return; + } + + NSTimeInterval elapsedTime = [[NSDate date] timeIntervalSinceDate:objc_getAssociatedObject(operation, RKHTTPRequestOperationStartDate)]; + NSString *statusCodeString = RKStringFromStatusCode([operation.response statusCode]); - NSString *statusCodeFragment = statusCodeString ? [NSString stringWithFormat:@"(%ld %@)", (long)[operation.response statusCode], statusCodeString] : [NSString stringWithFormat:@"(%ld)", (long)[operation.response statusCode]]; + NSString *elapsedTimeString = [NSString stringWithFormat:@"[%.04f s]", elapsedTime]; + NSString *statusCodeAndElapsedTime = statusCodeString ? [NSString stringWithFormat:@"(%ld %@) %@", (long)[operation.response statusCode], statusCodeString, elapsedTimeString] : [NSString stringWithFormat:@"(%ld) %@", (long)[operation.response statusCode], elapsedTimeString]; if (operation.error) { if ((_RKlcl_component_level[(__RKlcl_log_symbol(RKlcl_cRestKitNetwork))]) >= (__RKlcl_log_symbol(RKlcl_vTrace))) { - RKLogError(@"%@ '%@' %@:\nerror=%@\nresponse.body=%@", [operation.request HTTPMethod], [[operation.request URL] absoluteString], statusCodeFragment, operation.error, operation.responseString); + RKLogError(@"%@ '%@' %@:\nerror=%@\nresponse.body=%@", [operation.request HTTPMethod], [[operation.request URL] absoluteString], statusCodeAndElapsedTime, operation.error, operation.responseString); } else { - RKLogError(@"%@ '%@' %@: %@", [operation.request HTTPMethod], [[operation.request URL] absoluteString], statusCodeFragment, operation.error); + RKLogError(@"%@ '%@' %@: %@", [operation.request HTTPMethod], [[operation.request URL] absoluteString], statusCodeAndElapsedTime, operation.error); } } else { if ((_RKlcl_component_level[(__RKlcl_log_symbol(RKlcl_cRestKitNetwork))]) >= (__RKlcl_log_symbol(RKlcl_vTrace))) { - RKLogTrace(@"%@ '%@' %@:\nresponse.headers=%@\nresponse.body=%@", [operation.request HTTPMethod], [[operation.request URL] absoluteString], statusCodeFragment, [operation.response allHeaderFields], RKLogTruncateString(operation.responseString)); + RKLogTrace(@"%@ '%@' %@:\nresponse.headers=%@\nresponse.body=%@", [operation.request HTTPMethod], [[operation.request URL] absoluteString], statusCodeAndElapsedTime, [operation.response allHeaderFields], RKLogTruncateString(operation.responseString)); } else { - RKLogInfo(@"%@ '%@' %@", [operation.request HTTPMethod], [[operation.request URL] absoluteString], statusCodeFragment); + RKLogInfo(@"%@ '%@' %@", [operation.request HTTPMethod], [[operation.request URL] absoluteString], statusCodeAndElapsedTime); } } } From 939f45bf647f573ca9ac95389876247942821a22 Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Wed, 19 Dec 2012 15:51:38 -0500 Subject: [PATCH 07/41] Add note about escaping path patterns to the main RKObjectManager.h header docs. refs #1091 --- Code/Network/RKObjectManager.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Code/Network/RKObjectManager.h b/Code/Network/RKObjectManager.h index ad309cfd96..b9808982b5 100644 --- a/Code/Network/RKObjectManager.h +++ b/Code/Network/RKObjectManager.h @@ -85,7 +85,11 @@ RKMappingResult, RKRequestDescriptor, RKResponseDescriptor; Once a path pattern has been registered via the routing system, the manager can automatically build full request URL's when given nothing but the object to be sent. - The second use case of path patterns is in the matching of path into a dictionary of attributes. In this case, the path pattern is evaluatd against a string and used to construct an `NSDictionary` object containing the matched key paths, optionally including the values of a query string. This functionality is provided via the `RKPathMatcher` class and is discussed in detail in the accompanying documentation. + The second use case of path patterns is in the matching of path into a dictionary of attributes. In this case, the path pattern is evaluatd against a string and used to construct an `NSDictionary` object containing the matched key paths, optionally including the values of a query string. This functionality is provided via the `RKPathMatcher` class and is discussed in detail in the accompanying documentation. + + ### Escaping Path Patterns + + Note that path patterns will by default interpret anything prefixed with a period that follows a dynamic path segment as a key path. This can cause an issue if you have a dynamic path segment that is followed by a file extension. For example, a path pattern of '/categories/:categoryID.json' would be erroneously interpretted as containing a dynamic path segment whose value is interpolated from the 'categoryID.json' key path. This key path evaluation behavior can be suppressed by escaping the period preceding the non-dynamic part of the pattern with two leading slashes, as in '/categories/:categoryID\\.json'. ## Request and Response Descriptors From 43cab3dc6c55896675297a42134817bcab42fa20 Mon Sep 17 00:00:00 2001 From: Jeff Arena Date: Wed, 19 Dec 2012 17:03:02 -0500 Subject: [PATCH 08/41] Add test case for mapping a future date string --- .../RKObjectMappingNextGenTest.m | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m index 34e0fb031d..84549eaa98 100644 --- a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m +++ b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m @@ -1288,6 +1288,29 @@ - (void)testMappingToAnNSDataAttributeUsingKeyedArchiver expect(decodedDictionary).to.equal(expectedValue); } +- (void)testShouldMapAFutureDateStringToADate +{ + [RKObjectMapping resetDefaultDateFormatters]; + + RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[RKTestUser class]]; + RKAttributeMapping *birthDateMapping = [RKAttributeMapping attributeMappingFromKeyPath:@"birthdate" toKeyPath:@"birthDate"]; + [mapping addPropertyMapping:birthDateMapping]; + + NSMutableDictionary *dictionary = [[RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"] mutableCopy]; + [dictionary setObject:@"01/01/4001" forKey:@"birthdate"]; + RKTestUser *user = [RKTestUser user]; + RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:dictionary destinationObject:user mapping:mapping]; + RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new]; + operation.dataSource = dataSource; + NSError *error = nil; + [operation performMapping:&error]; + + NSDateFormatter *dateFormatter = [NSDateFormatter new]; + dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"]; + [dateFormatter setDateFormat:@"MM/dd/yyyy"]; + assertThat([dateFormatter stringFromDate:user.birthDate], is(equalTo(@"01/01/4001"))); +} + #pragma mark - Relationship Mapping - (void)testShouldMapANestedObject From 5258328a39022c41d77b7f49e3f905f5df597386 Mon Sep 17 00:00:00 2001 From: Jeff Arena Date: Wed, 19 Dec 2012 18:30:24 -0500 Subject: [PATCH 09/41] Future date test --- Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m index 84549eaa98..28de10b22e 100644 --- a/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m +++ b/Tests/Logic/ObjectMapping/RKObjectMappingNextGenTest.m @@ -1288,7 +1288,7 @@ - (void)testMappingToAnNSDataAttributeUsingKeyedArchiver expect(decodedDictionary).to.equal(expectedValue); } -- (void)testShouldMapAFutureDateStringToADate +- (void)testShouldMapNSDateDistantFutureDateStringToADate { [RKObjectMapping resetDefaultDateFormatters]; @@ -1297,7 +1297,7 @@ - (void)testShouldMapAFutureDateStringToADate [mapping addPropertyMapping:birthDateMapping]; NSMutableDictionary *dictionary = [[RKTestFixture parsedObjectWithContentsOfFixture:@"user.json"] mutableCopy]; - [dictionary setObject:@"01/01/4001" forKey:@"birthdate"]; + [dictionary setObject:@"4001-01-01 00:00:00 +0000" forKey:@"birthdate"]; RKTestUser *user = [RKTestUser user]; RKMappingOperation *operation = [[RKMappingOperation alloc] initWithSourceObject:dictionary destinationObject:user mapping:mapping]; RKObjectMappingOperationDataSource *dataSource = [RKObjectMappingOperationDataSource new]; From 0a28ecb5073dc716dd30bf68c71db1ff6235b3bb Mon Sep 17 00:00:00 2001 From: Blake Watters Date: Wed, 19 Dec 2012 18:32:03 -0500 Subject: [PATCH 10/41] Add optional support for connecting to subentities. fixes #1059 --- Code/CoreData/RKConnectionDescription.h | 7 +++ Code/CoreData/RKConnectionDescription.m | 1 + .../RKRelationshipConnectionOperation.m | 1 + .../RKRelationshipConnectionOperationTest.m | 49 ++++++++++++++++++ Tests/Models/Data Model.xcdatamodel/elements | Bin 318568 -> 322018 bytes Tests/Models/Data Model.xcdatamodel/layout | Bin 46781 -> 46897 bytes Tests/Models/RKChild.h | 2 + Tests/Models/RKChild.m | 2 + 8 files changed, 62 insertions(+) diff --git a/Code/CoreData/RKConnectionDescription.h b/Code/CoreData/RKConnectionDescription.h index 6445130cd6..c42ac1f789 100644 --- a/Code/CoreData/RKConnectionDescription.h +++ b/Code/CoreData/RKConnectionDescription.h @@ -144,6 +144,13 @@ /// @name Setting the Predicate ///---------------------------- +/** + Returns a Boolean value that determines if the connection includes subentities. If `NO`, then the connection will only be established to objects of exactly the entity specified by the relationship's entity. If `YES`, then the connection will be established to all objects of the relationship's entity and all subentities. + + **Default**: `YES` + */ +@property (nonatomic, assign) BOOL includesSubentities; + /** An optional predicate for filtering objects to be connected. */ diff --git a/Code/CoreData/RKConnectionDescription.m b/Code/CoreData/RKConnectionDescription.m index a714fc8f36..1e5a8911b2 100644 --- a/Code/CoreData/RKConnectionDescription.m +++ b/Code/CoreData/RKConnectionDescription.m @@ -58,6 +58,7 @@ - (id)initWithRelationship:(NSRelationshipDescription *)relationship attributes: if (self) { self.relationship = relationship; self.attributes = attributes; + self.includesSubentities = YES; } return self; } diff --git a/Code/CoreData/RKRelationshipConnectionOperation.m b/Code/CoreData/RKRelationshipConnectionOperation.m index 8e0b4721d1..9d9e16074f 100644 --- a/Code/CoreData/RKRelationshipConnectionOperation.m +++ b/Code/CoreData/RKRelationshipConnectionOperation.m @@ -145,6 +145,7 @@ - (id)findConnected attributeValues:attributeValues inManagedObjectContext:self.managedObjectContext]; if (self.connection.predicate) managedObjects = [managedObjects filteredSetUsingPredicate:self.connection.predicate]; + if (!self.connection.includesSubentities) managedObjects = [managedObjects filteredSetUsingPredicate:[NSPredicate predicateWithFormat:@"entity == %@", [self.connection.relationship destinationEntity]]]; if ([self.connection.relationship isToMany]) { connectionResult = managedObjects; } else { diff --git a/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m b/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m index 9ebf0ee2ce..c4187b4638 100644 --- a/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m +++ b/Tests/Logic/CoreData/RKRelationshipConnectionOperationTest.m @@ -11,6 +11,7 @@ #import "RKCat.h" #import "RKHouse.h" #import "RKResident.h" +#import "RKChild.h" #import "RKRelationshipConnectionOperation.h" #import "RKFetchRequestManagedObjectCache.h" @@ -207,4 +208,52 @@ - (void)testConnectingToManyOrderedSetRelationshipWithEmptyTargetViaKeyPath expect([human.friendsInTheOrderWeMet set]).to.beEmpty(); } +- (void)testConnectingToSubentities +{ + RKManagedObjectStore *managedObjectStore = [RKTestFactory managedObjectStore]; + NSEntityDescription *childEntity = [NSEntityDescription entityForName:@"Child" inManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext]; + NSRelationshipDescription *relationship = [childEntity relationshipsByName][@"friends"]; + RKConnectionDescription *connection = [[RKConnectionDescription alloc] initWithRelationship:relationship attributes:@{ @"friendIDs": @"railsID" }]; + connection.includesSubentities = YES; + + RKHuman *human = [RKTestFactory insertManagedObjectForEntityForName:@"Human" inManagedObjectContext:nil withProperties:nil]; + human.railsID = @(12345); + RKChild *child = [RKTestFactory insertManagedObjectForEntityForName:@"Child" inManagedObjectContext:nil withProperties:nil]; + child.railsID = @(12345); + + RKChild *secondChild = [RKTestFactory insertManagedObjectForEntityForName:@"Child" inManagedObjectContext:nil withProperties:nil]; + secondChild.friendIDs = @[ @(12345) ]; + + RKFetchRequestManagedObjectCache *managedObjectCache = [RKFetchRequestManagedObjectCache new]; + RKRelationshipConnectionOperation *operation = [[RKRelationshipConnectionOperation alloc] initWithManagedObject:secondChild connection:connection managedObjectCache:managedObjectCache]; + [operation start]; + + NSSet *expectedFriends = [NSSet setWithObjects:human, child, nil]; + expect(secondChild.friends).to.equal(expectedFriends); +} + +- (void)testNotConnectingToSubentities +{ + RKManagedObjectStore *managedObjectStore = [RKTestFactory managedObjectStore]; + NSEntityDescription *childEntity = [NSEntityDescription entityForName:@"Child" inManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext]; + NSRelationshipDescription *relationship = [childEntity relationshipsByName][@"friends"]; + RKConnectionDescription *connection = [[RKConnectionDescription alloc] initWithRelationship:relationship attributes:@{ @"friendIDs": @"railsID" }]; + connection.includesSubentities = NO; + + RKHuman *human = [RKTestFactory insertManagedObjectForEntityForName:@"Human" inManagedObjectContext:nil withProperties:nil]; + human.railsID = @(12345); + RKChild *child = [RKTestFactory insertManagedObjectForEntityForName:@"Child" inManagedObjectContext:nil withProperties:nil]; + child.railsID = @(12345); + + RKChild *secondChild = [RKTestFactory insertManagedObjectForEntityForName:@"Child" inManagedObjectContext:nil withProperties:nil]; + secondChild.friendIDs = @[ @(12345) ]; + + RKFetchRequestManagedObjectCache *managedObjectCache = [RKFetchRequestManagedObjectCache new]; + RKRelationshipConnectionOperation *operation = [[RKRelationshipConnectionOperation alloc] initWithManagedObject:secondChild connection:connection managedObjectCache:managedObjectCache]; + [operation start]; + + NSSet *expectedFriends = [NSSet setWithObjects:human, nil]; + expect(secondChild.friends).to.equal(expectedFriends); +} + @end diff --git a/Tests/Models/Data Model.xcdatamodel/elements b/Tests/Models/Data Model.xcdatamodel/elements index 9eac237fa4a09a7e188a4a05713963f808e80b43..4a2cdf976b6caa00867d2b40ea7cb641ecc02615 100644 GIT binary patch literal 322018 zcmeFacVHCN*Z)5y$!_|jZhG7Fge3HuKuAIwDWvzl>5Vi25#|btbVO;2N(TiL3!d0%`Nclg5bWcZfAON{OwU2s{dWHHQ^*;3#^*hbbmef4jjSi+G=_opyj-#j2DfA3Fo35m* z=q9?C?xXwZ0s1<61-+79N3W+h(A()l^kekn^b_=9`bqjJ`f2(IeUv^<|49Eq|4Cn@ z|Dpe7D28S@#)%1FVwnUciz#K=n0BUv>14W?Ze}*qL&Y$FS;O4QY+)W?US(cm-eNvw zeqsJ)8P7O@7lkL_odu(z;F*=6iUawtY%ncTa{ULTHRo^!sLaUft|3g!KgLRO?LZGV2!WIo3<8*IRG1e#H8D>vycbu>QsRR~yR4(Z~6*g@)^K6#d+-kGQW{=Gwo0n|fxB1HE7hA^G$u__?);7U5%eKO{&6c+Xwo7f- z+1_jWnC;89AJ~3o`;G0Nb{2Lnc0qO{?c(in?5gZK?B?4ox4XmcUc1Na-n2Vv_krD) zc4zD@?OpBl_EGku?Wfz%vahl4vR`1o%zm@|Ui&BPU$y_p{#*Mq4wepH4&DxWhggRs zhdhT`hi->C4!px^hr1p2J3Q&|y2FPKryR~XY8>4iLmbCACOPIg<~tTU);QKWE^=J# zxXf|A<9&{gJHF!hq2o7>ryS358qS{c;i9-`u7<1S>bQEYfirN8Toc#KwQ#Lm8`sWt zaGhKi*Uio5dbnP$kL%|Kxa+t%+)8d0x1QU^J<7evy~my8e&Bw0Vw{|u0-R!<5}Y!e zDxBJ!<~c2O+UT^&X^+z(rT=BG zN0$q(Hm;to;jZIdXSf!+wz{^t_PQ=~z0Gx->w~V(xW3~0mg@=EpItAy*|~YUg}F_1 zOLHrBYjo>(TkLk5+cvjDZjZS=C~-QRM5+xNe;$>Ne@_(A}xqth-Bh zx9%R@7Ts3eHr;mJ4&CFrCv?y0j_SVD{pvw^IC|(j{5@hk;yq@1lzX(zn)vB6`P z$3c%5Jl^&A(&JZ8D^HE5qo=oLtY?B}mS=@$gJ-+v^`6T-H+k;yJmmSj=lh;tdH(Lj zcsY3mc*S}pc;$N)cvW~cd(HP+?sbRPyU>Z;mvsmd5`p-=AGkR z<=x>u-+Q_D7VoXz_j(`ne%1RU?{B@&c>m*L<>TfP>@(VDy3Z`1N}n#D1wJc%Hv8=L zdBW#apO1Wg^7+~4j4$Ks?i=De#y80~(>LF@&Udyi@4MRfZr}TSpY(m*_n7Y~-*bK% zKX<SWdxN5H3wZ6v@mE%(E6aAL5~DIAM{SpXF0l<94Ymlj4E7544%P?91}6pQ1=j|5 z2hR!SgI5RN9lSsI$>7(6KMXz@T%~R z@cH4(!|w>+75-TG%i$k{e;xiu1RLQT5g0KpVtmBZh|GxUh|Y)`B34A)9c`EW;lqSkO zDkN%5)U>F)sM@IRsD)9hqV9^?7j-!5t*E!7K92f2>aS>Rv@SX{IwpEtbV_tVbbWMB zG>BdqeNXiL(N9Ic5&cQ@_tAfi(2lSj;W|P;V$_Jl5k(`4M^uk!8?kW2su6dM*f-+9 zh$AD8jyOKz#}OA|G%=nr;W6W5X2cZ6G{p4A+!(VVW@F5jn0+zN#QZPjvzVV^evPGK z9b^4sN5oEvO^YpyZHb)|yCimf?9SLnVxN!wDE8ynFJga+qvN3GV#hr}%Z6rOC8yPY(bY#rPNh7mIR*q~RdHu+RBUg>QYvjI> zhey6P@`I7zjXXQbYLwfk;8CMTO&>LDRO6_oQC*|1AGLba-J|x8dUDhYquvF6IupC4mA#(s>?n5Z$6 z#-xua8PhOkV9ZTpZXdIK%tK?I9rMmsxH(|ttDHAd$6i;ZGFlWM&3F{~9oUm)c!3i%+cz42g6HZO|b;8AoP7?zr#!gI_ zIAdb=#L9{76R)4RY~rSgJ0~8R_|nApCw?{Y_esnor%3^m#!ebHDPdB^q^e0Bljcua zKIyhecTT!*(&Lj}ne^eLZzlaV*Va$bdntEdD&r?rN{b!o}G@ofB zr;VC6Y1)iwWz$-w&6&1j+UjW=rtO+`aM}yg-ktX4w4W2HM8`zG#1V;85;GIa5?c}% zBrZ%`l6YI(k$u{@(P@r~i?}COIbsCPgHTOq!OIlT?+|ku*Q)mZUq9?oE0u>E)yklDqU6XoG>iwxtrM{8+N$U5h|E5uC z+BDa+@U-!1GtvsvD$@*UeQAr*)~0PuJCOEd+R?P*X+Nf2NViG%Ob<^VpFT4^E4?ti zHoZT6ar$lP+tTk#e<=Og^taMar2m|LF~d5;J0mh`fex6IrybNkGLGhdkb?#wS|{+dN)IcE7~jm{dAH6<%8 zt0Jo{YhKpUtXs1-W$np2l=V{9`&nOQ{gTaOJ7ouC$7UyFXJuDpw`KF$AbV-{y6k(i zAIp9@`-AMyvcJjxGshywB_}9nWKMiePEJ)$N6!45U<$jxcW|rkFuUX!+^s{1TCC$p4 zRXeMD)|^@Vtktvbp0$70le1o*_2H~jv(C->D^HuJ%L~mLo0puIpI4M;$m`2nl(#W& zQ{L9R{dv#ky_I(&@8`VV^67jo-#ChRFqfLRMcG5T{ORFP0>9? z_ZK}?^kUJQMV}V^P;|c7y4a&QxOiM~N^wDPeQ{4QD88}y*5WP22a6vqe!BRz;?IhI zD*n5~w#22xyCkw?Vo6#_aYD-OLe7DrISk2 zOG`>?N}EfsE4{gNUFnX}hf9x?zFqox>FLsc%IwR0%A(39mF1M>mX(w>l+7tyQntQq zXW9O;gJmz2y<7HW*{|hPxm~$m`H1o<<(cJWm~R_ZFF zD@Rn0txT*etZb<4t-P^vS>@Wwt(6BVk5nG5JYIRK@NjARXAP?uGgT~|_9T31$AUe{eWyKZjXO?8{<_S7A!d#UcVx{vF=t2t&CA<{6>kY<=^C^xhk<{EA>Y%pv$95lROc-Qcy;nzm0 z(Xr95F|aYNacX0Bt=9>MRW18ceXEv8Nw>B?q z=9_P6zP))*^P%RKn%{3e-u!j*A1!Q)b4y@LT+5V}?3T)w_Ll2gmbL6?+1awUaU+kD!>+a|T8x0SRtwGFi0)OLH@_O{2`9&dZL?aj6?+J0&Kx80%Lz1^>UMEjKX z%=WVOmiGSkCGG3mceX#${(Sp8?O(M2(*An~)8W(+(4p^$??~uK?#S(E=;-Yj=(wrl z_KxixyE+bbywLGl$HyJtb)4$>v*S$1*^YA^e|0)^I(F(h^_}B8XLJ^JHgvXk_H{1m zT-&*|^FZg3&euDScmCLUq06Srvn#x7eAkSw@~(=mhOX|e#a*{`ZR>il>+!BF$4KTg`Tu?K?Yq z_T1OuJyUuzd-8kAds=(u z_T195p=VdmLp?9_yxa3-&#%2yuVb%Y?}*;G-i+SN-dVksy|a7y-bKA@d$;x;=zX~N zx!$*XKkWUc_s`xlz5n$7+vnQn*5}(7(HGx0v#-3bwXdgdUf?nK6fpVlc%87EO zTqsw{jdH2x9INLvRQGgs_2t&qx79Woih}FgYkPYu(A)K09UX?wzTRq%LqB$OH5l5n zYCGYlda5}$`0LKbmZtum+CEqp>zzI~ySBqnY5pMkshZOn|5cH(c$VG(IZ4PZDaCq4&Dl-jvRI z_#F+^oR{d=rq=iN_I35Z_DTP3dS{=Zr?Ix)F!*cXvUOe8+0xl0SX|BdUP5i~+ls2; zhtXy87JUpgxL|I#S+=}-pryB^4tjIn+-lBK^huNTChH2TJB5quFZ#rwje}oW&H0Hw zVg5Gp2e|6~&X(EzhLm;#y4C5)yd|)n2CNf!nzuwZXDYBxXw}3yxcXIPfQ}W-X z##0mEotQ|?pz@2e^JCf!b9>9+e@(T~ebgjsGBt&YrxK{C)HEuQnocEA$y5rj;kCRq zZ^PU2cDz0Bz&r9B@5DRrqf)6fDxJ!pGO3wV7L`rqP`T7BDvx&obUV=00LBI|7lGz( zpt%UNi-7h#&`#mofWS-|apw4%N&zSpQfJi4Fc0of|AL=dQ`xh+w2=P_okBK{{NXh(7VwqF}?5MTv zE%S_i-Ovwf;`O!A_G<15A5-vcmux%nZAw04vbwywr8lvzx38zRzK?g~CkXwM<=p|@ z3}3nd_Au;iZa`DbyK0?FCOS11o5XSNT|n_v{#I%suiHui-h+>;DoL)+9lSgr!yXVs z-30G_2z4{;2W`|6*i9G0`@9@Rn^1V?=TWP#cqh%R5ns3~+@`B{3f_g+!N!i~Dc(}c zd*Y_tO5H)_@1fRGw^6rK>!|hA25KX<|=$bd*)w-3>!6OcK}*m`D2N3Ski?niHHOwV%45dH~+C1Jr}mL-2MzEI92W z)IoUr9)&mTG58n2TZaCiTXzIrF7(=knpaqj9IK?d!O&RS-`-bI4Rb|TeT(1#sGH>( zY8!Go+vk?T*ZF<$?Rxa8P>7sm@Kv&*2TlYvpqDvD2d{uHg^SqR(q|}!Kg=}LHo}{x zhkrfbgoBn3;l1GhQrdTfNcs}>@)kb$9qLu;HR^ThjWS~vMq$3h_|ni@m7Sl}--m*h za2>b9&%H?grRBPei=<4#hQQ0 z>|7_(j1bxBJ9x8bR=8OTY^F6b{q-XKD3QLOps!UTs*{Os5Q&ZuiTVqorXWFw&|xs% z(V=|IRyv%IMb17FB3=yit#(69@7&IM=zIe$5OZQu=G3?MHyCF0bafzXNNTR_Y%(Oa z!)}z9og?%xdITK-41^hOC7Dq&L4bFNwY@Dnzd2XtWlz71qjXh z00w6in%khy2hh{#MELKKH^=a!`7zM35L3b~EhLzh`aDBDjK)I1FxsC=r&S6aUU&~W z$1XaZ&Y&~tnRFI)RQjuG&Ux^oLWF~#7Xq2dVS2kE9SZOL-#HPTE4v_@L>FY7=z;_a z7o;RF(?~+b23FHG*zUoc25sC;*V1)#J>5VX=tdL@jBS&A=Kt^J<1X1ucTo8|=oY$_ zZll}ziTosfGCySp-AQ-R-Sli&SkWe_13ecehXeFHS%N@8D->pUm=x$6g%r^aU)@Z%2=6RI zWT$}0u7+Bd`Mn7h;7vt;EO{4rOQ&jiH!c4NKM}r8(7OB!|L=pPy2JS5t)g$G^0(2e z={5W`K5-kpmcEUj&R3vI1#f9}E(-jEcU1`a)wy}qgKr6dLvKW0L~lZXL*D_f{Aw}a z(A$O^aN=QO%z%@G+q#3^4*`eXN$;X}(|hQ9>HFxt^gceBPvK|qseBrr&S&tMd+7V= z2j~OzgY-l6!}KHcL4GEm#b@(Hd&mc8-i8N7{#hNKf zHR%&F&D|o+9FgV>K@<0dpXgsuzYnEP^D%txHaeXC4Q8`h=-$R%CZ8qt_jPq3Zi8dO zuJ(R(OLDv5ux2jSJVXD5G|$rK_&grII8R^T3;05$>5|)HXf*VoxYLeq0UEJabB^YB zjhQ7MX3;{SA1Sz;3@dB;9#PYaMNLl?nr=Nb(R(i=nx^<3$@|iMB295$N>{3RiN3T~ zq$%!88A>$~Xc2vWpGZ?|XQrSjggz!4g+3++g+3-1hQ2l8(8rVvf9Ojb41JZRuE~@! zbyWUtrktr@Dw!&#nyF!G`6|Aeui}riC}~O?(UA3N*<; zlL9m|P%jn+Sb3S%9W9+naAenK8iv7lV7<-IXUOYE(a-#;+Bv3A3875*RBvBPr!XQK z{8&qGK^H6t&J_mE@I$5~W{P$2jh0RnMh$s}cHv+4Hn(&u>B)WYZW;#+rU=HAi|!^G zM^%_2Se4Qq!Yq<$R){p4MVi%uCPxp=(n^u4*wPxMmcp_Z+4?GxW}C>;T9YQn9AF+~ z9%3G*{Fq0WgH!tA*xe3!8#S)!nYe4@1NI?n4SN1=1p9qVvh2ie4H_Gy)6W;cZ9(8 zF6=Opq7?JVa0jk7UR0Fo!h!2J^No_C6!R_f9dnBLp80|Kk@<=FneXO%_+Gw`AK8~*Jyg$z;Ig{72^l>0AT-H}2G&$u z(O`pQc8V(+{i5q2s%WrrO0NS-w1mxMMFZPxtY|2>cWjbOQ(VxPBeGdi&|qh=`O<=h zf-j?CnSp2kS!TcuFqRnw)&dmTH6oy*Q+ zuV?48H}E&`3;2aR&jbEOe$j4rAq(fs*c;hJ>|*vNeldTLf0O?O&{{xG0CX;#1u+hM zi;RQh65~(l$)$}w5Lz43lY5JeqvhUWVXzDb&BjlrC!0se>}ul(nO%cM$n33`86nR? zZpLmJ93ivU3GZwj-Vt&eOnx_;M#wk7*EboX=NXGT7vt-?lied8A+z_g_wh^k+e}fE z-H)Oudq0Yz>;vpV>ByHoG~7{iv3TTr3vR>X>~l&+zU=et3+#*ROYF<+E9|T6Yy47v z8NZxg#jobq@VD}76-80x-K=rYaJix5lA#P82~Be7h&2@t9oZjcc8Z6NE1<(+P07%a zJ$6&HB}Aj2s_C^ z9oAGes3SDVK^@jqHK-#r$w3{~6blc{3XFu*N%ksbLfv^4vC*VHBZB z4x_N9aTukl@Fp)Wo;J^qFh96$AhS=&L9fWQF=YA1>%JB4p0vj8F1U{ zl=}B2G;1!SS+7`gwyf>7BF)VrI~z=zrV_cur$zvejC4?-^K6d_we`f z_bCb&s4H5W5jx7{lK(wJN&bW;nf$S);^c2RQD&z&`R{<;8*56Ezh$arhBWzG&V0FnyQjNp-Coxtf?yb6Pjf5 z$C{$#Z@CS5wdHo?)s{P;S4)z=<-XzfYEkmvhrRlK%SW%4{4EbzK4$s2%Q&p*H);2-24;vZJz%?zxeTAUSov#f@?cPPo9&?J*T)~r_C$K`g4lRv7UVol}A zA68HaJH^Q#RZy{};^Z&*qV#%-lRuiW!J4X)KVc`C{IRCu*N% zGOcFvkMS><2*fG}#VV^@6sxRevAmQ(tV)MFRvi=*2&O2ja;pX<1Y%{dYP4#yYPM>z zYPD*!YUiKe5A#p*NBC#>XZh#&=M}{)L?Bj~;+Q3yxqfUY1VU(%1cEgc6NuF+nVn(+ zc?$X%)|3#4)n==Eqy%EM6%xqPW&*L=VYT}|5eU&zl0dLkstAP8Bnbp-sv;0VlOzzV zsfs`dO_D&crYZsL_-h1SBnVbMN?$buo~N| z5s1c4W3O@0IBGbJlg62UiGP`Yg@2WQjenhgLy zP2~h4w^K|YVmp-+2rNGkc8UoEl^?L3iU~xBj?(KXCJ=$tgyeskUkDp= z)Hwfe{^W%<*v)R&Y(U|BwProct#579Y}9Px-{y~_^%%ms3b-$XT#l!?3&ju3-6(!& z?qPwH3N*WiJAS+=rh<2H!|v5Qq=X7I4{ILL9Mn9jIiz_^^SI^-{$2h({(b%<{$u_a z{|W!8qBw&3y~a34ce%R6+e4uOLX)Hdtf`m^G@r`s6jQ+mu-{`%2^DC**Zd@<0?lbi z1s|HJK=YeMsAS0(rzt3|UgGMBsQ^U{Y?Uf1Ag&%s1z1xR6%d*v6<|$OR6uBwRDd;A zQ30VzQUTT!QGqrEd9`*1@@j1=3pDG+E6uby!|&B^4X!l%%;eSDS=v%a1=>7qzP3PH zs4dbKYfJbO{O9}^{FnSm{wx0L-P$s3xwb-EsjbphYisy#`0w~r{P+Bi{7?MPD6GNN z&DFUutf6IP!d{x9+V*}!B3xq{F?%mHc!AG0p|M$ff?QtV-X+J}}r9E*a-qL<6;w?y9)I9C!;peU2OuWUzYxt|ydGWvd zAI8D!ckLN5YiZAF&+)(W|Cov`+6zJe{#yvZ7ug%7SY>TF+yVF(F;@LyYJ;`Lnp1*R z)=t*W)-Kkr)^67B);ens{!ji4f0qA?KhIy_|K=|$#wx9(peZZ1{5}+{A~Z>?!kUV) z%6byzLTHMy>Ku$KSW|*k)@j!1RQ{GNL%kRzCE+hoMM;F=Bqd=@Rg^?%l9YrsRZ$Y5 zNm3HlR7FXICP_(HQ$$JD8<3M)Z$wUNy@|b1N=epRhu=v>l=Lrl((TrJuSQAM`>gj{ z-*5eZ^#SV#tseq31!x-344~n7&Jxg8fYvDLmMBwc&k1?tQbd8W-#-$fP>@j(PY{|U zPhd?|JV9uZJb^V8^Mv(DnVlk@0JMdu@kXF<(kR(Jdx>jG5(TzZ6;TlFCy4@Usv-(P zlOzhPX(S5sGEN(RV_LTfKxy43@JeajCIY8*`eyce)YEK64trV$w2f&J1!&=VR%>G+ z<=#+3zscup#@b8}lDlcEqs>H{Nr1Kmw9b^?ZQ@bnut`9X!)7YGNSfYlQinNmz-76j z{0?Y4+>Ue`xWeG-+Zb)~Z3=7(ZHjD)ZAxrPZOQ;`4`>HKI|AAn(C|nUS3tuZ1MZ4~ z2y%FviQ*taCVF@&hmz?DQ6ke1iYiX^HuGhcic&qGId~wA*;Glgw^?ShQd&c?SkREfu|2numIWvd-|_7a6{>pckS7nx4B^R zx6MVHe{BA>g+0g<&|ZM{2DA^LeF5zUXn#cxj+T1ZOcFb|WTFKwp@4zXg<#x{^|o-Sz|~2?c8l#++ikYnZFku2wB2R98_*$u4h3`=pd$et1?Xr% zj{tOxqCkR3!S-fxAd!=Teki0sh{{L-iz+4s+gD|lN=P9bb$YBSAqCqHZI4Mw!S+)` z3K3>fusvb><$odtqO~$oz;>x31wvFt3RqMXDG;JEQoy3BNP!TQkpdP~MGAzdj1;h_ zh!pHbAy2m(jXd3M4D@sfDcDW92A(b^1-#|RF2N2SqIhLeuuHW|vrD(ju*e|8LR3ZySX4PFz;&U7 zsF)PmP|(1lsz`wlm5~A#RYeMfsEib_XuVRTV|P&UQfNbPFv&Dma3lI*qSkrA#G{){+12iUcJBz3U|N`A z_paT0fSwHKR1+oGeJI3^kA&FqF}qkw33gu$d+eAXp@b>89VhL6R6+@MKiU0kciQe3 zyI<{ov-{od4?xEQIswpA0X-eiNq|lUbPAy1K_LnYh_IjmZ!7#G9Hc0x1W0GFSBCJ( zO8X|N$`PV6O2DFuDZ$=dCMuzXX{f_vRS6~72iwE5^2BEh*+(EsNHkM|eYAb-kSPIy z7SUQUCBQk|LAz8@0wF4+1l(9vlt75eC;^MAq69)zMhRF{6(ta&GD^UrB1*7dh&lk35G&A%oJWAr&R29R@{J%{vg567vp&qKYRT z&_V`6R5bCx!-WikqQ;2_1%=~&|V1=95@jq+<-cpgU2<1ggg@@EJBblOY7{{)HuoHat=NY{$faQ2yh4l zbUvV~O_1Oaj6#P)2nrnzq3lgkNN|A1qh8@WXY)~6|7S--qfNZ=psND0~$_1lmof~(3OC$QWQf_hI0rI#}GLr8*!C?SFLa7-N9OgRA|4)!Wv{nWQ*e+F& zK#0m90gI}F1VU5>30PDWBoLx9NWh}1Ab}8-K>`*PL4v~@f~UVJc=}QHCMhI1d~gjs zT?`2|*wa69`21>+;P8dRmkuW#zH<25;Twl<0bL8|IzZP0x&hDzKsN%qNs)siNN@-g zJGdMY;AmeM1*n1qLR1C`SX31x5TY_jz@n-kfe@8J0v1&T352K&60oQ$NFYRIkbp&1 zK>{Hvg9I#UgoLue=ST=A-a8ghFK=~(8K#vFMuY7j#}Wt+A&#X~fMXe?rCHQ0$13m3^$4UUbD zO;F9ou^H;NK-E^qHph0y4#!T%F6hJa;Nt6c$6k0GVh?=9!H0K*Qj;C8cbqRAk=X9Y zI|BF{h51{YrBS@Cq{Gr+A1PMtqyu za0TaKi@%MyJ_^6hd>O?S5tqqqk@z#j*O@=v zEzrQKNr!NVBmDJzpqU1L@9bptWxFW~JKp5D1fSXHcnhGrOt|Q{93>IQ6)1@~u7q7% za%iLDx?xWu?fl@WjezdP=5KJ^0&(%G&k}Lm>bT8uyWH=^N@<1ONBGWc)~=<4tfypE=9Vm!Z5;h2jMy-oNE7va1fiKw@l zF&80v`{hIxpW5j7v8?&)21Nl4k8K=mzpr4bF^GPv=G;cY?Dd1+fX*%&`~p9v*TV6< z%_k zaZoi-P=%*A3Xht?Z5hGA37iKw4=#p_<>I)J+$e4|H-;O_jpN316S#@oByKV{g^TAB zxT)MUE|HtgC2`3dEV$kP=mmgY2xuPA0MIuAdJ&)(1NtUF-wfy_fQI2?DWI1DdO4t1 z0D2{$SHT^DfL;UWTLHZm(6<5lcJ$S$TpE|oWpJ6?OfHMd=5n}PZWfov<#PpGAy>o| zb0u6USH_id6fr>M^@t?x0wpW#!p zihF8X+I!QJ%NuJ4x_aP~bl?-ZO4@5X8`@z`s1&`Ko?L*Ql~dZ^-C+Ee1@MVgy@k!_ zIbcQbB|QET9#4VZOYam6nm#uXJ>|_&_yl~u4>AgUVV|M17C!N=%B8iz&*%4#68SC0%%w}y%W%z0eugkw*Y!8ptk{fyP{zcs(Wz8 zEOXh(k&UKArfPD85S7(Eu&Cm?2ls)@Qc2z8E)@8%s-*70eZ_q%t$T2%P~GEhbKQgc zkvsjL>K;UEWpxj1m#Vr4Au6kTV9_+Cx#JQyTUPhLqN?g1gr%~&2NqRT_aH=Nbq_2m zs(Uz1Mab$j4I!&jB9|(ydpM;JJF>3h#dVLJCQoVQ;}1#Q;Acl z6Rclv2y});Rnj z=mE0Y2NoqJNSt0a;)2sF2p61Qy%H`sy)D9pSkxPwKE4*XZ~)`N0)z_>7;)if;8Q!W z^Bs4BMaRKIE}Xt_`V!C&0{STvE;tD*ww;6(+fLtdX;NHp8vYgA_e*f$A>58%oz5%4 z1*Z#6e>+`t`p4;CXUds&W&r&#pdmCI1oUHoejLzG0QxYXpHvi0PzG`OLU8rV;=+SN z!39E8h6`9!F)la<%Pf`P!lTIXv8n_YoJTp2mEwZ)c!Udw%(&n@$vOT%;R4ZG87^SE zRN(?4D#HaVstOkfQ5h~^QB}A=h{|vQi>kr}LR5weSX6`y&MOfvIIlvu;Jlhklj4H& zhGEBr`z5&Ww8_(*H#u*;8ZJ0*bKdT}!+EFkF6Z6OkP?mn`WZk!3+U$n{Q{t01oTUa z92_MJr!U10E}13~YEVxN1s4cW87^Q^Rk%Qi%5VXTD#it8SlA*&CAjcBiW*qegbU1* z3UPrDmf-@{RfP+Ls0uMG0JRaWmqAi#x&v7u}U`!Nnir0(~(7tn72`b|I|1@v2h zejCv50Qy}(zo#gYAXIP>I1t|4%PhNmZ78Tfh{{j_iz-G1mmZm=5>)sfa(b*PK?N7y z1t>nV0d3JDY!@efVT%_27FCI#5S1l-w{Ho4`!@7j$yN)OkFSB>inm&Pfc^FpmyEP?edMww=Ung zoO1ad&>sT&BS3!)=wpEX1kj%X8Xn)LAVHz67A`^@#_lTLYVp3wT~%$$Bt&IfEwCt@ zeuodi9-5`Htrl3cMyV*A-XxnZ+G+tS(I^IB)mo*hg3C)Us%)?SF~e!MiS1lJ;Gfxh{8I;kwdwmFsHPHLh@??j)eU0`%8_{tnQm01d;+4}ktr zQ5-=L*|i(pSR6;>3n?Lv!ycq^w*?_8OZ!+`VT<=smQ@mg}`;T*umu$f}czdu4+Po5S3L3u&AmE z0U;`@5MWVw@0HO9st^#O@(KY~Rkf0mP?ePju&Ao?03j+X4`5MMaM1+2&4qAKeXqOz=yMO9^eLR6OZv8bx7 zPl(F0J{DD#^$Af~*2kivtnXfl{MNk+`K^03^jk@Jz`f}j_^qfsz*w66*1g4j_SMP* z?mh0k?tSk4?gQ@Exz7QN6<{=g(E`RASkwcH24G=OVt%)T#_e1WFxj*jy1m)*`*!@W= z!2K!rr(w?uazEn!3>8APQSI)}2}}4n_m|KDe)zf_F7A(q@4xAO6s0@y>TqHOxvEv> zD%ZUeUnO4mu4Zchu?l~1t$H;lUeZo{Ou@HZvh9S7lFyh{*u!=6jF+%No&}5@T0UHuS_b#~I+;Ew(79ryR}f_eA%0b_4U_wFAFVdG;VY#gI9qzmTVzf^WR z#aHGE_u&dX!_+DOd!=Z>JmY}P|H>Uczv1c&=G}jGKkfdD`>*c5x&Q9|hx?y^aRdwp z7$?9u1I86F@T%zmipizVS`{MW^TQJYqo8pJ61@nZcaVevVdBMC{RMmocLe#j@ z=@O!f7tHHIWzAnFTns@JFz^98upgP)?<>R)VZpp^jG6`WgxTbRdGi-2UNEmqm6*nij&@Ip{)bTo?yHU4Dw^(X@dJ!MU;+RW2$&$i z=m8T9m=M5(0w!#~ZmDjWZnsQ-TDtM7^TMv{It@KVy?s3fLtnA* zLwW;Vz~0we*o-R{ebSiGk}Q#3_PexIEPR7JPPi*7f^85y{KC%9n0z7 z9QNQIE*{G<(YPJ|(|x35ET{WecTD$*?o-`y-DkQJy3YYK0x&Uvi3Q9kz`*?zV*oQ2 zFyj;jcQlsM9T5k2*;tN=G6lC}rGASt1|dq0<;FS(VtmV)##59B}ac|QPJqnqYZhwM?3O#j}F~ZY0cN8{~CC@sOHN|FnPMibsh_^ zR`d1XJ%GoJ9*aB{d)(x4GhikHW)ff~17-?f;sKKYn5l{!T=2zb#11a2`7+~84z8-^ ztCNc64>FOk#m_9Ns^&|Gk~LqmsH&PTAu6l+npIWRdKQ%>+zeB6Fh!LoZ#`tl{mrUZxJU5=kR%2TnkQ^jyVD1Jzx^G&NT&n_yjvo zttWgE>EP;dPdiV0z$5_%9#ti9f+vTfho=*Y9-hv+Wl~P?^cwc)F-^h=$)@Px>Ejuq zgcCeNJ;OZ1JtI6LJ)=CMJs~8d0A>bYQUQ|zm`uRT1WXoSvK569lsY`^#9>6v2}wiY z1VU8C30PDyCwS(_ER}FV8p_95Rl*6Lm7XzP z1VU8C30PDWClI1CPQaq7IDrtAaRL@q#R-I{j1#b^h!Z>?6FmKK!PB46Et7JB=X2M< z)5V;Si#`1XPq-A}%A3tR-}F4{`9IIMJm2n z@U#~@xSSJmhQbMisEiY^s47k%L}i?SMHO=b+H6LMN;m;+He;}=Do!9&Wt@OTPb#JO zOWY|LCty)koIqGA;{+^9aDvxVBPV#Fy_*NT60gJwUg;uE5RT&Wg6H@O&%~VGU*Bfv zo6*&i4ZRk}{Pd1;la+&J3sg`U!*@L%)l~qIrWtbCS!45E`TIbPQ$1N~< zomZh(iI@|-O1;VeQw|t-T9v>FUcwxcmoUfVRjpetq%U@8Gq1(<5U!1{STU>X2p08FEzFoHP2t5h6Dld~E>)aB zh{`wti>l%TLR7{HSX31!5TY_pz@n-+fe@8(0u~iN`af0`H5hpA_z0LdXYrzRUm=oZ<8(?N@ zof|zSrC_hy=DkzQ3EsQBcLSyuFbhqb;C-JEJ@yLGW1nt?loPxk8TRPWE#ZVd+>S@R zk0{{;?`OQ9^?uI#dG8mzU-W*-`(?oN17-j)*8v7H!}Wlf511POvp`W8L7d=iOyZZ@ zV#f3ig%b!-87E*-#hl=MN@l5q6VSY1c;CLH(F2orohxe_M$oWz(w z->h4RFu~`CYk>*N1Wb4YE+9deuoNvhn|}&B-D#iS1WYjPMECjK=MTUv2h0W&Cit8c zg2y=_c>JYXDa8a|df0=uaY36MXG`9ef>qIbSDVXI~dzSHP?U%qqaF z2FzN(+yj%L&Vef(eAE3=^=ZVodNIC$m(732RWm!>STY z@J;qjm12T#I>Llo&6waj(>G_xn1C`m(ONMkpvCECyHsHUAu7WJ+*nnZK#0mP0gI}_ z1VU7X30PDWCJ>@BOu(X<0(uFBL*ILlr~7U}p6G#I-|PD@ z#DpvEUH5&&_n_~izK47t^L^a+3BYUu%pHKa6EK?ra~ELl2FyK*92_l9_xVHY;PS=k z8%z$aYH>OtDqEb6MXME)vD{MG;&d!pqf`{_T_-FRFHRTst}|G*R;j8GHKi9-ymwt# zk%UF-{)4D^@47^^Ua2ToENj1b?>e&uMJH@(gGtr2cik`42nv2-2o(InF9Ql`sB`(n z4T1ufAiOhSctJrp5SQ6z0tI>{0)?%{6YkDy{$xz9=QqV~su&jhruiiTW;a&ESfqu;7>*@}1Qzf~eSW!qrAlDIugtI9ufng=ugb65ug0$yFgpRW z3ox*davxy!0%jjz_5~Rd%tPoSR#jo?L&bDLR1C|SX41A_`z60h)Q5#59;<< zRRRlsxBA^Kg$2L$2o~-&!-C%?zs>&%76`*+uz>AS1q+0z3>L7cDp(*yWw3xnRlx!w zDuV?qstOheQ5h^?Q4uWo{U~_)PlBia3_V=}3w~#=fv1aM;Q)?U=lrRw!Gb^S&-k*ewJfKm*+yjCIzeKTv%VFVxp}+zmDuV?qstOhe zQ5h^?QRT1zcd`+pVpuTlWW%beV1ZDT!2%Xl1q+0z3>L6xy;4}vt(3K20t>gGsEJhx zSn%&P!h(Mvf(8Hn%fLbg>RkReU|4{g9(duMn}!z_jEfYWz>^OF2o@eU!on8^p2cU} z`7iZfA;5xWJxs!HZS!C0569Vu0rRp67W{8TA;f8vQrQdy7A0mN0-iCl zLcp_#6#|~S5-S9}CSnDEdRxFd*Mb$^!K@I7SmA9WE4;jC`cv5RJ_z_&%nAX=0zLuE zyMQ@iVugUuga~p%h#;TqR!dnS;JaauAa6-n;XT}r?*o2U!U_R@1pFCrCg5zqxq!a{ z&Ieoo%=>`(05Bf{<``gL(?12walm}0D3l%?cC304HcPOkth{{+2iz;S?Kwp`q z5?1&Ku>w|=utH!|pm1PvD1Dlb;d8gq;em086+SkzLg47YasP=Gh}Ozj0o#?TG;pA) z4MJ4L3RqMXD-fbGR=}dFSb-3gu>uxV#R`O|j1{n`h!p~FMxGwH1bKSkExOfGRtQ{k z4Ln`U3ZI)iJ#cN{9am$8z&iss2i_HUci=sNTLQNN<_o}l37C_B`3f*!1LhmRz;hiH z6c*58g@8}Q4lZE@VX*>a1lTV_cvY-Gh{{+2i>hJ;LR7{ISX419pv4M=sE8Geixse_ zDpVjuWvGBfRiOeQDnkVo(5;bT zLeSV@4<6r1FyTj2@CX_oG))O61SJMd4@wG34oV4{5tJH~2AH1!^D|&h1Lilt{0^8u z0P`nc&M1l^2or+B#8E_!2|o-469`cmCSXy;m=M$|vs8i!zaUJ&suD~HniF(A>L7!d z5Of2=gkQ~=5X1*98ZsuJj83#xj0wVG1#FipOdv#Mn1Dr9VFDp4!vrj<3KIxX875#+ zRhU4C$}j5oCm2uC(@zndq?bUo>yz}!C_!G~ytGT66h|DrX5JzA|4z~~Zm=Xy z+Z#MdkG01q>HRA@NzWD?s0Ww${3D#C=VS6aeVRT4pQNYH1T19&1bsFN8~Pj+HuSkv zrt~B|eTlN$`G0tl-bG$?k{(NA^UL)05D>2V=y`pE-k@*PH|d-8E&5h{8(Ft*j zReX}39`3j#EL}G!3Ro)`Kg_0zPSVrgr{*L*;v3cveuHo>jrj`{pQNXMN@n(kK~cb3 zi_P{It}yOouj}6&(n)$m8#WGpo$%;+a~lGb-cS7(vNniM(qrw!ZGa_2c%XV&UM41`U>yO=0oDny&VY5cCh zkFX22G7h_fHE7rsti8;zOK`Pd4iCFDEA+pjD;exD%)_pWaG=Gyn<})d1NzC$SfPDG z|12JQ1^Wd13qvo{Y;JHsa3ElHfYqBKYj7}%tid5DvId9h&q;?~!7;-fSy@-{(2Mmj z^^)MY;E76xUcr-sCkIanjt@=n$>krrfz`_d?JoLK6B@_?6&}^>RE>%M>;u4ZWFSDqsp%)=a4!z8xs)k;KC^_^pi>exW5u)VK z%PcAydIi5Bc>0@yrytdylU8VhKez^-E~?P7!PwJ33WkqkzVh)j!CwS_8GJJMtKhGL zzX|>pupxjA1#B2#!vPxs*hs)eDROWGB*B4V2bWZ6(Zfwyy~)90txnkkL4+HlYTEbGYLTeUPT%kp?xrC^wLTjAOHLI#B(Gsd;iPkKtszghOk|kQRsHzezAxf5L z&7wq!HYDH33LyoE6+#NH#0nvmB3Aef^|lbhwP1x9%nFW(6-H>CXYBfIsmbd?T0+{z zoDk9x(g|3Y2PT_1A!Ig+9w9v_dW7`q|B`Y-$o0b>J)$L?5Qp1wL&(iaI3Z+7$SomD zLzaas4_OhiGGrBCM*?;fU`GRX9AL)-b^>500(O$3FoHZjq(dA=WF=ZQb|{=ch{`wt ziz?=XkOMMHC7dt@MLeu3;e?Q^fySN{_y5UrJQ0=7#PClI1C zPQaq7IDrtAaRL@q#R-I{j1#b^Do!9oWt@OTMVt`oi99{j3we5|xBf3FCxq&+fv1Z( z0Ux{>8WK9@B zOu(Y5Fo6)2VFDHk(a^$yR z70_=b^Ri(L*T8Q@^RjHd$#26N!#b}vFB{es)*UuGtS78DtS_t|umylE1Z)vtive2# z*iyijDRNh|FD&#h1>-RM69fMqk<80Bqu!Zka#vOJvVw1>?C;= zP~8d6PNyNgupb7~J~u{q2PXgFJiJ!eM9x;4(muTirTq%6^YXlNPT1|vh6!hmtv03o zunS>ukwX<=TTE#`>|Ycd$=y# zBiu9GE8IKW2e37Otp#iyU>g8y0Bj>*n*iIaD2|}s8FoSFI+vYAfbj$NAeCvK5S68U zEUGx|hbPD^m8AW8)a9|NB<+XK42N5ARHS{vc3IlT-vU#WvZ^au<3)(d(mobdmG%iy zS=z^(3n8u+a^?YCmT-5vhG z)zW_Wf$#^z9}0gs{E_g3;g13qE~;n;YzJUr9kUCt-GH5~$X(HLtgyeu?#h%4KM8T4 zM~j@;mZ7A5LR6Oav8eL2FSk^j_9d1oPy28=7GbG4?K5aOmbv|k)4t%H(u*oi`vU3X z_Nz+!gsHN$k3|)yef@b^`z2{VS=@di?MDO|(|&{=rTvKD%cT8G)SV)taoUFq2>uY> zfysY3(>^0CAn3!B0!}FH_iCN(pPxV0c|=7-C19@u>>R+(1?+sl z-T>GIfL#b!UQrxDX+L6$IF86i`~5>n`-G@0?PF2JX+L72%u-3(pNG0UR+Xgvh?Nm* zq>};>Ytf{@_2x-|h;U8+EV5S4)f7F7ibgs2P@uxPqcq(P$u zLR1C{SX31#5TY_rz@j2hi1<$M^izVTf3LqFofL@p?HYKxcv9d-?CF0*{C%}afryI{ z|3v&7Nk!6;Oe9=%xd^a}0ecf*ZwBlVz}^DbrHULJO$tQBiyd4(DF93ku4?fBA(}6I zg^@mlE{{c3O$rdAvPl6f`i0Woi6#XIQQ4#b7F9JVK#0mF1+b{9NdZDsHYtEbRZR*I zqOwT=EJ{oYM0Oc5A+j4`Lgef#VM63w5hnbJdO{?)7MQRCV}dingymZ2yfGQ+CZ~(M zDH1*odGHZ z{%}J5;1=za*dkLrW`aP7bu)Y+nrUJFdvf!7YW zAWYaU>;gZDo$j5e_XSKaO(H~n5cMHocLMf76DC9*6N1MlLh$%he^H7FQC|&v@Yp87 zgk88D-$b2Of(cQ-MEx4|Th#ASe?^{Km2kiZTeE_fr6h#q) z2~i)2qlg?6b`Av-2vHd(U{S@G5bY_mRDucUnU^e9m0&`2SahTm6QZLLChRq1LUe5O zs3BtlszDO16=Q->gT!{J!URH8h6z|y6($g(GEBgtsxW~Nm0v z+RLtrZC!iWT^s6e=G^mK=FC7c6F$G>pYO-->-$+*KJPo{-19uod!Csy_ZVUacR~2w z5PlDYlO>4zApCv^e?Th0>28Cg-(&;awd`Q8;oso|I9bS%Toe%VujcC-xGf4HaphlM_W%V3|csm1=Yy+VK1 zoYCFlZ|NDb|9B7kkGKAb#MwypksL?39(VSev5(}y^9hu`8Sc;n{+kJ%q#*sx976WO zaZvV~AupdY=QD5%LeXhKg^ON96)rk`I|`Re??ZI{R)w2q8n&pkM_~T9^E+kLbt+2caD2v zf6S$DPvLcRM-R&=T=cT&W265ReO&bM(I-To7)@4yo`&#eApBVfe-6SoLHP3!{sM%* zD3#%9GKvnS-|g-Ld2%cY$3X>!LuiI<+Kj$h7^zF)HqvB-RF}d<-x__J(moJw?1GTt zrzi;-2Ni@2p-Mu=K?Na0sFILzP(jELsw89_R1h+RGC~%;#g5zG?701%#H~xnVvGrh zTUN+kcH%b1iisRe$YS=4iHeyNvscXCG5f?!hVZ{a_}?J>?-2e9gue>muR-|hQsGMX zfkX$zW?S1o?cEhGjYY^fs32qrl@~H`q^yv+Mk+64Wcw#KQdY=<+dpxr(n3bdK1b!t zemFuKWz&_NSl!9QYLEsWGv_TQj65QoZ@{g~5&Wk2S0TJ~ek*iPBcrbRyH z+^uCla-sbvmyB=O4{rZ_%PIR|7tpf*rWJMRo2OJ@*j*lD|M&}T|BSgZhBQInhVYM_ zvLCaCrjMAlG=0Qe8(Hlx`!P3$o-MUYW8Vb6?E;F%QH%81qof!!eJ< zJPP6D#gBhL_&*{1eF*;m!Z$~ttC`(Im8;k*AEw@t>r6KgNqle4@@IsMz(*!N;d`TG{aw>V`#_Cq^;d}ODO zk0)Q`F8i@xj(hs}%2oEi!}RfWEIDCpeb{wj*N5E@wm$5}u$#he4!b3g9>@q}2C@R# zft)~YAa8x_Pq9D8{u29Z?3UQyVt(?okI=Fo z`yQJ|#IpbGSjs*J70NzBrOW=zX~IZdW&gkQkw>bl?9YsyX)niYJ+^n|EV^Jr4mNgf z{mjIfNn>8H*~TqoMZxag;<%JVfxCr*C?Hfx6ga3L3J6sa1r92R0z#EUfrAR7fKWyh zX0D)-KJy$J=`&YOzR10=W9F&}h;(*e$8Y$!t)6++X!|;5UOn@gnQLaQoq6rdbu-E8 z^Y0M;2WTG9!a&;zv~bWgsQ{X_s4C+r~(RjU5R6#O(=j zdj>rrE{b|W+@z5_A?^V51aiDT`Mp5T@o|StfG21st_sW`o}d|4)TY1P_@NVZafip* z>-N|lh&wv&7|_UHo8)*xTrABVaWiT5h>M$ivD*{k=8bpu&~(-lv|&~^cBSI~9`Z4b~QLE96wD5*3;i(K5%Y#I?fL8DnjdH*K| zCaSK1zkJBAHcp*^6H zy>E87DzyhVDBm6kL6zDA9F%VlgrM^60kSHYmA@Th* zg~Sg`Uga+R@ucG+^E(XxcL(=t2f9lCR40YRpBR6JOzDqb9)D*1S@CDbuZTYKFGwkCNzo-pmCe{aCZyC>m(+ZCMmKN22Dco4Ki(9#@NNO;7~AdlJ^e;jM(X6W#%B9%xCRC4=S#Z9ZrV zKuZN}p;RiNQJ?U@$gYq$7FXb)f-4|Y+7%ME2qSg5LJEy~q`F*T*3PqbQEC%#V`nSB z-6p_KQL6kLRH*z2RjT|PRH*z2RjT|PRH*z2RjT|PRH*z2Wh(!yDjK)5s%hNLsv&Xf zY7@+Ant-@v+XRc8xSiE9%RgG1U{=qp-dTOK`ezNy8k{u*S~_SMpk;!V1zI*}IiTfA zg)40nBs|E5tJo$;bHY`rO~65gHUUEGWsB4{Mk=%k5USKB;6^I836QGPCg7+-n*gDW z($`OR5pYnpOI5j;CeZR|4n!)~CYbd>u=LN`OiTZ)54ThLv+2V%>+`Lp zKQhDq6Y~2K`5|ZfA(Ip_ny7a?8&qDoxR`e{bwHl z+G5a(K`Q}m320@Ym4j9RTBTGTp=E#8FKiwWTLgt;Df=8$DEkPNF8i~+!bn|Zzmz`m zNOhI{*?F_`mC8OhcA@O!rzn+u4l0y=gesMN4l0y=gesMN4l0y=gesMN4l0y=gfeA+ z_7ya4XaCub+rN;wb(Q_u>n0#>*|J}aaeMu2@=D6cKjl07_SqX|-!c2n*>}ypd-gq` z)qu7Xv|7;WK&uC>0W_afxYA-e%XQSNSoW*NQuaBhQ1%h3RQ5TjQ1%fjU-rr7K@Q56 zeS7nuhE%1p&ryZ4k5K8dZzopwH^r8HyK#t6>9Rlh65;w?WuN}KPU!lBW#4{@bIvrC zpCaA+QMMlJ#NG=!?42~{0aLmc9F)HoA*lSlxY#p^gSzg8&JLARpgF}s1)5Vr6=+WB zND4HkhEbpddS~V|O@soqqXL~u6{yXMTJ`zty`2;^r)^Frt3Y$Q=5&MB0ostGKy!L& zDxE{m1M8a8ADQn~pgG5ldn#>pDG(mRJLiNsr^_hNoHOPupL6D%v*w&VXT_Xz=Bxy* z3p8@YWND}uv_8=KK^p*VP%5X=NS)KgKJuahb&N%UIH;gN2$fc#IkyQTbtzB}4S%G% z6ll)Fa~@GrAa3k}0^z49DG&!06bPY83dBJL1wv?!?1YVWRXM1jKnPV*APy=h5JDLR zO5BCUZQ`ypZWDJSaqCi`#JwjVZdnBycJfc+n5V?pWHMHw*za{=IUG}$eL)fx!&sgwNl*&GLLxi%AP^GfZL4~r9P^GfZL4~r9 zP^GfZL4~r9P^Rq9&8KlYw}8g&+``C0_g06w{f@BPTbC|oZB$kR)@L1xs7w1 z<~Gl5ncF(I4YYGXI}fz;LAwC7i$J>=v{h2!O06vMR<`VmTOH1E!c}Rj0|ynhIw14| z6@TQQ!d3@_N^f{bWuLYf1R`k_74J;SF;oRhST`zq{qK<-C7a0`Up4ha2t z2cW`k2ZVm&K%EyS=e`y!{BvI?5w&6N8zU9|x$iNBe-3@%=6*U6h5u44{AbX@zuJo0 z>6_ngz`*-_?pJK#pZoRPZ$P^Yv~^D5pZmR?Kz^_j$bTY>+=YMcmT^xYm$(Z5<#-*x z&ogBT|2%76#Jrv7?J{rIdArTqecm3RT>;vkLHi46SA%v9Xlp=Q3);0(nS|E4xnHxH zM4azmHkQKAL50GPQ0c-yFHRV#tMFe*gC41_!ar}pyfpfNY~2+(FP-j+yehOSa$eTF zT>3YD4Erfi5+MKKm#|+0O9EwMy@i4*;JB1jfxCr*Dj-xz6*#D%3J6tF1r92x0z#Ek zfrARFfY3ZUz1jPp=h=%S^Xx^Ed4Gv4a;w6;@n0mlB*3b|bxx$uyM7*BB(X}YQfrA- zW|dnNR%PJ*zz2cNfe!;81wIaZa>Kma=WUpG$Gkh|-8Jv-d1R5~deCkFZ9Ql=f_4*V zH-mPI)YC~z+T3s002ftZ-B?tCg9@sEP$gC1pn@tOR9Y4GB)cLxD60x#_O3{z230}Q z6F92i2?$m41P&^A0zyAl@dOSkcmhH>Pe_^;^n|48)Dw~p8Oalpj%GX|kv?rnWOZQt zw?^EKp0J#H!fjU6vak1E?L=KtVv_xKJRY!+l$?|T+6K@bc03_z0riBWRO$&y3nLf1 zJs~M)+&$q|mnYnT*O8aBM8*@6%96^HDv~Obs*z$z81=`)9-3QwJpgjQE zgP=Vml}4y1Bqg(HMD&CWWAOwIDtH1yr9C0(WMQN(Pq>GA0#aR`khC)Ce77egT}VCQ z-jF9GtxCFdhdhD1TEP==TuPq6K?P4hsFEjeP{9)rs^keARPY3ZDtQ726+8i`4E2g&?CnRl2`Yq}Aq(729$zjRlM1@B|dknP4 zL3;wUCqa7(w5O#4oO(i13LD^}CpYG6F8{g2?&+;1p5109F*~dz!x-W zAXG^cIH;fr2vyPq4k~B@LX|Xug9@5}P)-w)dxDyf+)Fhfxo;#*Nd6OQLfG=ix%6R6 z4ork5Y{cyYXHrdg)`~j$=VNi_Ve;w8XVM&x=PM+il}y^`&w=)uqY23?Y4S)umnM(o z^CFAgnvlGD+>^&ME=}0vB#-3FlGn&+Lh{<=Ym?U{UzdD+@(s!BlgaerdC*<}?M2Z3 z3fkX5`#Wf_fcC0X7NMGud={HUL``^ZESkVU1x-Mxv?e6KAdJ+d2`|xzN2*H`lHX4L zhg%bp-=muFa!3=BHz$8QW=)_6t#Mb&YJ$D`h~rYy1P&@_0z$K8=N8-evIR{*sFEgd zBNa3Op-P&-K?O}fD5D7}vuLEJ%%+i^GKWOEYr{dx{0WG3cEiEzPNb)#reu${;UFa^ zB{wB6B|oJgr7)!kv^PL|6STKLdmD_Cz&IIGE`^T<$rH{1cgSrDuSY$iqC{o?%Z0`SW!t*UMd72r0MQX=8((Htryg%qisSBz-9IwUQHwQyy>+x9HfOmga>+LjxU+!{nBPhRfa= z?(eX7hP`s`uQ^u*6{Rw!s6vDbf)O||zddv{UUv&?aCv;us1H?4W1%9Z0{6d*q3gFg7zsp?1OEp z^N@Lu@x~Gr@?ys?Tkfs! zR(h+v)!rKKQg5xd&Rg$o@cO)sk;$Na1=`o3eFNIJpnV70_n`d%+J8X%FKGV*?MKjl z0_|rATXCDW#oOv_^R|0Cyq(@IZ@1U)?eX?{`@H?$0nmN{Jqq-rL0<%V4d{cQUkmy} zpuYRZ-3&@t3PE+HqKd?y_} z%UT8oTZ&qXXm(9IZed$XSyOL!??6>!$G}i~Rf}(+J~9&juZmi;hyA{u!OEVFrY`#X zMHTJz-*cMF?EhWWG|&?K-1j4$^=I#?!3m?6{vg=~@9Eo_FqY7p?p=u!Msuato;!O< z5K7gt?UamAf!fZ0@8sWLE(+)*dD1E37N@VQeMSH6*Wk%KS4741O0YlgH+d~(fgJ6Tlb{V`#qU7>fxbDqxZkwpT<0C+{P_rCyjR2 z$8jl58o662Od1iIE&IJ}W2C~Q5ur+xMsB3Sq!FP?lSU3IOd1i&Od98B(@3A6LnD2D zuD8YATb^Gs0g=x1mi3*TNT0uC{?gHU%kyjJ*Uhh=-!R`dzj1yO=(~WvE9kp{zB}l9 zfF23@o>BpB$KsW2fD654J;DiarR{27HsmP1hK-ZEW-=AcY(8SFLa z5LKzU%u)H~atNx_T;`yBb2$W6YA$n7zPTKNa?R!We+|0A{J&9GnE&^YTw(s(j4Rlq zp1*klTtVLpUEyou3i>1~Dy==`XpFi~=6}X|!u)^F{~YwaL7(P$!u+r7?D4goJ-+d_ zx;&^^eEO7^nLI;eqOMXj3+DzU!X0}7Z?l71=fOy1v`U28T5TY-w*TyK|cue zDWD$=`c$bjLQBW|f3s;sXfEq}kHr%>DDMd&sI(_6I7S$$%M z7A&BiK+a2bZvBF^1sOZ!3Eb84o)8+Bk|%Ib-V;JlB~Rd>yeEX9N}j+$c~1yIl{|ri z@}3ZaGM=!2wg6`=SWP2+!KL0-wpv0R2eN<&NmIx=7f3&IY*46aGb`hRnE$YR(8Kc>)I&JOQCf zp1?r`Pe7=&CoI@3Tt4dw`r+*L2R$LOS)xrs^@|&JpeH$|keW>MM`{YqAE{n%o7)spGsZoC9PKiNSiFv`)WtHUkXoEtl3JR&B(*HH zJhdXV67-p%$AKOX`fSkWfSw3CxdHQ}O(8XrO(dcz#EiuhIH+I>2$eR4RMPq8pe|EL zpfQhBmno#4m3ofb6jINnrZ6jH3aJ;QUc5u5zzs|=1ss=>DR5B16cDOp3LI201%xV@ z0tXdL0ijB!z(EC5KqzAhsUO*q{;?hDpLpBcrjYv81VlP(3dtDh-=vZs{u+5#d+JZA zKd1hZ`fKWz)ZbEn2R#LJFX;0@UjTY4=nFw7$CFBwG-?W|bJ+kFO(AJ4rocf3Q$VPa zDR5B16c8$H3Us#`2W3pb-mRu1RH>oBK?O}fsFEgdP(c$As-y`VRL}&3a+>f!I77j6*P(>fMg(psgCS;%{d`mSU-HMuW>I1miv@o#nG*%N9p1$x5&@(|V zaWrA!Su}YpJewwug)6-6ZcSKt(YPm%MJ`Rqa+1fwRSU0_(S(IpExdZ+H4E1)T)Xhv zh3ghx2YNQ>IiTl)UI2O_=tZC}2EAA+i_nI`Li^_+$(OtB9}Ct=&9&znN(&DhRL}&3 zN^8QxjlxJ>nvh2|0jVxcSor$Fx7?br@ExiN`5{eM_|JtO?2smKS1V`&j!Q`sIH;fr z2vyPq4k~B@LX|Xug9@5}P$f;^pn@hKl+lE=nKaVV;%KC&#e3V`nvj+>0g=vX0-jKs zmXek}nkJ-Wq-CaMrDdn(q~)gNfxZOvGSJIGuK=CQ45~n{mI`n>^Id5FjvEHJOB3jB z6TM_Cn!rH?O+cuUCU8(e6A&t`3G`P3IVhtE!CwswUB8kia8$t)aHvY2z(EC1K&X-@ za8SV$5XyN%+I>M!NV}hULfQi(c|zI~j3-o6Pe|J|5uQ+sp70&@gr&hv3QwMKF8*?0 z+DmDFV_hNb?`f}qUI%)o;|gi7+Zp5yJA=IG?Qpw7+WX_4L26vCQ17@x+UB&+Wn3Zc zi?lD(zDoN#?VGf3)4ogl9`pv#eV{jj-U50n=xw04gWe&PN~kNO{hfZfm`cQ!0y$e; z-4!^f;0g$pc7;WI2_tp6LKDq;NF{ZI`~s(QV;4u*&>V7wMMo`)-XT}u zu2ygb9G8+Sa8SV&5US(~98_=xgetiL2Nhfap-Qg6K?PSpDB}u?PNI>%=wuq{i%#)& zxLskMHel)c+sjwmn>Sn=+Z@(f!+?3a)@q&K1(Npev;7)D_Z=kz65tcXWlY<=z_lw59Je5w0+7y8?L? z{CnyOLsnF0&*i%~QJ21d`a!lQI6obfJ|&&3(Jur2RL2w2r_=0_ehAGT>4$nd-JXzs z%(!QdL6;{Si`Nm8o+#r9>2uTPr6;8)r>CTQ)90s?R^*>RKMwTcK|cxflR-ZP^Z@7} zl}4y1q)%bfi0BE+#^MPaRPY3ZN_#@OPZ+7o6HcI>fK-zhQwd>fCY z;0Xw2JR$vgJJMgUBmG4Z>8>~6(qEf^NN3)F(@(?4?Tz&Jh$rk+v(wU@YImyJseY%1 zoqU11Kz*Pg;0rVcngY!?q`#m3LHg$O57R$N|2X{<&`$^b4A7T@ekSN=fqpjVaz|y- zH{j9_W&>P!15Q8H32H9&+R^2W8)Yvya>j zQGK#h`|)(&RQAYSx_>zYZQKDUf8=fm+9V5&tP-xDJ#tq+haGCOLv`MK$Z$^D&#+J0 z&lvHf{S5Y`{Z#t6WlY3L`}(<#D1@C)MPa2CwJz$GyPUAgXv=V&w4c$HLG1fH(64Yr zA;UgtKf^w0Kchdg$}I{R<9^aU`F2vbz6qzFkJoWR#_2Mmka0%F@{BVx&dNADV@1X} z87o1*0Q3t%zXJo*E z=_8L+mndXBobi}j6f&NmqCieL#asV$#>O2I1#V!1DB!r1M1g|}qJU5(QQ)A0C?Hfx z6ga3L3J6sa1r92R0zw&4$ec_?A#-0U3Yq(nNOy@s=CpAag>wR|DE!%Z+%gZzJbE-y z$UG)9Ix{9SHgjfXTqfCm^cT>t1pO+|uLk`Z(AR*zRw}^h+58#ZY=FB&fu7B-UojR@ z;GlviAXHuy#F4V1;2NpCD3Dj>xskG>V81FKx_)UcbCI z6xLZ$ttm%+hhcYj=6y8F4-w+!*=?3#7-ZNdb`}BkooMmr;lr0 zqJT#YXFiwtcNtO0d?oYM%-1qs&wL~E&CItl-v)g>=r@9X6X>^sejDhwgT4XuJEZam zb>qzY**qeO!u4Yj1r92R0z#!lA@f&Zq%KjonLhGJb%{b&MAoiuQOMeziUK*~)Om!m z_RQLA%%ZT3TgZxnJ-xtjDTxAi3k6X?sFEmfP(c(Bsw4^=R1gJ(Dv1II6+{7{j3{I^ z(@4*1p^=`|>g{r`JY@AuK%}!P4>+~S>dX4mXe$p{$7LO#bwbvOStn(koJD$scY}Tp z==XwtAL#dkPBPqsQUOkPDP+2SZQQl;VDD16(+O~;*B&^iu=0RVrIiN`Dy%#pRC?us z?o!~O?8-yfQ#5NJRcYmcqY5hz2vu5n;Gn|F145Nn9yqA5@_%WXA*m{@s+eCQ6Bj^eLp`P$?aF@ap2mj|HC(&nzWoxV}Wb4@m=#PT_yyFVl z5j2Bj?@TjD_AcITw<}~%8utwHkjoVw!|T{Pdy0%JWFMS8HG5k2^z1{j56zyDeHiGE zgZ>2QPlEmo=+A<_5%lLk-z1evXras2M|Oor$KnbcRB#1^O1nZf=_7Jbmn+y&kJL=N zkA^q4JiE&63fVQ(705ZK_&4gZeLLg|+`t4^z;P+L0tXdb0ijB+z(EC9K&X-{a8SV& z5US(~98_=xgfgy>eTN>ByShwNvwH)cPV zy(#=&|M1fBf9mq33R^uL1sH_-nM`YTcaPIoC}8*G5PT*2O@@cdX@frARJfKVk@ z;GlvlAXM5F=q?2g%DO^umjY6iT!Etsu7FS_SKy$6D{cL zSI9{k$rW#jKZ-Gv_3-5sbPte~3{e93s0DZGmDxt2BW1q4`(#dw-et2UnuE0SBS3sz=E98)0 z`sSc6S9q7s5RmF}g`8`1u6Mga&U)$!{|LE4&doXGw^+vb(?7Iv$PJ8j1-o&G<5F@3 z4l1|;LX}*Bg9@&IP$gI3pn@wPG*@k$UPrrfh<7S_agVwiI9b_u(9wzDhpo*W#P*^J8?pu`{&%NY*}#5Xw1Dj_ZrZ@ z2K^UD7ILqpDI|BDokFhj_PAvs_ttSwAz!#;;TudLx98q3BMZ3?T|8EFe@`7IHrn zM(UD3J1-^`kWw@*47dd5w8ZdChq(d99#t0sS}7e+T^!Fg##{fw7ZRfYU{Y+-ukXcQqF5 zMTlRV09RUs;GjZd0ijBb1r91S77!}kSfGm#9F%P=1Q#KYN{Xi3w$5$bRH3neP^HEK zH&mgqfKa8z0tXcu3kc;J3wf^uT_NvP>I!+UjpPb>|6p9fR-C+#C%_d9ax(GWR)Czp z{UdP&L$jh1PFy}4qwcf3FIZ2=`!eq|unn zo?w`G9b58s8BfSJ^38lJKO%qU{9W>Q&EE|Sa!Vq>*clA+pLYji4=^IZkUQ#?7P-7H z*)$?}f?t z%MN$~ceT7HgvO=h2^^I7gb-B86F4aE2_dMGCvZ^S6GBiWPvD@uCxoDkC*)s7BR&6e z8tM60czfNRkiT{UBAxLBW0Di;`Rnp;8O;;&Z_U3g|MvV1`FG^snSU1;dx1fI(_|ko zCWEmr82f>-zmzA?1&F+_*Z_BV0$qSGqQ>G09F+Hj5LC$%I4JK4A*i$`(36)qDB}tC z$x9)qk|uCaUK2u4B~9Ri8tOdClP3XVigAnOly z)1n}5A~fM3Tz~k9YQll!*MH2Du)G$`E|_a;g0uEeFs~p9j45Co^%vE=@StNgf3`1tl_?P*7U1q@b*zyr80>vY@J<8jPu6Oao&&7&E{) z42;9UI0B3#rLqXsgo1f&77;aJ%2+gkg9@5}P-#slI8hj>OA`*E2@k0*O(CD=LaWqEycLhI>w)Rl)OTn)NTMB+F z_`TqdLh=M114c9$F<_7fcP1EdV8lxWI9(GdP%eD^ z?An7tkF^a^xwVJF?w}|X`l%=s_H0KKvgyNBxNNH^M0)K%IeC0VA*`FK!E8qq!dB9M zn?*(8#Q!;AS9ogS8LTK2E-yS2j5%PWIigUwf~Jqcb7=Y~Tp3yJ7KOr9ntbcdP+g)>_-5fdZc!-w2Ni{skSG+sU-;n; zi2`@Ef+*m)lth7p3Zj5eB~jp@f+!$VNfbD!APNXo5(N$_hyp?xQ7DS1kzSNQBfV%A ziFB7J6s1f+q_d*1$cgl#`9+zdi9%6UQFc*IQEpLQQGQVY80lbSfRPDC78u!JF9qF~Pr@cNZRfrAR7fKX{s@b(EKb&0|O?Dx-!LeT?3Q7C$libByt+YtqOi(AoC zC<Ems0zgrZFHjjJy$a9H85njhfMPJH@LeW=6Ul)B-^lj01Mc)_wQ1l-# z7K2d?MhO^YV3dPV0Y)VlRZ@9`iUJt``C`dG+uqG+6plp{IH({B2$dFv#rp^&b%{bL zedLkq5{1QwEYFshvZSK6S!L4}0}geomOa8P040in_h5A;VQIViL65d0Cz z(Di>PJNe(nO%+xiaHvWv58P0Nl?Q|>tvqm0VdVj#+{#0-5%h#&lX^n2HIgS3M{f0m z$YlDo74JI{p3vfWLf8uG3C+RHjDMc-32tUAKCt*;))k7U7L#6lD;NWgD-<6}Gf43a znn8*W^A5OOp*UvTGf0!m722E(QarPGo{TFLClx0brxbgO=NB(1PAy&tMmrcCV041v z2crj!UNHK==$A?*)D?=SvZ+LDDzuKp6*#Ei3J8^Uh2kb*q%K$JqFE2AE>|e-FCKEc zLh&-{3f&=BC_b+E#2s=4?rH^Bz;P+L0tXdb0ijB+z(EC9K&X-{a8SV&5US(~98_=x zgfgyB{GuJ{FWHg)vUkAk3dL_sK%}#-Fo==MG#r^WvQ zV+f38U>pm^pTIZ{jN`#LK`OwDzaU{VjSXoAvP2f<;M1=4$Agg z^jF!Ta=n(4(}NCGat3v%lI7cRD0@++mp0s{#0_yxM$UX z%b!li>$t6ioUFAz?7Fb)!)^#$A9iEdO<^~O-4aL-WCSt;S%K_8P9Qgsx4z{5k_Sp2 zEP1Hp;gUy69xZtcj5EMk4hC6?Ivb1?V4MTSN-)lqO0U$PO0HrbdC{Lva~}D0m8l2^ z75oXI(*9IJ-WTVfE`K_UWI54?sFDqFBNc22p-MKyK?NH^C}TsV^J(0cE}(H+no8ou1ZpaVgD#c>P@2FMTFh_Di3oWxsUeNM*nD zuT0rbqt&7G&50=cmt)z#ke2<+tf;TNM;?V?_iiaUD1K|%FMYrC129Ne@;ayNm)gIz zTWbH-Zs{kHHSV%sI_|%@80)0+2z}&B-ygZ`Uon=l&q0N%q7YjGMr?8H`)NxK%1#>CTGM57=;Zm3@1^!gXUQ`y5m#`v{dU`{GF1vhNzH zQrYK5Dwcg5s&v_>rq5B?vTvI{LY2xs2NlXbLgmXo*;&FtU1dK&b0AW=vR~$`n3UNo zCS}`OF|lX+W$cPc5`Emt#(BjgINRTVD<)^tvVXf3m0I#pw-a_{2bQ^3OUkB}k=2qr zz<9(d`(^fONtwM`Qg&Emsk`i#jsI%NZLYF^CtkI!bvGFIfN?(<4}kF?7!QH*uv8wQWxs4Hn@7ai{vBf}`y5m#`v}dDHQll%VWh6I ze=mLHk?Jb@W&LH`YDt;BT5?}#wWRF0vK?D3;jWey1$$=&j!Q`tIH({B2vrgV4l0NO zLX|{;g9@U6P$f~|pn@nMlo5q8d$pv@UM(qmIkMEfT2eOtt0lJu*wvCpG1A{E8+Em$ zY;)O%WgnG&T=q%Xr)6Zdgf#UY2jdAao&@75FrEhE8L0rLuXL78V*{LBEeY7KbUxw) zxYEuF4l1mWAXI6Ego6qzBnXvWA)#kVa!_`K#6DBfK&sLT2}c!HND%swY=WcPH8`lS zLW0nbcK|A^kRbFE2kQKwRe5Q!Jy5=cwg<|~Mrsd~*J69XTp8S1QQk5U?Sbde6IM`9 z*l0y9yDQ7@L|u7DdAHpjaCTsp`^(AJf=yt&?s!6ZKkY7-576#n`C#M{wz+E#E}{#+Y|ta#t&O0**_`6F8{g2?$m41P&^A0zz|CG7$$AJOQCf zp1?r`Pe3T+2^IU%NUzwRMta2okxSg3P;tlvL^|sUZ#a=&F{6U~Ap6L>Dk@?sVk>4= z#8t#sBvi}-<4rK$0^@Bk-T~uXF#ZX~dr|>Tt510k8{jTauylY)b?o?sslWgu1B6DmmWgQGH@0LDLPE<$Qh6iVV|OYBS7#IxqOcVXW7UD} zV@4odrG#)$!50uJ?F$vZ3nO*;f;~e*s>>HDcdgvR?F*HAQeXHi{B@CAe_`2q(Od;y_KzQ92RUqC413zcm&(kt6(q*r!CmbrbQ zvVQ_1o%MxpoJg-6tUO^fU#L8>@}$a>D^IBmR6^ycV0;V4cVK)E#t&fp2aNxM@js~m zrxmE;VK%@;U-)_~zQ92RUqGmmFK|%77Z57#3-pZ*4(jrSn`mW6DtV&hkCf!7j4uRi z2}7t-Ux9-Pu7FS_SKy$6D zv1vr~gkQ$u2^>`L1cXX^LRFqHQkN(EK_eciE>Ebcs#@yygsM8?38p9H301zT<{k0` z?rH^3z;P*g0tXd50ijBsz(EC1K&X-@a8SV$5US(}98~ZGgfgB`b+;Yq_t=qsZ)Bz0 z6RIAafJkRN!Nk+;svfU;ZZuD*+En#?)eBWGR=rg9a@AkKw7`r2b7wGj0drR{cLQ^G zsQ{;*P!+)jxZnw*_7-V;Jl zB~Rd>yeEX9N}j+$c~1yIIZvog4thd$3iX6)??|3doxym*BKovd7fgUBn0ulpTtqy< zjI^Q#dUjpw*m-qv^%B+-s>`a&!HfcPisK2@RWy54SJUiKT@$&~?FrRQPL^=;L6 z?2spLSIc`sXk1F3z(ILW2tk!RfrIj%5P~Xs0te+iAp}+O1P;o3LI}!uLQNQr^qQS$ zq}PN;E_HiC%`OuV>8vN<>9IAt)$Bc*C)DgyGr4Bpn*D0_uQ{NGg!5D|r-3;g%tOFD z6wDc59wrsw)DxK}AnMs*)#gRKXJv zs^keARPY3ZDtQ726+8imzI3o=~%4+_T5wE>FM{ zX>0DRc}T_+Y96k6q~_6@$7&w0d7|dYny0`#2Fz$MW5A39Gak$YFlT`|TPlrEPpDbT zPB(;pf_co`6tkPpJ7s7^%w>VyPz})#V8_Kh*rs?FltMQBRl|@`RdSYkuD$ zPvEXr@B|!}k|%Ib!4nXw)I&JOQD(vW?wsJeGndAe8ZhrG+%omln}T zU%EK5*6j&PD<>e*Sx>;jW0zJhZ5+)LmNqSIUfQy>b!pqu_N5(Q&INNGm`PwJgP8)R z7tHxm0Z#Wb)?CX5xXTmhYMqIPb1HcP2NgU4p-P^>K?P4hsI({0{fr!x^#prAW9a&o zJb|MMo`6GD@&pblcmhI|Jb{A>o`BGxC)g)GEPdTR@gex1-|}o+yY%fn%D`L*VV!|P z>A{QB_oyTmF=LM^&(uAtiHl}=vX*Z4WP3;vT13`eCIu#enFe9qQK?6q`@}1rO`hkM zezNq_`pA7M)5{9-vs!vu27KKe$NPpldV6yGee0I~Yw2f8|Lu8syMLoTaxeS;w9w~o zY0l_w@wfC0k^jT`$UW>o-ufpJyFuuCD`6M2G2uF;g1om9SnAZgMwN`kF}c@PLd+&v zW_UmtC-c@y;2vh2%?{Jqi(0#H(D7>bqmEa*|8^WNi{69U>02EytkeFJqsGdf$$N<8MO9}fYHfTiahzN*%N@h3okR0}Z6eM4wR6L` zA0ewv9rwJSN0tL6nB`v6$v#8-M4jEqUIko5Qkl}Fy6ATZ>rDS*s9<;qWel(OJv-9hw4$&tO)9Sp{Y_m^EN71+x~+I%&hJO<)6DG`w;rz?BS-g9?U+P$k3Tpn~BcRNC+? z@*`v%lrcQ}N61WsDhVD36$B5VN`l8h1;In8lHhSrLGTdD2wq)_XXBcsZxf}X=Xyof zb<}m%b=8p{8>#cx^?0V%_15)K%d6|J8}Q8Vba}e#hCGLnee%Jj71rmmKu%-(^bV|!Yf7Y+>#bTkeRwG8$SG`9@2G>`aq28VhFd~GfD zky9B?=@9w9>m53-uVwI9-(W^hQ*SfH9LoF^?xWbhb`bN|7*gnySd3dp2b+icx;vVD zWbE!wp}eio%};KjWj}7JNZw0L-<312>Rb_0n=wioxAb6 zBb_uN@%(E1ruy7kgHDF7d4PTZb9rF@zyW~+0|y1B1P%^N z4NO~KcTL@zy0vxJ)~&0%uI~D}8^CM$HBnoc})Bbk3v!_XQ56B*pM@al91Scc*Cy;xiE1Ra=Mc zh8`#jt$SA(=_OmCV0N-YJ&3s%|CYTMR0FuXy?W~>1nA4ap_@(m*>Y}Cw?%+nx)lnh zpQRpbQ=KQSe&_mKq)$8vix)oTvaKHzh-W`#s_fY7rwGu?w?e_}W2w_@DwzWpmKOMW zNd9atYV2%j8p5lIuAfPyH!`_C7Q$A5Ik2`quAVfA2fJ2*7>exx&Hte+E{ zGS<^s)Q0-G+nF-v(81KFZk;j)Utg@x9@i-&m<@EAIE>2zE9k!sSy9RVy)73nKEJ+* zoix@jt|yZxvZ@YF60BcBRkFT}s$_k6eVlt)puTRzdKJpqY!w-y7>!UKozzag7T2Wl zSiFvg`VN^%V|{0RSABQAzrLrwx4y5wAIv|2c^sI>gLxvDCxLk~n5TdlkV=9yEbABB z&)s&n4=i(XV7lz1O;Z#H6()@cm7X-#Uo1dflg1Nhydc#zX{=vUzg9lh#Tz0_0r69m zrhwcH5vG6$&6d5(+xY5)DIh|Xrhwc?g()CHm8O6kRG0!Hl$iq7+rKzpZ~x+a{rB~8 z?k0czxc}ljiCcCGcq+#2mIiIKDPV)%U^I|a))3LKa|78Zcp8|egLwv+%fTeNb{3dt zONFZ)S;cI)x~71(QGgS!N>jjkH&mDcB2;M#$U%iEAVN3GKJxTsL=MVK0l|J5(L}1! z9FU_5b3lYD%>g;6Fb71a(j1V33Ufe&2IqjGs^4&IuN`gnH(c0o5t!$Kd6`r78!n+$ zzhO14`VE)X$GfY3!`0(n^;fv6{&{#EYZ`8nsrn5!H{8;2Yr|~~w>NBPxTE1tFwY0` z0x&NG^I|Ypfq4m-tHHcfDvi+6(QqM~M#NU}xnrsN98{?K2$in-4X+6!byfX~Xw^rm ztLis=*zl2b)u#(Z+}PQwPY*Z?eTq`m=b%E>$Du1#eGV#AeS|7ieGV#AeS|7ieGV#A zeS|Vq-xo*Y))!CX)|Wuy)^(<#FL?sumO0AUyxfUfpVyZ`s{V*)8u~JQS-xyvjxX1j z=OZgSSAh9vF#iJPm0*%S@GoHgDiyBuOv8p?Z^Dsu;Y>sGGACT?WNRt?S!oW+pJ^C^ z)=NXhk@9C6hM;6(CpXLY2&(8U^<-(Jl(!EKC)3t?l~KMy7&J&o!Bkrx}i*`^LFfX zUc+=cccq=qpTNA@it4%NJUrCUcfD^tb~=4Gg1N>i_r6=~v~jDQHf|%2jH}b>yI1b( z{6C!JUlm|Go%pVU?|vUSN@w&=r|(JMQ@*Et&-kA8ZS+0o+XN=r>UbTP*MmvAp5(f3 z0`nFy<<3O)z2uqX3zi-yf4DoH>u3P2aS{mA>GZuT+uft{67Ca(PA7hVQm2!H3Y|`b zN_RSazX>CCbvoCx_k!tkHtr&OFQ{B`!xlQ7IBe-oXCvtra!^;N^JaF~u1;s;F^%M` z9Lb+_pq)KN*7Su*5n8(h-Z+k9MT9@MxrI1g&9rSqW1y6wz^ z@~Ip*w&FazJ-D{4jd zmRQF_8V4GO+3siKvc_Y!KbwwjI;JVQDW)m5X=YO#nB+}{r@?#%%xA&e2QL51!oLY2Co98~CjB6PFtJcxEbIjGqEM5k zY;5|QOx17td($gTuQt8b^m@}9O>Z{61?FGD{2Q2m2lG`hUjy@XFy8?4O{p|OtA5jc zY#I@}pD&H2>T^(`>LXOT>Nou&jMP>2U!heWsjjNuY&AznSAE+3V7uR9Dr1xtV`G-@4l)0FS>-F zO0ULn*U!Bgvvs6oW1U?0x1O{lI4JXO4Bg{Sx}PHGex1W&b0b?B7Yt{)bl7pIa~d7lz$`ntx;``^`T!lXZlT!TiQ4`^{VI z^zoaWK7Ma3cQ1Oj7~`HkHoMCHC(d=WSS@?Xl>L^dmPsvpwd~!pPs`+%eOvYe^HVVY z1?Fd9eh%grV15baS74HJXC+<+qh-JOCpM3WWuLexd4d$*kKv#~*+-~!*>6b}M(Qg2 z|E7;TQe9=gC8s4FIp-N?+g9>FIp-N?+ zg9>FIp-kCtxs1kb%jGm~TdrsZfm){Wkbsy zEqAt%e(ZN(eh=mkVEzZp|AP5HFn^Q^S322m{+SI|akBr76Rt{=eGV#2_7SQy+2^3b zWFMiMWy>C&>~m0YvX4}y$v#IFCi@6gn(T8>VX}`<^6bl%{cU{x!ek$z!O6b8IluK_ z*<~7g%ZGbWT`-`_oaal)fVf3!uq$%fS#x20IALP4G!LmBIjO2wwAP( zwk~Nc^Gs{i5ZLMsjN2*P4t!}Leu7$VO2G_z{eau>Ts;9fPy|v^2t%cV|j=Wyu zPS4yrcW4JWyH|kwJ6qSnt=(`f{10X=d^fTdZk-C|?^aaBz3-psq~lh9YcH;axAuWW z&P{!r2=DaPL0U~(hiElv9rhHs*TP#*au1i=%pMx<|KVErZvkd4+`=YS>nW{g5ep=1 z(Idb0(|UI6iq>;lSGJzpdS2`Ktrvi`6IkJ3X<+GK(fyua?F`l~(q*N!k1Z?gS~y*H zBlpn>``}Wzgj&*M#X6T(Q@s+`MdQ)0eY$Z9Zs^})v_YkVY`;UTfc23FX*lbJ1h{hChUkntkgq7m%+Jf zxNPgk1?USup=+2bThZDK0m?3eTf4Hlj#dT*6wTD_G{Z8 ztUbUwoGgCRbm9*!dACgo&Vt(xrnBI-soR+alXF2m$G07^bru|a;iqlpIM0HAqwyR% zFLVX{x5(gckbL`S=M*RPwascvWM{%{bKB;D6$KWa8QPXYb6}g7=D@c3ZTq=r!fl!3 zodYe`nV}Y*8QPZJRxC3UZYyakZClb-)>htD(N@`31=e0*k(#g%So?uRzWD>dIuI=R zGeg_vvN=$g30rs&XS(d;O>-az>GVW^mxpQb-N^@rp%FmrcP^Gyu2j%C^A*j;anS=6k z=MYqB?#w~?xpN50%$?glwj=!$JJLUG+s{3BZu@!yBAuB#TX<$@+qZ2$jW%~~`?>9x zwqM(}wEfohd)psiO$BQjSku8e1gt~BngN#lnW1g-*Z>#i&K9Y?B(!G)l;+MHl%G3? zph|OR4$9A+Lr|r;GY1vs&LOJO+?k{DbLS9LY3|HH`MGllsx)`zp#0o91P#ueL$1)? z6?BF6Zt4o{{*hdveHdLKY4JTvreVnNgu$eE$l$DWLDMz=%z>9!|0 zuL-rE(Y_q4qrk#5L)*`$*`s|0%^vONwC(Tqg!YTaJ$ty$47Kpg(DqB(uafbE_N&{k zXd5TK>d5ZM>B#NK>&ORdE?8vtlLS^WSf_v$0E?V` zAknv=?*O$gX9L`|wBAmi&N)tiD=n>aP=0AW1eIS}7e~r2t-D6rAp0PB77LfpF0ETB z?DhK`YGlVb9V=e=f$E9=f$E9_Qj$_p6-q{9slpe zB66vpJ}E>(q`((V0o>mU9*2X-RUTFT;CCTv8dxluogJY)DHW_q7M7T zqK@0hBjb9psAJq;EFw=O+e}Tx;osjO^mBDUmr@fjcarWJIa-_3RG+GX&p-289 z%OfdtPPEwBQxvv>{##M7oBH9qhJ8cXGzYvyPf@=17H<{RqG_d&S5%B>Rd)= zNu9@bmbhn0ou`cZEUA#)S7epobwK9|nORcjIh`vz&+R;~^Zd>WIxpzX6dLJW2X~gZyQy7=Pe7!z-PAfK(z}lAA}594 zV3k;<))K4CDz_@E%E0@94+5J59|k@Od>r`XhOYRogsxd#v%BVWC3cZ1QaxA=VEMpm z1gi#ZQ@N1}-Bg4sbyGR0*iA*M zQa6>O3f)wMDs@visL)MCs8TnTg9_bLgmT@~u603I=(>)&Lf7>pxkA@%=n7%WJ8gUD zx_5lLsXSi_DdbUkTjkEiVH z@pNaY+Y`E89QW+e>hgq6ypET<-jwl#uD810?s})|-L8Lh{j=-6uJ^&}0;?M=KUieD zO+Q$~k_N#Vl1d{q;=3MY(}?H^9b@qX4k~y8LZv;SJ4_g<%M*HNJw~d_6T0{4j&gfK z_g>T!$cenpt?!=Pz5kd!fp$~5t7SdG?xy0nlstih3Z8&aB~Rd>f+rv}N493rLc~D@ zPe7=WCvZ@~6A;RHLU$*P^zJSi>D}EV(p}xu?x6{Ybhewi3?H{;-6s=I81a~PDm_oy8g>F)shi3{ zg>EWB>t!FLZH$!drn*Kd-%TwLE}!kDn!mBvkKNQgJhyso^W09#`!2}EHCtQ`;+|1|8L9kXdNPVe&)6# zhxP!=ZCPH0UG_7WF8l7Z%lteKPY~Mf z_yJ07cMdAF-4QC?cK5FqM(S$2pUd8hgSIAG|2o-wK~lv5fqNA4bpT{%<^` z>-=B%zx03Q{~D}Iz*-H~rC?pQ&i}3dJOB6oAHcdCtUJIWi&Nw%uZqE8zuz}-TvZFj zEFnJ*-C?Mwb&f)j54uOx|V@NeO5fd|n*ZLaix zVgJdl<2>O$jZU%u>@?@COX$B{VMQgTy?29iw|XLbCfO5ir!n8NR}aame*tT~lQVnv zr8%>Q{`y~6&;I^z-4pJf>EoU=FLzD2uf*#(w1*r*w?6E;u_AQ+H;}i!C#EO1XJ$`aPkc{8&#a!=U|j{))nHu%*0o@*1M51l$eyMf zq;e*W;-0dHwP6a+z6GPaQ9RQBXv!<*U+#+YNnmh@W!_Ew7VzVJ)LyI zy*4!A?(z57Ydd4!=FD9!JK?sC6UU`A;pU*igd3qs6K)PFOt=xMG~wo;!h{>4N)v7l zDonT$%1pR>9=9X?2|LoC^ndGa%=bJ$0g=u&=5NFY^2MIlMr+LXyx#Lh&zn7O^}OBl zPS3kw-2~RnVBG@Ntzg{-*6m993w{BUGs|&q0O8JVKQk^Bh!Y%p;U*%=cymJ)t+7dO~l`NS@GJ z%y`0=^l9s@ng~z03q4^q^@KZv)2cttIt3T;duw|eSXb!v^^!RU*%nRC!n9ut?QNkM zq_>r3klr@`cWzhc?H%_Fa)-+m?r}0mZ-4LcGOo~jLhp&aC-t7(drEJh7kWt3+# z1M7aU9s=uOupR;HQLrA9N+r}4dV?*B?fnjtb+<+SNA++J4l1|;LZw}ycbza&mn%F# zT>+^sSLnU7_a3(^^xj8Z;lYqA^gh^YukVc66}YPvTmi?WAa0P^B+hQcK?R6Vp zw%`f~RdNMxq=G9TRLK=MsNf0+Wn7_eHyY`EyVFST+r$5z+ZFmIPe7!zuJD8t>3#e4 zO&iS>`lk0C(syXzjK0JA4(~extS7;G3aqEWdIqd#!P*Gcb5a3LU7@#eWLJ3H32-G> z;GlvlAXLc}IH=$X2vu?g4l23=Qk7hRqYAEoP$gI3pn@wPRLK=MsNf0+g|Fz-)<-h_c%B$;**%39&=oGFuJF7SRT=YEDC%zNyOs5XzT5hU zalZ%_o*mkEr=30Sva`qC{_owM(D(4TXOB%TPk0Hl$D@6uD>iyhq3^lAO?}Vzz0mh! z-%EWj_x%;Dm%$?c|KGrR6|C35dL67cz>+^ZwC^@Hjfg#k7suiW98~ZGgi3ot-*=u# z9Mt6rf2W>+RF^08{n5XZ+Y|aV>ItueJfYw0-+kO$=pXDK>K_K{9k57e;U8fA6Rh{ZB3pOlP8+43&_~XD zw*Mi&k?na*>?z=Bn@XO*K?P4h=m)YEyN!_wo`6s#PvAx>dID0FJb|MMo`6s#PvD?} zCm>YG6F8{g2?*spp?`DG6Z$`-p3wi%NS@ID1>*@{(`T*!hl%h6JZ#jujC#U{!Jfj+ zyIh5H@%|tCe_>sr|JVL4V0{eMw@y!?{|}l$20S!_421cAaJ#}l#JIbH>%dV94;&rX zWneEER~XoPV4s1>1N#o_H?aS}0Rsnu^(k2Y0_!udz5we>u)YF|tXYxcRwbvI{lBuQ zM05r6V5;{NIH=$X2$gn)f%%?E9Mt6s^uSRIsV-L-$RDtOe0%FLD+9&U6+RES!oZS& ziXCzVZeW5d;JB1rfrARJfKVk@;GlvlAXLc}IH=$X2vu?g4l1|;LK#;WxWSI}^>(D+ z=>Ng(3IlgcK%}!hh3}kM!N6Su4~^yu0}l^8GVtiYV*`&5JTX8T3g3f8)|~$X)_=kJ zA6P$v^^;V9(+b?bg$;1g6~1)>T*(zUsNf0+RdNLmD!2kdm0W>?imrfEC0F36f-4|Y z$rU)L;0g#O&%XQ-r5sdn1%w7&!QSsT7=wG<2IB_f2NMQod8Q1`9-QNuI+!>(mjv1L z!Fhv8!98w+DZxE%gQ?6Ow=_@pVAfzZ^#yi+*7i0;jqrCuZxc$qkSJ;SqrJDtVz^yr z&BJ}&9b{ui%V2%v2!HKZ-(W^hQ*U$2c)m#M%~{w*gn`X*g4oW*gfbU>>2C@>ko(sgNU6VA{-)gh%g|+f`|yIR6025 znKW3$rc&4bwg~%N&flC|%It3&1lc`ZG+A?>aIyV)ljsqW^dIs~IUk_3zm0>g+8*>k z*}O7%tuWF{wn8C7V~5J@ZyUTr_Fm8h5N_D3w|+vv-qwNlLVADO;L`&1(ydU4Fxg=r zY~Kug;$9gfdj`gEMkjX-mu>yH;2E8G4O69W{b#~8u>0F0c4n_(noV6=l2_W|8)$0x zHFme)1^qZkr%jEE2g%PfY=DSe*AD(VxCJ71gNPY{neHE?9P$LGjYDB{+Bme+cBYMX zYz*zZb=nyGLCT@1ah^8*LMDn4dpPZ7`v)l_cDJIAIH=|s=h}z%8QPDXG7jxObO1y| zLd1bi8XTHJ)8G(2jI?WL>fo>LDdW%)kwQkpVyP=3l7f@aHpFWdOC`6*)vsx)QfM#@haLr|qDBM0TDj3Fp9WgL3ej`WRo zq(3+Kt9!~g^tTC!bY{vJaS%rOD?{&$Hf0=ocjzBO{~UU6=>4G&hBiaQ6o@z&BBnyb zG>DiE5r;s;p;7^E$KnBOfD2Q`2qFsP5mG#vbI1+lr;H(}(v*>d@>9kTRB6h{L4_$} zh^jPY#OpYAI3VK+!!Ug6@M*)R51%o-eE7`avmoLqh&UP| zj)4eL0B1r(97M!JM1oW*q2*(^jZGy&dpY6=CzU9<0tXdb0in{aFnp6RQkN@4Q&&K$ z%N2(2A12*A))j^yp{@`Ua)sf?ho9OZSKzKza0MKfk}Ggf!4(jit>OwCRB#1^D!Bp& z6?3a)@qroFuE3cCx0&+C=T z$hpziTocNd%hoJg>;8l5mR%qGgI7G8JkKw?aoJ6EmFWefzuLXn*VN@}Yq@^e&C70C zcI&d+mfh}onfvd^FO*cKmlfnYe>KP7S0A~j{U?P!f6HLs|3}naM+bSeiQazdZnPAN z6$w&YibIMOcL~9R2M-=v+=B;CiY0gq-yiv(zd=6gfB!z#|GB~LQU1S{ z|GUBe_U#+Bze9Mvmd*aBaP6oAqYeh=|KA^I|Np1!YTl+v?=ii5)%Le$`i<&6?Bb{+ z!E0@Y4H+_G;sZetJkBc=qy!bI#v4J9?Hrf+F7WRk;0a#lHEPp>ehgqRLmAE}qIru& zoaM_Pc*$8W6{RX2h+sUk*uYlK^KB4hcV6~~d5kA{nrC^Q7txVDC%MQ&KJw!p*$d&E z?5|UU1~@Bw4|>suNcuAn?b)O7f4PUq#kf;;4NUQYMUd7Hb~Yfg91`6JHG>Fk`p^Cy4vucv4pujHUO_V!9o zMiYbCzvBL{`0HNr>vKJdw~*^qUZVn`G(vx_uGo7nd(UNtx$HexU(7mJKkPr3{pT9Y z5TY2yaK_^Pxh7!txfZbkch9vGJIHkm`^|Na&v1|2*$6>*?%p^rx3h8&z*)Hm;k?|= z%RLll<@V-skHkH5N0ZEc4q~>sQ?TdU?_<}wotygvX{2)sJI}2p&r{f8p67Uh7kP>7 zyi5*WAvbx*i}~fr&uf@_o|5RzqcxAtJUa8}%%d}p&OD>gnr94eV^(>_VODu2G6}tT zwC3?H^Y{+(=**)t&uO&g`LETR$>YuBxrld@$GgdMl@IVn^L)w|e8o3GkhdU(DNQ|^ z5Y95vUHm@zw&7dIw*&7Z-!68umwni0K5r)9Ar50E`7ZDgKL)|8k7GZtmf#J- zh{U{K9gn%bI+>|VXFjnk#{FM)|5x4rRUNM;WB&dVSAzWcs7-h5CI1wrF@qRpGl#kO zJ@YSMA&Xdo-#h)UP66i>FuMXNcsB*SnF8KSfoo*qXH9|I z+$D<-{`Y^Z6*Pl_<#>~hjK;kSdLIS-x`O}xI(sPi37_#f-d({j`3mrg5HK<7_c37wub*P843)QC~jd1@$?qA6L3%P$Gb1&rnh0MN?*%z|cLQ66G zLS|nm9W&QL|=$^ z5i$+$BE-80F`p1^A>KuZz7YEf(HEjEL|cfr5wZ+@A^JixxrzCQ+{Ii&?qjwgA7Z{C z<{M(ZA?6!mz9D8C@^ugtE=g(1QXX?HToJP^?Clh;g4V+3TiARHYc6cIg=;gB$xLNB z=2}>PVY4ml4u##Ju>Qj4TUdW#^DV5uu>QhV@OBDoFRZ<=_QH42U-%yGP*{Iq?S(%^ ze_{QF^%pVAB3g@dU>p;eggF*5$0FufL`M-FMKlyKqavHIyCPfJ#(V5!H+wlj8mBnJ zIWoA6<RCm|Ky5f}rU06vljtdRIkzlE^wX;H;v~D!K*d6-~mKMV(pHnMJ*uqRuVq z+@i_+!f*V+U;KB*zd=we-~k@wVIJi%9_LA(;u)IKoR+kvE$s-SJ>hhuGhOIP1l?JK z_F~$LX)mU|*k<$>(_c(~G3~{)7xU(e=`W_e*d8>$mWNuH!E3Yd*S&TTf3A2=YT&Hm zJ?KRrBI(aShA@=jj3S!1u-D@DT6`jQS$rw>SlrLS;;YbITz7FhEB>Yb^*I}rs6sWI zTOt%~CF)R@H!+_QT1)h%FZ~$6AheXwQbJ3KsZ3`k?p0zA^H{(_7Ne=eRjzXbKX*%b z!zJ$G4VTE`J|FTipYSQ4^94Wh6TbvO$%=SSC96`Mn&>b22JTR@HttZ;9ZJ@x0gY%( z46~VwpA{uz(O7a3I!i8L8Rl0q9y2Vt5_2r6x1`pRI!o#-sk5Zck~&L%hSrkiTk>nZ z;ak4v2ma(Q{t1FodP`|7rL&aIQaVfNETywlL$sD^LNl7vf>zi^DZQn%meN^DXDOYf zbe7UtY6V(LttJ6GFSVBSY+x6A*~dW+lY*ww0T1HaDg7vq@icE8e_c$ckg!}nF% zT}r!4>HWA%>7$(D61Vw?ulP9#%6JoHoLy!L=26Bx%4}paTS&t1TV^{u*vW48kc>0R z9Kbnc%&g22(zwD6ZgGbXaBi7T@E*!OLpjW)tb3Ln&qO9OmFdhR1~VwT98G04mDN;M zPgy->-L zFqGkpWHix?;Vs@~920P-a+5IMa_&{`7$-2Ja;G?h-g4*ATr zc318je&lC<<@X>c|0qvkw&kDWC0-^cx#&PAy3md8czfl0(u>~or62tnz#s;b#CFWQ zyqTBZgEv;*+{^F7?8_hIFy26U-%k1W@%Ab_z(YL3V?4o=Xsz%xdMoIy@B-O*k?d%% z(2n+Kub{nx_6ok63i>Pfb}G0-1^pGYSLlQO3i>PPudtadXs@8Xg7ymDZw37ocH<5e z^jFYc!5glizk>b>`YU`G1g~p-y)><9OBmsFq%%5R*YUcB*UjklaZF$mQ<%mKVwg=l zD_F%E5?RLve8;c9%jbN_*L=(O{D57*{u4iA->?79AN!nt}42!_y($Is*=Vj&Tx(k zXsL3Ut6b+s5LC@cF7l9%{1l)dg$SVt#dwY4l%x~`8B7$z7{N$JF`8)JVl3`dbv%A{ zR&}qcsT{?Os-7ery;V=6x$0TYlY#E4m$-uVsvls#RqeN`-B$gMAMh^A$ZbZiVm1U=!M_Yp<@oy0=_ifAt->Lv{VtwO3C@e|7!U^;gddf*M+D zl%NHzXhS>N(*YedbkxvL!;EUY#aPBOk;zPDIx|^D9PhA_)g-W%^=#x5KI03%;v2rj zu4{bH57>8&U-*^Z_=7)#pk_5{5K1lTP?vhVNqrj9m?ku(Iqp|;9t&8=VwR$}=5jRG zjAsR_&|Py4iD<9+0Ux2gruLfJYkrCTntt}wbcdSyYih6gBl>IVuc<$@5>?P1sy$SD z=o{z{t&KZ`>JQZ(+5r8b`a|`H&SDPQL$!x$4_$=*&?UG-sQysxp=KVcKU9CH{?NN* zp*>W4sP@oL(I4vj3U!B2{h``J%|BFssQys>p?~>5M?6O!%1{F{e4`K19K-Kd>rskO zjN+7}G-WAAd0wX?l`)4}=1|M;SF0vwQOg`^nM1Amcz?CR=}2dMv$cBC8}GfAS=4%u z>v#{f{^s8xsQmyB@d%IcI8TxTZMC)4)>d0vZEdx6)z($pZfa|)-3arp-3<4v?OUj= zrM7ROc6)pawL4+XwO3%qwY`tpiFhBi*WrEF-oPf_WeZ!`#&*oPwi(wpwECzG4p#+$0+P1U*22Ykp!e8OjVS9QMND|{DqOHvv$ zuWROY&AhI+P}kh+R>th>R-*>qLtXEouJ=&4HWQi5RHieN7_`=%jo!L?>nCUM44c>*qpq{XFC&Kf3D|Bn0jCd(j8&^|ja6UVjk!>kq*l>g%tsz5Yn_*VkWP zfBk(NKzn`d^|jZ3AN}=@;STln*VkVE6#DDyudlzs(>#mz2HG2FZ;&1R4RYWP4fHqA z-oVTo=x?CEf&K;&^gw$9?G3ay=!gCWzOM%E&_I6!?G4Pof&K>i8|ZJKvB8Hy(C{G& zVFnHDuc7@lEI}zsQ-*Ss=XEOLTWMI8YE-8tp){Z^9q2?C^flDiP+voR4ehvLBIeQX z>mX?K0x#mujoi19eKoSHM(*0kT^qS;BQ1^m{*7u;hkDefA&qHDbGp%;p7f?K=F!M3 z8V$l88<|6+_t?p9_F{jH_G5>Q4q}guj$lTO?6J{Nj^iCRewasjoF}or#?N4fji19F z8{1>!mvE=X_So1C8@pHIa5~bNu0)`>u^Bbi+}NBNn^R+RYOK4lJvO$(#@ZXd#RMiX zg_+D^4)b`2HJEMVb!=t}No?mEzT*de;un79H-6_2{^B404T2^C5AqOosE3(1G4m#7 z-o!6xV(v|vVfIa0(wa7S15Ltc&r+5X&k9zt8m&zd(Az|BlMQTS6YrwE$rpTu_9oh! zXm9c(`kVZWJ2cVXM0=Az(ceUW6a7s?sfG5Y+M8-`>U}oV-?S0#&{Tg@?M+*tzp4JF z`kO|hwdpZF<#WE|Yrf@sbTrk`R6{c}YL<AExW*_@Gz(JhZJcU%=$Nifh4}uo%*WwW#;|ZSPX`bO(p5p~x#0*+^_bqZ@4lUZF zy@mD`+FNLE5rO^|`djF4p}mFn7Ln+0p}oaGw6{n?dkgI?w71aSVlVnz=x?FFh4vQO zTO2`u3+*kA20_aQ(B4veOYJSSw|o-)E%mq5-%@)^?Je!ErT&)MTiRjEc4%*@y`}b+ z+FN!-e@p!>^|#dCQhQ6^Y)kzuwYN0;mcyCEJiMcpn>oZ~J`RFbWod(7*J=?EDzXw6~PAQ)~NZZ5OS*qt@=(+8$bKX>A9sy`R=6 zNe_ZHcF^Vt%)gDg0-cK7dYO{xA^tRcL<~9d8ObWW&yw5STx4DSTBz}Y^$xUnYPWxtK_F3Arz(v#dr-fZ)@gl^|dwgw%Xbb#oXHt$L!mV zBAPM0#aPB+u5Hb=t-iMA+E!azyKZZ?ZSA|Q`L;dHS^?ew?nh55GA-cEZv?d{CAo&I*_+s+-@>2IgK-AMGe z)89^iyH#jy_jwS6*>{+IhrNJ3hh@i}!*qn{2-6T|MqyQ`Mh!x#MIGu$5bNk-tZf~~j zH?o6z4rFH+v^V39j-fEcew6w-Ql{!b%*N?*B!1q zTz9zcaNXg$!*z%24%Z#7J6w0T?r`1Vy2Evc>kii)t~*?JxbAS>;kv_hhnso0nTMNs zxb|@E;o8Hshnsu2nTKl+*B)-};o3WB>`^vCWxcvl^w@TNM9U?kpDhcUdxSjI7d zNla!6)0x2nR+7j%HlVG8nRd|BK~INF{tAMQg=m2DJ2s^`Eon_#%%r2Y*3o@CYUmh^ zhK?FKj%Omy?>H6bcU(q1&hNN}wK%_{`E<0`j%L$QL&xvPte%;Gjw+Tg0Ilq z`CBx1*4+8WAm~z_*QrDms-wG$?k>8!=P!0JH4+5&w0XXSX60qc|lg zLs|59GskWfu>WrM-_1R`c>~?dvzxng)7EVq6VTU9U$<#YM`yR0XzgbI-Sl?z2D)kP zW}e+LxWpB%aRc4mba&I;O?Nl@?`Hqqba&I;%{%R;JEAZ}d5sd3Mt6kn2;C97Bg{U+ z>?3qX=#DV|2;C8HF%~n8n8*}#N9c~w9icnI{v+%^LU)Aji23M_xPVzlXpYbvp*ccx zgysm%5t<`3M`(`F9HBWvbA;yZy1KVz1dCaUH`G0z6|7=4Ygo%VHn5S+Y+)-&yvGg> zkj7cgW2W7`f$o`T>aM59gA}0|LvenOQAA@FJl)^51 zmSqTUDt6gZThEi6;tb}~)BbvD?0FGyujduC z_Vms4G_#&J`LFpizUEuL=NEqCPyP;qUQhBIFYqEcanD}v*~>k9b)g&G=}8~@5=lS$ zGmyc!W3MQN;hw#AvYWl^;~<5)3#qM!riDx+8T*>W<8{k?41i)1GUdB{fr3Q?AdRHiDSxaUCk9O#|{r!b8f#4v}s%ws+a zSjb}Bao|#xCI{Ui z3*Ccs57IqI_n=Ss4Bdlt53-v}d4A+Muz zhKL-Y-~$~ANj$wccA z`yZlrh&M1q^APil%1=Q;D8g&#j?x{aJ4$y{8OotMN_UiZ8l^jGB%>L_+l)tdlV-ZJUcLs`xtQg|O7!%mRKDa>VBMNB8iPXdkY9_!;bUxc=c6u-6gVM!djFyo~wyH_Zh8 zB^kkpJmkebM`#`49gZ-w5rxq_q5@T@Mh$9Hm-;lM9UbXRS9;=}BiwU@dyd$|yKH3} zJJ`uCcC&|M_T!Et4ssax9Pu~yJMsY@;!z&sah~8w%zosvxZ}v@v4fE>(weq}5l$yG zj_iWYk=^Ky-jTh~?4PI){KLS($c=1f3rW0(?vc7j>K>_khtNIpFa8Mv zD-1?G$Rp?;rF)d_QMyMx#WUz0rF)d!jM6=-GCD{3X8rTR!6*%*G>px46SS?(-c#@(aJCZCM%V>FM^ zJ4Wvqtz)!~*~uOb1i@R+P!7NETO)Dzw~p~)5WMXhdb>2vemfd}?rlF`-u@^E#y*Ab zYwWW;&x>RyC%MSOs}!IRMR<)8l%fpfsYn%S;@)H3d#pQ;wWG0`#=7U&vDn4fG`{2; zzT*eHkFnmzShF5$)?@z)f^kovVVs6>`N&T}LeMd;7{#ehD77*Fao)^04dXP7GxKrg zJx;^8#Vlnx@tEs4?_->IJx~f0xPI2ZG_nnfTH|fU$c9V>EGvy$M zafd1IbCeTY;zKk{`4s0*asHIAasCuLnBx4Y595tbb^g?6cpm3ZeHrg)s`oQh!_+Qx z!%V04qz`?GMAy{*3}i4vh{CL<4reEtr|xARnx`H@_tYb3pQ?T8F^;2uY8vT5FiqRE zC-5GoJ&XBF%ZA2jFX3%Wv!7{Nr{%)TrsYNRv=Wr1Jg-xg>V#5@X0)a)VRXVhr@7}e z_nfwdMAqS5PutA9Y{A=^mc({;;EvOF;ayB~&uKsNE5Gw6|L|`ROb>W~2QmBUkK&Hg zy|d|dF#RbS)0F14qzxLUw?pUj_H;n+^v-CWu6cR{t4YB7p1z(<=$@{7y6)+^r*Gpu zbWhhkeK)$N|HLo+hVOFv-{_vMdxq{Ax@SDZBj}!?dxqW2&^@CJI%mAaDm2W{Fhj$P zjcAzR{29)lVP-Szf5sWkae<3m<|@~@!DoEQH++x28D=^|+YD_pbj`HOnYE}xJsQxE zMwsKwCfM`L7MSJCR_L5*o--G*gk{9Bf|cl>X^u13VE;4if2MoP^af^{=S+8*scq&L ze1*Q5`ey#XkLaBFGg@cb|4h9zy@8pUXPReBP2NCrjOG~4F`8pE$7qhx9HTi#bByK~ z%`uu|G{>}ODa(mRbBxv)tubaEqc_IfWAw(DdyL)~y)j!b`xx_#`I>Lh9HTWxYmB|e z=#8=a7`-unp*KeFEW4j&_p{7-mgZTSXVpjVEWNYz&T5M0S(<0*o#nflrFm96yxCdW zW*z6FAej9y-p}mEd6K7jj^}xSm&i^Ia*~U@VRy5?!z^Z-#T@sXlMM}XUdH)zoIfWI&YzPX=g+A?C7eH}2KG6} z`E%Z+A!ag1!<;$HV*v|U!cvx@YmRp}=N(qE3cH+RR&x@$kLEca^C_C=*xwx8bG}CV z9PM+wyE)$7od5cN!5-&on_GqIcyDvfXKrmY&aI0b&b7n2TIbs1Tr->76wPxx(v9x) zB$ECNVhCfI#1y763-_Gso^#!E?gcJ#nX6=SgPYvqHh0Ow9p`?4cQMyJ=Y>#&Viczo zr71&M%3=2ND&mgwDq{!psxgMQ8OH=BqjBC;bk3X3O!Us1jplip=gsFl8C>ED*U>#s z_dMP6bkDoPJ#^30J?}$w&o4w_it-vI(LG=HeBJYP&o9sG=$@~8zTM2%J-;hD=Wpg5 z8s=-5uVMZ*G|YGYeCN+Mv-$Qv{}2A+pCDKe@E{NKD36naT;wG``WBe!0&NSlEzq^V zE*A`8D8m`WXreL41#e-`3&vxX3nrp-fq5=C%5hGT&Kb_4e}OqJxPbjHu>S?_vA`Qx zV4e%yC01MPE96FBtiIR+6hvoi2wG$9KUQz7HxR2i);wbeG8oOVnqxJ`YL3+$t2tJ4 ztmatFv6^Ew$7+t%96Oy8q;U$(v07ub#+rGo-dJ;w)f;Q>v3g_w>%EEDFEr1EdB}(6 zg<2PCU1;wM^)9sgg?bm3K<`4m3+;YkShRRH80e=(08>^ z^TMfkvkSE?{4od?y+{STpGB3aN_9ecgId(39`$KJBbw5T=Cqp}S^O&QytpP>7S~40;y2N;SjXZf=vds9?l^yO zU;5+x#Ze5$P8VxfoXma>a+p-!$J<-1Yw>YT;{7c?#c9rRE(n%9jpilKlMT&FUPkwl zoM>O7eTnzC#6FkkUs3>XaEZ1hJ?TRv=CfoV8kY>lE|=Kl60J){U}j53qj`yaEt$>? zV$ilk*AiVz&U2AVT*fRPI6X(5VG6yL?t*Cd^ z_0E=-rvk&!w$v<_>RS3X-q_M{jAsIqn8H+aFV(zsCTW=G(leOlQtxl6?xnhy>RzgQ z=`}LZy;S$o+vr~AEi5z7WxkJPX1S~|x|iu*rhA$0WhE$u?q#}{l|%Qk_UK%e$VoIT z)38j#vI}Tf=KN*OUuI^@KH^7y=2w2_PyXiLAXxqY_P_i^?0&hOFW0x+OqXk0u5G!l z<$Z|6J6vwh%k6i06hkq`<-@V#<)bmn={#(4vAn&Zqft~Y(r9H%)>bDZWl z&2gIJG{r&!2KXt@d%HjVa3xti+QXtj}_k73iDXuzAIiw%Ze&!Sy2NWD|D== zgN_yL2*>#=y3!rzuP~n#{TYOY729}^o$Mx=ee6fqii6nY3cFm9ihZs)#_=Fn`4E~{ zKE@MhUil2VS3ZaKmD*R@<;v{nUzrm-U8!wlN4n4r^I6#wjVtYOWgjBZy3)_bm1eeb zFq&7|*UCvuVH&fT!+c^{#ah<0k*&DrO7~ppo-4oSM}Fp4{@_pk;&1*50>4GD>OtIb z)x$iBd#)h6CW@2Vs; zuhP6~2jB4nKk*B{qkEO^Rk~N{UiEJftbPF9t97q_1l_COqygUK>LxTt_iEj%b+6XF zx-DVoUafnz-K^HVdLlYk`#HJ#TQscJuv)|F-_Wqy`Kz73#?02(|C&7HBR>TRp$Nq& zPE~5~26fQ4#!S~}Tcd4_t~GYKCYD7kVL5TcV~%T9U`cBny2dQmB%*W8dOqS4KI03% z<{R{{F~>FEWB+UHe~o*r@dnnI=NflO(3Vi0n&?Z=mr$2_=uD`O)&%=c(3{{5Bxp`B z&xCm_Ky!lT1kDMW6Er7iPSBj7IYD!R<^;_NniDi9Xim_apgBQvg60Ix37Qi$CumO4 zoS->DbAsjs%?X+lH79CL)SRd}QFEf^M9qns6E!DlPSl*JIZ<<>=0wejniDlAE@Uyw z(4D9|QFo&5#FeZ@ccSjZwdhXNwl*8(X^l6u)*D(IPDi@Xm2UK)C%x%IBm)@8Afgz` zD5fxzSA%y!@Ae0L=~!GChJ0R=XIUYvMvHG>w2MM zosM<=(XnnE6LJ2!>BQjtb@N$>ovzcc?i!igr0?{ zeHqH3d3{B6udj^u_1f3hz&_XOUtf#bXj?y-Y0SWU*3U-c`nlNUdb?b&b-g#Z-ptl7 zMe}<5TECtRY(m?5UF&tN|C;ac#@7FUceef~e&IK~v-N-Q7k>xA25lR3ZP2x$4sTMQ z1~jA*O=yO9w!u5w(2CaBt_4ktar0FuvznF^V~d@ z>1f`pd9&utnm23Sta-EM&6+oB-mH1E=FOTnYu>E&-3KW`Bckxvy_?K`f9{_k*isO) z*&r;%}JV*G$(0J(ww9@Npq6sB+W^hlQbu3PWrF;BRwg@_3KiyvJ>ose(7TtvcT0HjUfHp>LbEZMwFZ=e8Nx>$VtX zGZ$}i+k9eK$Z8T<$3`}@1>g9#ulR=V_>rIZnP2#o-}#fj@UwB-zd^7)z|WcOzK!km zs81sr(}bpYFWXztiq?2D+uIRFR|cSeyYB6C(7Rph_9ZOm9afQm?(Mp_ze^J7oWUNp zoBwvR-)`>P&3yYEvhed@`zL&kJ8u7$?{TO19^et4;YGZw_X<*yYPj2b?(?4J_o6t+ zUH%Dz9r?(QU%w-SBD_X%N>G|Il*3MUypDbDu+JU#xx+4Z_&L3!4(79?EoQPKoGwJr zliti?8&|Q19d@uo!%p+x`5+JTD39?ZIq<%AYT4;7JGJcezIN)^sbgm)bnJAuolSB6 z&eqt=PUr9JL|3|_VP_&{zjFhd*uqxqV5hE~+u6Y`cC&|M_F>LDHShFxc6v8{NwCY@ zcj?~s5ZZTX-}N|8pnuoX*vT$!yPDGqJJ@ADyV|31R|h)M8LhjzVP?B}pm~>l?Hb8w z#xS0VOu;v^Yaz>s!yDVR2KU_Mp1a(0*T;Oy=X}XGe9L!uKf8Y5Cw}2qe&Y|^bGNs% z+kSV4Qj5CO<4x+*0JGoS1b5us3_IA}lKI54h$SpXC?{WSfGuvzbd!Hv8FYz)t$weOWQHruupc4A_ zn(1C`d$sM=wbw59PGbf!%waC`FvqH-d);HNH?Y?{_qt26w&XIDLtnDKPCfk3q-ehkeS#z>^CQoK6nv*pr zYfjdjtT|b8vgTyX$(oZjCu>gDoUA!nbF$`S&B>aRH79FM)|{+4S#z@HWX;K%lQk!6 zPS(6n^FGb{H1E^APxC&_`!w&E5S% zpYDCJEJF7_-TRiId!M%bk5YvCctiWWq5Vy1PAgi|hA`UGfsS;h8xeG;7rp7vXvQ+0 ziFgP5we8ooU)TPfT*J?t0|f{{!+~NHrzE8@lLO^(=L0R#a-c0*4uqrQfQ|!Q(Q#lX zBXItKw-|@>4@_Y?c6va=fzzDjJQ-Z(3Rlr};5s+B#cl3zkE|d#_$rzY7NRhk559)( zgC)>@Q2W8M*yln02VbWm+76Cl3~ysT2PdHM;3Vwwpj{r+de9p@Xl4gzq4}VF9bCz3 z64<~dwvfaDQh1+Zq~o3k-SeP(9(so7c!3vrnH=Qg6>^b>e7s723gVuJdSJhY`Vh$g z1~Q1j48iOV4aXf1jl>QPMU%{a4sw`OG#)yN&O^sJiQYq}(0oYqp>siS_-UTyd9slm z-G_A_)_qv_;oRg!_hH?K3!wXOcY5MY9_~wjbRX7zSodMwhocyV?!&qd+s$F!hgYEU zu))f0s(VOB8q-aht&y;uBislr}DVkF>r)W;m zoT52JbBg8^%_*8wG^c3xUxHN4shU$Yr)o~soT@ohbE@W4&8eDGHK%G$)tst1RdcH5 zRL!ZHQ#Ge*PSu>MIaPD2=2Xq8no~8WYEIRhsyS72>NehE7rIk*r|M4Cow}cc=uXw0 zYQU+2-`DnjX__+_Z|Hq*==~9lVhnHbHshJVBqlSJ8O$VxIm~4tt69eeHsKw-ukC$p z@9TR1CjSJ%Q9pBzHlisSj<%#VZ3)9nj&{VIk4B^A=vcHIorsR3I*v|9$I&=e;QXVB ztjGCBx3CR6J*wg85B$V0{KlXB#ozqb^=}Xydw_>{m`8Yw$7z7(V@+s==3}kUeXI@I zk7+*^j(r}}f2=cI&~|JU39Q9@j%`HavCY`!F}pmb^_Vw!%*>AMMDsEGI(C9IPH~|B2lJ9WOWA1s(J&#wUGF7QgC~r`U+SH*Q^>N4J4QY&f9-oE%9-qeo7O|Km zEM*yHfBYTX@%T#Y;P@Kuai0(Qn9tC7{0np*|B7$Wd;EJeAJ=^R=O8%oI+dtGHEN>! zgzgi%Pv|~Tmp9RULidSA=spp{Y`n=6^I3@Q6S`06KB4=>a^lf_LiY)~IidT+ade*a zy`HRqhLajjYB*T~4JVy{()lON?4^J*n-awv)O} z+U3csT;~S2xx-z|@njbEeDWjA^5iG{*J++<#VAfmN>h&V=ub1pw2Ih&n*FD_N18W~ zW}a#8lBO+f0+Y~}rY~&8%WcfW}a!6xPs<1&1ss`G^c4!)10O` zO>>&&G|g$6(=?}PPS>2SIbCzQ=5)>Jn$tC>Yfjgkt~p(Ey5@Av>6+6ur)y5voUS=t zbGqhq&FPxcHK%J%*PO07U30qTbj|6S(>14SPQOMbx6qxgJ6(6W?)3Y7i0*XV>7Sze zl(ti0jAAL?&?#@|)CyLSKq70|z(zLnE?e2od+cC0dpJNEXE{#>-oYttr?j2Yb^1Yy z;AhV1p^QMo>1f_!EaNeg)01)M(`(RjdL3F$Z$igu9jCXU7Tq3Zv^xQC_12B`HN2$}$AaXNEHp&1c4-`^?*DKcoH3MC|j7{xegV zhPE>&ImH>w=gb8(p1Fu!p0Ud_TF-ccXUy!(P5x`PuQOlsE#LDCzwsx32f^7Vd5#x& zk({{aS@%5ao@cwzjqdcM4}FQGAN?7~V1^LIFx>O(PVD#WUiNX2LmcJ^DVY7)W4Pnl z6WGDo^dLC*7*FsN&+t4N&t*gBxtDkuz2{y*^Eu7u^3s{EM9_oY=su_WobGeF&kbM@ zy3gr8Hx%9HcCZU?@?0_p(0xw#Io;=UpG)N^y3gr8XE*0`pZh8Z&g(qydp+L?4d*qS z*KocU8qPcayz|eS*?IdvKa*L^VIB)u$YPeVo=t3F8~V3MDEwVl^>-Y(Do&A&l# z;Q=1z5gx@HFFcMtUw9g`yzneKFPP_rmb9iVVRWD)`Y)K{g)Z3t1^d6?9v8fU3+8#j zT`p+5u#wH^yP)sFcHTqhg`H@c7yjTc{t1GNfQQhXp*ur&hVBge z&v**m8M-sP(+u4iEoem>+7XWK4BZ*JGjwN|eTLa*=+4lcVg4DqGuE*IGtGFHBy?x! z&d{BqJH!4n>_0{zY&9qBnH$1nHdOH0L;v!Cbt^Wv+3ZOm1cvhhK@)~qsPDJ}< z?U%j5%l3I$|K%-gMcd`C`HmkjpUc0X@$zrj6P{9mg#c-hRZJb>ma_I2eYUM44b zd6j~MP>xDep&D=Co>$!SihEv}%5-Kji@D5WJ`0Ft5ldLgGU9O0D>ty;D|fiZ2Ykp! ze9R}9{gp3p$17i92Uorgf~%z|OL<b|P`s_v_w@;SP%>b`0>S9M=|5uMk3 zuh%A{;hKhP8m`So!!_q$bN)3myJr8_wzGp>>>-)`9ON)(xxgi^qVJlSUek6>+cjO+ z?ecmEMJPrIN>U1Qyj})-zFq;dyj~HV*Uj_#XvXk1r=7+>-K-$J+6BL z*Uj^~yIj|H{X7}yyRPs0HLj!c`VF*RxBu&UuX_X6HD5Q+%mNfbbEf7@&6%1rHD_wh z)SRg~Q*)-~OwE~^Gc{*w&eWW#Ia70{=1k3*nlm+LYR=T0sX0?~rshn|nVK^-XKK#W zoT)iebEf7@&6%1rHD_wh)SRg~Q*)-~OwBhm-_U$R^9{{6G~dvCL-P&IH#FbSd_(gM z%{MgP(0oJl4P7@jaFS2>4DaX0SA4_w{J@X=!ms?!ANVbI&Ee){%;DyT{Dg*^zv29w&cFFj5Ex5v z>p`4{WmdefJIxaV#6yzQR1cd&~+By)g+9O5uXNaZN*c>6fs z#clVz^C*w=Bv11k&+`J=coDO|lLL3W^9puwCl8(ILN~h83ypXBpz}^7{n2}85Ss63 zzB82f*vW48vLD@dbl=f^NB5l+-beQx-FHr)`|cw=#uGfnv*^C7`>yW0y6?Wk%jmwV z`>x&G)qS@XI`7VAI~wk4xU1prJ~Z5Q{$1zaHM6_+fA=IY(;uAjO3x4M>{tbeA z52Ej$ncmZOPuo3R_w4dsE85VGa5~TtbG+9Xd%hQeS>Ee`&U@y0Zyg)h#JeQ14gL4b z@!k&X|DOHdbB}x8z&-Q4=PviO-TRZj(U+w!>meRSXV#-=&9eV2y;vn zXKBvToTWKSbC%{T%~_i7Yre1fzUKRy?`yuV`M&1+n(u4Aulc^_`m0O@CcnQPp@ z9R4teKg{6|b2uKLAZ4hDhU0bd{o}rWyb->CJObZ8-kEOr{_&oe&2is9K9C`p$#D(G zcd&~+Jb~REKZyMu*LB9iFhm6IxH$;|Vi6F$~QoQkhB`)0smC^I6DatYZTk z*@kzX@Xiz7dE!_8#~+;FGyO(){loruQlPj&aNEB1fd{!e?yX*Y1%JWqQ|p0>P)Xo$W% zeR<7jj?TQ6Xw9?#JiU2tAWw6idFIVy0h;qP=V{K9(R@bp z8O>)jpV53q^BK)&G@sFYM)R3PWU&<8XLO&@eMa}099E(GjP5h*(0xYRnfrmjpEc-& z8~U>g-RQw1^rRPkiKjmU7(@bz3}pl(nZQgk(DtXcKh5$_O@C_nQ_G*vU{-&+wX@;W zq&9V_kJ~!i2(vhA7H7TlY;QE2?T7E5_5HI$@cpyH@cpw>Nyqok&LI=uKWm?7AH_`0 zYB>7||KwkM#ut3aSLizX4d3wtKVp|>&Fbtgfxx+HXg>EKwa|Rd{?6$>XNTvspVNM> z2~E*|t~vI2PTRQ|%w{g;b8bEw&n?6b&)MNQt>^6VoSB_lf#!3Y*v?LNv!8?Ha+Fti zlec-7kMPcO-g(YD&ljTvr6@yrDo~M7!l+DDyzzW>+{JnCJU@zL#xRZ)QklpkCS&&J z)9}Xg)3Jl|vv`r0d6n0B3ytUBLFf7R_yE1F~PUkFF{g^?sNnz2kk_XXV-bYIYYVG7gGeL?pHySbqI!ZvhX@Eg7O02(f8 zxTxV`Su|Yq{foYT(abK||Hals(S~+(pc654p+AF2U>N!?n(0Mt7qwl~b z@|H{5E)8Tb`Y!3aG@KFWyfg}}m+b$N-b-%alIBb1dFe1mIL1>vi|$LhFX_Id`;z@% zvj0oEFX_JIPA}=cbccI^Kz@J%6h?Qx?tI<(y7SFG-|X{s=j+Zl|9su~{TP6m<_}>g zy7P7C>(1AmZ~yuBpRYS#cm8;E=O4nX^UXTntn;5icfRg?-TAun%{t$#^L6Lz&Nu6P z-IujpZpb4{#O+^p`|~~Hgm{i9t&8=Vjg8F%UDS^YuLeF_Hh6+y{zrBw#&LM zf5)vr;7U!p5sQW^z34+c{V|g(gYo7oZuyFqD|69uWj;Et=(w^39alE772m(Inx=c{E?sd@Vl^xZaEwv?7u==)SJ| zy6)?`uXiE_-Pd(r?}qN{%UFS%y#5$#(0yI^b=}u>U*E`PbYItf-EOYyzWy#cZ}`35 zh(N;)4L3C0co+>geE){;-!QWq_J3nIBS~U3V;N5h6Uksci&%ob8)kY#+YN0ubltGa z8(;D@-|_=L@?XsH#?RREjsIbmH~!%7PV>B3hk86jLz>VO{WqJ@9Q(g%|2MtkrW?3v zo;SVarnZ~&Sb)Bp`ffhTQgq&2j@Fy@e^c*GH*iz)P4m3@AHG2IP0cqo-_(3l^G(e+ zHQ&^HQ}a#DH#OhXd{gsZTL0=r8gA&X*YTgb6~sTg70YDSVPCg4VOO`dVNbVq^91`j zNG?Ztl4p3H7kHJA_y?cz8Jcf>#f?DVc2zoKU$;}4#1y8H&J1QU2Q#^?vPlXumUy+33HMK_=Snyun-OyQA;U2YiUmJ0GLdhpE<)h zE|AX^t_1@3{KoJ3ZQOg9wsfE)ororeE_9b zhx#<6G5wguPTu7MKH?Mp$-nrF|L`Tha*=$laE%-M#cl55`@u4l$M=JksfOz5>uGQbY?IUUBTJRC6jr~XCaGt8_mJ@`4G*)f1o?~DcXbDgP-#S`h#EdO(0l6 zTY-vHq6+3yARLVa9;7C<(ORG$W>%m9nhQkHo{mJ*jUGHgFA^C^5~G=bcNXx@0^V8R zNuK6ep64ZA<`rJ$HQwMYys^MLyoYxd3{sH76rmW!DM3j}VfF>f;f)0=Udiyg>)CPn?kw^wL@p2c?sVO@povT!f@5YGSxG6-`lJOq0#JPfle zJOZ7C&9m?xo?t%*$>j+83!7u%C$ay+_FvdL3cG>A=2_TV3TrETotx+@{CD3y?gxVY zbOb|!XbrLd5WOL8AVhPBd4|N%6U`x-Lo|nI4$&N2#o(Hx>VM01Gd5X~W)Lo^rBTtssb%|$d9 z(Og7x5zR$37tvfqbCKTkr9Zlh=q{qWi0&c@3`KVl-9<*CyNI?TpK(4Ae4r$5=m9tM zKzS-siON)=I^jG>O=?q*`aDD<8q=JPbfFtPa0d@)dqCR*x*o`27yjlvkjGj6Zn#K3 zSGb0mJn&Z_Sk#+~hM}csRkReXfsUd&iq=I((T8b=?-z}sE52X!5qe{%MKu&%&*N-j z3)|VjPIMLB&0hAgp937?FsIO5^iR&Ax#%Ty7rl)3qS}kzz&?xq-G7@qfnYIh#X1m8 zXUwNqcQh7@#V(84WihSA++Z;?E7lLq#q6utSjLmW6s9qqnPjn?mE^D%?=0q>#k{lF zH+;tr{Fh(&mEZUuzjK_Ecw@2CoWVPbH^6?2Hz9%+w4@cSiNx%Sx5XQax5o~OcVZ!n zS;A6Qps{#1I*UKXYV;Oghvwp%i*Mv>zU6y<n@&$?h+5t z5I0$(Db3McLU#$>C3KgFq7AxB=q_P5C3KeL{o|5Cb3=`Q6?OX)84 zG5_FG{>|s;E~UGa?ozr-nSCjn^Rkv{{!n>(aVQ>n?59rFECqR{ClnSf&E4 zaQkK4ei=7ZrahgACWfwbqX)4(LT~!em;MYOfpJV^GE*_rGTO>$E2FE-UOwb(AXv6E z<)0jO<@wgU)EmB&csg3 zYAE|Euk$8v^B(W>0lLb5#3#7HvY+A(%YMdx0>N@6(Oj-9<X65Fhxtx8KTfs_l&{j@YIbG#G z=PTS;xo>c1<-X$w{);;+_cOopTOe3oTX|jOb(OC}eICMZqkKae(S!)xS$TI>z9p@& z%ktXFn`L=j<>%wZ$}eOQi&?@_mZ7`6=JMJ61M@8ZZ_Kj1`zx=zyzcV4%j+)h_fh^w zbeGp%{ugvta0?a8vx4781+%PB58V}XSI}KScZJ3@MRx_=6r_$yK6}_XP z8>ncW6}=@?TWEPIqAyfmXjQ7AGc+8nq4poDH`EP;Y7RBe(D9_8IaG6~=1|R{nnN{* zY7W&LsyS41sOC`3p_)TAhiVSh9I81~bExJ}&7qn@HHT^r)f}ohRCB22P|abQ!!(C! z4$~Z_IZShy<}l4+n!_}QX%5pIra4S=nC39eVVc72&p z(;TKbOmmp7u(N?+rQ$TA3GSy-b6OHf6c5vm_H?8Z{w`MPN;kR_$0PJ*ILVA*923!2 zNn0gdmA3E(e*}V+Lnw-d$|Wg{c~mx!%5JQ(c~th^%B|5-xeZz>cR)vF9hJMFqw-)9 z@%_r97>(~&HlNCqn2LtV&+r^C@Di``8n2_P@|)OYWxK5W9`;%JLp}-ws}w?Wl?Nz> z<|?JoU8M}#t7xxcmsLX1U!^j3T18uxVT>dR^QkfxjaBTi$^=r;TE*YTDrQz?8k(!v zSCxeB1%g$zRn=8hSJkS7Qv)|v zwI;QwLp|JB)rV+EBkZ!OwyI`XRaey+xUs6Un9UqAn8$o{SJhl~G4EiWRX@NitGd6c zx~uB0s=KQ0s(u?)zd(0Y-BrIqcQvCsOJ0Ce7~BRRr{HT;Uow_$v^sZvWMbWB1kVyt=;X zW?Efab#2vkRUb(b?y$N&SGV8lDWqbK)hA)c)u&;W)zi^g-8`$mz)QTsYq-hkZ=t`s zIaYrc`>$^Q)xD#-8>nuc)x9NLTX-=_pf6lscsa_WGrS^N!|gv@Z@3!>*Box1;UgG@ z=5Wp7n!`1RYYx{Ot~p$DxaM%p;hMuWhieYk9IiQBbGYVk&EcBEHHT{s*Bq`nTywbQ zaLwVG!!_5?TtjmW%{4UF&|E`v4b3$)*U(%;a}CWkG}q8vLvszyH8j`ITtjmW%{4UF z&|E`v4b3$)*U(%;a}CWkG}q8vLvsyXHU0<$A1pvE>fnAJe29iLp(zoxpe3z|#NWjS z+tHp5L=!`I29Ur|hLeo82emz@>%lcV&yU;<1ZxJ+P_qyrm`6?XsOiRPnnz9Vt=SkY zHJhQOW-D~m)KRl7I%@VN9^bDym_&TPruozy%{VmFJVY)>d6H*%mgmq_^9Ag(rd`&2 z75l9D25)kkznkv|g0+HZu2mS_wThs*7EnUmYLNWkLFtTRV#yeEMN&sSwS|N*}*RMZ~*VD<(;*>v(_2Ta-NG^<_cH2 z#&vFT3vaA-hkJNu?T$p#nXdF8mN*`vCuU!}FWy+YA9hfCAdj<&Eo@^a8f))HXYIZ0 zLvQVaXs)ff_7U>zqbI9SwCf)VYL)I=)}W_v@HhUHh+Fflw+@g=&QJ zAhl>tE23zNzPe^wS6f|eb#>LX%evV-#%k8Fo(-5|-Hq6D-L05q-Rt)J>B(m*VA3k z?CY6*J>B(m*E9cmy6ZQi1!h`5k~ZkBue-kP`nv1ee|`I}ue-kP`rXi7e;H<7->mDK zb^SHyuCKek?)tjxn{|D&uCKek?)qk3Uw3_N4;7^Wak%}5-2Ovu=%IcLWDtW%WGKTK z!6-&EhOtZ_g(+mRh%6q(OdrzrkhX_(J@gVk27(O&)S*5a8Z@E_5j4k48rWk4Z*Jh0 z8)#`T1T77Qp`(G02Fd7XFq1j>euD)p#`hc8YlCd;w1I{OpYb_g@-^S_JwNbw*MIpL zH`w4e++l-1I35T#tcB)=^>_%)4I87oVN)ZWkyHnh)%`Wr^^FxnbsFrS5(Ps1f> zY`7G=Y-pDawKjBv4b80KYBV>ruZDZs#{rITjHh{)w|Jiq`IvvuH*8tF{O>>JI-8yn5V4jRqlb>8G{-sJ-{ zHu?yijXvR@=xy|GG&j=R=!-zGacRm@o{CgLcVpd+bvM@CIGhL3-B@?yI_PdZmhrgB z#uJ%>?#8+s>u#*O@eF36yRq)ZcGFmQ<2~qX?DyKF6dIanXriG>7#f=ReiPqsVrEV3 zzezhf(1{qj(2X9%k-#uUl8nA4X4*ts6Kzd&HL=Sk&+&!*neR9n-b3`bv6eN9I*2AxgE zp|z>~H`UwJ4K&r<)I6I$#WOs|3%rc(rn;NzZmPSf{WrD$rn;NzZt6~(>W(NtAwqb7 z;^>ah9iclycZAtTn0w#UQk|(B8rgwy@6@`df@-6xv$sWj_Zo zpB6{Z*y0#=*}^VcXl>yJTbNmk7t!3pzFK_3KlvA5@D<ZuCHRE8VSnqPx{& ztj0~YTF*vwx6<88cPrhkwzCu6t#r4tn^wA8eT>f5ey^=tqoK8i)*4!OL_=%eZ|(c7 z&8)Tkw;s({#*@NCCNq^Z7O{k7tVCaHGi|M{wYJu}TH9so@A;9R_?6%IALiKl5A3=1 zDa^8U9)EY5XJkVf)0Aekq!s!j%`q|x`;WB$NbiVr1Ciz#=`E4kBC~iDeUbViv&lhc ztS#`oJzU?RTX&V1UwlvV;5Upu2I zqwjY#vyLaY!ZmL27q_{~{Xno&5c}^`9=q>k=biL*GSg1lI%(^qtJ8Q=aEG1jxs&~N zN+TU}>@)*A?lcFp?397dPUhL^4c_7%-os6H`Uw4<%(2ryu>Vf>-^n{Vxq(jR*~wd? zwMCbs0{Wu$MOUFJI-{$jHQN58^+vmaXwA{)89j~(XpYt#tvOnAwB~5d(VC+*M{ADO z9IZK8bF}7Y&C!~pHAicX)*P)lT647KXwA`@qculsj@BHlIa+g!<`~T}nqxG_XpYew zqd7)%jOG~4F`8pE$7qhx9HTi#bByK~%`uu|G{HKTj?o;W zE9TEYuyZjQ(ir#Cxfv~JO(apYr5zpUh`)=SyU>+x#1cmzhLOZ*#*&J*&e}Tb>b#lP z`8^QqQkVzO(4_>WFpn|&Q)-o-w^hzlw08CPv8$PNor>nJ_SJO(3t5b| zuDZJF>iQAxtE=C3*H7{L?)q>3!xy-*u3zyD-v)x+v~|A10OGnvI~=90-gba&I-Z4qx{p55NZEW5eCZo0ea?xwq& z?rwe?-9ATmH{IR7Mt66&(A_+{hhdi8tD(EQ?(Vv~>+W8QI_U1MyZb}v?%oHT-M8@; z8oF!fuA%$KXz1?y-F?5inRWk(KRL$*E^(QwT<2yW*u(yN6vOU&*m)0qJWnRTi_IMNhJCz1v3g_OK&<9i^NbzNNHoW4j@2Bi zIaYJ5=2*?KnqxJ`YL3+$t2tJ4tmatFv6^Ew$7+t%9IH82bFAiA&9RzeHOFd>)f}ri zPIH{*IL&dI<21) zbDZWl&2gIJG{y3wB@ zBr=R7v^}Ej5nYe0<~e@g4)+7Wo*H@!{*v7YA9(|db1LQBsGwDfF=j-EPt zwn0bFUi8KHdk!K2-|uNYJ(C%WhMosG%n^?9G|%uXx_Um3UG}ugp08k^JzwVyZlSs7 zy+E*60L{G$p}SWI+Iwm5WtY85pubmX?6jA*Ui}!zV9cl2P&D?k$6g~Ch1OpFKK3%R zUgOZ*%f5QeC6oDN@hHn#$tJe5lilpcJ9~L&FYoM?$Df?z0{L9#3Rk(t4gSI#d)?+P z-r2hY_S-v#E_9~{vBdERX5YIH-q<@HJLo-t4QymHTiJoe-n-D*dk;^bxAy@w_txAy zm(!f#Ea$m|?%uk4>+Y?)_jPWfySMJ%chKFZJsokAeLB+(-Fm6!U48Ac?@Dr5#ah;}9&_ybIQHCk3uf7O8#?=%XWyUrh2Qv{6P!eUUvuo6 zhyC}p|GwVQ*A4VF&%WLguPwd>t*FTO49&>7zWt?~9BuQ%Qe#A}W>&-i7mKy$q2 zc+K&e<2A=?j@KNoIbL(T=6KEVn&UOcYmV0(uQ^_Gyyke#@tWf`$7_z)9IrWEbG+tw z&GDN1Y3`@FpXPp=`)Tf{xu52Kn)_+)r@5czewzDf?x(q*=6;&{Y3`TJW2`}UKi&Ow z_tV{PBb(9PPj|oV=O7_4EihQTM%FxdA8`~F}v8+Ty5}MH*oe3?`nqdD4dK270g60JCOqj<4 zG$&|I(43$-L34uU1kDMW6Er7iPSBj7IYD!R<^;_NniDi9Xim_apgBQvg60Ix37Qi$ zCumO4oS->TbE4)%&54>5H79CL)SRd}QFEf^M9qns6E!DlPSl*JIZ<<>=0wejniDlA zYEIOgs5wz{qUJ=+iJB8NCu&aAH8jA3MAI4fGqgLg^rRQPiKia}7>K`%LlYUwFh(+p z6lRgheB8j$N6|D?%TO&tpXD2F2ZFVX4!!UCgW)8#5VOSH)VOR(HpkY{le1Dkl z4@S!KbliFw=ULW1V8=!r-_Tf#j$Km>ix4;gEYa2e3Ib>iy!xx}& z_#*6ZxE&7HI@}(Io7wP{Xdb?q9qeKc2ROtLj`1pQ@ec3tG2S`cJBNGch~ku_G-atk zMM4Rq5>=>%H;xF$U5xO~5lM_@EaORKB9oZR6wH1^I^H;926ixFHZSoCuki+NqjAK$ z=p6ArAEI}}Cukm_dBnd0!I8x%K`F{m9^E5#kJLR<_sGgrMfXVEBWs|0XwXCj-GzMbR)y!zc}-%AsMD?~n5RQD!#E{zpaf zFl}j1N22LWR|YVcM24epl$nmwHcHzlU8C%B)G?mo8J_0_Uc?+ny^KANdL6SI^(Hz; zndhi`fnZXA0u-VM51>EE9FvM;|4H_rgDoUA!nbF$`S&B>aRH79FM)|{+4S#z@HWX;K%lQk!6PS%{PIazbE z=48#unvrQ?P-J`XQZcHyGsCpd(*(b`6v`sYA!j9HCwYh!xShj{uk5VtiZ0karm z7Gu0~OePw}EX4Q6`2Lus`2Luc`2Lt3?8f)U9N;j%KgK@CJd2r((J5BWF{9H(uZu5r4?6{i$#Yg`%J*0^$1 zAe1mFQH82#8>efWu5n5DyE4vgjT^^!CXmV`+{L&lOd}1u9H(uZS&q{+?p55@xYu!8 zC-Q#tSPhldu$Lk(H72V@EqI3Ljf#8IKXqcd3f`$nt&@jRGC;0vZ zGn-J8X0)IckvvRW+S3vHpAe7TPq6a|`X-p^1Z@+vP0%%AKL>G#6YP0{{Z4p_r!mI~ z&tk_DUc@XXyo}BX<~iXex46T-KrqEkrW8PbiaDkf#{N_6KgByz+(3$Xrg%$=wv@i~ zLtl!%lp!RbGi4}RQ|v!QZ;Bg8(VSwQDf>8p<`m5-no~5VXim|bqB%u#islr}DVkF> zr)W;moT52JbBg9v&8eDGHK%G$)tst1RdcH5RL!ZHQ#Ge*PSu>MIaPD2=2Xq8no~8W zYEIRhsyS72s^(P9shU$Yr)o~soT@ohbE@W4&8eDGHK%G$)tst1RdcH5RLv80O{`B3 zCXkBznK*@MOlJl&nZsN%nTNlJ6Bm=k5|*)?$Joj)_V5IU&^A%qL|qfV=0+emDV)x9 zL&KyvdSV`v%wv)pn`9o7ymwMMS|-gx%cKl+OwuuF5jrMqU=zMSX$QOU{YmCC=`csp zFzGDkxkx@&xyE(=?z)LxPO{5Mcd^gO0fI!Md2&~}qj~Zp=$_mQ?US`nw#&)=(LZ?* zb~;(x)jf3-$>^S{d+IoJPkjuXQ@`UD8m4NPreRt^G)(jT zX}&+r%%)YMJ`HF@6C!9%OIl<9(|Ta{)9iejzG-GUP1`hW({xSS&Q9FnG<%+AztawI z5ObV%7(1SJ46~f}6gsDw=d_FDbA@ZT$!UL~f0{W?yMz6w*?*dMq`84K^Gx%WG;L|! ziA7(UzO+8{MQ2(+w5HjAn%*=wkfu4!Jkz$Z1I=lg(=?}PPSc#GIZbn#<}}S|n$t9= zX-?Cera4V>n&vdkX`0hCr)f^poTfQVbGqhq&FPxcHK%J%*PO07U30qTbj|6S(>14S zPS>2SIbCzQ=5)>Jn$tC>Yfjgkt~p(Ey5@Av>6+6ur)y5voUS=tbGqhq&FPxcU*mP& zL}R+!NOv34^-b3{UEA~!ir_w`yU*$Fb9zbK=kzj^MdNh$Io*9u*Ee0;bZygzF&y_f z-F;3^#(hp7!#KvHbGpXqN6|N3+jMQypTloz`U|{--_&%!sp*=hzk%i%x@I)Q%w|kv zGE+%oI_FPOz>4v?{ z)G)Ib_BPWzW}3%LJDX`9Grf1F{~npCW#(M8%$$#onL1`JLC4HZY{mCy+ULwC@co(Q zGxI2RH&esR3tZwd{(jHAfqR?z7k_u%#x7^t<*WeqIjbOr=z`{1J%~f|EcZ4`_pH8X zpQU}4UCwfEv-HnOz)ojro3))??7@6y?MLG*dz|IoX62%FmV29JX0x6~^DO(C^%igQ zF4|`6nyqVgVcgg3q7$ILAEa6u>O!xW75N=jfiJdyeio zej9U2qkE3-Ipxtk$1Th;&pCd(bIfwiaCFbnJxBK(-E&4W7Tt4n&q+b|oHgj2^CNcy z!MPgdYM85GZU`FY`u<$spKE4wtJ09hG^H6WXhkFsWB+p>!S3hU`CNT-&2+A|x!UIH zn!AfVxWl>jJlB5b9wrxaoO={Ip8GUrIrmv~&Na`um$}MyZsI2A-r?_lbDVoW5X`Xu z4ExXUjtn=DVV)V@lA$dlj-Ket(3jDV{^-mYh}I1I&(NFU1~N2fm}kaLcB45%bB5*& z%^8|AG-qhe(43(;Lvx1a49yvuGc;#t&d{8pIYV=X<_yglnlm(KYR=T0sX0?~rshn| znVK^-XKK#WoT)iebEf7@&6%1rHD_wh)SRg~Q*)-~OwE~^Gc{*w&eWW#Ia70{=1k3* znlm+LYR=T0sX0?~rmlH4i6NOWxSx3wNM$lpm`Xa+naM2tU7VN6Jm#~A#Vlh3TiC`9 z_M&Z`wt2edeMWvDIKL9@>4b*)UFe2+%r}quZfw4J%=g~;lh87M8d~PhK*xL?^E1#f ze-&%-{rQ{Nito=ipZQO401fj`a+))o71HlDt(Y&A| z(P&=K72ONEqkVz)1$Mch7y1|U#ZDJ!Td`wP}f3T3;QvULAbGn zLr7pK!*OE^N0LM`cDYd7LbF_`YvB>x*urBx$x}STb3Bjkg_;+>%r(q&;a`~LLie{& z_afbkbT87q$Zum&2)Y;PUQ`U-i`>E@^IX&ivs^R)-HUWD(!EIcqC|$Fdy(!%qtLx* z89Enz!BsRY(y&OwqPu8V?E8y-f3cY@E=NsjQJ!fy!aqyx%el4Jc_Ut-QnG%wM-WG8x;=v|_B z$v!kM(Y!?O5`Tl1XkKy*H@igJqg80jP~6X>BS~U3;~38bCNhaBOeKvO%w!gG$zUOm zv5pOFWE+2t~=%XVO9 z%XXuAnSCvLju&`|*Ljn7c#r?^HQ(|*KjWRtymOg%F0V;#>QbMEG@>z0Xi76$;El^$ z5s7y$pN;)4&tyJ}SWFg6coef=z5;Jto{b$WU&X)pjL-R!Z_v2>J9IApf&Zd+`7dZ* zu6g&hBvSgB#9hLsPYVWsb{^!=4)w$lDr_M#8*^k*Q0Nnj|c zOlBI>(YMk}S87|SZKbZ2cDeFBKHww%!9V#Fb6ojv?0MxEnB~f^(7Dn)vnvovC8|)J zaP()JV|GpKKimGZy(8NVWSeKUw`6O}p2QUNW$VkH!Ax{!&qiyu{b%dVb_3a(v&}R6 zZQez5w&rZj*_yL8XKT*ZoUJ)qbGGJe&Dol>HRou~(VU|>M{|zm9L+hJb2R5@&e5Es zIY)Dj<{ZsAnsYSgXwK1`qd7-&j^-TAIhu1c=V;E+oTE8MbB^X5%{iKLH0Qj}hkSzW z9Njs(b9Co?#^>nH(Vg=(x*yZ_SZ7AF1UK}U8+vRdIjm+4YuUi#Y+^H8*}+bBv6m+} z#0$L2>%56Ocud=4+8)#O*o8oFRXP04Sv7(rG^`rScv6^%nXH~+^?FLty+3Jt^ zyV<^0|Hx1L!XKRAG-tTZZSHbE5L{CT?_A@ZYrJz!96jkxU-~nEfed0W2@J&>*9>PQ z-nnKs_Pb^u2RKYFM>xtc%zn)?c;lMqu!A)(a)oQ$;4ki=am_t+t_@HCy=x1jd9CKP zMTzARdeMh|=w7RPt?sqD*A5{O-D`EP9f9t(yV!%9T)Uq`=w7RPt?sqD*FMS9=w7RP zt=+8Ez4ixmuJe0c*8>gfG_2FGE*=f*e1DzquQRiC_P=f>vzbdK^I6DZmav|UY+*b4 z)|u%#ZR@nH)3wen*PY=k=ea~amodk6SFz`HH!;g~xA?o$JlD6UBhhrG8{N^r-W=D* zVgKvxf4z6CcLVFqbG^5$*S7v~Hlc65zV$oUiO%)A(YoIL*Xv#H2G(m{Z=UNt3&Wz3%n)zux}W>t3&Wy*pj6dqX=q(1{qjqI-kx4Z1hz-eC3{%zlIJ4Z1g& z{|4O~*0BLI-LRQ$=-!}vgYFHwH`xCM``@5@gYFFn(Y@g$X1&3zH<fQd z2cPj@e&ctJW2TR5dtBS&x;9p%4M{9z1sXO!#%k8G9y8f!j~l&tqg&pnW#cPo+4u%J zHtN{;9y&ID!}s|9#$Wg!zQ564H=e;xH)`0_gb13`l1QR>7+ss%(jGUssT1ySQ)jxc z1kIb4vl7jlR-t>-8nkcHzR3-4vd>NWH*H}n+BW^j&-{w{Z2AL@n@(Vto9uFv)=h43 zlbLNg&)?1VwK+fm3Q?5el%fpPsYM;?(FpI{?46svb8{NgnaON2$YdV#S->K)@W#!L zvJCIs{1NuM`JeoY|L{3q@Fibi_M5-M8#n)e9c=z75ZqFQYJ~G3wb8hxE;_f=rvZAm zG)D6l&0Cr=jdW%(i@E6DqI-+(ExNZXWHGw8=-#pv-CI87W8CDHPx%bpTXb*Hy+!wy zulW|;TXb)+n=QJx+z$k|>fGx0x^*fVwrbd_Ve1?;Z1w%EzQ5JXw%Y&J9qeKcPq3eZ z9OekG@&<479{RSL=~iu9wQbe4%`Ufr-Guf$Qr;eREcIw#qGryu`rsc3$Hqx49Px?h2w|mxf)% zFt=SAcJ(2i{tRRY2_&Lx*DyvfiX@V;>s@2nkLF#6IfCY0PoaC4neNiQOZ%=Dc?tcy zUgb5k?YhMs^zGKSy8s2zxw|l0cbnI4y}OH}d3Py#(-+OVHSgBETk~$syEX6Dyj$~b z&AT=4*1TKuZq2)=FctT>TjTEMFx%bwc5BrgL57C5Xv>=MMw5KE9v}ZUw*u@^6-~i^m=MZMT z$F1yfD|^g+&r_KD9y8zLO?xhJ8F#Sf2DiA4dGEQ4nePo?=6lV2ulMZrp1o$iwe{PoZwI33LU-cmg&pj*gS~?=|GmQ)iFxl`NES<3K@O`~$Kz~f8$0p7z5DRCz23Cf zoA$byz4o!!?Du}iSLAVln}OgHX8wfvK2eQYG-eLld7c0AGr#gb{@^61IL)8xnB|#mt`g`x}1+g8R&8pS|w$t$lX6uM*XHklNJc5vH;U_p|R!-bVYr_tC%a zV?Ng@9%e8`%B>a`^!-g-{0?s_J>mw4f{tkmhq%8 ziOEbs*ZygwGlQAT!mRes{(tjXAb3FAfl|2l z1LZNF17T=9P?;*&&jGCmYG7suYN7c+Gg=cx8#)qA7rNoD4h$g?cXc2M?>yk02fXuu zTRCu;BOK#tp5a;C|AFUuk(cqt1FzyP4tVE*TioGZAb2o9K?+fr5Q<>-2i@2~Z#-BM zJ2+T|zVu@NgGfN*!J+6pIGmB_J?M9EQ1d~}2gh-ML*#Olr_g;+_d(qUbsv0zm(YDs z_rcfDeef@C2mZ^?{K|PQafR#XJ7lJZv>n!VSl3~@Jlu^Q#LmWqNKNWcmxe^qo{mK04vuO&s_m$*qtn@pzd1*L z=LCN@>D}$C}70`055;~6QI2MkMW6f!W?;mSR2Ymln7rJAo$21(v zVHImw$Kz~d6S|IVVH-Qx$u9P=m*3EQ>^LXUeC!OmkDW#PG401LVV}qJAG^x6K=4Uz zPe#&)c9_qTozVDX40idXT|TMxNjLbUnLYUknxC|KS+ApcmgZS+vxRN!U?+RfJxlj2 z-LrJhI>=#k&(b|B2i>!45`i~4yDkmTJzMu|-LrMiZbCD3&(=NLZD#A9orKQWey_7P zqhYp&*&1f=M#F61pY8jz?QFLD&%Q}Mx49b-I46K03R0MIRHQQ1&^O0U=V+UwZH}%v zZaHTP)0oao9_A73an577^PH!!%Q?@WbB=w^NoO@{Sx+XL&_Bl>=WNCO=eYkIbIkDu z=Gf;Pv!rQDt3W06rRhtnP7QRXg`+ji{nPZOc>`&h)9f>CB9qaara4V>n&vdkX`0hC zr)f^poTfQVbDHKf&1vqRra4V>n&z~P=uOj`rZ>&r(=?}PPScxa_i38b_OU-8aIWUL zn&)bsTNS-?_0H8h*X`$Oo~wDT-nsSBJlCG*y8m3wbEonUsc4?7d9LQUn&&>wlW3l+ zd9L5qT+MS|K-=8Q0fB#&p$Xp5Uoo_x6|uz8mJW2JGx2n#2R-S<{q!M`QH*6g_WGBd z{-y0NZGY+d>nqYZ6A(DBIHk}qFNFIjPetrxUKPwduMJw}wL{CiPUx7YV_tW3%p1mo z`2M_P#^L+(rtlCm&@gX43t7xkRf_wa*X3J?HD6Uk&eYzP9-z8AA&8Gk*da=TE{d=ey;6t@FLX`F1vcCYtBF*Zfy` zoi}-p5BQi*`5(XW2ebGKbIv#Cd~?pf!7cvfPC(#-00If300k*bQOvj?m=c(CK?3f( zpfCLy$O8;wFhj8W1;a7pf)TjEg3)}>kNm_h{Eo&2f1-22Y|_xXU>=$mXkM_0>)a%t z+uREXT&R1Y?uEJ+>RwogBIsVIdtq^OFYHBcyvc?ANJRHS-3xUu)V**hN$6gvd!gGb z)V=T(bT0IJU3d)*3pFg%u<&j`;35r+e1DPeFS4^m?!PFUTGXK)4Tz!00ELi$3LZzT_Le;2kcz z%$0z^ElwaJhRf*T1|AUD3AuRo>t&>}UCVXk7jQZn@ko zmup?_4KBB{nqAAgsbHxnYcg3ST&QmaDx@Evyn|~VH;U!T(JwCEB3Gt zy(Os`={$o_Xg56 zr`u=xGFG5DU30qTbj|6S(>14SPS>2SIbCzQ=5)>Jnlm(KXwJ}_p*cfyhUN^-8JaUR zXK2pQoS`{GbB5*&%^8|AG-qhe(43(;Lvx1a49yvuGc;#t&d{8pIYV=X<_yglnlo0B z!CG`@=+4lcp*v#}ThN`MJ7WjBS8H3{o)J8YH?-OtTKzJw@&<467Vq*NAMha`^BJG> z1z+R#)HYqhV{zIF;z(Z6;&?zmRl+IcKwG4``|IU3il z#0}TF;aaV0-Epm*t=+(X&3ib&A&zi@Q=H`-H@MB+fWUPD6vCYA%(>2->w1#F{q$u3 zi45cc1~G(Tm~q{3yo+__T=y;C^CLg;E5GqOfAA-Ezb*|kuKNo&Shs+yT<0eF+~L2* zdjWy#b*>Mj0D9LKM)P{j>x1b*FM895{^(w>d%f=Uy4Me8D7x3{UjHDv*MGxz{J{VC z1>Ng)uh+d^_xf4PLHByy>)mF(?)BN|+~7C5p*tEjXxN}(Lq9ZZ@cj+GzroHnxc`QS zd6dU_lBao==XsG2_?XZ55`7!&bc41H+BWFg;FcTCah{7@A&-Bs#|_tT=MA^8%MJhX zU#ER;Y)gAO(wVMwL;ps5+}IQM-{}4u&9TuN*l3>{&9YJ3#*g>}eH-;{{EDy9x$#@H zZgl^RdN+Cl8#QmV&y8ouMe|0@8#Qm#yixN;%^Nju)VxviM$H>FZ`8a|bEf7@&6%1r zHD_wh)SRg~Q*)-~OwE~^Gc{*w&eWW#Ia70{=1k3*nlm+LYR=T0sX0?~rshn|nVK^- zXKK#WoT)iebLQV%;4->1b!Y0%)SY>qo9NEeop~GGo3w43#GCwqH?+wc+BBDWEMyUj zS;lf!vWg7WvX1p+vWe{+B8L;4!aLZcZIiZ5x;9rJ7JqX#zryQi*!(u{@;)D8C!0UT z%$paWW%ClWY+iwm%{n%(LC5C3WaImrk8&K}-+Y$8ansEjwlt)aC%1j>NF`ncpp5_^z z<#}Gjj9XvkRm{0{1Ma(ZGh5j~7CYI+ZtQ;Re$2S_0B*4La6sU;DpaEe;nYUswz}xt zR-Z`pZfk_*ZJM_=V>&ZO-P?3;dj;Lw*0T|Ba@!WRqkEg~ zZMwJV-nNH*=-#G#o7-&Dy*&_}+x=d*KZJ(u8n$cL{x}-8`~G&{-)?8y-GBSne9QOz z$WQ#jZ~VbhR*=pb^li7(?b^0$+pcSeTkZ(qKFU*xFe+n@JF4Q&J8EK=J0j4z!#;PU zFpddKVk*~n`%c4*tNoR#R?p>M}p)}eF92DI*Q{~daF zcmq2$@37CT(v(GWmgX$YS(>vnXKBvToTWKSbC%{T%~_hWG-qkf(wwC^OLLayEX`S( zvovRE&eEKvIZJbv<}A%wnzJ-#Y0lD|r8!G;mgX$YS(>vnXKBvToTWKSbC%{T%{w*k z)Vx#kPR%HSg5CQ}a&EJ2mgryi@Z|T{}NwKD*hA_p|c=hd9bHayZE; z&Ttlg2X|iJBA3YHA8rN&?kYquB`8HG+IDH%rE6CQl6jLk{Dp>H3t5bP?6Qwt-qB@1Cn%=N9?=%Wdvp_j>~|fWn+?{EBp?!CJA&O!IyOI*R5+M@)`Q~+vEN(asU19zuz4Dy@CDqx!)}Nwe3H}8T9SfxBmhc(YgOJ zTKBvEe!cs>f&H5I+h=ww+MqdGbGGJe&Dol>HD_zi)|{<5TXVMNY|Yu4vo&XH&eoi* zIa_nK=4{Q`nzJ=$YtGi3tvOqBw&rZj*_yL8XKT*ZoUJ)qbGGJe&Dol>HD_zi)|{<5 zTXVMN1DX$LKA`!4<^!4!Xg;9%faU|54`@E1`GDpFnh$6`p!tBV11mVp9qt7L9`t?= z7N8JCDMm0QDMcB|;_u+W@>HNAm8n8a8WBx%S`vr0gW3-2Iyiy1na_R>qT%3CaaATOM-DLm%Rvhd$v`_M-XF0S=-0&@pr$I*#^3+7G$qp|j{e^fzvLSli)- zG@%*xbGQW>54+>x*2JRqa69bma7Q#BcCW*UJiuUvGlJ11Go43xj3;;&a~?M5VRIf{ z%X&7liLGp7J3Gi?7ke<{;eBLd&Lfp@-y>D2PB;HRKi8ZWa1DR|=_YvJkbRW@uWGB1PeMI+>{pdbgkubc; zqt&R1?xVVo>OQLbXkF@~`>5`tZgW)k(E;c@>hI*y)o3`X;i!hAo6&I8_mBGiQ9C>8 z{zoryg@3rl4Q}x-cLD;Bm7p{sltbS!J3XfDn6_iOj=ANrWX3X{Nla!6_IPX>?tE+p zc6sb!bRM(MV~beAGFFgI2KtZLIo?2y<{bOX8O0bh=V;E+oTE8MbB^X5%{iKLH0Nl}(VU|>M{|zm9L+hJ zb2R5@&e5EsIY)Dj<{ZsAnsYSgXwK1`qxrbz3aKCbz==Hr@=Yd)^|xaQ-Uk83`z z`MBoenvZKfuKBp;<0*_|BD#<3KCb(??&A-UitgjOk3WL$4cUOT26e7U7hgOP8OsH#VAfm zyseXEv5S*-anhV8qtS4(CBA>s_fNLP_fK}j_fIA=2;V` z&jg_RjP5f9(S0VKu5_m-z0rL}_Zi)1be|c(Ky;tcea3Ch=sxo-I?woxp1FvIGaAll zICBFHXMF#R@1L==v+jSkGF7QgO(LjGUFy?{SlZDMeP`|TthTe-&gwermS^AN13uzY zKI3!j@$8ql^Vx5)%d_93^Q?WIJ;5o?kjr^4p#Q8rp1q9wpLPGU<~ZvOoVCxhX35o- z+lDyw&B#d*6pZ_e{0&~SbXzJK2L&riVj&riYk&p*eD`2P9Vc?;h^ z@1EyB#!k*_IG@cy4s(>_oZuw?b)Duc=lC19Ja1R$F9if%XoThq&4@ws1^2t4`+^%@ z(0)Pth4yqn|Ao%D;{|OOUgkC4z)FUAwy+(I7qifLaTj~gdvQOSFKWJcC?N1sWvWu0n$$w~ zCEb^FU($W40a56_r2A46bYFUiRA%xBkE8pN?n}Ba>Av(V&!hX2?n`cSN%y5c(0R#k z^l}&)E^D}~;c^5TF8lsv-@j~Um)-wzH+s;E-t?g#0~km$H0No~)10R{PjjB;Jk5EU^EBsa&eNQyIZtz*<~+@Ln)5X0 zY0lG}r#Vk^p5{Ewd7ASy=V{KnOYsK& z$w1RTTK>`U&&7bit0A;zI3pR2JzTYitM+i!9N-!mGyK7}|ziYa#x#2Z8yjB5syjBUjx>ki@ zXudXrQE0xFg6?bM(0)z(waK{SHT~Bf!VRx!yY?3gScLstTZYDKD{#YWZg@@WHFvyb zXV=#AU-NFVImls-bCNUUa-Dyjg3Ab#q=f=k*@+qBni$&j1n`$O8;!C}zB# zgm-b>oY%kMJAUAQ{KBvN#_#-r-Cv)B8L!X94X)4UAFgqOTiizD^}Fc25kL@nZxllF z4b3--(VdHaro@(7Rd1W)k{&+!89^AVr& z1^RB<=}m1nwcXTp(=Bi2@;4W_%oXym$D3Di=bJaN%bWT9*J+=(;%G+)I?;u$=)Yx; zw|e0Ix7`1hIc|9ax9szlS#D{&^&ual@0Pw>U-A_?Z+(N-Tkd~L?=5fOmgZabdFwQ1 z(R@quEzP$y-_m?b^DWJ{G~d#EOY<$ww>00rO0fX-@|_(wTT(MDv|jc^%Dn z-bVMGchP=F`<;()&pZ0>e8%T!yK{iU9L0X_oIvB9Q@G_Fx4fhEjyHJ6&hA{~zh?Kk z8%O~P5ljh6Q?PX5$8T4+R9?t4vj@Q907v1-C-*cOL z2Lplv0;okVrjg1_9^o;b;3=NwIo{?gzTrE5;D7wgul&vuma~f0tYaga*~X55pup0U zC6sbhq!M9NrV7=lK~2KZ8CaWS#xkCXOkpbe10P~KGk6$t1U|~+m?cnK;4)UAFHm3L z8rGuI{}dJ!s5NjCdIPthIdFSGP*5q#5W;;_KzEStAl*T_gQ`*;-9fs8BG4T)h7`sz zfyw9&(jBBbNOzFk2ibj)?jYSk_8+7>XfaE%)1Z}PpgTx+knSMeK^w?KcaZL&t>`XL z61y&7*9GjlKzVc*&|N@x0o?`cx`165&|N@x0lO}syMVR=?=zPycCm+jWOIna93h9} zoa7W|ILF_d=MtB>77$c0h$0lDICff4TS09Fbro#OC|=`F=AfbAJQlEsCD=(pcPwb; zg5GjLEd`IFrQiv46x2~L7aav}b1xvMkna~NL{WUdkh>Nti<=hGP-q~77{V|fWCSD8 zRcJKHc!Pz;;T;y5$RvJ8bD`O!p}Ej}bQfBP_CneVd4q-AvylEmt4K#%;Xn#f82c$4 zjK;zxaLdAOSy*dfZ?LeP6)uP7!tPbL9u0`1Dbci`6uqd6Tk2qW-R;%voL4j3%GCLEBwQCZg7)ZP4MPE@nEvl`kwxYU}f6bf6>lSgbSdT&x>*S*!;- zi`i$fH+h?Pd7qE?82!cUvDjz0e=+wjW{zUsKr#C)W|m^wiXG=9`iki*c8y~VtNVw#KDXK-^`qB&S|u;yUR!J30L2Wt-29IQE5bFk)M&B2<3H3w@B)*P%k zSaY!EV9mjrgEa?h4%Qs3IaqVB=3vdinu9e5YYx^NtT|Y7u;yUR!J30L2Wt-29IQE5 zbFk*(nu}{LuDQ78;+l(VF0Q$_=Hi-*Yc8(2xaQ)Ti)${fxwx+4OF2M3xAA^T1Q0|a z3R8q&ic^wO_&Zo4l=~=0MJiE^NSe@$7+RyPgtij8N{rfCKC;nV@-Vtf9z}ae?Iqo^vlP6^osfYKP`h?p3NE0~p9qk{H1#rZR(vd6cIxXDM@*GH0m_*07EZ zY+^H8*vd9`uoE+u+Ra|fS-L##TRMy?RHp_t2`2)(FI^WimadN*l#XH&Q<%ndW}>n5 zBj_ys7*C+L^wVfAt-18`q_di}tS1xQrFECqU0QeP?PQ_5wC>V-&|Rh+74Rm@RHhob z%jhnnyNvEKwWx#cGP=vSO&Q%~`l7RpzmsKFp`nb1G8)QkL_-2#o(Hx>VM01Gd5X~W)Lo|nI4$&N$K7b%JmoJR&@bS^Fl}Kmv_M~&zOXpjqBE>L zTEpBwOmCPs5T-fIKEqz+bu@=*4$~Z_IZShy<}l4+n!_}QX%5pIra4S=nC39eVVc7< zhiMMe9Hu!;bC~8Z&0(6uG>2&p(;TL`vgXQ~D{HQ-xw7WUnk#Frthuu0%9<-{uB^GT z=E|BYYp$%hvgXQf@;2|GyRz=ex-09h{0X0-yRz=eU!l9QwkpMmq!->$6>q3YKL+ps zgBZ*(l6a62j3Sv7#xjA4%-}g*Mq3qaRqV2grYc&hXsNOcyQ=D~Rc$~+8q<_$ysfG& zv5Ts9QPrGPhoGVAaD2b2?^hjz?^hj%?^k_-r}6!&FY*e$U)4RUzKfky)lhX8d)P-d zhd9g;{_8r%aZYjyx2$ScRdWM^s?|etwI~{)xtjY`(_PICt7)&My;^J9pubvM+_9Rr zYR~clFJV8`UPEKGH*mvhZdgrgHFvCLXVpGLbG7gJnP2&xIm~4~3t7WPHnD{)%vsHx z)y!GFJQWF}3e~AWO~Q$wHgz#$_4;@h)y-Lb5>uGQbY}7}kMJmuVfWRa!i?3Q!40ZE zPdckv%X%`=SbZ}(t8ZmHdaLh5b9K$t_XY&jC`Sb!=Sg(e&|SlAYUr-<6FO`7jn=#m4K+2?)KIf38fyA} zP2aC+XEoiwW=A^Hg>Lkq7rp7jgN!1Xapc*C9AN*ni<$* zO?#|qk2N>o-ZkyArd`&wuWEzQXM*+`hu?E8M=q?JL~A!Zn8L3)dE|E!^(Hb%pB+ zcjIt34tL{lHx75>a5oO$gXRd$5t<`3M`(`F9HBWvbA;vy%@LX-G)HKT&>W#TLUV-X z2+a|iBQ!^7j?f&TIYM)U<_OIZnj8lk*LmJZ*@1#~V&1r$oS{iF{9*U?aCI&N3TKI+&<9e+>i*hd}n*7+PQb-qSRo$t|6M@OAs&{1b8EAag~ zYgmu(*Rh{E+i|-(8tR5pjtY2hb*oSnZ?3Mcx;1dix^7vwHtt!s9`zZI=DL&d-s)u+IQ{dJ$lP3vl_yNcDU#eV8;L}Oidtn0ni^&6?HwXXM8*Uswh z;=gA1s(YLhoC*l4r>&l@db;X0!27D#h{iObDbX~?8>`on*0e!eJze#5)q9o~coA=` z-pjngYrKIsR_`s|;a%Lap0;{+Sx;BJeRyN_vN^y(4s(=a=&q-^-pPQV`VrV?{kqs? zeebWn?)tjx>#nc6zTZau7w63J?X$k$Z+*M0|2(?u>#nc6zV7<3@;bWf z>#qMcy6ewFXZ^bYK@Gyu&_F{24GkjE(7^W__W%aUA~i?a zXJiIz&>X2bQgfu{NX?O&BQ-~Aj?^5fIZ|_^=19#^nxiyFX^zqyr8!D-l;$YSQJSMP zM`@1I9Hlu*bCl*N%~6`8G)HNU(j28ZN^_LvD9urtqclfpj?x^ZIZAVs<|xfknxiyF zX^zqyr8!D-l;$YSQJSMPM`@1I9HqITu7+J1%PYKw_tWq#-r;>d;6py)Q$FVl{9SDL zE#L7y|KlfqXA#R;NjmG$)=*nRT@CXBf*O^lEu%w3HS2ek1#7w4O{fG!CW&r6@xv_fZaAjVs`mjoq?w z72LCNb!spI&5g&9g675((A{_v+8b+c?3RtEqrdS?+_bT_#tT`(GVG`EDl|5B$HuE! zi`K^eJ~p-6Syv!@OWfN^p?6QfjCfo4Fn(QEpo$O{W`_SD) zbCZJsK~2N3&!*L|%ckC6Q{7ENOrjh7ws=H}pbT{=Dn%Za68Q5jh$I#tW zcT?R>bvJ#6=g{3$chi^9-Sl^KHoX=Q)T|O3nrUdJp;HKTj?o;WIYx7g<`~T}nqxG_XpYewqd7)% zjOG~4F`8pE$7qhx9HTi#bByK~%`uu|G{M#%xk>P z8@$asyvO_ayV(2_KIJpM3iEQMRPbjy~ZxM$1qRNw(Lw;W0mnp=)UcgxXeZ>hbdTecjJ{+5$))0Wy=&LWM! zu%DI-(b&=*TP|T4T3h=2*wW5gX7FFLd$runUiNdCqa5cXSGdki^0^lf)XJQ#%-PDE zt>WoQcY4yB`{_ep`Z0ikn6cF$hG5QCpX0u*zUEtg;79()PyCGCxB4A3w)zt{Xf=n6 zTqcjJ+(2WiTj*@{FL%(}IsnbBHMcHEXS&dh9weZpW9>0E9`}!R|5$UxdIPcc8EckUZL#n09{OVS#eTx4 z=#2dwt+DPOt2fpgh}9fxpRqZdKy$3-Sk1ATV>QQWj@2BiIaYJ5=2*?KnqxJ`X^ztz zr#Vh@oaQ*qahl^a$7zn!9H%)>bDZWl&2gIJG{g2cPIsK{xXa|BJ5G1pb#%AY);5Kg`3Y~RtvA&64`z|Z zT>fGK3t7w(ma&pmq_c*#WU`lo9OfwAL0fHYwYAmNt}M;*H>cfmyoiQ&ukt!?@-}wT z?tRSMZVp=7%|lDOMd)a!qumO0wA;Zhe7{{bhw%M&$2o{t_>9V4iX-j4Oq+);DKC?+w5X-sD(x;yIbsJo-?j!*Cux;yIb_#C=Brn4Gvvg3L( z(cMvZN8KHDcic`Ex;yIb=r$d7cl9$?6i}%PTD%@>g<-COHhh3gmNF{u*c37aOcjIvCGa? z(b>5MBN)XPQW(z!^mn$$&XaNf&hFpY9G$&^&i2{aESXuQ^_Gyyke#@tWf`$7_z)9IrWEbG+tw&GDM!HOD727QOL$ zRt?}+2uQy(6yw>>tTJ1RA z-Q&I2E+r{VSu}Ui+C^)ZisR>#D7*J$BX9RZCYbT|45oUEd;&c`RTNOIU{6b+wDG zcG1j`|ntM7Ns#rL~j!1ucaPypZW=APY3;QQS|aK~-*v&HcLR?&gNww0G0qZ57^JH~rn# z;Evt3buUCwg0Y|OrO?>jo9pg|-QBRe*6!}u-OjpKLUZ@JMA3*QG^ZtPh@%Jh)0h4X z!kpdB+1;Gozv3Id;|G4?XMW*Ve&Y{jVaD!r@GiQWv-=hP;Tku{=U;Afhr0nmJ?y?m z5N7OA5I5*igsya_CkgaHV~>95>@k3W={&u znRvQjkG;C#&b@kJm%VzUvzLALdYAY4kdOI{&(Yt@9(#R-`}cDHUgqfK4fL|lUS{c~ zt=DPJqOX^}UKhE9&R$p0+ROcW>FwnW^wQkRJ`-9Ki{=E)37Qi$CumO4oS->DbAsjs z%?X+lG$&|I(43$-L34uU1kDMW6Er7iPSBj7IYD!R<^;_NniDi9Xim_apgBQvg60Ix z37Qi$CumO4oS->DbAsjs%?X-&YwoSNcU#)i3EjPQ_txE8ckk}>M0ao9z3)eNZ*9F- zaF{!IL-%___ZOfLMJYxwB`HN2$`VR>Do~NiRG}t~h^9F$@ec0ScE7g!b=^OKxA8aU z{{0+8!~I9e;RL6!llyZqbDtt;=~EmneM+OFkB&a&(9x$Jk@$X}ro`a;ecI3#H|?XL z&-1*<%e=}PyvbYW>hlio@c|$55uflWd(qtI0Ef`r=NP*C97lT}?S0PRo_+N9`J3|r zL4CFLZAcTEVLyFaps{Z&+_JA*_SM?g8|-UmeLJGLuY2`PAWw+u1=DyV!#n`|cwfbM~u*`}V6!b;60D7PYB^-S=yN8T&=y z2K^c{m4`@WCXb@A-{a`)_aslFx8HMU?x(rmORQlX8^~k}y8G$wr@No-emmKX?tZ%a z?MHY2iiF`!_OC`wbobZYUw41q{p(U6-Tig07y z@Avop{&v>i{rg|y3jc788{Fbw?gRu4C_!mLD2KiQb~-@Y0Br+w4RFf=$&6(@lbFmD z>~X*}+~g@v=p1050~WD_Wvn2b4D=7M#{p|`{{iklz#Id-fdTe8z$}T{5=&7A zeTn)K%TocJiIvcr=>Ca%6TN{%&58DzIEpc7PSl*JIZ<<>=0wejniDlAYEIOgs5wz{ zqUJ=+iJB8NCu&aAoTxcbbE4)%&54>5H79CL)SRd}QS(5}12qrSJW%sM%>y+L)I3o0 zK+OX+57azR^FYl5H4oH0Q1d{|15+5sM05|-Jy7>R-2)#Y72N}M4}1jO1GNo26%h15 zA!_3dJ>U&J5J^Lt(3EC0rvw))KfWJ9| z0w{onK}9G=aY|w*gUVv&L5kw;TB2i+jzMkFF{m#C@cltUNW%9AjV1**9i(B< zZ~Vb5=I|Hun2)YO3t7xkma&|btm1A!&|uAjgD8mR!9~$MI2i4NwGS?hdk)q=IF$R) zHh3U|8H)W3eh`g=N8*-)-Ey$j!QS9tI~zO!&4b-*@KZd)bG*!}yun+1&NqC=5B!2T z2b*)SIR~HTBA3bI8rQkOO>Xfocld9{djUa10x{>1j=1lTE_9H4oQ3T=Q_v!!-}r zJY4f|&BHYh*F0SFaLvOt57#_g^YFKMmk-cAT=#I@!*vh;j4#kVT=(#A&^=t+gC%K5 zZ@i%gy`cvOFp$9vVJO3SkdcgH3}YF`cqTEK={&=Wyv(b32M=m{P}_sL9$doVfS?in z=8ULEBpOCErYX@h$4*AH#>^uIp=HD{w2T;mjuARWq@ZKOV?2rPk9eM!@cj{Q@HTEb zLc@qGcCm+j9N-{__^;~-$2iUjPI8(v0YM|{pm}5iqR>3D3A#r%L;FbWBU|F0BlVAr zB@S&PpXNDUzr)W;moT52JbBg8^%_*8wG^c1z(VU_=MRSVg6wN7`Q#7Y&PSKpAIYo1d z<`m5-no~5VXim|bqB%u#isqCBEMh6TQ*@{3PSKr`&T4e0=uTOW?i6n{C5v4gB8QWl zAvYjsY+=ka)=Xo~G`2M68S4#=)ju|ZIJ%&Jtamu}Rs8$M+R0eIiLqPQhTp_k-y7?D zV|TKfz3gK@2RIlIG|sxQDQpaWi=Y zzl(8?;kPmF37+B^p5-}S;6*f!yAlvIzAR0Nra3KXO)O>|-`U9PlW-$l7lm0^UB+Zi+a*Z3@;$QBfd$R7yx+m+NT#&-(o~(OvFuEuA zBmr-7a$g3Zd$R7yx+m+NJcMEBo~(Pa+f3Fy`DJuY_S>C&6%CU$Ox7^@4jQKT{uJMz zVrNs_e@aavs7+n!6G=lF(~geB(+z!7>~xB@DcYv!n&OsIKH)RI;A_6&TkLVl_qg+v zpRmg*zo2u9eNM^cZ!U0&JpMud6nmU<9rvH&{!`2`#T%GnpHs{-Rom1KbVA=$eN(&B z1D#WQp>?YJPt`ls8)jiejr`r8g-BWc>wg0KQr?sU$b~>#yUC}*F_cYzpbWd~tY3@Hw z_cYzp`lEZ=2iWyAyPjs()4oLaG~Ls5Pt!fkuBX}cG~Ls5PqXW3x~F-k)8?~?CD`Lb zHL$mb#_P2mH(lFw z`<%WRH%~238|)_4Zc^9U5HpA^^*wKt% z_>DjKlUd9m4V^PI&hX}D=$oN!#(!w(qC>9h@5Kxp7!7f;die2nr#DWDB6|7)EFoNaWo^$59?!7U1{e@(<4Ad@kTZF6I*c z#id-vf6&%RS0_!K+(@Ty_?GYZo*!_toqoZsbm~l3y3wCBGO>eBcF@V2I(bv4iFi{d zZ|H1}oiFE6e5`@V(By)7f`A|A_B&_MOgM@SV=xiRM>&(2H2&Ng;#bxP#8V z-`QL{+k0mXomXSWT`uAQ9!5i#$9a;cd6wsR5j*SR-CeYF@#ZdCx_ECF9bI&Ei9$!0 zK_uh*UA(``Fnqs@-)NWLaeG}fblHvHN0^c&=>Y9Vru6{3F z&8+KaGZ+^jsX(w>kPt%go9Nb>wzQ`M;he#lXzQk{o33uJ@&<46 z79Dw;cX=PblWrgKF`r_5`}BTv7>4Mdq|l($4_i+Y5|&=;jI>KUFzXVmj(jk5nJy-{u;N^_KXMx~O5<|xfk znxiyFX^zqyr8!D-l;$YSQJSMPM`@1I9Hlu*bCl*N%~6`8G)HNU(j28ZN^_LvD9zED zqculsj@BHlIa+hH=4j2)nxi#GYmU|&tvOnAwB~5d(VC+*M{ADGz;7ygB)X$@N9&H( z9X*PCbVuus9*6E|ZNFZ~-E_na{pyB({eX}7l+XB_ulSm8`Hmm>nP2EcSGw^l{YfO5 zA-IEIwf(B?S6#oBus0Cw;ol8CZsSfg^thM%d60)OlOB)b%{@LrOOG$m(&HO+^w81c zCv^1qjd*;&$3T+s{T@Tfz)pK;=uyQswzHF6>}C(AyY^AX0S@ACWRC`p1cE(pL37VL zxC_la??ZRb2hiSAd(TI)&z|~wKFL#P>)DS424Oxu2cxlP3U=AkE_-V2=>~h6SFyPR?p|)8mwEQ``{-qsy`DvPFWtR#_tM?#WnM*hFWtS~ zM0c-W(b;Pmb!h0Np_hhUO=#%l`@MX>mzl+O;6g6u5-#O3F6Roa!v16L#_nV7JXT+< znZ|01)fTHOHi1F7!&rNcwcpsGq+yP+8Q5{`2+T4z3!Sm%8M~dG)Uq2l8M`0-vE~?i z0Q--%|5)#cbpx^H8S5=^+T!lw9`wcOi+hNN(HZwBTI1|LPH&tWh|?Tro^b;hh~_xW zahl^a$7zn!9H%)>bDZWl&2gIJG{g~pQ z+g0y3u&3Vd@ID{%F`w}TU-2zJ@FSgxr8n{PM|1B)rm-;)>=VGg`drD?{EzFnft$FQ z+c1+pI{N77qoa?GK5z3bTKZ_|qovO;bfG)Z^h84+4So7zZhbWLSw$IZSjz?~INh{~ z%~Z0LZB(-ZyY5p*J?=AJXS~k%ThJMQCwFl-_8NaL_wyij8}A+Q_8RXu5+8@Ic(aM` zM*`a72Vq9>N!V?C3ica6lyvMiUT3_<_$u_pYm3(wUqdbaR>tqaJ;uAoc+K$#INf}V zW{wAfeKq!Vdwm~3Uteu~we@`*zu~@aukX{iyS~ryJTLMR8v7=rudlYgy7~^o-Sy4H z?e)#V-Sy4ock;+*D$|%w5l7M0w}lgdV7~yZ2ogdlt!Ya;+7nI$+WP70r>UPC>GwKs z@Fs835jWfKJ={va5BP|W=|nHwM!x}=eLrvNmyUPz8;SmY+WU=V659Kn3IzLK#>0HX zCw#^ie8snX$M^ii&-hkdJ;o#?7M#&X4&8O`)A|Z{mrcZ7)m)D2oAUa zdmHc|8U{Sd~nzc4@kxP2l)N~ z?;nuEC^QVHWjA}-kDD5BkVBmAYM>GO9Pk&%u+ss@1HpuQ(46o9ZY@D`f?G?_o#56I zv?pj!u+IdymY_f3MeH>}TS77^xU~fHNf?I4giPF8LKa#R+**Q}CFG$w!M+lvF`Xi` zCFn}fm2e^u92mf@4GiMe28Pm_wz#!{?Fq-N4b(PJ*FaqZU*59-J}=pLkd&#_kjCJW*ewnI>vW)Rw3#F@>SH z!$f;dwBN*$WMPhpIoNSx9%h+18l8#enYfqz)N>FwnRo>KiRPGi6#GxK|3vRdbOVXz zndB`=+L9jP5%eYLOL~f@(V6rtT9fQQNpF%HNYb2So=HPUMRStoB+W^hlQbu3PSTvD zIZ1Pp<|NHYnv*mqX-?9dq&Z1*lIA4MNt%;1CuvU7oTNEPbCTvH&B>aRH79FM)|{+4 zS#z@HWX;K%lQk!6PS%{PIazbE=48#unv*prr{Oo1oQdva-O0L>btmUC3f;-NlgFSt zS=-?Axsx|>LxbJW;P?1|kNJd8`GPO`ns4}yANh%&=}Z@*=*vJ7NyZ%v);3t%U|oY3 zu{#hPawfNMI~s=E&Ar^ugP6&XNAcz%AE9N)XJ{Gn6*`9K81e%;hQ!hv-ybr7LHPcV z6w3NHe5-0qCMqd z>@!7w%HuqNwv>4KlYsf8B%v{7Fm{<@mnm9P++d2Cr3^=NihZSwV>}blmZB>~S4sm- zxUrPKaAzsa9OoqNEHyxo5VWQ0O4XJ6B+u|H{>G#}&kMZ7E4Z^%cb57FZ(^6J+EUFj zRaa^jZY(v2Tz)5y(TqWNs^-)Q?8iJ)4`P<7?k`n$s_s6+6ur)y5voUS=t zbGqhq&FPxcHK%J%*PO07U30qTbj|6S(>14SPS>2SIYV=X<_yglnlm(KXwJ}_p*cfy zhUN^-8JaURXK2pQoS`{GbB5*&%^8|AG-qhe(43(;Lvx1a49yvuGc;#t&d@dNOm5%> zUc&thdyO~f$lJWb`+UGhe2l+~!@l54zT#WH<7ayE8-3`@K(r0hHcZ#BS!@jihqvY$ zu0zA{o45t@7;YZJ-PmyR81B8p-$KjqchNHZLv#$+G5m9M4DU`fzCS#c-uV7-^BF#f zWHbyfXB`{Z$QCN8;&j(G>~gqW4zIyJhwo-jAeea-nlrEEdNgO=jPA@^(VnS2(=Idb zMt|mg*lDJ=%pUY24)e*3M`NZvX7(omt(pElW|~>%U^HjiS7r{mj6z$cu1sB-dvRZx ze%qM`@cYg@L<5buvCN|!qd5>9p>2e&5xPb^z{5O(8yoQ$kMkr?|_Ktu6a{ zZbVHD_zi z)|{<5TXVMNY|Yu4vo&XH&eoi*Ia_nK=4{Q`nzJ=$YtGi3qd7-&j^-TAIhu1c=V;E+ zoTE8MbB^X5%{iKLH0Nl}(VU|>=QsM$58XMsb9CqE&PgO0-8s5*Qqi5`Msu>sMQ4u2 z9E~{|bKFLbzMRv2^&G(ODyIQAn$yTp{t5(hb>?c!)tIX>_d)dK>dSqEM|qqlaih6z zH1}DaLuanWTyxFUm#ZyTTdtYrrsH>&>+g5&2>h;cHRtA_Id?o0n8e{g@b`b4iHOm5f=A(mG1xD2=1$ z{pD4%6+6w_fxYIP?y}oFyUlZZdG?#PAG^&v5D4a9kLLWF zxfRX%ZZBVVzM1B0&)1&+0QQ@&KmQTzHeXx*Z@9mFefj$G6R_8Oo%!xBUu(X33EbZ3XLy$9c!3wuINJS<);C()XkDYtbM!Fmb#x{p$;R!C&SeyNOkp}j z%%YgNoD2lV1PBsJ8`{#2_H-bEGdYX1IhVij3a{}d9eJ1cc%Kh&FJnIDQ$FK!zT_+1 z=@>g0WAF~%Flc*B@{4hMo`|ITgr*4Q_Ai?{K;vA#3bcgB8%?~L`G zv3?_CeP`^~e8>0vz|Z_bH2pBovA#WaFlm_M*b!v0m_32uIBymUCF zPoiynU;H-4+s%0M8J~>C@pd#mg`sF2@Ak%<+4xK}j~_Qak#|_+sH%_<(cQL^`Cv>6<-H7B@deD;?dSUhxdgF}~ z;<1AX{aMaRN?A=g8Yiqn=Y$PxMDK(xXr7>X!nQzg;=lMe|KYz}h3<*EC+eQ4d*b!n zi0+BHC*F$giNDa9u5>3F-4k_B)ICx6#8`eq_e9+j?Pj9xiIdPdu{jW&bO{uf&CZgEpP(`nhVUcpqRO6F3?<{xj=J)<^s(HnhP`+XfDuP zpt(SEf#yQZg_;XB7iuolT&THFbD`!!&4ro^H5Y0w)Lf{!P;;T?Ld}Jm3pE#NF4SD8 zxlnVV=0eSdnhP}-YA)1VsJT#cq2|K*ETjb8g}MuM7wRrtNh!Jubr-Hd_hfC8AL2t| za6^;b(BwY!WdI2bB#C5(kit+h7{+i$lEo+{GlM^vg*%w6ZL+q>x+d2Jf>X}M-<&D$ z@ID%*e9WhO&X<_UlyC9oDgDthWe{4X3`WNk9aGZLF=afH@ck*%D8l!r%waxuIz_|O zFxt?L4xGW6oQ1Bb=kPcF!Fim|gqznrC^Qmw1_1c$L?9gSYU;X>ao`-Z?E3`<<3eE_viLnlX&U?59n{8>bau z2h*l-m?Jdt7cFRAI)C&YS3- zu6z1B=$<~D5xB|eIgCR0bluZ+PuD$t923wzUH5dmnXY^K26WEwd!6w(8fIvip<%`g zXqe&qGkkxBna!~O89&pBE_5T3XnGJsB7;dK9ep#*bcVJW+GgmQVV5&@vzPrG;2?)E z#~BUS^NgdI<&0yT?ljM$d$^AWc!)=N4E;ssSo9?JUu6G9-cjTRip;afTZ*(5B{Kwl zMf!>|7>3TGOtco+f05oIH&CRx$UKW`*oEdI%|)7vG#6K$ z{zK~@AJYdn^v9q0@69|P|7_;_#9}rx?Q5nRn`u`w3$Uk|(^O~)9_6{`9t_=i>|I3wVF4kPE zxma_t=3>ponu|3TYcAGYthrcovF75(cpUdwtg*N+W?QVUSX;5S;$#Nn9*f;$aT@8k z$>QO-$6}4eRp=|$R(!h4Jd1Z@uf==WPd#q3_#lUA2n6Q@2qBENv?m?|?ZU;_u8Hzl}Mg$Y(6$7|#UU%bWrxGX*y@XF4-*r*rIJ zj@i%gra9g;$9v{@#~g2%;|+5f1Hriu@-eaG;#+flYwj3)Yp!q1orLeq^^Li{G1oWd z`o`Qpm`yQrn9l-MP=S5VwePvUJ=eGA`u1Gkp6lE5&c!b0dGEYl{D$4l>q~#^Zr&j5 zZ{A?cVqPH{=1s%*=lTA;S@{0Ex%mFPHLSz;=Xv`)Z=dJ;^ZY*N+2uStoTp*_|G17D zaAWgtU(}A&XhUGFGyRQp#A3*)Ld&H!g5{ z3+!OQ#z1i4`CQ1wT*AN6xbQ#dT=-wEMDN0D(7aId!t42#@A;9R>5T4$x)J1GC}Alp(7jOiLfs2>FZ`2obT8Ds&~6s$UU(u9T%>c+lYE1QMH&`q zSkws(i+q2P?=Ld5MfSfaond4$l5BDrMLyH{gW1eQ-y$E6qi*xup z|KL2#aq$J%^WuMEmW%&|&c)`r_(MMCQ$FV_zDECIb6or#_P^Nv7kkHIH?Y_|7kkTM zZHtSTiN3}97SCfoIu|cQ>tg#~taq^+Sgd)md6sk_0?j3wOEi~gF40_~xkPh`<`T^% znoBg7XfDxQqPawKiRKc`C7Me#muN20T%x%|bBX2>%_W*kG?!>D(OjarM01Je63r!= zOEi~gF40_~xkPh`<`T^%noBe<(Y!?Sk~2A*zoC1H?j^dH=w5Om7o&TL?j@I^dx^Fs zgP24aZfJ=cTC$D}Y+^H8*vdAxvx6FTvxmLZQBOl4xHLc*ZD@x(SgLKQwxzn3-oyL& zo3nH*6VR}i5(F7y3mA+*N#mxXgC zcDhW%vR8PGH+YM8c$fFkwd?~v;uAjQGrr(UMx%MzcqXEG*<^Gtn~L^j+L!%-eJ<0# zte82RZaWnSE)Nol`7CdX#^vp?%jI^tTG!&F2pU#u zSgB!UCK^`y{z~6pX=W?!f8~4@vX~_-V+E@yql#*FvI~7H&2*)Tj0LFcM{XkBIhtMsmN1FJNzGSAXmxDCyvnoBj8YA)4Ws<~8ispeA6 zrJ74MmufE6T&lTLbE)Q1&83=4HJ55G)m*B%RCB53Qq85BOEs5jF4bJBxm0th=2Fe2 znoBj8YA)4Ws<~8ispeA6rJ74MmuW83T&B59bD8Ec&1IU)G?!^E(_E&xOmms$GRA{+Nn=03~ZXIVb(vurHm&{*a^%iL#~zA|lPr`sB7 z!hM#x&$1TWXW0o(1%j&s=v=LF^`q!pt!=fo)z9EJwfZ?;z;9}`-_&Z&t6xL&>i7A8 zj~K-=%<0dwxPv$N760td#hB-s2+rgj{>DEzpNqJJOSz2yawS)DEjMr@ccF8Q&NUj> zJdd_Dy4G~XUf1~Ttg*v2=Ca0I)|ks0b6Im3b6I09YyJuZ%fs;fa^Ek%kc-h!uAy8* z`Q==Jx0Ks$x!smOh<%o8DA!PKM&;&HuAw{;cUNwgoM@{`!z+E#=Rig&DSLtCCe*IKh#Yj({4%VH;*_?}eSf_EF`&y@Oowjwl*1d;YTlWDU@-d(C8K3hd zU(to`MA3s7Vp+f=ek94LhX12k+HuT~* z`e4r+R&z8Etnk~c@b(G~72aOq-4$1G72aKOEq<33Pot&cd9+k`Z-tHu9TnbOp`+q! zzQgw`e!+Vye7_=^p4eA~hKfblSA~65EXS@Y?5e`9Ds)xYSA~65*j2@PHn5RRf#62_ z+NgQsKlvA$H`>=m-5c#|qxOy3H(rB%ZPdTfzBb-~wv9jVGo3J>jor|=F%q}6@mI8N zw5N?`wlNOP8|`c3P|_Jj7CDR}pQ-%8EQ(oxcW(5~jo!Jb4Spk=IuOBGoXt6$%is71 z=i`l=F2r4K^3F}~V85F_;3GceGu+pvFYp`LWcHif*(Pt?aBDGm6|Kfv+{TH&|ImxQgfx|O3js;D>YYYuGCzqxl(hb=1R?#nkzL| zYOc~;rMXITmF6nVRhp|bS81-&T&1~6bCu>Q%~hJKG*@Y^(p;svN^_OwD$P}zt29?> zuF_nkxk_`D<|@rqqZ!KtbXV!F(p{yyY6{cPU8TF~4|H$Uw)HBWWPnZHLv`tF>3Z&Ku~j?ub2BYpWj4 zNU|}X>QQK{&c_a`?XX&FwLMmwS#<%LtLLzg#VlbZrTj@b+o)j|d#J}dtG%<@JGbA$ zZQQ|K+{=C3&jUQj!#v7kJdV5A?w#A?>Bj&Dl0-6t8A1wXzdapq+&&CD*gk?vwo=Uw zYSFlTH#)cPWj}hiA3*bV&D$FS!5ueqE4One_n>=+?j5>!=-%-VkDz;p?j28{dq*Go z(w_tp(Y-_W4&6I+??@#L-8*#eu$vvacPv2XPQTHeH=$vthMgLA-i?NxzQ5D=cbeHw z```HM@EKq572goauf!0CzMW>eQ`=5$J9X`}%bn${V*{Jm%ofaXXBGCmb310a zb0?=e&9mkTuHqW5vjounJP@}oVJZo072F*2^Yc$truF+hhxkhu1<{Hg4nrk%IXs*#*tGQNlt>#+I zwVG=+*J`fST&uZObFJoD&9$0qHP>pc)m*E&R&%Z9TFteZYcyO#BAM0c(3THUp}YqwI3?pocoHR#@@ZP%;(!VuihE;qC*gW-%Mi)?;p z6#0y1EEAZ>BqlS3A{Mipm6YNRc4^zCZI`ay0WQbioZa8^6B>4RrYqfv!c2De#G7}I zK+EnNwCv79$8H_F$D?ESTo&N_yO**8-{1WwYq8Va8upyegJ>nuXDfO>;AXUuwTP|4f{Vr!+zi2@B91BY`^{Q z?@c`Y7{EXhNoEMS(VAI`61+19j$E=Ph;G>PC@|zB+w%6PSq3x&pM; z*?*nhIyX?Kxz0T6{-PPpb(-rn*K4lVT(7xabG_zz&Gnk=HP>sd*Ici;UUR+Xdd>Bk z>owPFuGd_zxn6U<=6cQbn(H;!Yp&N^uen}xz2sd*Ia*`lY!uYR_H#U`+)8Px(~FW9l8(bJ`jQK1KJKmF`U`Bp#yH{zycPrgrzKF zC95c7HEUSMdN#0$&Fth5O=vry?SNSx)O1kGK`jTb#jFmxwS&VLK^8guj@vpo8nZZP z76-la;Bqt^EXDT^`u@SS`2N8PeE;A+>hb-9M>vY_AGFUy0nFr(hC`3?I8X94&+$Aj zpzF{}yuxd|j$Ixyt3w@0NAsafMxyzU{TtTC5Y-Wc;(R}zE&f@|u;!-Z-zg)?!+{HcI$HRE%VedTborn9- zm;NM>ND|2mW(cXI;f;qga2JQY^Y9j`*v58hsAU(s*@M|1uEQG-AHWU{9}WZ?ZsHbh z;|}gdW5d1ZY`C8X(cAC{nj17XJV9^b>Bj&Dp}RqMgYE|14JiyocZ2SRVd!qyOeI^X zW+%EEbT{a3(A}_?{pfDc-C#Ejx{v$=ok#pekNk#)BN~oqI5H3oM|}T??;kO06R zZqnSOxk+=A<|fTenwvB?X>QWoq`66RljbJPO`4lDH)(Ft+@!flbCc#K%}tt{G&gBJ zs`;qqqgQba*P;8U?xVVo>OOi4x1sx}?xT01`=}c|`Y4a1?dSw_96b^U{&f-F_18!E zXMc@h6^Ce`iN9#(IQ}jk3ld6e+R=ds&f;AD#s%m-b~R>vOzSa?$21;$6Ei&K29GUa zIV&k;HE!*uMIHu#6j$fgT5AR zE!tZA=3DyWci-anS_b0wS~RyLqq$``nfUiWi^dkW*0LRaE!tX6x9wps`>5jp2RTFo zM*_j)8jriRfJj5eB#^XG}Q#{QZbmSf0=R-awhu_I#G~*c01ST?x zLZ&d4Y0RLAqa5QnCj-F~t#BJBLI@>{HngKX9dNTJ&cJWr#8ueC341uLBC%3Sb{hUC{DRVfb<&^iI z(s4@1DQ`ce5CD-8lr_A8gEx5l^8cubg8<9lQlNkIyPU$)ohZ{WQ{!aC! zAMWo|0xQvcYBg)ne9G_TlR3%mDKUK~4KuF-<{D&*JivMvf*Ks{Ja1*z1 zE4Oh6ck&od^DNKv3a{}d9r>JZ_>LdwL>Iad$xLQ5hj}by5sN8d3Cmc)N>)+E>Oe@V zGdY`c`8(%x0T*%+7jp@h;*G5?<8uDXCw#^ie8snDZ1p`lTm8t-=xx;*&8;-I>dqg` zqL{fXKzA$Mt#r52-D)Yz(cMaSt5S3a&)_W1;cuLW?x60V?x61AKlvBBgSvxu6Vx4i z3Z20r6rmxgA*dlZ9}Pj@5Bk3U=bn(@dTQ9k9`;ek0S?g+2nh)iMq4_dFT_kkw1sF3 z(G_BsAsu;#_xO;H_!x5x`4oE&`4Y1X`5K)e<{2`9Nfa`L>C8ZXh&hJL#QsC2&p(;TKbOmmp#FwJ3_!!(C!4$~a=Ht+HQy2Esb=?>E!_8DKGJ4|=j zH|P%27Pgs|KuGJ0a6_%#Q0ss5AFkj^uHt`O%k|vAP29?D+|FIx%_F?XYiMh&t+iRU z*3?={Yb~w&V^*!*TI*&`a4HberWGN$tu}2ii#BG_#yi_wjfOVY;rnfTzs)W9ew#b+ z{WeeY9KPS?6<){p+t_ED_c4<;8rtMCihRZ}o(W7uSDOMRGnHxBWgD|<^9O&Sxy^A- z2143uZfk#Sb+@&{w%XfjZ`+Rc=x-Z=J+{@>_61(%Rm`XDn`ms?5j$*ahi$dCwa2z* z*7jpGxBZdMbfr5zh#`*N3?_{XhLeqVw)M`o-r2U6-RxyQ2RO(f4%0v*NAbqC$8Z;I zy|djt+{Xhv#G^dM<2=EWn0>ov@y2$~V+ZYCB9UZ zM-98!!#?WK-A;Eq-R*R@J3+v#rCjPCY#b1(PvAdjHCz3%q9+v{%s6wjc$z3%pQ z(_VM`PUvj!H`;zD8ro}Uuc3V%8ru7Qd*5$wW*zLm!`Yn6-#L#9xQKu9FRte%ZsiX2 zbuiNo+B#_KpsRyjcIZt!{YYRSgD}SqN!W9T6wI>2P;_=M&kh^eOeI^{&JOf4OYTEp!>TyMA=2-h5Lp5d|lhURe1 z;hMuWhieYk9IiQBbGYVk&EcBEHHT{s*Bq`nTywbQaLwVG!!?I%4%Zy6Ib3tN=5Wp7 zn!`0mXpYbvp*ccxgysm%5t<`3M`(`F9HBWvbA;vy%@LX-G)HKT=tExypgTf$gzgC4 z5y=cecZBYUG;~L}(TH3|F_|e$WjYI4#A24PmUXPBf@%(OA`o&$IG3RR40m|O+kC>O xe9kX)qBC8Ip+CCL@VhzVcYO1VSZ1Sv literal 318568 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 diff --git a/Tests/Models/Data Model.xcdatamodel/layout b/Tests/Models/Data Model.xcdatamodel/layout index f7109f07659dcd5a8ccb6728e461610d38788506..4398b87a0df1f6539e9495e4b29ddff068277b38 100644 GIT binary patch delta 15081 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