Author: gavincornwell
Date: Fri Dec 12 11:47:38 2014
New Revision: 1644862

URL: http://svn.apache.org/r1644862
Log:
Final part of CMIS-874 (Switch from NSURLConnection to NSURLSession).

Several new session parameters have been added to control the use of background 
sessions. Setting the "kCMISSessionParameterUseBackgroundNetworkSession" key to 
YES will create a background network session. 

An identifier for the session and the shared container is required when using 
background mode, these can be set via the 
"kCMISSessionParameterBackgroundNetworkSessionId" and 
"kCMISSessionParameterBackgroundNetworkSessionSharedContainerId" keys, 
respectively. If they are not supplied default values are used, "ObjectiveCMIS" 
for the background identifier and "ObjectiveCMISContainer" for the shared 
container.

Two additional session parameter keys have been added to control request 
timeout (kCMISSessionParameterRequestTimeout) and whether network reachability 
checks are performed (kCMISSessionParameterCheckNetworkReachability).

Modified:
    
chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISDefaultNetworkProvider.m
    chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpDownloadRequest.h
    chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpDownloadRequest.m
    chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpRequest.h
    chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpRequest.m
    chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpUploadRequest.h
    chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpUploadRequest.m

Modified: 
chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISDefaultNetworkProvider.m
URL: 
http://svn.apache.org/viewvc/chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISDefaultNetworkProvider.m?rev=1644862&r1=1644861&r2=1644862&view=diff
==============================================================================
--- 
chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISDefaultNetworkProvider.m 
(original)
+++ 
chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISDefaultNetworkProvider.m 
Fri Dec 12 11:47:38 2014
@@ -46,7 +46,7 @@ completionBlock:(void (^)(CMISHttpRespon
                                                       
httpMethod:httpRequestMethod
                                                      requestBody:body
                                                          
headers:additionalHeaders
-                                          
authenticationProvider:session.authenticationProvider
+                                                         session:session
                                                  
completionBlock:completionBlock];
         if (request)
         {
@@ -74,13 +74,13 @@ completionBlock:(void (^)(CMISHttpRespon
                                                                                
   session:session];
         
         CMISHttpUploadRequest* request = [CMISHttpUploadRequest 
startRequest:urlRequest
-                                                           
httpMethod:httpRequestMethod
-                                                          
inputStream:inputStream
-                                                              
headers:additionalHeaders
-                                                        bytesExpected:0
-                                               
authenticationProvider:session.authenticationProvider
-                                                      
completionBlock:completionBlock
-                                                        progressBlock:nil];
+                                                                  
httpMethod:httpRequestMethod
+                                                                 
inputStream:inputStream
+                                                                     
headers:additionalHeaders
+                                                               bytesExpected:0
+                                                                     
session:session
+                                                             
completionBlock:completionBlock
+                                                               
progressBlock:nil];
         if (request)
         {
             cmisRequest.httpRequest = request;
@@ -109,13 +109,13 @@ completionBlock:(void (^)(CMISHttpRespon
                                                                                
   session:session];
         
         CMISHttpUploadRequest* request = [CMISHttpUploadRequest 
startRequest:urlRequest
-                                                           
httpMethod:httpRequestMethod
-                                                          
inputStream:inputStream
-                                                              
headers:additionalHeaders
-                                                        
bytesExpected:bytesExpected
-                                               
authenticationProvider:session.authenticationProvider
-                                                      
completionBlock:completionBlock
-                                                        
progressBlock:progressBlock];
+                                                                  
httpMethod:httpRequestMethod
+                                                                 
inputStream:inputStream
+                                                                     
headers:additionalHeaders
+                                                               
bytesExpected:bytesExpected
+                                                                     
session:session
+                                                             
completionBlock:completionBlock
+                                                               
progressBlock:progressBlock];
         if (request){
             cmisRequest.httpRequest = request;
         }
@@ -150,9 +150,9 @@ completionBlock:(void (^)(CMISHttpRespon
                                                                  
inputStream:inputStream
                                                                      
headers:additionalHeaders
                                                                
bytesExpected:bytesExpected
-                                                      
authenticationProvider:session.authenticationProvider
-                                                              
startData:startData
-                                                                    
endData:endData
+                                                                     
session:session
+                                                                   
startData:startData
+                                                                     
endData:endData
                                                            
useBase64Encoding:useBase64Encoding
                                                              
completionBlock:completionBlock
                                                                
progressBlock:progressBlock];
@@ -185,7 +185,7 @@ completionBlock:(void (^)(CMISHttpRespon
                                                                       
httpMethod:httpRequestMethod
                                                                   
outputFilePath:outputFilePath
                                                                    
bytesExpected:bytesExpected
-                                                          
authenticationProvider:session.authenticationProvider
+                                                                         
session:session
                                                                  
completionBlock:completionBlock
                                                                    
progressBlock:progressBlock];
         if (request) {
@@ -238,14 +238,14 @@ completionBlock:(void (^)(CMISHttpRespon
                                                                                
   session:session];
         
         CMISHttpDownloadRequest* request = [CMISHttpDownloadRequest 
startRequest:urlRequest
-                                                             
httpMethod:httpRequestMethod
-                                                           
outputStream:outputStream
-                                                          
bytesExpected:bytesExpected
-                                                                 offset:offset
-                                                                 length:length
-                                                 
authenticationProvider:session.authenticationProvider
-                                                        
completionBlock:completionBlock
-                                                          
progressBlock:progressBlock];
+                                                                      
httpMethod:httpRequestMethod
+                                                                    
outputStream:outputStream
+                                                                   
bytesExpected:bytesExpected
+                                                                          
offset:offset
+                                                                          
length:length
+                                                                         
session:session
+                                                                 
completionBlock:completionBlock
+                                                                   
progressBlock:progressBlock];
         if (request) {
             cmisRequest.httpRequest = request;
         }

Modified: 
chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpDownloadRequest.h
URL: 
http://svn.apache.org/viewvc/chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpDownloadRequest.h?rev=1644862&r1=1644861&r2=1644862&view=diff
==============================================================================
--- chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpDownloadRequest.h 
(original)
+++ chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpDownloadRequest.h 
Fri Dec 12 11:47:38 2014
@@ -38,35 +38,35 @@
  * completionBlock returns a CMISHttpResponse object or nil if unsuccessful
  */
 + (id)startRequest:(NSMutableURLRequest *)urlRequest
-                              
httpMethod:(CMISHttpRequestMethod)httpRequestMethod
-                            outputStream:(NSOutputStream*)outputStream
-                           bytesExpected:(unsigned long long)bytesExpected
-                  authenticationProvider:(id<CMISAuthenticationProvider>) 
authenticationProvider
-                         completionBlock:(void (^)(CMISHttpResponse 
*httpResponse, NSError *error))completionBlock
-                           progressBlock:(void (^)(unsigned long long 
bytesDownloaded, unsigned long long bytesTotal))progressBlock;
+        httpMethod:(CMISHttpRequestMethod)httpRequestMethod
+      outputStream:(NSOutputStream*)outputStream
+     bytesExpected:(unsigned long long)bytesExpected
+           session:(CMISBindingSession *)session
+   completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError 
*error))completionBlock
+     progressBlock:(void (^)(unsigned long long bytesDownloaded, unsigned long 
long bytesTotal))progressBlock;
 
 /** starts a URL request for download with a given offset and or length. Data 
are written to the provided output stream
  * completionBlock returns a CMISHttpResponse object or nil if unsuccessful
  */
 + (id)startRequest:(NSMutableURLRequest *)urlRequest
-                              
httpMethod:(CMISHttpRequestMethod)httpRequestMethod
-                            outputStream:(NSOutputStream*)outputStream
-                           bytesExpected:(unsigned long long)bytesExpected
-                                  offset:(NSDecimalNumber*)offset
-                                  length:(NSDecimalNumber*)length
-                  authenticationProvider:(id<CMISAuthenticationProvider>) 
authenticationProvider
-                         completionBlock:(void (^)(CMISHttpResponse 
*httpResponse, NSError *error))completionBlock
-                           progressBlock:(void (^)(unsigned long long 
bytesDownloaded, unsigned long long bytesTotal))progressBlock;
+        httpMethod:(CMISHttpRequestMethod)httpRequestMethod
+      outputStream:(NSOutputStream*)outputStream
+     bytesExpected:(unsigned long long)bytesExpected
+            offset:(NSDecimalNumber*)offset
+            length:(NSDecimalNumber*)length
+           session:(CMISBindingSession *)session
+   completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError 
*error))completionBlock
+     progressBlock:(void (^)(unsigned long long bytesDownloaded, unsigned long 
long bytesTotal))progressBlock;
 
 /** starts a URL request for download. Data is written to the provided file 
path.
  * completionBlock returns a CMISHttpResponse object or nil if unsuccessful
  */
 + (id)startRequest:(NSMutableURLRequest *)urlRequest
-                              
httpMethod:(CMISHttpRequestMethod)httpRequestMethod
-                          outputFilePath:(NSString *)outputFilePath
-                           bytesExpected:(unsigned long long)bytesExpected
-                  authenticationProvider:(id<CMISAuthenticationProvider>) 
authenticationProvider
-                         completionBlock:(void (^)(CMISHttpResponse 
*httpResponse, NSError *error))completionBlock
-                           progressBlock:(void (^)(unsigned long long 
bytesDownloaded, unsigned long long bytesTotal))progressBlock;
+        httpMethod:(CMISHttpRequestMethod)httpRequestMethod
+    outputFilePath:(NSString *)outputFilePath
+     bytesExpected:(unsigned long long)bytesExpected
+           session:(CMISBindingSession *)session
+   completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError 
*error))completionBlock
+     progressBlock:(void (^)(unsigned long long bytesDownloaded, unsigned long 
long bytesTotal))progressBlock;
 
 @end

