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/16 22:34:30 UTC

svn commit: r464653 - in /incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne: CAYEntityResolver.h CAYEntityResolver.m CAYObjectContext.m

Author: torehalset
Date: Mon Oct 16 13:34:27 2006
New Revision: 464653

URL: http://svn.apache.org/viewvc?view=rev&rev=464653
Log:
faster and better CAYEntityResolver.lookupObjEntity

Modified:
    incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYEntityResolver.h
    incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYEntityResolver.m
    incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.m

Modified: incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYEntityResolver.h
URL: http://svn.apache.org/viewvc/incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYEntityResolver.h?view=diff&rev=464653&r1=464652&r2=464653
==============================================================================
--- incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYEntityResolver.h (original)
+++ incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYEntityResolver.h Mon Oct 16 13:34:27 2006
@@ -34,6 +34,7 @@
 -(NSMutableDictionary *)classMapping;
 
 -(void)updateClassMapping;
+
 -(CAYObjEntity *)objEntityForClass:(Class)cl;
 -(CAYObjEntity *)lookupObjEntity:(CAYPersistentObject *)dataObject;
 

Modified: incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYEntityResolver.m
URL: http://svn.apache.org/viewvc/incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYEntityResolver.m?view=diff&rev=464653&r1=464652&r2=464653
==============================================================================
--- incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYEntityResolver.m (original)
+++ incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYEntityResolver.m Mon Oct 16 13:34:27 2006
@@ -77,7 +77,7 @@
     
     // TODO: handle more than one map?
     CAYDataMap *dataMap = [[self maps] objectAtIndex:0];
-    //NSLog(@"datamap.name: %@", [dataMap valueForKey:@"name"]);
+    //NSLog(@"DEBUG: datamap.name: %@", [dataMap valueForKey:@"name"]);
     NSMutableDictionary *objEntityMap = [dataMap objEntityMap];
     
     NSEnumerator *enumerator = [objEntityMap keyEnumerator];
@@ -103,7 +103,7 @@
 {
     // TODO: handle more than one map?
     CAYDataMap *dataMap = [[self maps] objectAtIndex:0];
-    //NSLog(@"datamap.name: %@", [dataMap valueForKey:@"name"]);
+    //NSLog(@"DEBUG: datamap.name: %@", [dataMap valueForKey:@"name"]);
     NSMutableDictionary *objEntityMap = [dataMap objEntityMap];
 
     // TODO: cache the lookup using a NSDictionary!
@@ -119,12 +119,28 @@
         }
     }
     
+    NSLog(@"ERROR: Could not find ObjEntity for class %@", cl);
+    
     return nil;
 }
 
 -(CAYObjEntity *)lookupObjEntity:(CAYPersistentObject *)dataObject
 {
-    return [self objEntityForClass:[dataObject class]];
+    // TODO: handle more than one map?
+    CAYDataMap *dataMap = [[self maps] objectAtIndex:0];
+    //NSLog(@"DEBUG: datamap.name: %@", [dataMap valueForKey:@"name"]);
+    NSMutableDictionary *objEntityMap = [dataMap objEntityMap];
+    
+    CAYObjectId *oid = [dataObject objectId];
+    NSString *entityName = [oid entityName];
+    CAYObjEntity *entity = [objEntityMap valueForKey:entityName];
+    
+    if(!entity)
+    {
+        NSLog(@"ERROR: Could not find ObjEntity for object %@", dataObject);
+    }
+    
+    return entity;
 }
 
 -(NSString *)description

Modified: incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.m
URL: http://svn.apache.org/viewvc/incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.m?view=diff&rev=464653&r1=464652&r2=464653
==============================================================================
--- incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.m (original)
+++ incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.m Mon Oct 16 13:34:27 2006
@@ -265,6 +265,7 @@
     NSData *randomdata = [[NSData alloc] initWithBytes:&randombytes length:8];
     
     CAYObjectId *oid = [[CAYObjectId alloc] init];
+    // need to search by class as o does not have an ObjectId with entityName yet
     CAYObjEntity *objEntity = [[self entityResolver] objEntityForClass:[o class]];
     [oid setEntityName:[objEntity name]];
     [oid setTempKey:randomdata];