Improve UUID translation in nodes
[pithos-macos] / pithos-macos / PithosSubdirNode.m
index ba3e492..7c3d513 100644 (file)
@@ -51,7 +51,7 @@
 static NSImage *sharedIcon = nil;
 
 @implementation PithosSubdirNode
-@synthesize pithosObject, versions;
+@synthesize pithosObject, versions, applyMetadataObjectRequest, refreshMetadataObjectRequest, refreshVersionsObjectRequest;
 @synthesize isPublic, translatedModifiedBy, translatedPermissions;
 
 + (void)initialize {
@@ -62,14 +62,15 @@ static NSImage *sharedIcon = nil;
 #pragma mark -
 #pragma mark Object Lifecycle
 
-- (id)initWithPithos:(ASIPithos *)aPithos 
-     pithosContainer:(ASIPithosContainer *)aPithosContainer 
-        pithosObject:(ASIPithosObject *)aPithosObject {
-    if ((self = [super init])) {
-        self.pithos = aPithos;
+- (id)initWithPithosAccountManager:(PithosAccount *)aPithosAccountManager
+                         andPithos:(ASIPithos *)aPithos
+                   pithosContainer:(ASIPithosContainer *)aPithosContainer
+                      pithosObject:(ASIPithosObject *)aPithosObject {
+    if ((self = [super initWithPithosAccountManager:aPithosAccountManager])) {
+        pithos = aPithos;
+        refreshParent = NO;
         self.pithosContainer = aPithosContainer;
         self.pithosObject = aPithosObject;
-        refreshParent = NO;
     }
     return self;
 }
@@ -220,7 +221,7 @@ static NSImage *sharedIcon = nil;
             if ((responseStatusCode != 201) && (responseStatusCode != 202))
                 [PithosUtilities unexpectedResponseStatusAlertWithRequest:applyMetadataObjectRequest];
             @synchronized(self) {
-                applyMetadataObjectRequest = nil;
+                self.applyMetadataObjectRequest = nil;
             }
             if ((responseStatusCode == 201) || (responseStatusCode == 202))
                 [self refreshInfo];
@@ -234,13 +235,13 @@ static NSImage *sharedIcon = nil;
                 refreshParent = NO;
             }
             @synchronized(self) {
-                refreshMetadataObjectRequest = nil;
+                self.refreshMetadataObjectRequest = nil;
             }
         } else if ([request isEqualTo:refreshVersionsObjectRequest]) {
             [[pithosNodeInfoController window] makeFirstResponder:nil];
             self.versions = [refreshVersionsObjectRequest versions];
             @synchronized(self) {
-                refreshVersionsObjectRequest = nil;
+                self.refreshVersionsObjectRequest = nil;
             }
         }
     }