Modified: 
chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpDownloadRequest.m
URL: 
http://svn.apache.org/viewvc/chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpDownloadRequest.m?rev=1644862&r1=1644861&r2=1644862&view=diff
==============================================================================
--- chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpDownloadRequest.m 
(original)
+++ chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpDownloadRequest.m 
Fri Dec 12 11:47:38 2014
@@ -38,40 +38,40 @@
 @implementation CMISHttpDownloadRequest
 
 + (id)startRequest:(NSMutableURLRequest *)urlRequest
-                              
httpMethod:(CMISHttpRequestMethod)httpRequestMethod
-                            outputStream:(NSOutputStream*)outputStream
-                           bytesExpected:(unsigned long long)bytesExpected
-                  authenticationProvider:(id<CMISAuthenticationProvider>) 
authenticationProvider
-                         completionBlock:(void (^)(CMISHttpResponse 
*httpResponse, NSError *error))completionBlock
-                           progressBlock:(void (^)(unsigned long long 
bytesDownloaded, unsigned long long bytesTotal))progressBlock
+        httpMethod:(CMISHttpRequestMethod)httpRequestMethod
+      outputStream:(NSOutputStream*)outputStream
+     bytesExpected:(unsigned long long)bytesExpected
+           session:(CMISBindingSession *)session
+   completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError 
*error))completionBlock
+     progressBlock:(void (^)(unsigned long long bytesDownloaded, unsigned long 
long bytesTotal))progressBlock
 {
     return [CMISHttpDownloadRequest startRequest:urlRequest
-                               httpMethod:httpRequestMethod
-                             outputStream:outputStream
-                            bytesExpected:bytesExpected
-                                   offset:nil
-                                   length:nil
-                   authenticationProvider:authenticationProvider
-                          completionBlock:completionBlock
-                            progressBlock:progressBlock];
+                                      httpMethod:httpRequestMethod
+                                    outputStream:outputStream
+                                   bytesExpected:bytesExpected
+                                          offset:nil
+                                          length:nil
+                                         session:session
+                                 completionBlock:completionBlock
+                                   progressBlock:progressBlock];
 }
 
 + (id)startRequest:(NSMutableURLRequest *)urlRequest
