Revision 7cef5633 pithos-macos/PithosObjectNode.m

b/pithos-macos/PithosObjectNode.m
47 47

  
48 48
@implementation PithosObjectNode
49 49
@synthesize pithos, pithosContainer, pithosObject;
50
@synthesize isPublic;
50
@synthesize isPublic, versions;
51 51

  
52 52
#pragma mark -
53 53
#pragma mark Object Lifecycle
......
72 72
    [pithosObject release];
73 73
    [pithosContainer release];
74 74
    [pithos release];
75
    [versions release];
75 76
    [super dealloc];
76 77
}
77 78

  
......
179 180
            [refreshMetadataObjectRequest release];
180 181
            refreshMetadataObjectRequest = nil;
181 182
        }
183
    } else if ([request isEqualTo:getObjectVersionsRequest]) {
184
        [[pithosNodeInfoController window] makeFirstResponder:nil];
185
        self.versions = [getObjectVersionsRequest versions];
186
        @synchronized(self) {
187
            [getObjectVersionsRequest release];
188
            getObjectVersionsRequest = nil;
189
        }
182 190
    }
183 191
    [pool drain];
184 192
}
......
199 207
                [refreshMetadataObjectRequest release];
200 208
                refreshMetadataObjectRequest = newRequest;
201 209
            }
210
        } else if ([request isEqualTo:getObjectVersionsRequest]) {
211
            @synchronized(self) {
212
                [getObjectVersionsRequest release];
213
                getObjectVersionsRequest = newRequest;
214
            }
202 215
        }
203 216
        [[PithosUtilities prepareRequest:newRequest priority:[[newRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
204 217
    } else {
......
218 231
                [refreshMetadataObjectRequest release];
219 232
                refreshMetadataObjectRequest = nil;
220 233
            }
234
        } else if ([request isEqualTo:getObjectVersionsRequest]) {
235
            dispatch_async(dispatch_get_main_queue(), ^{
236
                [PithosUtilities httpRequestErrorAlertWithRequest:getObjectVersionsRequest];
237
            });
238
            @synchronized(self) {
239
                [getObjectVersionsRequest release];
240
                getObjectVersionsRequest = nil;
241
            }
221 242
        }
222 243
    }
223 244
    [pool drain];
......
288 309
            refreshMetadataObjectRequest.downloadCache = [ASIDownloadCache sharedCache];
289 310
            [[PithosUtilities prepareRequest:refreshMetadataObjectRequest priority:NSOperationQueuePriorityHigh] startAsynchronous];
290 311
        }
312
        if (getObjectVersionsRequest == nil) {
313
            getObjectVersionsRequest = [[ASIPithosObjectRequest objectVersionsRequestWithPithos:pithos 
314
                                                                                  containerName:pithosContainer.name 
315
                                                                                     objectName:pithosObject.name] retain];
316
            if (sharingAccount)
317
                [getObjectVersionsRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
318
            getObjectVersionsRequest.delegate = self;
319
            getObjectVersionsRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
320
            getObjectVersionsRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);
321
            getObjectVersionsRequest.userInfo = [NSMutableDictionary dictionaryWithObjectsAndKeys:
322
                                                     [NSNumber numberWithInteger:NSOperationQueuePriorityHigh], @"priority", 
323
                                                     [NSNumber numberWithUnsignedInteger:10], @"retries", 
324
                                                     NSStringFromSelector(@selector(objectRequestFinished:)), @"didFinishSelector", 
325
                                                     NSStringFromSelector(@selector(objectRequestFailed:)), @"didFailSelector", 
326
                                                     nil];
327
            getObjectVersionsRequest.downloadCache = [ASIDownloadCache sharedCache];
328
            [[PithosUtilities prepareRequest:getObjectVersionsRequest priority:NSOperationQueuePriorityHigh] startAsynchronous];
329
        }
291 330
    }
292 331
}
293 332

  
......
304 343
    [NSApp activateIgnoringOtherApps:YES];
305 344
}
306 345

  
307
- (NSArray *)getVersions {
308
    NSArray *versions = nil;
309
    ASIPithosObjectRequest *getObjectVersionsRequest = [[ASIPithosObjectRequest objectVersionsRequestWithPithos:pithos 
310
                                                                                                  containerName:pithosContainer.name 
311
                                                                                                     objectName:pithosObject.name] retain];
312
    if (sharingAccount)
313
        [getObjectVersionsRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
314
    [getObjectVersionsRequest startSynchronous];
315
    NSError *error = [getObjectVersionsRequest error];
316
    if (!error) {
317
        versions = [getObjectVersionsRequest versions];
318
    }
319
    [getObjectVersionsRequest release];
320
    return versions;
321
}
322

  
323 346
@end

Also available in: Unified diff