+ (void)initialize {
if (self == [PithosContainerNode class])
- sharedIcon = [[[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(kGenericHardDiskIcon)] retain];
+ sharedIcon = [[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(kGenericHardDiskIcon)];
}
#pragma mark -
self.pithosContainer = aPithosContainer;
prefix = nil;
self.icon = anIcon;
- self.childrenUpdatedNotificationName = [NSString stringWithString:@"PithosContainerNodeChildrenUpdated"];
}
return self;
}
- (void)dealloc {
[containerRequest clearDelegatesAndCancel];
- [containerRequest release];
[refreshMetadataContainerRequest clearDelegatesAndCancel];
- [refreshMetadataContainerRequest release];
[applyMetadataContainerRequest clearDelegatesAndCancel];
- [applyMetadataContainerRequest release];
- [policyQuota release];
- [policyVersioning release];
- [prefix release];
- [objects release];
- [pithosContainer release];
- [pithos release];
- [super dealloc];
}
#pragma mark -
- (void)setPithos:(ASIPithos *)aPithos {
if (aPithos && ![aPithos isEqualTo:pithos]) {
- [pithos release];
- pithos = [aPithos retain];
- [url release];
+ pithos = aPithos;
url = nil;
}
}
break;
case PithosNodeStateRefreshNeeded:
freshness = PithosNodeStateRefreshing;
- containerRequest = [[ASIPithosContainerRequest listObjectsRequestWithPithos:pithos
+ containerRequest = [ASIPithosContainerRequest listObjectsRequestWithPithos:pithos
containerName:pithosContainer.name
limit:0
marker:nil
path:nil
meta:nil
shared:shared
- until:nil] retain];
+ until:nil];
if (sharingAccount)
[containerRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
+ else if (!forcedRefresh)
+ containerRequest.downloadCache = [ASIDownloadCache sharedCache];
containerRequest.delegate = self;
containerRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
containerRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);
NSStringFromSelector(@selector(containerRequestFinished:)), @"didFinishSelector",
NSStringFromSelector(@selector(containerRequestFailed:)), @"didFailSelector",
nil];
- if (!forcedRefresh)
- containerRequest.downloadCache = [ASIDownloadCache sharedCache];
[[PithosUtilities prepareRequest:containerRequest priority:NSOperationQueuePriorityVeryHigh] startAsynchronous];
break;
case PithosNodeStateRefreshing:
break;
case PithosNodeStateRefreshFinished:
if (newChildren) {
- [children release];
children = newChildren;
newChildren = nil;
}
}
- (NSString *)displayName {
- return [[pithosContainer.name copy] autorelease];
+ return [pithosContainer.name copy];
}
- (void)setDisplayName:(NSString *)aDisplayName {
- (NSImage *)icon {
if (icon == nil) {
if ([pithosContainer.name isEqualToString:@"pithos"])
- icon = [[[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(kToolbarHomeIcon)] retain];
+ icon = [[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(kToolbarHomeIcon)];
else if ([pithosContainer.name isEqualToString:@"trash"])
- icon = [[[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(kFullTrashIcon)] retain];
+ icon = [[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(kFullTrashIcon)];
else
- icon = [sharedIcon retain];
+ icon = sharedIcon;
}
return icon;
}
- (void)setPithosContainer:(ASIPithosContainer *)aPithosContainer {
if (![pithosContainer isEqualTo:aPithosContainer]) {
- [pithosContainer release];
- pithosContainer = [aPithosContainer retain];
+ pithosContainer = aPithosContainer;
}
if (pithosContainer.policy) {
self.policyVersioning = [pithosContainer.policy objectForKey:@"versioning"];
#pragma mark ASIHTTPRequestDelegate
- (void)containerRequestFailed:(ASIPithosContainerRequest *)request {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- NSUInteger retries = [[containerRequest.userInfo objectForKey:@"retries"] unsignedIntegerValue];
- if (retries > 0) {
- ASIPithosContainerRequest *newContainerRequest = (ASIPithosContainerRequest *)[PithosUtilities copyRequest:containerRequest];
- [(NSMutableDictionary *)(newContainerRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
- [containerRequest release];
- containerRequest = newContainerRequest;
- [[PithosUtilities prepareRequest:containerRequest priority:[[containerRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
- } else {
+ @autoreleasepool {
NSString *message;
NSError *error = [containerRequest error];
if (error)
- message = [NSString stringWithFormat:@"Container listing failed: %@", error];
+ message = [NSString stringWithFormat:@"Container listing %@ failed: %@", containerRequest.url, [error localizedDescription]];
else
- message = [NSString stringWithFormat:@"Container listing failed: (%d) %@",
- containerRequest.responseStatusCode, containerRequest.responseStatusMessage];
+ message = [NSString stringWithFormat:@"Container listing %@ failed: (%d) %@",
+ containerRequest.url, containerRequest.responseStatusCode, containerRequest.responseStatusMessage];
dispatch_async(dispatch_get_main_queue(), ^{
[[PithosActivityFacility defaultPithosActivityFacility] startAndEndActivityWithType:PithosActivityOther message:message];
});
- [newChildren release];
- newChildren = nil;
- [containerRequest release];
- containerRequest = nil;
- [objects release];
- objects = nil;
- forcedRefresh = NO;
- @synchronized(self) {
- freshness = PithosNodeStateRefreshNeeded;
+ NSUInteger retries = [[containerRequest.userInfo objectForKey:@"retries"] unsignedIntegerValue];
+ if (retries > 0) {
+ ASIPithosContainerRequest *newContainerRequest = (ASIPithosContainerRequest *)[PithosUtilities copyRequest:containerRequest];
+ [(NSMutableDictionary *)(newContainerRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
+ containerRequest = newContainerRequest;
+ [[PithosUtilities prepareRequest:containerRequest priority:[[containerRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
+ } else {
+ newChildren = nil;
+ containerRequest = nil;
+ objects = nil;
+ forcedRefresh = NO;
+ @synchronized(self) {
+ freshness = PithosNodeStateRefreshNeeded;
+ }
}
}
- [pool drain];
}
- (void)containerRequestFinished:(ASIPithosContainerRequest *)request {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- NSLog(@"List container finished: %@", [containerRequest url]);
- NSLog(@"Cached: %d", [containerRequest didUseCachedResponse]);
- if (containerRequest.responseStatusCode == 200) {
- if ((pithosContainer.blockHash == nil) || (pithosContainer.blockSize == 0)) {
- pithosContainer.blockHash = [containerRequest blockHash];
- pithosContainer.blockSize = [containerRequest blockSize];
- }
-
- NSArray *someObjects = [containerRequest objects];
- if (objects == nil) {
- objects = [[NSMutableArray alloc] initWithArray:someObjects];
- } else {
- [objects addObjectsFromArray:someObjects];
- }
- if ([someObjects count] < 10000) {
- if (!containerRequest.didUseCachedResponse || ([objects count] != [someObjects count]) || !children) {
- // Save new children
- NSLog(@"using newChildren");
- newChildren = [[NSMutableArray alloc] init];
- NSArray *objectNames = [objects valueForKey:@"name"];
- NSMutableIndexSet *keptNodes = [NSMutableIndexSet indexSet];
- BOOL isSubdirNode = ([self class] == [PithosSubdirNode class]);
- for (ASIPithosObject *object in objects) {
- if (!isSubdirNode ||
- ([object.name hasPrefix:[((PithosSubdirNode *)self).prefix stringByAppendingString:@"/"]] &&
- ([object.name length] > [((PithosSubdirNode *)self).prefix length] + 1))) {
- // The check above removes false objects due to trailing slash or same prefix
- if (object.subdir) {
- NSUInteger sameNameObjectIndex = [objectNames indexOfObject:[object.name substringToIndex:([object.name length] - 1)]];
- if ((sameNameObjectIndex == NSNotFound) ||
- ![PithosUtilities isContentTypeDirectory:[[objects objectAtIndex:sameNameObjectIndex] contentType]]) {
- PithosSubdirNode *node = [[[PithosSubdirNode alloc] initWithPithos:pithos
+ @autoreleasepool {
+ DLog(@"List container finished: %@", [containerRequest url]);
+ DLog(@"Cached: %d", [containerRequest didUseCachedResponse]);
+ if (containerRequest.responseStatusCode == 200) {
+ if ((pithosContainer.blockHash == nil) || (pithosContainer.blockSize == 0)) {
+ pithosContainer.blockHash = [containerRequest blockHash];
+ pithosContainer.blockSize = [containerRequest blockSize];
+ }
+
+ NSArray *someObjects = [containerRequest objects];
+ if (objects == nil) {
+ objects = [[NSMutableArray alloc] initWithArray:someObjects];
+ } else {
+ [objects addObjectsFromArray:someObjects];
+ }
+ if ([someObjects count] < 10000) {
+ if (!containerRequest.didUseCachedResponse || ([objects count] != [someObjects count]) || !children) {
+ // Save new children
+ DLog(@"using newChildren");
+ newChildren = [[NSMutableArray alloc] init];
+ NSArray *objectNames = [objects valueForKey:@"name"];
+ NSMutableIndexSet *keptNodes = [NSMutableIndexSet indexSet];
+ BOOL isSubdirNode = ([self class] == [PithosSubdirNode class]);
+ for (ASIPithosObject *object in objects) {
+ if (!isSubdirNode ||
+ ([object.name hasPrefix:[((PithosSubdirNode *)self).prefix stringByAppendingString:@"/"]] &&
+ ([object.name length] > [((PithosSubdirNode *)self).prefix length] + 1))) {
+ // The check above removes false objects due to trailing slash or same prefix
+ if (object.subdir) {
+ NSUInteger sameNameObjectIndex = [objectNames indexOfObject:[object.name substringToIndex:([object.name length] - 1)]];
+ if ((sameNameObjectIndex == NSNotFound) ||
+ ![PithosUtilities isContentTypeDirectory:[[objects objectAtIndex:sameNameObjectIndex] contentType]]) {
+ PithosSubdirNode *node = [[PithosSubdirNode alloc] initWithPithos:pithos
+ pithosContainer:pithosContainer
+ pithosObject:object];
+ node.parent = self;
+ node.shared = shared;
+ node.sharingAccount = sharingAccount;
+ node.inheritChildrenUpdatedNotificationName = inheritChildrenUpdatedNotificationName;
+ node.pithosAccountManager = pithosAccountManager;
+ if (children) {
+ NSUInteger oldIndex = [children indexOfObject:node];
+ if (oldIndex != NSNotFound) {
+ // Use the same pointer value, if possible
+ node = [children objectAtIndex:oldIndex];
+ node.pithosContainer = pithosContainer;
+// node.pithosObject = object;
+ [node setLimitedPithosObject:object];
+ [keptNodes addIndex:oldIndex];
+ }
+ }
+ if (sharingAccount)
+ node.pithosObject.allowedTo = @"read";
+ [newChildren addObject:node];
+ }
+ } else if ([PithosUtilities isContentTypeDirectory:object.contentType]) {
+ PithosSubdirNode *node = [[PithosSubdirNode alloc] initWithPithos:pithos
pithosContainer:pithosContainer
- pithosObject:object] autorelease];
+ pithosObject:object];
node.parent = self;
node.shared = shared;
node.sharingAccount = sharingAccount;
+ node.inheritChildrenUpdatedNotificationName = inheritChildrenUpdatedNotificationName;
+ node.pithosAccountManager = pithosAccountManager;
if (children) {
NSUInteger oldIndex = [children indexOfObject:node];
if (oldIndex != NSNotFound) {
// Use the same pointer value, if possible
node = [children objectAtIndex:oldIndex];
node.pithosContainer = pithosContainer;
-// node.pithosObject = object;
+// node.pithosObject = object;
[node setLimitedPithosObject:object];
[keptNodes addIndex:oldIndex];
}
}
- if (sharingAccount)
- node.pithosObject.allowedTo = [NSString stringWithString:@"read"];
[newChildren addObject:node];
- }
- } else if ([PithosUtilities isContentTypeDirectory:object.contentType]) {
- PithosSubdirNode *node = [[[PithosSubdirNode alloc] initWithPithos:pithos
- pithosContainer:pithosContainer
- pithosObject:object] autorelease];
- node.parent = self;
- node.shared = shared;
- node.sharingAccount = sharingAccount;
- if (children) {
- NSUInteger oldIndex = [children indexOfObject:node];
- if (oldIndex != NSNotFound) {
- // Use the same pointer value, if possible
- node = [children objectAtIndex:oldIndex];
- node.pithosContainer = pithosContainer;
-// node.pithosObject = object;
- [node setLimitedPithosObject:object];
- [keptNodes addIndex:oldIndex];
- }
- }
- [newChildren addObject:node];
- } else {
- PithosObjectNode *node = [[[PithosObjectNode alloc] initWithPithos:pithos
- pithosContainer:pithosContainer
- pithosObject:object] autorelease];
- node.parent = self;
- node.shared = shared;
- node.sharingAccount = sharingAccount;
- if (children) {
- NSUInteger oldIndex = [children indexOfObject:node];
- if (oldIndex != NSNotFound) {
- // Use the same pointer value, if possible
- node = [children objectAtIndex:oldIndex];
- node.pithosContainer = pithosContainer;
-// node.pithosObject = object;
- [node setLimitedPithosObject:object];
- [keptNodes addIndex:oldIndex];
+ } else {
+ PithosObjectNode *node = [[PithosObjectNode alloc] initWithPithos:pithos
+ pithosContainer:pithosContainer
+ pithosObject:object];
+ node.parent = self;
+ node.shared = shared;
+ node.sharingAccount = sharingAccount;
+ node.inheritChildrenUpdatedNotificationName = inheritChildrenUpdatedNotificationName;
+ node.pithosAccountManager = pithosAccountManager;
+ if (children) {
+ NSUInteger oldIndex = [children indexOfObject:node];
+ if (oldIndex != NSNotFound) {
+ // Use the same pointer value, if possible
+ node = [children objectAtIndex:oldIndex];
+ node.pithosContainer = pithosContainer;
+// node.pithosObject = object;
+ [node setLimitedPithosObject:object];
+ [keptNodes addIndex:oldIndex];
+ }
}
+ [newChildren addObject:node];
}
- [newChildren addObject:node];
}
}
+ [[children objectsAtIndexes:
+ [[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, [children count])] indexesPassingTest:^(NSUInteger idx, BOOL *stop){
+ if ([keptNodes containsIndex:idx])
+ return NO;
+ return YES;
+ }]] makeObjectsPerformSelector:@selector(pithosNodeWillBeRemoved)];
+ }
+ // Else cache was used and all results were fetched during this request, so existing children can be reused
+ containerRequest = nil;
+ objects = nil;
+ forcedRefresh = NO;
+ @synchronized(self) {
+ freshness = PithosNodeStateRefreshFinished;
}
- [[children objectsAtIndexes:
- [[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, [children count])] indexesPassingTest:^(NSUInteger idx, BOOL *stop){
- if ([keptNodes containsIndex:idx])
- return NO;
- return YES;
- }]] makeObjectsPerformSelector:@selector(pithosNodeWillBeRemoved)];
+ [self postChildrenUpdatedNotificationName];
+ } else {
+ // Do an additional request to fetch more objects
+ containerRequest = [ASIPithosContainerRequest listObjectsRequestWithPithos:pithos
+ containerName:pithosContainer.name
+ limit:0
+ marker:[[someObjects lastObject] name]
+ prefix:prefix
+ delimiter:@"/"
+ path:nil
+ meta:nil
+ shared:shared
+ until:nil];
+ if (sharingAccount)
+ [containerRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
+ else if (!forcedRefresh)
+ containerRequest.downloadCache = [ASIDownloadCache sharedCache];
+ containerRequest.delegate = self;
+ containerRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
+ containerRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);
+ containerRequest.userInfo = [NSMutableDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithInteger:NSOperationQueuePriorityVeryHigh], @"priority",
+ [NSNumber numberWithUnsignedInteger:10], @"retries",
+ NSStringFromSelector(@selector(containerRequestFinished:)), @"didFinishSelector",
+ NSStringFromSelector(@selector(containerRequestFailed:)), @"didFailSelector",
+ nil];
+ [[PithosUtilities prepareRequest:containerRequest priority:NSOperationQueuePriorityVeryHigh] startAsynchronous];
}
- // Else cache was used and all results were fetched during this request, so existing children can be reused
- [containerRequest release];
+ } else if (containerRequest.responseStatusCode == 304) {
+ // Container is not modified, so existing children can be reused
containerRequest = nil;
- [objects release];
objects = nil;
forcedRefresh = NO;
@synchronized(self) {
freshness = PithosNodeStateRefreshFinished;
}
- if (childrenUpdatedNotificationName) {
- // Notify observers that children are updated
- [[NSNotificationCenter defaultCenter] postNotificationName:childrenUpdatedNotificationName object:self];
- }
+ [self postChildrenUpdatedNotificationName];
} else {
- [containerRequest release];
- // Do an additional request to fetch more objects
- containerRequest = [[ASIPithosContainerRequest listObjectsRequestWithPithos:pithos
- containerName:pithosContainer.name
- limit:0
- marker:[[someObjects lastObject] name]
- prefix:prefix
- delimiter:@"/"
- path:nil
- meta:nil
- shared:shared
- until:nil] retain];
- if (sharingAccount)
- [containerRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
- containerRequest.delegate = self;
- containerRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
- containerRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);
- containerRequest.userInfo = [NSMutableDictionary dictionaryWithObjectsAndKeys:
- [NSNumber numberWithInteger:NSOperationQueuePriorityVeryHigh], @"priority",
- [NSNumber numberWithUnsignedInteger:10], @"retries",
- NSStringFromSelector(@selector(containerRequestFinished:)), @"didFinishSelector",
- NSStringFromSelector(@selector(containerRequestFailed:)), @"didFailSelector",
- nil];
- if (!forcedRefresh)
- containerRequest.downloadCache = [ASIDownloadCache sharedCache];
- [[PithosUtilities prepareRequest:containerRequest priority:NSOperationQueuePriorityVeryHigh] startAsynchronous];
+ [self containerRequestFailed:containerRequest];
}
- } else if (containerRequest.responseStatusCode == 304) {
- // Container is not modified, so existing children can be reused
- [containerRequest release];
- containerRequest = nil;
- [objects release];
- objects = nil;
- forcedRefresh = NO;
- @synchronized(self) {
- freshness = PithosNodeStateRefreshFinished;
- }
- if (childrenUpdatedNotificationName) {
- // Notify observers that children are updated
- [[NSNotificationCenter defaultCenter] postNotificationName:childrenUpdatedNotificationName object:self];
- }
- } else {
- [self containerRequestFailed:containerRequest];
}
- [pool drain];
}
- (void)containerMetadataRequestFinished:(ASIPithosContainerRequest *)request {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- NSLog(@"URL: %@", [request url]);
- NSLog(@"cached: %d", [request didUseCachedResponse]);
-
- if ([request isEqualTo:applyMetadataContainerRequest]) {
- @synchronized(self) {
- [applyMetadataContainerRequest release];
- applyMetadataContainerRequest = nil;
- }
- [self refreshInfo];
- } else if ([request isEqualTo:refreshMetadataContainerRequest]) {
- [[pithosNodeInfoController window] makeFirstResponder:nil];
- self.pithosContainer = [refreshMetadataContainerRequest container];
- @synchronized(self) {
- [refreshMetadataContainerRequest release];
- refreshMetadataContainerRequest = nil;
- }
- }
- [pool drain];
-}
-
-- (void)containerMetadataRequestFailed:(ASIPithosContainerRequest *)request {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- NSUInteger retries = [[request.userInfo objectForKey:@"retries"] unsignedIntegerValue];
- if (retries > 0) {
- ASIPithosContainerRequest *newRequest = (ASIPithosContainerRequest *)[[PithosUtilities copyRequest:request] autorelease];
- [(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
+ @autoreleasepool {
+ DLog(@"URL: %@", [request url]);
+ DLog(@"cached: %d", [request didUseCachedResponse]);
+
if ([request isEqualTo:applyMetadataContainerRequest]) {
@synchronized(self) {
- [applyMetadataContainerRequest release];
- applyMetadataContainerRequest = newRequest;
+ applyMetadataContainerRequest = nil;
}
+ [self refreshInfo];
} else if ([request isEqualTo:refreshMetadataContainerRequest]) {
+ [[pithosNodeInfoController window] makeFirstResponder:nil];
+ self.pithosContainer = [refreshMetadataContainerRequest container];
@synchronized(self) {
- [refreshMetadataContainerRequest release];
- refreshMetadataContainerRequest = newRequest;
+ refreshMetadataContainerRequest = nil;
}
}
- [[PithosUtilities prepareRequest:newRequest priority:[[newRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
- } else {
- if ([request isEqualTo:applyMetadataContainerRequest]) {
- dispatch_async(dispatch_get_main_queue(), ^{
- [PithosUtilities httpRequestErrorAlertWithRequest:applyMetadataContainerRequest];
- });
- @synchronized(self) {
- [applyMetadataContainerRequest release];
- applyMetadataContainerRequest = nil;
+ }
+}
+
+- (void)containerMetadataRequestFailed:(ASIPithosContainerRequest *)request {
+ @autoreleasepool {
+ NSUInteger retries = [[request.userInfo objectForKey:@"retries"] unsignedIntegerValue];
+ if (retries > 0) {
+ ASIPithosContainerRequest *newRequest = (ASIPithosContainerRequest *)[PithosUtilities copyRequest:request];
+ [(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
+ if ([request isEqualTo:applyMetadataContainerRequest]) {
+ @synchronized(self) {
+ applyMetadataContainerRequest = newRequest;
+ }
+ } else if ([request isEqualTo:refreshMetadataContainerRequest]) {
+ @synchronized(self) {
+ refreshMetadataContainerRequest = newRequest;
+ }
}
- } else if ([request isEqualTo:refreshMetadataContainerRequest]) {
- dispatch_async(dispatch_get_main_queue(), ^{
+ [[PithosUtilities prepareRequest:newRequest priority:[[newRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
+ } else {
+ if ([request isEqualTo:applyMetadataContainerRequest]) {
+ [PithosUtilities httpRequestErrorAlertWithRequest:applyMetadataContainerRequest];
+ @synchronized(self) {
+ applyMetadataContainerRequest = nil;
+ }
+ } else if ([request isEqualTo:refreshMetadataContainerRequest]) {
[PithosUtilities httpRequestErrorAlertWithRequest:refreshMetadataContainerRequest];
- });
- @synchronized(self) {
- [refreshMetadataContainerRequest release];
- refreshMetadataContainerRequest = nil;
+ @synchronized(self) {
+ refreshMetadataContainerRequest = nil;
+ }
}
}
}
- [pool drain];
}
#pragma mark -
@synchronized(self) {
if (applyMetadataContainerRequest == nil) {
[[pithosNodeInfoController window] makeFirstResponder:nil];
- applyMetadataContainerRequest = [[ASIPithosContainerRequest updateContainerMetadataRequestWithPithos:pithos
+ applyMetadataContainerRequest = [ASIPithosContainerRequest updateContainerMetadataRequestWithPithos:pithos
containerName:pithosContainer.name
policy:[NSDictionary dictionaryWithObjectsAndKeys:
policyVersioning, @"versioning",
[policyQuota stringValue], @"quota",
nil]
metadata:pithosContainer.metadata
- update:NO] retain];
+ update:NO];
applyMetadataContainerRequest.delegate = self;
applyMetadataContainerRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
applyMetadataContainerRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);
- (void)refreshInfo {
@synchronized(self) {
if (refreshMetadataContainerRequest == nil) {
- refreshMetadataContainerRequest = [[ASIPithosContainerRequest containerMetadataRequestWithPithos:pithos
- containerName:pithosContainer.name] retain];
+ refreshMetadataContainerRequest = [ASIPithosContainerRequest containerMetadataRequestWithPithos:pithos
+ containerName:pithosContainer.name];
refreshMetadataContainerRequest.delegate = self;
refreshMetadataContainerRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
refreshMetadataContainerRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);
NSStringFromSelector(@selector(containerMetadataRequestFinished:)), @"didFinishSelector",
NSStringFromSelector(@selector(containerMetadataRequestFailed:)), @"didFailSelector",
nil];
- refreshMetadataContainerRequest.downloadCache = [ASIDownloadCache sharedCache];
+ if (!sharingAccount)
+ refreshMetadataContainerRequest.downloadCache = [ASIDownloadCache sharedCache];
[[PithosUtilities prepareRequest:refreshMetadataContainerRequest priority:NSOperationQueuePriorityHigh] startAsynchronous];
}
}