-                              
httpMethod:(CMISHttpRequestMethod)httpRequestMethod
-                            outputStream:(NSOutputStream*)outputStream
-                           bytesExpected:(unsigned long long)bytesExpected
-                                  offset:(NSDecimalNumber*)offset
-                                  length:(NSDecimalNumber*)length
-                  authenticationProvider:(id<CMISAuthenticationProvider>) 
authenticationProvider
-                         completionBlock:(void (^)(CMISHttpResponse 
*httpResponse, NSError *error))completionBlock
-                           progressBlock:(void (^)(unsigned long long 
bytesDownloaded, unsigned long long bytesTotal))progressBlock
+        httpMethod:(CMISHttpRequestMethod)httpRequestMethod
+      outputStream:(NSOutputStream*)outputStream
+     bytesExpected:(unsigned long long)bytesExpected
+            offset:(NSDecimalNumber*)offset
+            length:(NSDecimalNumber*)length
+           session:(CMISBindingSession *)session
+   completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError 
*error))completionBlock
+     progressBlock:(void (^)(unsigned long long bytesDownloaded, unsigned long 
long bytesTotal))progressBlock
 {
     CMISHttpDownloadRequest *httpRequest = [[self alloc] 
initWithHttpMethod:httpRequestMethod
                                                             
completionBlock:completionBlock
                                                               
progressBlock:progressBlock];
     httpRequest.outputStream = outputStream;
     httpRequest.bytesExpected = bytesExpected;
-    httpRequest.authenticationProvider = authenticationProvider;
+    httpRequest.session = session;
     
     //range
     if ((offset != nil) || (length != nil)) {
@@ -96,19 +96,19 @@
 }
 
 + (id)startRequest:(NSMutableURLRequest *)urlRequest
-                              
httpMethod:(CMISHttpRequestMethod)httpRequestMethod
-                          outputFilePath:(NSString *)outputFilePath
-                           bytesExpected:(unsigned long long)bytesExpected
-                  authenticationProvider:(id<CMISAuthenticationProvider>) 
authenticationProvider
-                         completionBlock:(void (^)(CMISHttpResponse 
*httpResponse, NSError *error))completionBlock
-                           progressBlock:(void (^)(unsigned long long 
bytesDownloaded, unsigned long long bytesTotal))progressBlock;
+        httpMethod:(CMISHttpRequestMethod)httpRequestMethod
+    outputFilePath:(NSString *)outputFilePath
+     bytesExpected:(unsigned long long)bytesExpected
+           session:(CMISBindingSession *)session
+   completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError 
*error))completionBlock
+     progressBlock:(void (^)(unsigned long long bytesDownloaded, unsigned long 
long bytesTotal))progressBlock;
 {
     CMISHttpDownloadRequest *httpRequest = [[self alloc] 
initWithHttpMethod:httpRequestMethod
                                                             
completionBlock:completionBlock
                                                               
progressBlock:progressBlock];
     httpRequest.outputFilePath = outputFilePath;
     httpRequest.bytesExpected = bytesExpected;
-    httpRequest.authenticationProvider = authenticationProvider;
+    httpRequest.session = session;
     
     if (![httpRequest startRequest:urlRequest]) {
         httpRequest = nil;

Modified: chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpRequest.h
URL: 
http://svn.apache.org/viewvc/chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpRequest.h?rev=1644862&r1=1644861&r2=1644862&view=diff
==============================================================================
--- chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpRequest.h 
(original)
+++ chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpRequest.h Fri Dec 
12 11:47:38 2014
@@ -32,7 +32,7 @@
 @property (nonatomic, strong) NSMutableData *responseBody;
 @property (nonatomic, strong) NSDictionary *additionalHeaders;
 @property (nonatomic, strong) NSHTTPURLResponse *response;
-@property (nonatomic, strong) id<CMISAuthenticationProvider> 
authenticationProvider;
+@property (nonatomic, strong) CMISBindingSession *session;
 @property (nonatomic, copy) void (^completionBlock)(CMISHttpResponse 
*httpResponse, NSError *error);
 
 /**
@@ -43,11 +43,11 @@
  * completionBlock returns a CMISHTTPResponse object or nil if unsuccessful
  */
 + (id)startRequest:(NSMutableURLRequest *)urlRequest
-                      httpMethod:(CMISHttpRequestMethod)httpRequestMethod
-                     requestBody:(NSData*)requestBody
-                         headers:(NSDictionary*)additionalHeaders
-          
authenticationProvider:(id<CMISAuthenticationProvider>)authenticationProvider
-                 completionBlock:(void (^)(CMISHttpResponse *httpResponse, 
NSError *error))completionBlock;
+        httpMethod:(CMISHttpRequestMethod)httpRequestMethod
+       requestBody:(NSData*)requestBody
+           headers:(NSDictionary*)additionalHeaders
+           session:(CMISBindingSession *)session
+   completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError 
*error))completionBlock;
 
 /**
  * initialises with a specified HTTP method

Modified: chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpRequest.m
URL: 
http://svn.apache.org/viewvc/chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpRequest.m?rev=1644862&r1=1644861&r2=1644862&view=diff
==============================================================================
--- chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpRequest.m 
(original)
+++ chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpRequest.m Fri Dec 
12 11:47:38 2014
@@ -22,6 +22,7 @@
 #import "CMISErrors.h"
 #import "CMISLog.h"
 #import "CMISReachability.h"
+#import "CMISConstants.h"
 
 //Exception names as returned in the <!--exception> tag
 NSString * const kCMISExceptionInvalidArgument         = @"invalidArgument";
@@ -43,17 +44,17 @@ NSString * const kCMISExceptionVersionin
 
 
 + (id)startRequest:(NSMutableURLRequest *)urlRequest
-                      httpMethod:(CMISHttpRequestMethod)httpRequestMethod
-                     requestBody:(NSData*)requestBody
-                         headers:(NSDictionary*)additionalHeaders
-          authenticationProvider:(id<CMISAuthenticationProvider>) 
authenticationProvider
-                 completionBlock:(void (^)(CMISHttpResponse *httpResponse, 
NSError *error))completionBlock
+        httpMethod:(CMISHttpRequestMethod)httpRequestMethod
+       requestBody:(NSData*)requestBody
+           headers:(NSDictionary*)additionalHeaders
+           session:(CMISBindingSession *)session
+   completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError 
*error))completionBlock
 {
     CMISHttpRequest *httpRequest = [[self alloc] 
initWithHttpMethod:httpRequestMethod
                                                     
completionBlock:completionBlock];
     httpRequest.requestBody = requestBody;
     httpRequest.additionalHeaders = additionalHeaders;
-    httpRequest.authenticationProvider = authenticationProvider;
+    httpRequest.session = session;
     
     if (![httpRequest startRequest:urlRequest]) {
         httpRequest = nil;
@@ -77,8 +78,19 @@ NSString * const kCMISExceptionVersionin
 
 - (BOOL)startRequest:(NSMutableURLRequest*)urlRequest
 {
+    // check network reachability (unless it's disabled) and return early if 
appropriate
+    id checkNetworkReachability = [self.session 
objectForKey:kCMISSessionParameterCheckNetworkReachability];
+    if (!checkNetworkReachability || [checkNetworkReachability boolValue]) {
+        CMISReachability *reachability = [CMISReachability 
networkReachability];
+        if (!reachability.hasNetworkConnection) {
+            NSError *noConnectionError = [CMISErrors 
createCMISErrorWithCode:kCMISErrorCodeNoNetworkConnection 
detailedDescription:kCMISErrorDescriptionNoNetworkConnection];
+            [self URLSession:self.urlSession task:self.sessionTask 
didCompleteWithError:noConnectionError];
+            return NO;
+        }
+    }
+    
     BOOL startedRequest = NO;
-
+    
     if (self.requestBody) {
         if ([CMISLog sharedInstance].logLevel == CMISLogLevelTrace) {
             CMISLogTrace(@"Request body: %@", [[NSString alloc] 
initWithData:self.requestBody encoding:NSUTF8StringEncoding]);
@@ -87,7 +99,7 @@ NSString * const kCMISExceptionVersionin
         [urlRequest setHTTPBody:self.requestBody];
     }
     
-    [self.authenticationProvider.httpHeadersToApply 
enumerateKeysAndObjectsUsingBlock:^(NSString *headerName, NSString *header, 
BOOL *stop) {
+    [self.session.authenticationProvider.httpHeadersToApply 
enumerateKeysAndObjectsUsingBlock:^(NSString *headerName, NSString *header, 
BOOL *stop) {
         [urlRequest addValue:header forHTTPHeaderField:headerName];
         if ([CMISLog sharedInstance].logLevel == CMISLogLevelTrace) {
             CMISLogTrace(@"Added header: %@ with value: %@", headerName, 
header);
@@ -101,24 +113,39 @@ NSString * const kCMISExceptionVersionin
         }
     }];
     
+    // determine the type of session configuration to create
+    NSURLSessionConfiguration *sessionConfiguration = nil;
+    id useBackgroundSession = [self.session 
objectForKey:kCMISSessionParameterUseBackgroundNetworkSession];
+    if (useBackgroundSession && [useBackgroundSession boolValue]) {
+        // get session and container identifiers from session
+        NSString *backgroundId = [self.session 
objectForKey:kCMISSessionParameterBackgroundNetworkSessionId
+                                               
defaultValue:kCMISDefaultBackgroundNetworkSessionId];
+        NSString *containerId = [self.session 
objectForKey:kCMISSessionParameterBackgroundNetworkSessionSharedContainerId
+                                              
defaultValue:kCMISDefaultBackgroundNetworkSessionSharedContainerId];
+        
+        // use the background session configuration, cache settings and 
timeout will be provided by the request object
+        sessionConfiguration = [NSURLSessionConfiguration 
backgroundSessionConfigurationWithIdentifier:backgroundId];
+        sessionConfiguration.sharedContainerIdentifier = containerId;
+        
+        CMISLogDebug(@"Using background network session with identifier '%@' 
and shared container '%@'",
+                     backgroundId, containerId);
+    }
+    else {
+        // use the default session configuration, cache settings and timeout 
will be provided by the request object
+        sessionConfiguration = [NSURLSessionConfiguration 
defaultSessionConfiguration];
+    }
+    
     // create session and task
-    self.urlSession = [NSURLSession 
sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]
-                                                    delegate:self
-                                               delegateQueue:nil];
+    self.urlSession = [NSURLSession 
sessionWithConfiguration:sessionConfiguration delegate:self delegateQueue:nil];
     self.sessionTask = [self taskForRequest:urlRequest];
     
-    CMISReachability *reachability = [CMISReachability networkReachability];
-    
-    if (self.sessionTask && reachability.hasNetworkConnection) {
+    if (self.sessionTask) {
+        // start the task
         [self.sessionTask resume];
         startedRequest = YES;
-    } else if (!reachability.hasNetworkConnection) {
-        NSError *noConnectionError = [CMISErrors 
createCMISErrorWithCode:kCMISErrorCodeNoNetworkConnection 
detailedDescription:kCMISErrorDescriptionNoNetworkConnection];
-        [self URLSession:self.urlSession task:self.sessionTask 
didCompleteWithError:noConnectionError];
-    }
-    else {
+    } else {
         if (self.completionBlock) {
-            NSString *detailedDescription = [NSString stringWithFormat:@"Could 
not connect to %@", urlRequest.URL];
+            NSString *detailedDescription = [NSString stringWithFormat:@"Could 
not create network session for %@", urlRequest.URL];
             NSError *cmisError = [CMISErrors 
createCMISErrorWithCode:kCMISErrorCodeConnection 
detailedDescription:detailedDescription];
             self.completionBlock(nil, cmisError);
         }
@@ -155,7 +182,7 @@ NSString * const kCMISExceptionVersionin
 
 - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task 
didCompleteWithError:(NSError *)error
 {
-    [self.authenticationProvider updateWithHttpURLResponse:self.response];
+    [self.session.authenticationProvider 
updateWithHttpURLResponse:self.response];
 
     if (self.completionBlock) {
         
@@ -209,7 +236,7 @@ NSString * const kCMISExceptionVersionin
 
 - (void)URLSession:(NSURLSession *)session 
didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge 
completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, 
NSURLCredential *))completionHandler
 {
-    [self.authenticationProvider didReceiveChallenge:challenge 
completionHandler:completionHandler];
+    [self.session.authenticationProvider didReceiveChallenge:challenge 
completionHandler:completionHandler];
 }
 
 - (BOOL)checkStatusCodeForResponse:(CMISHttpResponse *)response 
httpRequestMethod:(CMISHttpRequestMethod)httpRequestMethod error:(NSError 
**)error

Modified: 
chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpUploadRequest.h
URL: 
http://svn.apache.org/viewvc/chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpUploadRequest.h?rev=1644862&r1=1644861&r2=1644862&view=diff
==============================================================================
--- chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpUploadRequest.h 
(original)
+++ chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpUploadRequest.h 
Fri Dec 12 11:47:38 2014
@@ -30,28 +30,28 @@
  * completionBlock returns CMISHttpResponse instance or nil if unsuccessful
  */
 + (id)startRequest:(NSMutableURLRequest *)urlRequest
