Fix bug where autoreleased node requests where set nil and then released.
@property(nonatomic, strong) ASIPithos *pithos;
@property(nonatomic, strong) ASIPithosAccount *pithosAccount;
+@property(nonatomic, strong) ASIPithosAccountRequest *accountRequest;
+@property(nonatomic, strong) ASIPithosAccountRequest *applyMetadataAccountRequest;
+@property(nonatomic, strong) ASIPithosAccountRequest *refreshMetadataAccountRequest;
@property(nonatomic, strong) NSMutableDictionary *translatedGroups;
- (id)initWithPithos:(ASIPithos *)aPithos;
static NSImage *sharedIcon = nil;
@implementation PithosAccountNode
-@synthesize pithos, pithosAccount, translatedGroups;
+@synthesize pithos, pithosAccount, accountRequest, applyMetadataAccountRequest, refreshMetadataAccountRequest, translatedGroups;
+ (void)initialize {
if (self == [PithosAccountNode class])
pithos = aPithos;
url = nil;
[accountRequest clearDelegatesAndCancel];
- accountRequest = nil;
+ self.accountRequest = nil;
[refreshMetadataAccountRequest clearDelegatesAndCancel];
- refreshMetadataAccountRequest = nil;
+ self.refreshMetadataAccountRequest = nil;
[applyMetadataAccountRequest clearDelegatesAndCancel];
- applyMetadataAccountRequest = nil;
+ self.applyMetadataAccountRequest = nil;
reset = YES;
}
}
@synchronized(self) {
if (reset) {
[accountRequest clearDelegatesAndCancel];
- accountRequest = nil;
+ self.accountRequest = nil;
[refreshMetadataAccountRequest clearDelegatesAndCancel];
- refreshMetadataAccountRequest = nil;
+ self.refreshMetadataAccountRequest = nil;
[applyMetadataAccountRequest clearDelegatesAndCancel];
- applyMetadataAccountRequest = nil;
+ self.applyMetadataAccountRequest = nil;
children = nil;
newChildren = nil;
self.pithosAccount = nil;
break;
case PithosNodeStateRefreshNeeded:
freshness = PithosNodeStateRefreshing;
- accountRequest = [ASIPithosAccountRequest listContainersRequestWithPithos:pithos
- limit:0
- marker:nil
- shared:shared
- until:nil];
+ self.accountRequest = [ASIPithosAccountRequest listContainersRequestWithPithos:pithos
+ limit:0
+ marker:nil
+ shared:shared
+ until:nil];
if (sharingAccount)
[accountRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
else if (!forcedRefresh)
if (retries > 0) {
ASIPithosAccountRequest *newAccountRequest = (ASIPithosAccountRequest *)[PithosUtilities copyRequest:accountRequest];
[(NSMutableDictionary *)(newAccountRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
- accountRequest = newAccountRequest;
+ self.accountRequest = newAccountRequest;
[[PithosUtilities prepareRequest:accountRequest priority:[[accountRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
} else {
newChildren = nil;
- accountRequest = nil;
+ self.accountRequest = nil;
forcedRefresh = NO;
@synchronized(self) {
freshness = PithosNodeStateRefreshNeeded;
}]] makeObjectsPerformSelector:@selector(pithosNodeWillBeRemoved)];
}
// Else cache was used and all results were fetched during this request, so existing children can be reused
- accountRequest = nil;
+ self.accountRequest = nil;
forcedRefresh = NO;
@synchronized(self) {
freshness = PithosNodeStateRefreshFinished;
[self postChildrenUpdatedNotificationName];
} else {
// Do an additional request to fetch more objects
- accountRequest = [ASIPithosAccountRequest listContainersRequestWithPithos:pithos
- limit:0
- marker:[[someContainers lastObject] name]
- shared:shared
- until:nil];
+ self.accountRequest = [ASIPithosAccountRequest listContainersRequestWithPithos:pithos
+ limit:0
+ marker:[[someContainers lastObject] name]
+ shared:shared
+ until:nil];
if (sharingAccount)
[accountRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
else if (!forcedRefresh)
}
} else if (accountRequest.responseStatusCode == 304) {
// Account is not modified, so existing children can be reused
- accountRequest = nil;
+ self.accountRequest = nil;
forcedRefresh = NO;
@synchronized(self) {
freshness = PithosNodeStateRefreshFinished;
if ([request isEqualTo:applyMetadataAccountRequest]) {
@synchronized(self) {
- applyMetadataAccountRequest = nil;
+ self.applyMetadataAccountRequest = nil;
}
[self refreshInfo];
} else if ([request isEqualTo:refreshMetadataAccountRequest]) {
self.pithosAccount = [refreshMetadataAccountRequest account];
@synchronized(self) {
- refreshMetadataAccountRequest = nil;
+ self.refreshMetadataAccountRequest = nil;
}
}
}
[(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
if ([request isEqualTo:applyMetadataAccountRequest]) {
@synchronized(self) {
- applyMetadataAccountRequest = newRequest;
+ self.applyMetadataAccountRequest = newRequest;
}
} else if ([request isEqualTo:refreshMetadataAccountRequest]) {
@synchronized(self) {
- refreshMetadataAccountRequest = newRequest;
+ self.refreshMetadataAccountRequest = newRequest;
}
}
[[PithosUtilities prepareRequest:newRequest priority:[[newRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
if ([request isEqualTo:applyMetadataAccountRequest]) {
[PithosUtilities httpRequestErrorAlertWithRequest:applyMetadataAccountRequest];
@synchronized(self) {
- applyMetadataAccountRequest = nil;
+ self.applyMetadataAccountRequest = nil;
}
} else if ([request isEqualTo:refreshMetadataAccountRequest]) {
[PithosUtilities httpRequestErrorAlertWithRequest:refreshMetadataAccountRequest];
@synchronized(self) {
- refreshMetadataAccountRequest = nil;
+ self.refreshMetadataAccountRequest = nil;
}
}
}
[groups setObject:[NSArray arrayWithObject:@""] forKey:@"group"];
}
- applyMetadataAccountRequest = [ASIPithosAccountRequest updateAccountMetadataRequestWithPithos:pithos
- groups:groups
- metadata:pithosAccount.metadata
- update:NO];
+ self.applyMetadataAccountRequest = [ASIPithosAccountRequest updateAccountMetadataRequestWithPithos:pithos
+ groups:groups
+ metadata:pithosAccount.metadata
+ update:NO];
applyMetadataAccountRequest.delegate = self;
applyMetadataAccountRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
applyMetadataAccountRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);
- (void)refreshInfo {
@synchronized(self) {
if (refreshMetadataAccountRequest == nil) {
- refreshMetadataAccountRequest = [ASIPithosAccountRequest accountMetadataRequestWithPithos:pithos];
+ self.refreshMetadataAccountRequest = [ASIPithosAccountRequest accountMetadataRequestWithPithos:pithos];
refreshMetadataAccountRequest.delegate = self;
refreshMetadataAccountRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
refreshMetadataAccountRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);
@property(nonatomic, strong) ASIPithos *pithos;
@property(nonatomic, strong) ASIPithosContainer *pithosContainer;
+@property(nonatomic, strong) ASIPithosContainerRequest *containerRequest;
@property(nonatomic, strong) NSString *prefix;
+@property(nonatomic, strong) ASIPithosContainerRequest *applyMetadataContainerRequest;
+@property(nonatomic, strong) ASIPithosContainerRequest *refreshMetadataContainerRequest;
@property(nonatomic, strong) NSString *policyVersioning;
@property(nonatomic, strong) NSNumber *policyQuota;
static NSImage *sharedIcon = nil;
@implementation PithosContainerNode
-@synthesize pithos, pithosContainer, prefix;
+@synthesize pithos, pithosContainer, containerRequest, prefix, applyMetadataContainerRequest, refreshMetadataContainerRequest;
@synthesize policyVersioning, policyQuota;
+ (void)initialize {
break;
case PithosNodeStateRefreshNeeded:
freshness = PithosNodeStateRefreshing;
- containerRequest = [ASIPithosContainerRequest listObjectsRequestWithPithos:pithos
- containerName:pithosContainer.name
- limit:0
- marker:nil
- prefix:prefix
- delimiter:@"/"
- path:nil
- meta:nil
- shared:shared
- until:nil];
+ self.containerRequest = [ASIPithosContainerRequest listObjectsRequestWithPithos:pithos
+ containerName:pithosContainer.name
+ limit:0
+ marker:nil
+ prefix:prefix
+ delimiter:@"/"
+ path:nil
+ meta:nil
+ shared:shared
+ until:nil];
if (sharingAccount)
[containerRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
else if (!forcedRefresh)
if (retries > 0) {
ASIPithosContainerRequest *newContainerRequest = (ASIPithosContainerRequest *)[PithosUtilities copyRequest:containerRequest];
[(NSMutableDictionary *)(newContainerRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
- containerRequest = newContainerRequest;
+ self.containerRequest = newContainerRequest;
[[PithosUtilities prepareRequest:containerRequest priority:[[containerRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
} else {
newChildren = nil;
- containerRequest = nil;
+ self.containerRequest = nil;
forcedRefresh = NO;
@synchronized(self) {
freshness = PithosNodeStateRefreshNeeded;
}]] makeObjectsPerformSelector:@selector(pithosNodeWillBeRemoved)];
}
// Else cache was used and all results were fetched during this request, so existing children can be reused
- containerRequest = nil;
+ self.containerRequest = nil;
forcedRefresh = NO;
@synchronized(self) {
freshness = PithosNodeStateRefreshFinished;
[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];
+ self.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)
}
} else if (containerRequest.responseStatusCode == 304) {
// Container is not modified, so existing children can be reused
- containerRequest = nil;
+ self.containerRequest = nil;
forcedRefresh = NO;
@synchronized(self) {
freshness = PithosNodeStateRefreshFinished;
if ([request isEqualTo:applyMetadataContainerRequest]) {
@synchronized(self) {
- applyMetadataContainerRequest = nil;
+ self.applyMetadataContainerRequest = nil;
}
[self refreshInfo];
} else if ([request isEqualTo:refreshMetadataContainerRequest]) {
[[pithosNodeInfoController window] makeFirstResponder:nil];
self.pithosContainer = [refreshMetadataContainerRequest container];
@synchronized(self) {
- refreshMetadataContainerRequest = nil;
+ self.refreshMetadataContainerRequest = nil;
}
}
}
[(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
if ([request isEqualTo:applyMetadataContainerRequest]) {
@synchronized(self) {
- applyMetadataContainerRequest = newRequest;
+ self.applyMetadataContainerRequest = newRequest;
}
} else if ([request isEqualTo:refreshMetadataContainerRequest]) {
@synchronized(self) {
- refreshMetadataContainerRequest = newRequest;
+ self.refreshMetadataContainerRequest = newRequest;
}
}
[[PithosUtilities prepareRequest:newRequest priority:[[newRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
if ([request isEqualTo:applyMetadataContainerRequest]) {
[PithosUtilities httpRequestErrorAlertWithRequest:applyMetadataContainerRequest];
@synchronized(self) {
- applyMetadataContainerRequest = nil;
+ self.applyMetadataContainerRequest = nil;
}
} else if ([request isEqualTo:refreshMetadataContainerRequest]) {
[PithosUtilities httpRequestErrorAlertWithRequest:refreshMetadataContainerRequest];
@synchronized(self) {
- refreshMetadataContainerRequest = nil;
+ self.refreshMetadataContainerRequest = nil;
}
}
}
@synchronized(self) {
if (applyMetadataContainerRequest == nil) {
[[pithosNodeInfoController window] makeFirstResponder:nil];
- applyMetadataContainerRequest = [ASIPithosContainerRequest updateContainerMetadataRequestWithPithos:pithos
- containerName:pithosContainer.name
- policy:[NSDictionary dictionaryWithObjectsAndKeys:
- policyVersioning, @"versioning",
- [policyQuota stringValue], @"quota",
- nil]
- metadata:pithosContainer.metadata
- update:NO];
+ self.applyMetadataContainerRequest = [ASIPithosContainerRequest updateContainerMetadataRequestWithPithos:pithos
+ containerName:pithosContainer.name
+ policy:[NSDictionary dictionaryWithObjectsAndKeys:
+ policyVersioning, @"versioning",
+ [policyQuota stringValue], @"quota",
+ nil]
+ metadata:pithosContainer.metadata
+ 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];
+ self.refreshMetadataContainerRequest = [ASIPithosContainerRequest containerMetadataRequestWithPithos:pithos
+ containerName:pithosContainer.name];
refreshMetadataContainerRequest.delegate = self;
refreshMetadataContainerRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
refreshMetadataContainerRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);
@property (nonatomic, strong) ASIPithosContainer *pithosContainer;
@property (nonatomic, strong) ASIPithosObject *pithosObject;
@property (nonatomic, strong) NSArray *versions;
+@property (nonatomic, strong) ASIPithosObjectRequest *applyMetadataObjectRequest;
+@property (nonatomic, strong) ASIPithosObjectRequest *refreshMetadataObjectRequest;
+@property (nonatomic, strong) ASIPithosObjectRequest *refreshVersionsObjectRequest;
@property (nonatomic, assign) BOOL isPublic;
@property (nonatomic, strong) NSString *translatedModifiedBy;
@property (nonatomic, strong) NSMutableArray *translatedPermissions;
#import "PithosObjectNodeInfoController.h"
@implementation PithosObjectNode
-@synthesize pithos, pithosContainer, pithosObject, versions;
+@synthesize pithos, pithosContainer, pithosObject, versions, applyMetadataObjectRequest, refreshMetadataObjectRequest, refreshVersionsObjectRequest;
@synthesize isPublic, translatedModifiedBy, translatedPermissions;
#pragma mark -
if (responseStatusCode != 202)
[PithosUtilities unexpectedResponseStatusAlertWithRequest:applyMetadataObjectRequest];
@synchronized(self) {
- applyMetadataObjectRequest = nil;
+ self.applyMetadataObjectRequest = nil;
}
if (responseStatusCode == 202)
[self refreshInfo];
[[pithosNodeInfoController window] makeFirstResponder:nil];
self.pithosObject = [refreshMetadataObjectRequest object];
@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;
}
}
}
[(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];
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;
}
}
}
if (applyMetadataObjectRequest == nil) {
[[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];
}
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:);
- (void)refreshInfo {
@synchronized(self) {
if (refreshMetadataObjectRequest == nil) {
- refreshMetadataObjectRequest = [ASIPithosObjectRequest objectMetadataRequestWithPithos:pithos
- containerName:pithosContainer.name
- objectName:pithosObject.name];
+ self.refreshMetadataObjectRequest = [ASIPithosObjectRequest objectMetadataRequestWithPithos:pithos
+ containerName:pithosContainer.name
+ objectName:pithosObject.name];
if (sharingAccount)
[refreshMetadataObjectRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
refreshMetadataObjectRequest.delegate = self;
- (void)refreshVersions {
@synchronized(self) {
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;
}
@property(nonatomic, strong) ASIPithos *pithos;
+@property(nonatomic, strong) ASIPithosRequest *sharingAccountsRequest;
- (id)initWithPithos:(ASIPithos *)aPithos;
#import "PithosActivityFacility.h"
@implementation PithosSharingAccountsNode
-@synthesize pithos;
+@synthesize pithos, sharingAccountsRequest;
#pragma mark -
#pragma mark Object Lifecycle
pithos = aPithos;
url = nil;
[sharingAccountsRequest clearDelegatesAndCancel];
- sharingAccountsRequest = nil;
+ self.sharingAccountsRequest = nil;
reset = YES;
}
}
@synchronized(self) {
if (reset) {
[sharingAccountsRequest clearDelegatesAndCancel];
- sharingAccountsRequest = nil;
+ self.sharingAccountsRequest = nil;
children = nil;
newChildren = nil;
freshness = PithosNodeStateRefreshNeeded;
break;
case PithosNodeStateRefreshNeeded:
freshness = PithosNodeStateRefreshing;
- sharingAccountsRequest = [ASIPithosRequest listSharingAccountsRequestWithPithos:pithos limit:0 marker:nil];
+ self.sharingAccountsRequest = [ASIPithosRequest listSharingAccountsRequestWithPithos:pithos limit:0 marker:nil];
sharingAccountsRequest.delegate = self;
sharingAccountsRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
sharingAccountsRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);
if (retries > 0) {
ASIPithosRequest *newSharingAccountsRequest = (ASIPithosRequest *)[PithosUtilities copyRequest:sharingAccountsRequest];
[(NSMutableDictionary *)(newSharingAccountsRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
- sharingAccountsRequest = newSharingAccountsRequest;
+ self.sharingAccountsRequest = newSharingAccountsRequest;
[[PithosUtilities prepareRequest:sharingAccountsRequest priority:[[sharingAccountsRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
} else {
newChildren = nil;
- sharingAccountsRequest = nil;
+ self.sharingAccountsRequest = nil;
forcedRefresh = NO;
@synchronized(self) {
freshness = PithosNodeStateRefreshNeeded;
[sharingAccountsNames addObject:account.name];
}
[pithosAccountManager updateUserCatalogForForDisplaynames:nil UUIDs:sharingAccountsNames];
- sharingAccountsRequest = nil;
+ self.sharingAccountsRequest = nil;
forcedRefresh = NO;
@synchronized(self) {
freshness = PithosNodeStateRefreshFinished;
[self postChildrenUpdatedNotificationName];
} else {
// Do an additional request to fetch more objects
- sharingAccountsRequest = [ASIPithosRequest listSharingAccountsRequestWithPithos:pithos
- limit:0
- marker:[[someSharingAccounts lastObject] name]];
+ self.sharingAccountsRequest = [ASIPithosRequest listSharingAccountsRequestWithPithos:pithos
+ limit:0
+ marker:[[someSharingAccounts lastObject] name]];
sharingAccountsRequest.delegate = self;
sharingAccountsRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
sharingAccountsRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);
@property (nonatomic, strong) ASIPithosObject *pithosObject;
@property (nonatomic, strong) NSArray *versions;
+@property (nonatomic, strong) ASIPithosObjectRequest *applyMetadataObjectRequest;
+@property (nonatomic, strong) ASIPithosObjectRequest *refreshMetadataObjectRequest;
+@property (nonatomic, strong) ASIPithosObjectRequest *refreshVersionsObjectRequest;
@property (nonatomic, assign) BOOL isPublic;
@property (nonatomic, strong) NSString *translatedModifiedBy;
@property (nonatomic, strong) NSMutableArray *translatedPermissions;
static NSImage *sharedIcon = nil;
@implementation PithosSubdirNode
-@synthesize pithosObject, versions;
+@synthesize pithosObject, versions, applyMetadataObjectRequest, refreshMetadataObjectRequest, refreshVersionsObjectRequest;
@synthesize isPublic, translatedModifiedBy, translatedPermissions;
+ (void)initialize {
if ((responseStatusCode != 201) && (responseStatusCode != 202))
[PithosUtilities unexpectedResponseStatusAlertWithRequest:applyMetadataObjectRequest];
@synchronized(self) {
- applyMetadataObjectRequest = nil;
+ self.applyMetadataObjectRequest = nil;
}
if ((responseStatusCode == 201) || (responseStatusCode == 202))
[self refreshInfo];
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;
}
}
}
[(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];
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;
}
}
}
}
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:);
} 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];
}
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:);
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;
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;