Author: ericwa
Date: Sun Mar 23 22:58:23 2014
New Revision: 10620

URL: http://svn.gna.org/viewcvs/etoile?rev=10620&view=rev
Log:
COSynchronizerClient: set metadata on received branch & persistent root

Modified:
    trunk/Etoile/Frameworks/CoreObject/Core/COPersistentRoot+Private.h
    trunk/Etoile/Frameworks/CoreObject/Synchronization/COSynchronizerClient.m
    trunk/Etoile/Frameworks/CoreObject/Tests/Synchronization/TestSynchronizer.m
    
trunk/Etoile/Frameworks/CoreObject/Tests/Synchronization/TestSynchronizerCommon.h
    
trunk/Etoile/Frameworks/CoreObject/Tests/Synchronization/TestSynchronizerCommon.m

Modified: trunk/Etoile/Frameworks/CoreObject/Core/COPersistentRoot+Private.h
URL: 
http://svn.gna.org/viewcvs/etoile/trunk/Etoile/Frameworks/CoreObject/Core/COPersistentRoot%2BPrivate.h?rev=10620&r1=10619&r2=10620&view=diff
==============================================================================
--- trunk/Etoile/Frameworks/CoreObject/Core/COPersistentRoot+Private.h  
(original)
+++ trunk/Etoile/Frameworks/CoreObject/Core/COPersistentRoot+Private.h  Sun Mar 
23 22:58:23 2014
@@ -6,6 +6,11 @@
  */
 
 #import <CoreObject/COPersistentRoot.h>
+
+/**
+ * Metadata dictionary key used by the `name` property.
+ */
+extern NSString * const COPersistentRootName;
 
 @class COStoreTransaction;
 

Modified: 
trunk/Etoile/Frameworks/CoreObject/Synchronization/COSynchronizerClient.m
URL: 
http://svn.gna.org/viewcvs/etoile/trunk/Etoile/Frameworks/CoreObject/Synchronization/COSynchronizerClient.m?rev=10620&r1=10619&r2=10620&view=diff
==============================================================================
--- trunk/Etoile/Frameworks/CoreObject/Synchronization/COSynchronizerClient.m   
(original)
+++ trunk/Etoile/Frameworks/CoreObject/Synchronization/COSynchronizerClient.m   
Sun Mar 23 22:58:23 2014
@@ -64,6 +64,7 @@
     if (persistentRoot == nil)
     {
                [txn createPersistentRootWithUUID: message.persistentRootUUID 
persistentRootForCopy: nil];
+               [txn setMetadata: message.persistentRootMetadata 
forPersistentRoot: message.persistentRootUUID];
     }
        
        // 2. Do we have the branch?
@@ -74,6 +75,10 @@
                                         parentBranch: nil
                                  initialRevision: 
message.currentRevision.revisionUUID
                                forPersistentRoot: message.persistentRootUUID];
+               
+               [txn setMetadata: message.branchMetadata
+                          forBranch: message.branchUUID
+               ofPersistentRoot: message.persistentRootUUID];
                
                [txn setCurrentBranch: message.branchUUID
                        forPersistentRoot: message.persistentRootUUID];

Modified: 
trunk/Etoile/Frameworks/CoreObject/Tests/Synchronization/TestSynchronizer.m
URL: 
http://svn.gna.org/viewcvs/etoile/trunk/Etoile/Frameworks/CoreObject/Tests/Synchronization/TestSynchronizer.m?rev=10620&r1=10619&r2=10620&view=diff
==============================================================================
--- trunk/Etoile/Frameworks/CoreObject/Tests/Synchronization/TestSynchronizer.m 
(original)
+++ trunk/Etoile/Frameworks/CoreObject/Tests/Synchronization/TestSynchronizer.m 
Sun Mar 23 22:58:23 2014
@@ -11,6 +11,16 @@
 @end
 
 @implementation TestSynchronizer
