You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by to...@apache.org on 2006/10/26 01:14:52 UTC
svn commit: r467805 - in
/incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne: CAYObjectContext.h
CAYObjectContext.m CAYToManyFault.m CAYToOneFault.m
Author: torehalset
Date: Wed Oct 25 16:14:49 2006
New Revision: 467805
URL: http://svn.apache.org/viewvc?view=rev&rev=467805
Log:
performQuery error handling
Modified:
incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.h
incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.m
incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYToManyFault.m
incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYToOneFault.m
Modified: incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.h
URL: http://svn.apache.org/viewvc/incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.h?view=diff&rev=467805&r1=467804&r2=467805
==============================================================================
--- incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.h (original)
+++ incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.h Wed Oct 25 16:14:49 2006
@@ -31,7 +31,7 @@
NSMutableDictionary *objectByObjectId;
}
--(NSArray *)performQuery:(CAYQuery *)q;
+-(NSArray *)performQuery:(CAYQuery *)query error:(NSError **)outError;
-(void)setConnection:(CAYClientConnection *)c;
-(CAYClientConnection *)connection;
Modified: incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.m
URL: http://svn.apache.org/viewvc/incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.m?view=diff&rev=467805&r1=467804&r2=467805
==============================================================================
--- incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.m (original)
+++ incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.m Wed Oct 25 16:14:49 2006
@@ -34,6 +34,7 @@
#import "CAYArcCreateOperation.h"
#import "CAYArcDeleteOperation.h"
#import "CAYRelationshipQuery.h"
+#import "CAYGenericResponse.h"
@implementation CAYObjectContext
@@ -48,12 +49,45 @@
return self;
}
--(NSArray *)performQuery:(CAYQuery *)query
+-(NSArray *)performQuery:(CAYQuery *)query error:(NSError **)outError
{
CAYQueryMessage *queryMessage = [[CAYQueryMessage alloc] init];
[queryMessage setQuery:query];
id result = [[self connection] sendMessage:queryMessage];
[queryMessage release];
+
+ if([result isKindOfClass:[CAYGenericResponse class]])
+ {
+ // ok
+ }
+ else if([result isKindOfClass:[NSError class]])
+ {
+ // TODO: wrap or change code to make the NSError the most useful for the
+ // framework user?
+ NSLog(@"ERROR: NSError query result: %@", result);
+
+ *outError = (NSError *)result;
+
+ // http://developer.apple.com/documentation/Cocoa/Conceptual/CoreData/Articles/cdFetching.html
+ return nil;
+ }
+ else
+ {
+ NSLog(@"ERROR: unknown query result type %@: %@", [result class], result);
+
+ NSString *errorMessage = [[NSString alloc] initWithFormat:@"Unexpected server response: %@", result];
+ NSString *errorStr = NSLocalizedStringFromTable(errorMessage, [[self class] description], @"");
+ [errorMessage release];
+ NSDictionary *userInfoDict = [NSDictionary dictionaryWithObject:errorStr
+ forKey:NSLocalizedDescriptionKey];
+ NSError *error = [[[NSError alloc] initWithDomain:[[self class] description]
+ code:0
+ userInfo:userInfoDict] autorelease];
+ *outError = error;
+
+ // http://developer.apple.com/documentation/Cocoa/Conceptual/CoreData/Articles/cdFetching.html
+ return nil;
+ }
// a hack to let toOneFaults not refresh. without this hack
// removing a element in a one-to-many relationship will not
Modified: incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYToManyFault.m
URL: http://svn.apache.org/viewvc/incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYToManyFault.m?view=diff&rev=467805&r1=467804&r2=467805
==============================================================================
--- incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYToManyFault.m (original)
+++ incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYToManyFault.m Wed Oct 25 16:14:49 2006
@@ -33,7 +33,8 @@
[q setRelationshipName:[self relationshipName]];
CAYObjectContext *ctxt = [[self sourceObject] objectContext];
- NSArray *rows = (NSArray *)[ctxt performQuery:q];
+ // TODO: use the error for anything?
+ NSArray *rows = (NSArray *)[ctxt performQuery:q error:nil];
[q release];
return rows;
}
Modified: incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYToOneFault.m
URL: http://svn.apache.org/viewvc/incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYToOneFault.m?view=diff&rev=467805&r1=467804&r2=467805
==============================================================================
--- incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYToOneFault.m (original)
+++ incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYToOneFault.m Wed Oct 25 16:14:49 2006
@@ -34,7 +34,8 @@
[q setRefreshing:NO];
CAYObjectContext *ctxt = [[self sourceObject] objectContext];
- NSArray *rows = (NSArray *)[ctxt performQuery:q];
+ // TODO: use the error for anything?
+ NSArray *rows = (NSArray *)[ctxt performQuery:q error:nil];
CAYPersistentObject *row = nil;
if([rows count] == 1)
{