Revision cfc17d33 pithos-macos/PithosSubdirNode.m

b/pithos-macos/PithosSubdirNode.m
49 49
static NSImage *sharedIcon = nil;
50 50

  
51 51
@implementation PithosSubdirNode
52
@synthesize pithosObject;
52
@synthesize pithosObject, versions;
53 53
@synthesize isPublic;
54 54

  
55 55
+ (void)initialize {
......
67 67
        self.pithos = aPithos;
68 68
        self.pithosContainer = aPithosContainer;
69 69
        self.pithosObject = aPithosObject;
70
        childrenUpdatedNotificationName = @"PithosSubdirNodeChildrenUpdated";
70 71
        refreshParent = NO;
71 72
    }
72 73
    return self;
73 74
}
74 75

  
75 76
- (void)dealloc {
77
    [refreshVersionsObjectRequest clearDelegatesAndCancel];
78
    [refreshVersionsObjectRequest release];
76 79
    [refreshMetadataObjectRequest clearDelegatesAndCancel];
77 80
    [refreshMetadataObjectRequest release];
78 81
    [applyMetadataObjectRequest clearDelegatesAndCancel];
79 82
    [applyMetadataObjectRequest release];
83
    [versions release];
80 84
    [pithosObject release];
81 85
    [super dealloc];
82 86
}
......
193 197
            [refreshMetadataObjectRequest release];
194 198
            refreshMetadataObjectRequest = nil;
195 199
        }
200
    } else if ([request isEqualTo:refreshVersionsObjectRequest]) {
201
        [[pithosNodeInfoController window] makeFirstResponder:nil];
202
        self.versions = [refreshVersionsObjectRequest versions];
203
        @synchronized(self) {
204
            [refreshVersionsObjectRequest release];
205
            refreshVersionsObjectRequest = nil;
206
        }
196 207
    }
197 208
    [pool drain];
198 209
}
......
213 224
                [refreshMetadataObjectRequest release];
214 225
                refreshMetadataObjectRequest = newRequest;
215 226
            }
227
        } else if ([request isEqualTo:refreshVersionsObjectRequest]) {
228
            @synchronized(self) {
229
                [refreshVersionsObjectRequest release];
230
                refreshVersionsObjectRequest = newRequest;
231
            }
216 232
        }
217 233
        [[PithosUtilities prepareRequest:newRequest priority:[[newRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
218 234
    } else {
......
232 248
                [refreshMetadataObjectRequest release];
233 249
                refreshMetadataObjectRequest = nil;
234 250
            }
251
        } else if ([request isEqualTo:refreshVersionsObjectRequest]) {
252
            dispatch_async(dispatch_get_main_queue(), ^{
253
                [PithosUtilities httpRequestErrorAlertWithRequest:refreshVersionsObjectRequest];
254
            });
255
            @synchronized(self) {
256
                [refreshVersionsObjectRequest release];
257
                refreshVersionsObjectRequest = nil;
258
            }
235 259
        }
236 260
    }
237 261
    [pool drain];
......
366 390
    @synchronized(self) {
367 391
        if (pithosObject.subdir) {
368 392
            self.pithosObject = [ASIPithosObject subdirWithName:pithosObject.name];
393
            return;
369 394
        } else if (refreshMetadataObjectRequest == nil) {
370 395
            refreshMetadataObjectRequest = [[ASIPithosObjectRequest objectMetadataRequestWithPithos:pithos 
371 396
                                                                                      containerName:pithosContainer.name 
......
385 410
            [[PithosUtilities prepareRequest:refreshMetadataObjectRequest priority:NSOperationQueuePriorityHigh] startAsynchronous];
386 411
        }
387 412
    }
413
    [self refreshVersions];
414
}
415

  
416
#pragma mark -
417
#pragma mark Versions
418

  
419
- (void)refreshVersions {
420
    @synchronized(self) {
421
        if (pithosObject.subdir) {
422
            return;
423
        } else if (refreshVersionsObjectRequest == nil) {
424
            refreshVersionsObjectRequest = [[ASIPithosObjectRequest objectVersionsRequestWithPithos:pithos 
425
                                                                                      containerName:pithosContainer.name 
426
                                                                                         objectName:pithosObject.name] retain];
427
            if (sharingAccount)
428
                [refreshVersionsObjectRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
429
            refreshVersionsObjectRequest.delegate = self;
430
            refreshVersionsObjectRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
431
            refreshVersionsObjectRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);
432
            refreshVersionsObjectRequest.userInfo = [NSMutableDictionary dictionaryWithObjectsAndKeys:
433
                                                     [NSNumber numberWithInteger:NSOperationQueuePriorityHigh], @"priority", 
434
                                                     [NSNumber numberWithUnsignedInteger:10], @"retries", 
435
                                                     NSStringFromSelector(@selector(objectRequestFinished:)), @"didFinishSelector", 
436
                                                     NSStringFromSelector(@selector(objectRequestFailed:)), @"didFailSelector", 
437
                                                     nil];
438
            refreshVersionsObjectRequest.downloadCache = [ASIDownloadCache sharedCache];
439
            [[PithosUtilities prepareRequest:refreshVersionsObjectRequest priority:NSOperationQueuePriorityHigh] startAsynchronous];
440
        }
441
    }
388 442
}
389 443

  
390 444
#pragma mark -

Also available in: Unified diff