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 2007/01/08 23:18:04 UTC

svn commit: r494223 - in /incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne: CAYObjectContext.m CAYPersistentObject.h CAYPersistentObject.m CAYUtil.h CAYUtil.m

Author: torehalset
Date: Mon Jan  8 14:18:03 2007
New Revision: 494223

URL: http://svn.apache.org/viewvc?view=rev&rev=494223
Log:
 * moved logic for random data key
 * added CAYPersistentObject#awakeFromInsert

Modified:
    incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.m
    incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYPersistentObject.h
    incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYPersistentObject.m
    incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYUtil.h
    incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYUtil.m

Modified: incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.m
URL: http://svn.apache.org/viewvc/incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.m?view=diff&rev=494223&r1=494222&r2=494223
==============================================================================
--- incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.m (original)
+++ incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYObjectContext.m Mon Jan  8 14:18:03 2007
@@ -36,6 +36,7 @@
 #import "CAYRelationshipQuery.h"
 #import "CAYGenericResponse.h"
 #import "CAYObjectIdQuery.h"
+#import "CAYUtil.h"
 
 @implementation CAYObjectContext
 
@@ -313,65 +314,20 @@
     // set persistant state
 	[o setPersistenceState:PSTATE_NEW];
 		
-    // create random data for key
-    int randombytes[8];
-    int i;
-    for(i = 0; i < 8; i++)
-    {
-        randombytes[i] = rand();
-    }
-    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];
+    [oid setTempKey:[CAYUtil createRandomData:8]];
     [o setObjectId:oid];
-    [randomdata release];
     
     CAYNodeDiff *diff = [[CAYNodeCreateOperation alloc] initWithNodeId:oid];
     [[self objectStore] registerDiff:diff];
     [diff release];
     
     [[self objectStore] setObject:o forId:oid];
-    
-    // init values with NSNull objects
-    NSEnumerator *enumerator = [[objEntity attributes] keyEnumerator];
-    NSString *attribute;
-    while(attribute = [enumerator nextObject])
-    {
-        if(![[o valuesRaw] objectForKey:attribute])
-        {
-            NSLog(@"DEBUG: setting attribute %@ to NSNull", attribute);
-            [[o valuesRaw] setObject:[NSNull null] forKey:attribute];
-        }
-    }
-    
-    // init relationships
-    enumerator = [[objEntity relationships] keyEnumerator];
-    NSString *relationshipName;
-    while(relationshipName = [enumerator nextObject])
-    {
-        if(![[o valuesRaw] objectForKey:relationshipName])
-        {
-            CAYObjRelationship *relationship = [[objEntity relationships] objectForKey:relationshipName];
-            if([relationship isToMany])
-            {
-                NSLog(@"DEBUG: setting relationship %@ to empty array", relationship);
-                NSMutableArray *array = [[NSMutableArray alloc] init];
-                [[o valuesRaw] setObject:array forKey:relationshipName];
-                [array release];
-            }
-            else
-            {
-                NSLog(@"DEBUG: setting attribute %@ to NSNull", relationship);
-                [[o valuesRaw] setObject:[NSNull null] forKey:relationshipName];
-            }
-        }
-    }
-    
     [oid release];
+    [o awakeFromInsert];
     [o release];
 }
 

Modified: incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYPersistentObject.h
URL: http://svn.apache.org/viewvc/incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYPersistentObject.h?view=diff&rev=494223&r1=494222&r2=494223
==============================================================================
--- incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYPersistentObject.h (original)
+++ incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYPersistentObject.h Mon Jan  8 14:18:03 2007
@@ -51,4 +51,6 @@
 -(void)unsetReverseRelationship:(CAYPersistentObject *)value forKey:(NSString *)key;
 -(void)willConnect:(CAYPersistentObject *)value forKey:(NSString *)key;
 
+-(void)awakeFromInsert;
+
 @end

Modified: incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYPersistentObject.m
URL: http://svn.apache.org/viewvc/incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYPersistentObject.m?view=diff&rev=494223&r1=494222&r2=494223
==============================================================================
--- incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYPersistentObject.m (original)
+++ incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYPersistentObject.m Mon Jan  8 14:18:03 2007
@@ -545,6 +545,45 @@
     // TODO: give error if different data contexts?
 }
 
+-(void)awakeFromInsert
+{
+    // init values with NSNull objects
+    CAYObjEntity *objEntity = [[[self objectContext] entityResolver] lookupObjEntity:self];
+    NSEnumerator *enumerator = [[objEntity attributes] keyEnumerator];
+    NSString *attribute;
+    while(attribute = [enumerator nextObject])
+    {
+        if(![[self valuesRaw] objectForKey:attribute])
+        {
+            NSLog(@"DEBUG: setting attribute %@ to NSNull", attribute);
+            [[self valuesRaw] setObject:[NSNull null] forKey:attribute];
+        }
+    }
+    
+    // init relationships
+    enumerator = [[objEntity relationships] keyEnumerator];
+    NSString *relationshipName;
+    while(relationshipName = [enumerator nextObject])
+    {
+        if(![[self valuesRaw] objectForKey:relationshipName])
+        {
+            CAYObjRelationship *relationship = [[objEntity relationships] objectForKey:relationshipName];
+            if([relationship isToMany])
+            {
+                NSLog(@"DEBUG: setting relationship %@ to empty array", relationship);
+                NSMutableArray *array = [[NSMutableArray alloc] init];
+                [[self valuesRaw] setObject:array forKey:relationshipName];
+                [array release];
+            }
+            else
+            {
+                NSLog(@"DEBUG: setting attribute %@ to NSNull", relationship);
+                [[self valuesRaw] setObject:[NSNull null] forKey:relationshipName];
+            }
+        }
+    }
+}
+
 -(void)dealloc
 {
     [self setObjectId:nil];

Modified: incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYUtil.h
URL: http://svn.apache.org/viewvc/incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYUtil.h?view=diff&rev=494223&r1=494222&r2=494223
==============================================================================
--- incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYUtil.h (original)
+++ incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYUtil.h Mon Jan  8 14:18:03 2007
@@ -25,5 +25,6 @@
 }
 
 +(BOOL)nilSafe:(id)a isEqualTo:(id)b;
++(NSData *)createRandomData:(int)length;
 
 @end

Modified: incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYUtil.m
URL: http://svn.apache.org/viewvc/incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYUtil.m?view=diff&rev=494223&r1=494222&r2=494223
==============================================================================
--- incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYUtil.m (original)
+++ incubator/cayenne/sandbox/CocoaCayenne/CocoaCayenne/CAYUtil.m Mon Jan  8 14:18:03 2007
@@ -37,4 +37,16 @@
     return [a isEqualTo:b];
 }
 
++(NSData *)createRandomData:(int)length
+{
+    int randombytes[length];
+    int i;
+    for(i = 0; i < length; i++)
+    {
+        randombytes[i] = rand();
+    }
+    NSData *randomdata = [[[NSData alloc] initWithBytes:&randombytes length:length] autorelease];
+    return randomdata;
+}
+
 @end