-                              
httpMethod:(CMISHttpRequestMethod)httpRequestMethod
-                             inputStream:(NSInputStream*)inputStream
-                                 headers:(NSDictionary*)additionalHeaders
-                           bytesExpected:(unsigned long long)bytesExpected
-                  authenticationProvider:(id<CMISAuthenticationProvider>) 
authenticationProvider
-                         completionBlock:(void (^)(CMISHttpResponse 
*httpResponse, NSError *error))completionBlock
-                           progressBlock:(void (^)(unsigned long long 
bytesUploaded, unsigned long long bytesTotal))progressBlock;
+        httpMethod:(CMISHttpRequestMethod)httpRequestMethod
+       inputStream:(NSInputStream*)inputStream
+           headers:(NSDictionary*)additionalHeaders
+     bytesExpected:(unsigned long long)bytesExpected
+           session:(CMISBindingSession *)session
+   completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError 
*error))completionBlock
+     progressBlock:(void (^)(unsigned long long bytesUploaded, unsigned long 
long bytesTotal))progressBlock;
 
 /**
  * starts a URL request with a provided input stream. The input stream has to 
point to the raw NON-encoded data set. This method will first write the 
  * provided start data, afterwards the content of the input stream (optionally 
encoding it as base64) and then the provided end data.
  */
 + (id)startRequest:(NSMutableURLRequest *)urlRequest