+
+- (void) testPersistentRootMetadataReplicated
+{
+       UKObjectsEqual([self persistentRootMetadataForTest], 
clientPersistentRoot.metadata);
+}
+
+- (void) testBranchMetadataReplicated
+{
+       UKObjectsEqual([self branchMetadataForTest], clientBranch.metadata);
+}
 
 - (void) testBasicReplicationToClient
 {
@@ -202,8 +212,8 @@
        // Before the merged changes arrives at the client, make another commit 
on the client
        
        [[clientBranch rootObject] setLabel: @"more changes"];
-       [clientPersistentRoot commitWithMetadata: [self clientMetadataForTest]];
-       UKObjectsEqual([self clientMetadataForTest], [[clientPersistentRoot 
currentRevision] metadata]);
+       [clientPersistentRoot commitWithMetadata: [self 
clientRevisionMetadataForTest]];
+       UKObjectsEqual([self clientRevisionMetadataForTest], 
[[clientPersistentRoot currentRevision] metadata]);
        
        // This should not produce any more messages
        
@@ -214,7 +224,7 @@
        [transport deliverMessagesToClient];
 
        UKObjectsEqual(@"more changes", [[clientBranch rootObject] label]);
-       UKObjectsEqual([self clientMetadataForTest], [[clientPersistentRoot 
currentRevision] metadata]);
+       UKObjectsEqual([self clientRevisionMetadataForTest], 
[[clientPersistentRoot currentRevision] metadata]);
        
        // The client should push back the @"more changes" change to the server
        

Modified: 
trunk/Etoile/Frameworks/CoreObject/Tests/Synchronization/TestSynchronizerCommon.h
URL: 
http://svn.gna.org/viewcvs/etoile/trunk/Etoile/Frameworks/CoreObject/Tests/Synchronization/TestSynchronizerCommon.h?rev=10620&r1=10619&r2=10620&view=diff
==============================================================================
--- 
trunk/Etoile/Frameworks/CoreObject/Tests/Synchronization/TestSynchronizerCommon.h
   (original)
+++ 
trunk/Etoile/Frameworks/CoreObject/Tests/Synchronization/TestSynchronizerCommon.h
   Sun Mar 23 22:58:23 2014
@@ -31,8 +31,11 @@
 - (UnorderedGroupNoOpposite *) addAndCommitServerChild;
 - (UnorderedGroupNoOpposite *) addAndCommitClientChild;
 
-- (NSDictionary *)serverMetadataForTest;
-- (NSDictionary *)clientMetadataForTest;
+- (NSDictionary *)serverRevisionMetadataForTest;
+- (NSDictionary *)clientRevisionMetadataForTest;
+
+- (NSDictionary *)branchMetadataForTest;
+- (NSDictionary *)persistentRootMetadataForTest;
 
 - (NSArray *)serverMessages;
 - (NSArray *)clientMessages;

Modified: 
trunk/Etoile/Frameworks/CoreObject/Tests/Synchronization/TestSynchronizerCommon.m
URL: 
http://svn.gna.org/viewcvs/etoile/trunk/Etoile/Frameworks/CoreObject/Tests/Synchronization/TestSynchronizerCommon.m?rev=10620&r1=10619&r2=10620&view=diff
==============================================================================
--- 
trunk/Etoile/Frameworks/CoreObject/Tests/Synchronization/TestSynchronizerCommon.m
   (original)
+++ 
trunk/Etoile/Frameworks/CoreObject/Tests/Synchronization/TestSynchronizerCommon.m
   Sun Mar 23 22:58:23 2014
@@ -17,7 +17,9 @@
        [[[COSQLiteStore alloc] initWithURL: CLIENT_STORE_URL] clearStore];
        
        serverPersistentRoot = [ctx insertNewPersistentRootWithEntityName: 
@"UnorderedGroupNoOpposite"];
+       serverPersistentRoot.metadata = [self persistentRootMetadataForTest];
        serverBranch = [serverPersistentRoot currentBranch];
+       serverBranch.metadata = [self branchMetadataForTest];
        [ctx commit];
        
        server = [[COSynchronizerServer alloc] initWithBranch: serverBranch];
@@ -26,6 +28,7 @@
        clientCtx = [COEditingContext contextWithURL: CLIENT_STORE_URL];
        client = [[COSynchronizerClient alloc] initWithClientID: @"client" 
editingContext: clientCtx];
        
+       // Transmits the persistent root to the client
        [transport addClient: client];
        
        clientPersistentRoot = client.persistentRoot;
@@ -45,21 +48,31 @@
        ETAssert(error == nil);
 }
 
-- (NSDictionary *)serverMetadataForTest
+- (NSDictionary *)serverRevisionMetadataForTest
 {
        return @{ @"testMetadata" : @"server"};
 }
 
-- (NSDictionary *)clientMetadataForTest
+- (NSDictionary *)clientRevisionMetadataForTest
 {
        return @{ @"testMetadata" : @"client"};
+}
+
+- (NSDictionary *)branchMetadataForTest
+{
+       return @{ kCOBranchLabel : @"my branch" };
+}
+
+- (NSDictionary *)persistentRootMetadataForTest
+{
+       return @{ COPersistentRootName : @"my persistent root" };
 }
 
 - (UnorderedGroupNoOpposite *) addAndCommitServerChild
 {
        UnorderedGroupNoOpposite *serverChild1 = [[serverBranch 
objectGraphContext] insertObjectWithEntityName: 
@"Anonymous.UnorderedGroupNoOpposite"];
        [[[serverBranch rootObject] mutableSetValueForKey: @"contents"] 
addObject: serverChild1];
-       [serverPersistentRoot commitWithMetadata: [self serverMetadataForTest]];
+       [serverPersistentRoot commitWithMetadata: [self 
serverRevisionMetadataForTest]];
        return serverChild1;
 }
 
@@ -67,7 +80,7 @@
 {
        UnorderedGroupNoOpposite *clientChild1 = [[clientBranch 
objectGraphContext] insertObjectWithEntityName: 
@"Anonymous.UnorderedGroupNoOpposite"];
        [[[clientBranch rootObject] mutableSetValueForKey: @"contents"] 
addObject: clientChild1];
-       [clientPersistentRoot commitWithMetadata: [self clientMetadataForTest]];
+       [clientPersistentRoot commitWithMetadata: [self 
clientRevisionMetadataForTest]];
        return clientChild1;
 }
 


_______________________________________________
Etoile-cvs mailing list
Etoile-cvs@gna.org
https://mail.gna.org/listinfo/etoile-cvs

Reply via email to