@@ -254,15 +255,15 @@ static NSImage *sharedIcon = nil;
             [(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
             if ([request isEqualTo:applyMetadataObjectRequest]) {
                 @synchronized(self) {
-                    applyMetadataObjectRequest = newRequest;
+                    self.applyMetadataObjectRequest = newRequest;
                 }
             } else if ([request isEqualTo:refreshMetadataObjectRequest]) {
                 @synchronized(self) {
-                    refreshMetadataObjectRequest = newRequest;
+                    self.refreshMetadataObjectRequest = newRequest;
                 }
             } else if ([request isEqualTo:refreshVersionsObjectRequest]) {
                 @synchronized(self) {
-                    refreshVersionsObjectRequest = newRequest;
+                    self.refreshVersionsObjectRequest = newRequest;
                 }
             }
             [[PithosUtilities prepareRequest:newRequest priority:[[newRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
@@ -270,17 +271,17 @@ static NSImage *sharedIcon = nil;
             if ([request isEqualTo:applyMetadataObjectRequest]) {
                 [PithosUtilities httpRequestErrorAlertWithRequest:applyMetadataObjectRequest];
                 @synchronized(self) {
-                    applyMetadataObjectRequest = nil;
+                    self.applyMetadataObjectRequest = nil;
                 }
             } else if ([request isEqualTo:refreshMetadataObjectRequest]) {
                 [PithosUtilities httpRequestErrorAlertWithRequest:refreshMetadataObjectRequest];
                 @synchronized(self) {
-                    refreshMetadataObjectRequest = nil;
+                    self.refreshMetadataObjectRequest = nil;
                 }
             } else if ([request isEqualTo:refreshVersionsObjectRequest]) {
                 [PithosUtilities httpRequestErrorAlertWithRequest:refreshVersionsObjectRequest];
                 @synchronized(self) {
-                    refreshVersionsObjectRequest = nil;
+                    self.refreshVersionsObjectRequest = nil;
                 }
             }
         }
@@ -453,18 +454,18 @@ static NSImage *sharedIcon = nil;
                     }
                     pithosObject.permissions = permissions;
                     
-                    applyMetadataObjectRequest = [ASIPithosObjectRequest writeObjectDataRequestWithPithos:pithos 
-                                                                                             containerName:pithosContainer.name 
-                                                                                                objectName:prefix 
-                                                                                                      eTag:nil
-                                                                                               contentType:@"application/directory"
-                                                                                           contentEncoding:pithosObject.contentEncoding 
-                                                                                        contentDisposition:pithosObject.contentDisposition 
-                                                                                                  manifest:pithosObject.manifest 
-                                                                                                   sharing:(pithosObject.sharing ? pithosObject.sharing : @"")
-                                                                                                  isPublic:(isPublic ? ASIPithosObjectRequestPublicTrue : ASIPithosObjectRequestPublicFalse) 
-                                                                                                  metadata:pithosObject.metadata 
-                                                                                                      data:[NSData data]];
+                    self.applyMetadataObjectRequest = [ASIPithosObjectRequest writeObjectDataRequestWithPithos:pithos
+                                                                                                 containerName:pithosContainer.name
+                                                                                                    objectName:prefix
+                                                                                                          eTag:nil
+                                                                                                   contentType:@"application/directory"
+                                                                                               contentEncoding:pithosObject.contentEncoding
+                                                                                            contentDisposition:pithosObject.contentDisposition
+                                                                                                      manifest:pithosObject.manifest
+                                                                                                       sharing:(pithosObject.sharing ? pithosObject.sharing : @"")
+                                                                                                      isPublic:(isPublic ? ASIPithosObjectRequestPublicTrue : ASIPithosObjectRequestPublicFalse)
+                                                                                                      metadata:pithosObject.metadata
+                                                                                                          data:[NSData data]];
                     pithosObject.subdir = NO;
                     applyMetadataObjectRequest.delegate = self;
                     applyMetadataObjectRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
@@ -480,16 +481,16 @@ static NSImage *sharedIcon = nil;
             } else {
                 [[pithosNodeInfoController window] makeFirstResponder:nil];
                 if (sharingAccount) {
-                    applyMetadataObjectRequest = [ASIPithosObjectRequest updateObjectMetadataRequestWithPithos:pithos 
-                                                                                                  containerName:pithosContainer.name 
-                                                                                                     objectName:pithosObject.name 
-                                                                                                contentEncoding:nil
-                                                                                             contentDisposition:nil
-                                                                                                       manifest:nil 
-                                                                                                        sharing:nil 
-                                                                                                       isPublic:(isPublic ? ASIPithosObjectRequestPublicTrue : ASIPithosObjectRequestPublicFalse) 
-                                                                                                       metadata:pithosObject.metadata
-                                                                                                         update:NO];
+                    self.applyMetadataObjectRequest = [ASIPithosObjectRequest updateObjectMetadataRequestWithPithos:pithos
+                                                                                                      containerName:pithosContainer.name
+                                                                                                         objectName:pithosObject.name
+                                                                                                    contentEncoding:nil
+                                                                                                 contentDisposition:nil
+                                                                                                           manifest:nil
+                                                                                                            sharing:nil
+                                                                                                           isPublic:(isPublic ? ASIPithosObjectRequestPublicTrue : ASIPithosObjectRequestPublicFalse)
+                                                                                                           metadata:pithosObject.metadata
+                                                                                                             update:NO];
                     [applyMetadataObjectRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
                 } else {
                     NSMutableArray *permissions = [NSMutableArray array];
@@ -610,16 +611,16 @@ static NSImage *sharedIcon = nil;
                     }
                     pithosObject.permissions = permissions;
 
-                    applyMetadataObjectRequest = [ASIPithosObjectRequest updateObjectMetadataRequestWithPithos:pithos 
-                                                                                                  containerName:pithosContainer.name 
-                                                                                                     objectName:pithosObject.name 
-                                                                                                contentEncoding:pithosObject.contentEncoding
-                                                                                             contentDisposition:pithosObject.contentDisposition 
-                                                                                                       manifest:pithosObject.manifest 
-                                                                                                        sharing:(pithosObject.sharing ? pithosObject.sharing : @"") 
-                                                                                                       isPublic:(isPublic ? ASIPithosObjectRequestPublicTrue : ASIPithosObjectRequestPublicFalse) 
-                                                                                                       metadata:pithosObject.metadata
-                                                                                                         update:NO];
+                    self.applyMetadataObjectRequest = [ASIPithosObjectRequest updateObjectMetadataRequestWithPithos:pithos
+                                                                                                      containerName:pithosContainer.name
+                                                                                                         objectName:pithosObject.name
+                                                                                                    contentEncoding:pithosObject.contentEncoding
+                                                                                                 contentDisposition:pithosObject.contentDisposition
+                                                                                                           manifest:pithosObject.manifest
+                                                                                                            sharing:(pithosObject.sharing ? pithosObject.sharing : @"")
+                                                                                                           isPublic:(isPublic ? ASIPithosObjectRequestPublicTrue : ASIPithosObjectRequestPublicFalse)
+                                                                                                           metadata:pithosObject.metadata
+                                                                                                             update:NO];
                 }
                 applyMetadataObjectRequest.delegate = self;
                 applyMetadataObjectRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
@@ -642,9 +643,9 @@ static NSImage *sharedIcon = nil;
             self.pithosObject = [ASIPithosObject subdirWithName:pithosObject.name];
             return;
         } else if (refreshMetadataObjectRequest == nil) {
-            refreshMetadataObjectRequest = [ASIPithosObjectRequest objectMetadataRequestWithPithos:pithos 
-                                                                                      containerName:pithosContainer.name 
-                                                                                         objectName:prefix];
+            self.refreshMetadataObjectRequest = [ASIPithosObjectRequest objectMetadataRequestWithPithos:pithos
+                                                                                          containerName:pithosContainer.name
+                                                                                             objectName:prefix];
             if (sharingAccount)
                 [refreshMetadataObjectRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
             refreshMetadataObjectRequest.delegate = self;
@@ -672,9 +673,9 @@ static NSImage *sharedIcon = nil;
         if (pithosObject.subdir) {
             return;
         } else if (refreshVersionsObjectRequest == nil) {
-            refreshVersionsObjectRequest = [ASIPithosObjectRequest objectVersionsRequestWithPithos:pithos 
-                                                                                      containerName:pithosContainer.name 
-                                                                                         objectName:pithosObject.name];
+            self.refreshVersionsObjectRequest = [ASIPithosObjectRequest objectVersionsRequestWithPithos:pithos
+                                                                                          containerName:pithosContainer.name
+                                                                                             objectName:pithosObject.name];
             if (sharingAccount)
                 [refreshVersionsObjectRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
             refreshVersionsObjectRequest.delegate = self;