-                              
httpMethod:(CMISHttpRequestMethod)httpRequestMethod
-                             inputStream:(NSInputStream*)sourceInputStream
-                                 headers:(NSDictionary*)additionalHeaders
-                           bytesExpected:(unsigned long long)bytesExpected
-                  authenticationProvider:(id<CMISAuthenticationProvider>) 
authenticationProvider
-                               startData:(NSData *)startData
-                                 endData:(NSData *)endData
-                       useBase64Encoding:(BOOL)useBase64Encoding
-                         completionBlock:(void (^)(CMISHttpResponse 
*httpResponse, NSError *error))completionBlock
-                           progressBlock:(void (^)(unsigned long long 
bytesUploaded, unsigned long long bytesTotal))progressBlock;
+        httpMethod:(CMISHttpRequestMethod)httpRequestMethod
+       inputStream:(NSInputStream*)sourceInputStream
+           headers:(NSDictionary*)additionalHeaders
+     bytesExpected:(unsigned long long)bytesExpected
+           session:(CMISBindingSession *)session
+         startData:(NSData *)startData
+           endData:(NSData *)endData
+ useBase64Encoding:(BOOL)useBase64Encoding
+   completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError 
*error))completionBlock
+     progressBlock:(void (^)(unsigned long long bytesUploaded, unsigned long 
long bytesTotal))progressBlock;
 
 @end

Modified: 
chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpUploadRequest.m
URL: 
http://svn.apache.org/viewvc/chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpUploadRequest.m?rev=1644862&r1=1644861&r2=1644862&view=diff
==============================================================================
--- chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpUploadRequest.m 
(original)
+++ chemistry/objectivecmis/trunk/ObjectiveCMIS/Utils/CMISHttpUploadRequest.m 
Fri Dec 12 11:47:38 2014
@@ -102,13 +102,13 @@ const NSUInteger kRawBufferSize = 24576;
 @implementation CMISHttpUploadRequest
 
 + (id)startRequest:(NSMutableURLRequest *)urlRequest
-                            httpMethod:(CMISHttpRequestMethod)httpRequestMethod
-                           inputStream:(NSInputStream*)inputStream
-                               headers:(NSDictionary*)additionalHeaders
-                         bytesExpected:(unsigned long long)bytesExpected
-                authenticationProvider:(id<CMISAuthenticationProvider>) 
authenticationProvider
-                       completionBlock:(void (^)(CMISHttpResponse 
*httpResponse, NSError *error))completionBlock
-                         progressBlock:(void (^)(unsigned long long 
bytesUploaded, unsigned long long bytesTotal))progressBlock
+        httpMethod:(CMISHttpRequestMethod)httpRequestMethod
+       inputStream:(NSInputStream*)inputStream
+           headers:(NSDictionary*)additionalHeaders
+     bytesExpected:(unsigned long long)bytesExpected
+           session:(CMISBindingSession *)session
+   completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError 
*error))completionBlock
+     progressBlock:(void (^)(unsigned long long bytesUploaded, unsigned long 
long bytesTotal))progressBlock
 {
     CMISHttpUploadRequest *httpRequest = [[self alloc] 
initWithHttpMethod:httpRequestMethod
                                                           
completionBlock:completionBlock
@@ -116,7 +116,7 @@ const NSUInteger kRawBufferSize = 24576;
     httpRequest.inputStream = inputStream;
     httpRequest.additionalHeaders = additionalHeaders;
     httpRequest.bytesExpected = bytesExpected;
-    httpRequest.authenticationProvider = authenticationProvider;
+    httpRequest.session = session;
     httpRequest.useCombinedInputStream = NO;
     httpRequest.combinedInputStream = nil;
     httpRequest.encoderStream = nil;
@@ -133,7 +133,7 @@ const NSUInteger kRawBufferSize = 24576;
        inputStream:(NSInputStream *)inputStream
            headers:(NSDictionary *)additionalHeaders
      bytesExpected:(unsigned long long)bytesExpected
-authenticationProvider:(id<CMISAuthenticationProvider>)authenticationProvider
+           session:(CMISBindingSession *)session
          startData:(NSData *)startData
            endData:(NSData *)endData
  useBase64Encoding:(BOOL)useBase64Encoding
@@ -151,7 +151,7 @@ authenticationProvider:(id<CMISAuthentic
     httpRequest.bytesExpected = bytesExpected;
     httpRequest.useCombinedInputStream = YES;
     httpRequest.base64Encoding = useBase64Encoding;
-    httpRequest.authenticationProvider = authenticationProvider;
+    httpRequest.session = session;
     
     [httpRequest prepareStreams];
     if (![httpRequest startRequest:urlRequest]) {


Reply via email to