You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by pw...@apache.org on 2013/02/07 10:52:53 UTC

svn commit: r1443376 - in /chemistry/objectivecmis/branches/mdm: ObjectiveCMIS.xcodeproj/ ObjectiveCMIS/Bindings/ ObjectiveCMIS/Bindings/AtomPub/ ObjectiveCMIS/Client/ ObjectiveCMIS/Common/ ObjectiveCMIS/Utils/ ObjectiveCMISTests/

Author: pweschmidt
Date: Thu Feb  7 09:52:52 2013
New Revision: 1443376

URL: http://svn.apache.org/viewvc?rev=1443376&view=rev
Log:
Changes to enable adding Custom network providers to the API.

Added:
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubVersioningService.m
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Common/CMISNetworkProvider.h
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISDefaultNetworkProvider.h
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISDefaultNetworkProvider.m
Removed:
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpUtil.h
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpUtil.m
Modified:
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS.xcodeproj/project.pbxproj
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubBaseService.h
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubBaseService.m
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubDiscoveryService.m
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubNavigationService.m
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubObjectService.m
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubRepositoryService.m
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/CMISBindingSession.h
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/CMISBindingSession.m
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISDocument.h
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISDocument.m
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISFolder.h
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISFolder.m
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISRequest.h
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISRequest.m
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISSession.m
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Common/CMISSessionParameters.h
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Common/CMISSessionParameters.m
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpRequest.h
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpRequest.m
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpResponse.h
    chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpResponse.m
    chemistry/objectivecmis/branches/mdm/ObjectiveCMISTests/ObjectiveCMISTests.m

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS.xcodeproj/project.pbxproj
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS.xcodeproj/project.pbxproj?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS.xcodeproj/project.pbxproj (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS.xcodeproj/project.pbxproj Thu Feb  7 09:52:52 2013
@@ -21,10 +21,13 @@
 /* End PBXAggregateTarget section */
 
 /* Begin PBXBuildFile section */
+		4E10ABFF16B916B500E2287E /* CMISDefaultNetworkProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E10ABFD16B916B500E2287E /* CMISDefaultNetworkProvider.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		4E10AC0016B916B500E2287E /* CMISDefaultNetworkProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E10ABFE16B916B500E2287E /* CMISDefaultNetworkProvider.m */; };
 		4E39DF5C163A72B400F21DE6 /* CMISDateUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E39DF5A163A72B400F21DE6 /* CMISDateUtil.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		4E39DF5D163A72B400F21DE6 /* CMISDateUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E39DF5B163A72B400F21DE6 /* CMISDateUtil.m */; };
 		4E39DF60163A767B00F21DE6 /* CMISAtomParserUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E39DF5E163A767B00F21DE6 /* CMISAtomParserUtil.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		4E39DF61163A767B00F21DE6 /* CMISAtomParserUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E39DF5F163A767B00F21DE6 /* CMISAtomParserUtil.m */; };
+		4E3E14B316AFFB190057CE22 /* CMISNetworkProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E3E14B116AFFB190057CE22 /* CMISNetworkProvider.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		4EA61BD71564F70C00C759E4 /* CMISStringInOutParameter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EA61BD31564F70C00C759E4 /* CMISStringInOutParameter.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		4EA61BD81564F70C00C759E4 /* CMISStringInOutParameter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EA61BD41564F70C00C759E4 /* CMISStringInOutParameter.m */; };
 		4EA61BD91564F70C00C759E4 /* CMISStringInOutParameter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EA61BD41564F70C00C759E4 /* CMISStringInOutParameter.m */; };
@@ -72,8 +75,6 @@
 		8276E130155E355D00344A29 /* CMISBase64Encoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8276E12A155E355D00344A29 /* CMISBase64Encoder.m */; };
 		8276E131155E355D00344A29 /* CMISFileUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 8276E12B155E355D00344A29 /* CMISFileUtil.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		8276E132155E355D00344A29 /* CMISFileUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 8276E12C155E355D00344A29 /* CMISFileUtil.m */; };
-		8276E133155E355D00344A29 /* CMISHttpUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 8276E12D155E355D00344A29 /* CMISHttpUtil.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		8276E134155E355D00344A29 /* CMISHttpUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 8276E12E155E355D00344A29 /* CMISHttpUtil.m */; };
 		8276E159155E392A00344A29 /* CMISNavigationService.h in Headers */ = {isa = PBXBuildFile; fileRef = 8276E156155E392A00344A29 /* CMISNavigationService.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		8276E15A155E392A00344A29 /* CMISRepositoryService.h in Headers */ = {isa = PBXBuildFile; fileRef = 8276E157155E392A00344A29 /* CMISRepositoryService.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		8276E15B155E392A00344A29 /* CMISVersioningService.h in Headers */ = {isa = PBXBuildFile; fileRef = 8276E158155E392A00344A29 /* CMISVersioningService.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -211,10 +212,13 @@
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXFileReference section */
+		4E10ABFD16B916B500E2287E /* CMISDefaultNetworkProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISDefaultNetworkProvider.h; path = Utils/CMISDefaultNetworkProvider.h; sourceTree = "<group>"; };
+		4E10ABFE16B916B500E2287E /* CMISDefaultNetworkProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISDefaultNetworkProvider.m; path = Utils/CMISDefaultNetworkProvider.m; sourceTree = "<group>"; };
 		4E39DF5A163A72B400F21DE6 /* CMISDateUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISDateUtil.h; path = Utils/CMISDateUtil.h; sourceTree = "<group>"; };
 		4E39DF5B163A72B400F21DE6 /* CMISDateUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISDateUtil.m; path = Utils/CMISDateUtil.m; sourceTree = "<group>"; };
 		4E39DF5E163A767B00F21DE6 /* CMISAtomParserUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMISAtomParserUtil.h; sourceTree = "<group>"; };
 		4E39DF5F163A767B00F21DE6 /* CMISAtomParserUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMISAtomParserUtil.m; sourceTree = "<group>"; };
+		4E3E14B116AFFB190057CE22 /* CMISNetworkProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISNetworkProvider.h; path = Common/CMISNetworkProvider.h; sourceTree = "<group>"; };
 		4EA61BD31564F70C00C759E4 /* CMISStringInOutParameter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISStringInOutParameter.h; path = Utils/CMISStringInOutParameter.h; sourceTree = "<group>"; };
 		4EA61BD41564F70C00C759E4 /* CMISStringInOutParameter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISStringInOutParameter.m; path = Utils/CMISStringInOutParameter.m; sourceTree = "<group>"; };
 		4EA61BD51564F70C00C759E4 /* CMISURLUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISURLUtil.h; path = Utils/CMISURLUtil.h; sourceTree = "<group>"; };
@@ -258,8 +262,6 @@
 		8276E12A155E355D00344A29 /* CMISBase64Encoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISBase64Encoder.m; path = Utils/CMISBase64Encoder.m; sourceTree = "<group>"; };
 		8276E12B155E355D00344A29 /* CMISFileUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = CMISFileUtil.h; path = Utils/CMISFileUtil.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
 		8276E12C155E355D00344A29 /* CMISFileUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = CMISFileUtil.m; path = Utils/CMISFileUtil.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
-		8276E12D155E355D00344A29 /* CMISHttpUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = CMISHttpUtil.h; path = Utils/CMISHttpUtil.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
-		8276E12E155E355D00344A29 /* CMISHttpUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = CMISHttpUtil.m; path = Utils/CMISHttpUtil.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
 		8276E156155E392A00344A29 /* CMISNavigationService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISNavigationService.h; path = Bindings/CMISNavigationService.h; sourceTree = "<group>"; };
 		8276E157155E392A00344A29 /* CMISRepositoryService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISRepositoryService.h; path = Bindings/CMISRepositoryService.h; sourceTree = "<group>"; };
 		8276E158155E392A00344A29 /* CMISVersioningService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISVersioningService.h; path = Bindings/CMISVersioningService.h; sourceTree = "<group>"; };
@@ -559,6 +561,7 @@
 				752067F8156AC0FE00231A5D /* CMISExtensionElement.h */,
 				752067F9156AC0FE00231A5D /* CMISExtensionElement.m */,
 				828072F61515404F00EF635C /* CMISObjectData.h */,
+				4E3E14B116AFFB190057CE22 /* CMISNetworkProvider.h */,
 				828072F71515404F00EF635C /* CMISObjectData.m */,
 				828072F81515404F00EF635C /* CMISProperties.h */,
 				828072F91515404F00EF635C /* CMISProperties.m */,
@@ -611,10 +614,12 @@
 		828072D615153F1300EF635C /* Utils */ = {
 			isa = PBXGroup;
 			children = (
-				4E39DF5A163A72B400F21DE6 /* CMISDateUtil.h */,
-				4E39DF5B163A72B400F21DE6 /* CMISDateUtil.m */,
 				8276E129155E355D00344A29 /* CMISBase64Encoder.h */,
 				8276E12A155E355D00344A29 /* CMISBase64Encoder.m */,
+				4E39DF5A163A72B400F21DE6 /* CMISDateUtil.h */,
+				4E39DF5B163A72B400F21DE6 /* CMISDateUtil.m */,
+				4E10ABFD16B916B500E2287E /* CMISDefaultNetworkProvider.h */,
+				4E10ABFE16B916B500E2287E /* CMISDefaultNetworkProvider.m */,
 				8276E12B155E355D00344A29 /* CMISFileUtil.h */,
 				8276E12C155E355D00344A29 /* CMISFileUtil.m */,
 				BD5C96FC16281A54002DDC6E /* CMISHttpRequest.h */,
@@ -625,8 +630,6 @@
 				BD5C970D16282977002DDC6E /* CMISHttpDownloadRequest.m */,
 				BD5C97071628293F002DDC6E /* CMISHttpUploadRequest.h */,
 				BD5C97081628293F002DDC6E /* CMISHttpUploadRequest.m */,
-				8276E12D155E355D00344A29 /* CMISHttpUtil.h */,
-				8276E12E155E355D00344A29 /* CMISHttpUtil.m */,
 				828073291515407000EF635C /* CMISObjectConverter.h */,
 				8280732A1515407000EF635C /* CMISObjectConverter.m */,
 				4EA61BD31564F70C00C759E4 /* CMISStringInOutParameter.h */,
@@ -750,7 +753,6 @@
 				8276E123155E34ED00344A29 /* CMISObjectId.h in Headers */,
 				8276E12F155E355D00344A29 /* CMISBase64Encoder.h in Headers */,
 				8276E131155E355D00344A29 /* CMISFileUtil.h in Headers */,
-				8276E133155E355D00344A29 /* CMISHttpUtil.h in Headers */,
 				8276E159155E392A00344A29 /* CMISNavigationService.h in Headers */,
 				8276E15A155E392A00344A29 /* CMISRepositoryService.h in Headers */,
 				8276E15B155E392A00344A29 /* CMISVersioningService.h in Headers */,
@@ -788,6 +790,8 @@
 				BD5C97091628293F002DDC6E /* CMISHttpUploadRequest.h in Headers */,
 				BD5C970E16282977002DDC6E /* CMISHttpDownloadRequest.h in Headers */,
 				BD5C9713162C11E3002DDC6E /* CMISHttpResponse.h in Headers */,
+				4E3E14B316AFFB190057CE22 /* CMISNetworkProvider.h in Headers */,
+				4E10ABFF16B916B500E2287E /* CMISDefaultNetworkProvider.h in Headers */,
 				BD30D33D162D7DD7001FFF80 /* CMISRequest.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -961,7 +965,6 @@
 				8276E124155E34ED00344A29 /* CMISObjectId.m in Sources */,
 				8276E130155E355D00344A29 /* CMISBase64Encoder.m in Sources */,
 				8276E132155E355D00344A29 /* CMISFileUtil.m in Sources */,
-				8276E134155E355D00344A29 /* CMISHttpUtil.m in Sources */,
 				75803D421560BD5300C738C1 /* CMISAtomLink.m in Sources */,
 				75803D501560CFCB00C738C1 /* CMISLinkRelations.m in Sources */,
 				82C1C63F15358733009B7B72 /* CMISQueryAtomEntryWriter.m in Sources */,
@@ -997,6 +1000,7 @@
 				BD30D33E162D7DD7001FFF80 /* CMISRequest.m in Sources */,
 				4E39DF5D163A72B400F21DE6 /* CMISDateUtil.m in Sources */,
 				4E39DF61163A767B00F21DE6 /* CMISAtomParserUtil.m in Sources */,
+				4E10AC0016B916B500E2287E /* CMISDefaultNetworkProvider.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubBaseService.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubBaseService.h?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubBaseService.h (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubBaseService.h Thu Feb  7 09:52:52 2013
@@ -20,8 +20,10 @@
 #import <Foundation/Foundation.h>
 #import "CMISSessionParameters.h"
 #import "CMISBindingSession.h"
+#import "CMISNetworkProvider.h"
+#import "CMISRequest.h"
 
-@interface CMISAtomPubBaseService : NSObject
+@interface CMISAtomPubBaseService : NSObject 
 
 @property (nonatomic, strong, readonly) CMISBindingSession *bindingSession;
 @property (nonatomic, strong, readonly) NSURL *atomPubUrl;

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubBaseService.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubBaseService.m?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubBaseService.m (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubBaseService.m Thu Feb  7 09:52:52 2013
@@ -19,7 +19,6 @@
 
 #import "CMISAtomPubBaseService.h"
 #import "CMISAtomPubBaseService+Protected.h"
-#import "CMISHttpUtil.h"
 #import "CMISHttpResponse.h"
 #import "CMISServiceDocumentParser.h"
 #import "CMISConstants.h"
@@ -48,8 +47,6 @@
     if (self)
     {
         self.bindingSession = session;
-        
-        // pull out and cache all the useful objects for this binding
         self.atomPubUrl = [session objectForKey:kCMISBindingSessionKeyAtomPubUrl];
     }
     return self;
@@ -125,7 +122,7 @@
     if ([self.bindingSession objectForKey:kCMISSessionKeyWorkspaces]) {
         completionBlock([self.bindingSession objectForKey:kCMISSessionKeyWorkspaces], nil);
     } else {
-        [HttpUtil invokeGET:self.atomPubUrl
+        [self.bindingSession.networkProvider invokeGET:self.atomPubUrl
                 withSession:self.bindingSession
             completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
                 if (httpResponse) {
@@ -183,7 +180,7 @@
         NSURL *objectIdUrl = [objectByIdUriBuilder buildUrl];
         
         // Execute actual call
-        [HttpUtil invokeGET:objectIdUrl
+        [self.bindingSession.networkProvider invokeGET:objectIdUrl
                 withSession:self.bindingSession
             completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
                 if (httpResponse) {
@@ -227,7 +224,7 @@
         objectByPathUriBuilder.renditionFilter = renditionFilter;
         
         // Execute actual call
-        [HttpUtil invokeGET:[objectByPathUriBuilder buildUrl]
+        [self.bindingSession.networkProvider invokeGET:[objectByPathUriBuilder buildUrl]
                 withSession:self.bindingSession
             completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
                 if (httpResponse) {

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubDiscoveryService.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubDiscoveryService.m?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubDiscoveryService.m (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubDiscoveryService.m Thu Feb  7 09:52:52 2013
@@ -19,7 +19,6 @@
 
 #import "CMISAtomPubDiscoveryService.h"
 #import "CMISQueryAtomEntryWriter.h"
-#import "CMISHttpUtil.h"
 #import "CMISHttpResponse.h"
 #import "CMISAtomPubConstants.h"
 #import "CMISAtomFeedParser.h"
@@ -66,7 +65,7 @@
     atomEntryWriter.skipCount = skipCount;
     
     // Execute HTTP call
-    [HttpUtil invokePOST:queryURL
+    [self.bindingSession.networkProvider invokePOST:queryURL
              withSession:self.bindingSession
                     body:[[atomEntryWriter generateAtomEntryXML] dataUsingEncoding:NSUTF8StringEncoding]
                  headers:[NSDictionary dictionaryWithObject:kCMISMediaTypeQuery forKey:@"Content-type"]

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubNavigationService.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubNavigationService.m?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubNavigationService.m (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubNavigationService.m Thu Feb  7 09:52:52 2013
@@ -20,7 +20,6 @@
 #import "CMISAtomPubNavigationService.h"
 #import "CMISAtomPubBaseService+Protected.h"
 #import "CMISAtomFeedParser.h"
-#import "CMISHttpUtil.h"
 #import "CMISHttpResponse.h"
 #import "CMISErrors.h"
 #import "CMISURLUtil.h"
@@ -57,7 +56,7 @@
                           downLink = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterSkipCount withValue:[skipCount stringValue] toUrlString:downLink];
                           
                           // execute the request
-                          [HttpUtil invokeGET:[NSURL URLWithString:downLink]
+                          [self.bindingSession.networkProvider invokeGET:[NSURL URLWithString:downLink]
                                   withSession:self.bindingSession
                               completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
                                   if (httpResponse) {
@@ -123,7 +122,7 @@
         
         upLink = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterRelativePathSegment withValue:(includeRelativePathSegment ? @"true" : @"false") toUrlString:upLink];
         
-        [HttpUtil invokeGET:[NSURL URLWithString:upLink]
+        [self.bindingSession.networkProvider invokeGET:[NSURL URLWithString:upLink]
                 withSession:self.bindingSession
             completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
                 if (httpResponse) {

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubObjectService.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubObjectService.m?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubObjectService.m (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubObjectService.m Thu Feb  7 09:52:52 2013
@@ -19,7 +19,6 @@
 
 #import "CMISAtomPubObjectService.h"
 #import "CMISAtomPubBaseService+Protected.h"
-#import "CMISHttpUtil.h"
 #import "CMISHttpResponse.h"
 #import "CMISAtomEntryWriter.h"
 #import "CMISAtomEntryParser.h"
@@ -115,7 +114,7 @@ andIncludeAllowableActions:(BOOL)include
             
             unsigned long long streamLength = [[[objectData.properties.propertiesDictionary objectForKey:kCMISPropertyContentStreamLength] firstValue] unsignedLongLongValue];
             
-            [HttpUtil invoke:contentUrl
+            [self.bindingSession.networkProvider invoke:contentUrl
               withHttpMethod:HTTP_GET
                  withSession:self.bindingSession
                 outputStream:outputStream
@@ -160,7 +159,7 @@ andIncludeAllowableActions:(BOOL)include
                                                              withValue:changeTokenParam.inParameter toUrlString:editMediaLink];
         }
         
-        [HttpUtil invokeDELETE:[NSURL URLWithString:editMediaLink]
+        [self.bindingSession.networkProvider invokeDELETE:[NSURL URLWithString:editMediaLink]
                    withSession:self.bindingSession
                completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
                    if (httpResponse) {
@@ -265,7 +264,7 @@ andIncludeAllowableActions:(BOOL)include
         NSDictionary *additionalHeader = [NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"attachment; filename=%@",
                                                                              filename] forKey:@"Content-Disposition"];
         
-        [HttpUtil invoke:[NSURL URLWithString:editMediaLink]
+        [self.bindingSession.networkProvider invoke:[NSURL URLWithString:editMediaLink]
           withHttpMethod:HTTP_PUT
              withSession:self.bindingSession
              inputStream:inputStream
@@ -385,7 +384,7 @@ andIncludeAllowableActions:(BOOL)include
             completionBlock(NO, [CMISErrors createCMISErrorWithCode:kCMISErrorCodeInvalidArgument withDetailedDescription:nil]);
         } else {
             NSURL *selfUrl = [NSURL URLWithString:selfLink];
-            [HttpUtil invokeDELETE:selfUrl
+            [self.bindingSession.networkProvider invokeDELETE:selfUrl
                        withSession:self.bindingSession
                    completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
                        if (httpResponse) {
@@ -458,7 +457,7 @@ andIncludeAllowableActions:(BOOL)include
             link = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterUnfileObjects withValue:[CMISEnums stringForUnfileObject:unfileObjects] toUrlString:link];
             link = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterContinueOnFailure withValue:(continueOnFailure ? @"true" : @"false") toUrlString:link];
             
-            [HttpUtil invokeDELETE:[NSURL URLWithString:link]
+            [self.bindingSession.networkProvider invokeDELETE:[NSURL URLWithString:link]
                        withSession:self.bindingSession
                    completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
                        if (httpResponse) {
@@ -528,7 +527,7 @@ andIncludeAllowableActions:(BOOL)include
                          xmlWriter.cmisProperties = properties;
                          xmlWriter.generateXmlInMemory = YES;
                          
-                         [HttpUtil invokePUT:[NSURL URLWithString:selfLink]
+                         [self.bindingSession.networkProvider invokePUT:[NSURL URLWithString:selfLink]
                                  withSession:self.bindingSession
                                         body:[xmlWriter.generateAtomEntryXml dataUsingEncoding:NSUTF8StringEncoding]
                                      headers:[NSDictionary dictionaryWithObject:kCMISMediaTypeEntry forKey:@"Content-type"]
@@ -596,7 +595,7 @@ andIncludeAllowableActions:(BOOL)include
                                     isXmlStoredInMemory:YES];
     
     // Execute call
-    [HttpUtil invoke:[NSURL URLWithString:link]
+    [self.bindingSession.networkProvider invoke:[NSURL URLWithString:link]
       withHttpMethod:httpRequestMethod
          withSession:self.bindingSession
                 body:[writeResult dataUsingEncoding:NSUTF8StringEncoding]
@@ -664,7 +663,7 @@ andIncludeAllowableActions:(BOOL)include
         log(@"Could not determine file size of %@ : %@", writeResult, [fileSizeError description]);
     }
     
-    [HttpUtil invoke:[NSURL URLWithString:link]
+    [self.bindingSession.networkProvider invoke:[NSURL URLWithString:link]
       withHttpMethod:HTTP_POST
          withSession:self.bindingSession
          inputStream:inputStream

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubRepositoryService.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubRepositoryService.m?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubRepositoryService.m (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubRepositoryService.m Thu Feb  7 09:52:52 2013
@@ -22,7 +22,6 @@
 #import "CMISWorkspace.h"
 #import "CMISErrors.h"
 #import "CMISTypeByIdUriBuilder.h"
-#import "CMISHttpUtil.h"
 #import "CMISHttpResponse.h"
 #import "CMISTypeDefinitionAtomEntryParser.h"
 
@@ -90,7 +89,7 @@
         CMISTypeByIdUriBuilder *typeByIdUriBuilder = object;
         typeByIdUriBuilder.id = typeId;
         
-        [HttpUtil invokeGET:[typeByIdUriBuilder buildUrl] withSession:self.bindingSession completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
+        [self.bindingSession.networkProvider invokeGET:[typeByIdUriBuilder buildUrl] withSession:self.bindingSession completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
             if (httpResponse) {
                 if (httpResponse.data != nil) {
                     CMISTypeDefinitionAtomEntryParser *parser = [[CMISTypeDefinitionAtomEntryParser alloc] initWithData:httpResponse.data];

Added: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubVersioningService.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubVersioningService.m?rev=1443376&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubVersioningService.m (added)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubVersioningService.m Thu Feb  7 09:52:52 2013
@@ -0,0 +1,95 @@
+/*
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+ */
+
+#import "CMISAtomPubVersioningService.h"
+#import "CMISAtomPubBaseService+Protected.h"
+#import "CMISAtomPubConstants.h"
+#import "CMISHttpResponse.h"
+#import "CMISAtomFeedParser.h"
+#import "CMISErrors.h"
+#import "CMISURLUtil.h"
+
+@implementation CMISAtomPubVersioningService
+
+- (void)retrieveObjectOfLatestVersion:(NSString *)objectId
+                                major:(BOOL)major
+                               filter:(NSString *)filter
+                 includeRelationShips:(CMISIncludeRelationship)includeRelationships
+                     includePolicyIds:(BOOL)includePolicyIds
+                      renditionFilter:(NSString *)renditionFilter
+                           includeACL:(BOOL)includeACL
+              includeAllowableActions:(BOOL)includeAllowableActions
+                      completionBlock:(void (^)(CMISObjectData *objectData, NSError *error))completionBlock
+{
+    [self retrieveObjectInternal:objectId withReturnVersion:(major ? LATEST_MAJOR : LATEST)
+                      withFilter:filter andIncludeRelationShips:includeRelationships
+             andIncludePolicyIds:includePolicyIds andRenditionFilder:renditionFilter
+                   andIncludeACL:includeACL andIncludeAllowableActions:includeAllowableActions
+                 completionBlock:^(CMISObjectData *objectData, NSError *error) {
+                     completionBlock(objectData, error);
+                 }];
+}
+
+- (void)retrieveAllVersions:(NSString *)objectId
+                     filter:(NSString *)filter
+    includeAllowableActions:(BOOL)includeAllowableActions
+            completionBlock:(void (^)(NSArray *objects, NSError *error))completionBlock
+{
+    // Validate params
+    if (!objectId)
+    {
+        log(@"Must provide an objectId when retrieving all versions");
+        completionBlock(nil, [CMISErrors createCMISErrorWithCode:kCMISErrorCodeObjectNotFound withDetailedDescription:nil]);
+        return;
+    }
+    
+    // Fetch version history link
+    [self loadLinkForObjectId:objectId andRelation:kCMISLinkVersionHistory completionBlock:^(NSString *versionHistoryLink, NSError *error) {
+        if (error) {
+            completionBlock(nil, [CMISErrors cmisError:error withCMISErrorCode:kCMISErrorCodeObjectNotFound]);
+            return;
+        }
+        
+        if (filter) {
+            versionHistoryLink = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterFilter withValue:filter toUrlString:versionHistoryLink];
+        }
+        versionHistoryLink = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterIncludeAllowableActions
+                                                              withValue:(includeAllowableActions ? @"true" : @"false") toUrlString:versionHistoryLink];
+        
+        // Execute call
+        [self.bindingSession.networkProvider invokeGET:[NSURL URLWithString:versionHistoryLink]
+                withSession:self.bindingSession
+            completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
+                if (httpResponse) {
+                    NSData *data = httpResponse.data;
+                    CMISAtomFeedParser *feedParser = [[CMISAtomFeedParser alloc] initWithData:data];
+                    NSError *error;
+                    if (![feedParser parseAndReturnError:&error]) {
+                        completionBlock(nil, [CMISErrors cmisError:error withCMISErrorCode:kCMISErrorCodeVersioning]);
+                    } else {
+                        completionBlock(feedParser.entries, nil);
+                    }
+                } else {
+                    completionBlock(nil, [CMISErrors cmisError:error withCMISErrorCode:kCMISErrorCodeConnection]);
+                }
+            }];
+    }];
+}
+
+@end
\ No newline at end of file

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/CMISBindingSession.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/CMISBindingSession.h?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/CMISBindingSession.h (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/CMISBindingSession.h Thu Feb  7 09:52:52 2013
@@ -20,6 +20,7 @@
 #import <Foundation/Foundation.h>
 #import "CMISSessionParameters.h"
 #import "CMISAuthenticationProvider.h"
+#import "CMISNetworkProvider.h"
 
 extern NSString * const kCMISBindingSessionKeyAtomPubUrl;
 extern NSString * const kCMISBindingSessionKeyObjectByIdUriBuilder;
@@ -36,6 +37,7 @@ extern NSString * const kCMISBindingSess
 @property (nonatomic, strong, readonly) NSString *username;
 @property (nonatomic, strong, readonly) NSString *repositoryId;
 @property (nonatomic, strong, readonly) id<CMISAuthenticationProvider> authenticationProvider;
+@property (nonatomic, strong, readonly) id<CMISNetworkProvider> networkProvider;
 
 - (id)initWithSessionParameters:(CMISSessionParameters *)sessionParameters;
 

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/CMISBindingSession.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/CMISBindingSession.m?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/CMISBindingSession.m (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Bindings/CMISBindingSession.m Thu Feb  7 09:52:52 2013
@@ -33,6 +33,7 @@ NSString * const kCMISBindingSessionKeyL
 @property (nonatomic, strong, readwrite) NSString *username;
 @property (nonatomic, strong, readwrite) NSString *repositoryId;
 @property (nonatomic, strong, readwrite) id<CMISAuthenticationProvider> authenticationProvider;
+@property (nonatomic, strong, readwrite) id<CMISNetworkProvider> networkProvider;
 @property (nonatomic, strong, readwrite) NSMutableDictionary *sessionData;
 @end
 
@@ -42,6 +43,7 @@ NSString * const kCMISBindingSessionKeyL
 @synthesize repositoryId = _repositoryId;
 @synthesize authenticationProvider = _authenticationProvider;
 @synthesize sessionData = _sessionData;
+@synthesize networkProvider = _networkProvider;
 
 - (id)initWithSessionParameters:(CMISSessionParameters *)sessionParameters
 {
@@ -54,6 +56,7 @@ NSString * const kCMISBindingSessionKeyL
         self.username = sessionParameters.username;
         self.repositoryId = sessionParameters.repositoryId;
         self.authenticationProvider = sessionParameters.authenticationProvider;
+        self.networkProvider = sessionParameters.networkProvider;
         
         // store all other data in the dictionary
         [self.sessionData setObject:sessionParameters.atomPubUrl forKey:kCMISBindingSessionKeyAtomPubUrl];

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISDocument.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISDocument.h?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISDocument.h (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISDocument.h Thu Feb  7 09:52:52 2013
@@ -65,6 +65,14 @@
                       completionBlock:(void (^)(NSError *error))completionBlock
                         progressBlock:(void (^)(unsigned long long bytesDownloaded, unsigned long long bytesTotal))progressBlock;
 
+
+/**
+ * Downloads the content to an outputstream and returns the handle to the http request in order to allow cancellation.
+ */
+- (CMISRequest*)downloadContentToOutputStream:(NSOutputStream *)outputStream
+                              completionBlock:(void (^)(NSError *error))completionBlock
+                                progressBlock:(void (^)(unsigned long long bytesDownloaded, unsigned long long bytesTotal))progressBlock;
+
 /**
  * Changes the content of this document to the content of the given file.
  *

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISDocument.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISDocument.m?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISDocument.m (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISDocument.m Thu Feb  7 09:52:52 2013
@@ -19,7 +19,6 @@
 
 #import "CMISDocument.h"
 #import "CMISConstants.h"
-#import "CMISHttpUtil.h"
 #import "CMISObjectConverter.h"
 #import "CMISStringInOutParameter.h"
 #import "CMISOperationContext.h"
@@ -165,6 +164,19 @@
                                                  progressBlock:progressBlock];
 }
 
+
+- (CMISRequest*)downloadContentToOutputStream:(NSOutputStream *)outputStream
+                              completionBlock:(void (^)(NSError *error))completionBlock
+                                progressBlock:(void (^)(unsigned long long bytesDownloaded, unsigned long long bytesTotal))progressBlock
+{
+    return [self.binding.objectService downloadContentOfObject:self.identifier
+                                                  withStreamId:nil
+                                                toOutputStream:outputStream
+                                               completionBlock:completionBlock
+                                                 progressBlock:progressBlock];
+}
+
+
 - (void)deleteAllVersionsWithCompletionBlock:(void (^)(BOOL documentDeleted, NSError *error))completionBlock
 {
     [self.binding.objectService deleteObject:self.identifier allVersions:YES completionBlock:completionBlock];

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISFolder.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISFolder.h?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISFolder.h (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISFolder.h Thu Feb  7 09:52:52 2013
@@ -61,6 +61,14 @@
                    completionBlock:(void (^)(NSString *objectId, NSError *error))completionBlock
                      progressBlock:(void (^)(unsigned long long bytesUploaded, unsigned long long bytesTotal))progressBlock;
 
+- (void)createDocumentFromInputStream:(NSInputStream *)inputStream
+                         withMimeType:(NSString *)mimeType
+                       withProperties:(NSDictionary *)properties
+                        bytesExpected:(unsigned long long)bytesExpected
+                      completionBlock:(void (^)(NSString *objectId, NSError *error))completionBlock
+                        progressBlock:(void (^)(unsigned long long bytesUploaded, unsigned long long bytesTotal))progressBlock;
+
+
 - (void)deleteTreeWithDeleteAllVersions:(BOOL)deleteAllversions
                       withUnfileObjects:(CMISUnfileObject)unfileObjects
                   withContinueOnFailure:(BOOL)continueOnFailure

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISFolder.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISFolder.m?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISFolder.m (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISFolder.m Thu Feb  7 09:52:52 2013
@@ -155,6 +155,36 @@
     }];
 }
 
+- (void)createDocumentFromInputStream:(NSInputStream *)inputStream
+                         withMimeType:(NSString *)mimeType
+                       withProperties:(NSDictionary *)properties
+                        bytesExpected:(unsigned long long)bytesExpected
+                      completionBlock:(void (^)(NSString *objectId, NSError *error))completionBlock
+                        progressBlock:(void (^)(unsigned long long bytesUploaded, unsigned long long bytesTotal))progressBlock
+{
+    [self.session.objectConverter convertProperties:properties forObjectTypeId:kCMISPropertyObjectTypeIdValueDocument completionBlock:^(CMISProperties *convertedProperties, NSError *error){
+        if (nil == convertedProperties)
+        {
+            log(@"Could not convert properties: %@", error.description);
+            if (completionBlock)
+            {
+                completionBlock(nil, [CMISErrors cmisError:error withCMISErrorCode:kCMISErrorCodeRuntime]);
+            }
+        }
+        else
+        {
+            [self.binding.objectService createDocumentFromInputStream:inputStream
+                                                         withMimeType:mimeType
+                                                       withProperties:convertedProperties
+                                                             inFolder:self.identifier
+                                                        bytesExpected:bytesExpected
+                                                      completionBlock:completionBlock
+                                                        progressBlock:progressBlock];
+        }
+    }];
+}
+
+
 - (void)deleteTreeWithDeleteAllVersions:(BOOL)deleteAllversions
                            withUnfileObjects:(CMISUnfileObject)unfileObjects
                        withContinueOnFailure:(BOOL)continueOnFailure

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISRequest.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISRequest.h?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISRequest.h (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISRequest.h Thu Feb  7 09:52:52 2013
@@ -23,7 +23,7 @@
 
 @interface CMISRequest : NSObject
 
-@property (nonatomic, weak) CMISHttpRequest *httpRequest;
+@property (nonatomic, weak) id httpRequest;
 @property (nonatomic, readonly, getter = isCancelled) BOOL cancelled;
 
 - (void)cancel;

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISRequest.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISRequest.m?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISRequest.m (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISRequest.m Thu Feb  7 09:52:52 2013
@@ -18,7 +18,6 @@
  */
 
 #import "CMISRequest.h"
-#import "CMISHttpRequest.h"
 
 @interface CMISRequest ()
 
@@ -39,11 +38,12 @@
     [self.httpRequest cancel];
 }
 
-- (void)setHttpRequest:(CMISHttpRequest *)httpRequest
+- (void)setHttpRequest:(id)httpRequest
 {
     _httpRequest = httpRequest;
     
-    if (self.isCancelled) {
+    if (self.isCancelled && [httpRequest respondsToSelector:@selector(cancel)])
+    {
         [httpRequest cancel];
     }
 }

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISSession.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISSession.m?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISSession.m (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Client/CMISSession.m Thu Feb  7 09:52:52 2013
@@ -28,6 +28,8 @@
 #import "CMISOperationContext.h"
 #import "CMISPagedResult.h"
 #import "CMISTypeDefinition.h"
+#import "CMISNetworkProvider.h"
+#import "CMISDefaultNetworkProvider.h"
 
 @interface CMISSession ()
 @property (nonatomic, strong, readwrite) CMISObjectConverter *objectConverter;
@@ -106,6 +108,11 @@
                                                                                                              andPassword:password];
         }
 
+        if (self.sessionParameters.networkProvider == nil)
+        {
+            self.sessionParameters.networkProvider = [[CMISDefaultNetworkProvider alloc] init];
+        }
+        
         // create the binding the session will use
         CMISBindingFactory *bindingFactory = [[CMISBindingFactory alloc] init];
         self.binding = [bindingFactory bindingWithParameters:sessionParameters];

Added: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Common/CMISNetworkProvider.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Common/CMISNetworkProvider.h?rev=1443376&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Common/CMISNetworkProvider.h (added)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Common/CMISNetworkProvider.h Thu Feb  7 09:52:52 2013
@@ -0,0 +1,86 @@
+/*
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ 
+ http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import <Foundation/Foundation.h>
+typedef enum {
+    HTTP_GET,
+    HTTP_POST,
+    HTTP_PUT,
+    HTTP_DELETE
+} CMISHttpRequestMethod;
+
+@class CMISBindingSession, CMISRequest, CMISHttpResponse;
+
+
+@protocol CMISNetworkProvider <NSObject>
+
+- (void)invoke:(NSURL *)url
+withHttpMethod:(CMISHttpRequestMethod)httpRequestMethod
+   withSession:(CMISBindingSession *)session
+          body:(NSData *)body
+       headers:(NSDictionary *)additionalHeaders
+completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError *error))completionBlock;
+
+- (void)invoke:(NSURL *)url
+withHttpMethod:(CMISHttpRequestMethod)httpRequestMethod
+   withSession:(CMISBindingSession *)session
+   inputStream:(NSInputStream *)inputStream
+       headers:(NSDictionary *)additionalHeaders
+completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError *error))completionBlock;
+
+
+- (void)invoke:(NSURL *)url withHttpMethod:(CMISHttpRequestMethod)httpRequestMethod
+   withSession:(CMISBindingSession *)session
+   inputStream:(NSInputStream *)inputStream
+       headers:(NSDictionary *)additionalHeaders
+ bytesExpected:(unsigned long long)bytesExpected
+completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError *error))completionBlock
+ progressBlock:(void (^)(unsigned long long bytesDownloaded, unsigned long long bytesTotal))progressBlock
+ requestObject:(CMISRequest *)requestObject;
+
+- (void)invoke:(NSURL *)url
+withHttpMethod:(CMISHttpRequestMethod)httpRequestMethod
+   withSession:(CMISBindingSession *)session
+  outputStream:(NSOutputStream *)outputStream
+ bytesExpected:(unsigned long long)bytesExpected
+completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError *error))completionBlock
+ progressBlock:(void (^)(unsigned long long bytesDownloaded, unsigned long long bytesTotal))progressBlock
+ requestObject:(CMISRequest*)requestObject;
+
+
+
+- (void)invokeGET:(NSURL *)url
+      withSession:(CMISBindingSession *)session
+  completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError *error))completionBlock;
+
+
+- (void)invokePOST:(NSURL *)url
+       withSession:(CMISBindingSession *)session
+              body:(NSData *)body
+           headers:(NSDictionary *)additionalHeaders
+   completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError *error))completionBlock;
+
+- (void)invokePUT:(NSURL *)url
+      withSession:(CMISBindingSession *)session
+             body:(NSData *)body
+          headers:(NSDictionary *)additionalHeaders
+  completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError *error))completionBlock;
+
+- (void)invokeDELETE:(NSURL *)url
+         withSession:(CMISBindingSession *)session
+     completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError *error))completionBlock;
+
+
+
+@end

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Common/CMISSessionParameters.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Common/CMISSessionParameters.h?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Common/CMISSessionParameters.h (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Common/CMISSessionParameters.h Thu Feb  7 09:52:52 2013
@@ -21,6 +21,7 @@
 #import "CMISEnums.h"
 #import "CMISBinding.h"
 #import "CMISAuthenticationProvider.h"
+#import "CMISNetworkProvider.h"
 
 
 // Session param keys
@@ -56,6 +57,10 @@ extern NSString * const kCMISSessionPara
 
 @property (nonatomic, strong) id<CMISAuthenticationProvider> authenticationProvider;
 
+// Network I/O
+@property (nonatomic, strong) id<CMISNetworkProvider> networkProvider;
+
+
 - (id)initWithBindingType:(CMISBindingType)bindingType;
 
 // Object storage methods

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Common/CMISSessionParameters.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Common/CMISSessionParameters.m?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Common/CMISSessionParameters.m (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Common/CMISSessionParameters.m Thu Feb  7 09:52:52 2013
@@ -39,6 +39,7 @@ NSString * const kCMISSessionParameterMo
 @synthesize atomPubUrl = _atomPubUrl;
 @synthesize authenticationProvider = _authenticationProvider;
 @synthesize sessionData = _sessionData;
+@synthesize networkProvider = _networkProvider;
 
 - (id)init
 {

Added: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISDefaultNetworkProvider.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISDefaultNetworkProvider.h?rev=1443376&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISDefaultNetworkProvider.h (added)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISDefaultNetworkProvider.h Thu Feb  7 09:52:52 2013
@@ -0,0 +1,20 @@
+/*
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ 
+ http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import <Foundation/Foundation.h>
+#import "CMISNetworkProvider.h"
+
+@interface CMISDefaultNetworkProvider : NSObject <CMISNetworkProvider>
+
+@end

Added: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISDefaultNetworkProvider.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISDefaultNetworkProvider.m?rev=1443376&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISDefaultNetworkProvider.m (added)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISDefaultNetworkProvider.m Thu Feb  7 09:52:52 2013
@@ -0,0 +1,223 @@
+/*
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ 
+ http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "CMISDefaultNetworkProvider.h"
+#import "CMISAuthenticationProvider.h"
+#import "CMISErrors.h"
+#import "CMISHttpRequest.h"
+#import "CMISHttpDownloadRequest.h"
+#import "CMISHttpUploadRequest.h"
+#import "CMISRequest.h"
+#import "CMISSessionParameters.h"
+#import "CMISNetworkProvider.h"
+
+@interface CMISDefaultNetworkProvider ()
++ (NSMutableURLRequest *)createRequestForUrl:(NSURL *)url
+                              withHttpMethod:(CMISHttpRequestMethod)httpRequestMethod
+                                usingSession:(CMISBindingSession *)session;
+@end
+
+@implementation CMISDefaultNetworkProvider
+#pragma mark block based methods
+
+
+- (void)invoke:(NSURL *)url
+withHttpMethod:(CMISHttpRequestMethod)httpRequestMethod
+   withSession:(CMISBindingSession *)session
+          body:(NSData *)body
+       headers:(NSDictionary *)additionalHeaders
+completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError *error))completionBlock
+{
+    NSMutableURLRequest *urlRequest = [CMISDefaultNetworkProvider createRequestForUrl:url
+                                                     withHttpMethod:httpRequestMethod
+                                                       usingSession:session];
+    
+    [CMISHttpRequest startRequest:urlRequest
+                   withHttpMethod:httpRequestMethod
+                      requestBody:body
+                          headers:additionalHeaders
+           authenticationProvider:session.authenticationProvider
+                  completionBlock:completionBlock];
+}
+
+- (void)invoke:(NSURL *)url
+withHttpMethod:(CMISHttpRequestMethod)httpRequestMethod
+   withSession:(CMISBindingSession *)session
+   inputStream:(NSInputStream *)inputStream
+       headers:(NSDictionary *)additionalHeaders
+completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError *error))completionBlock
+{
+    NSMutableURLRequest *urlRequest = [CMISDefaultNetworkProvider createRequestForUrl:url
+                                                     withHttpMethod:httpRequestMethod
+                                                       usingSession:session];
+    
+    [CMISHttpUploadRequest startRequest:urlRequest
+                         withHttpMethod:httpRequestMethod
+                            inputStream:inputStream
+                                headers:additionalHeaders
+                          bytesExpected:0
+                 authenticationProvider:session.authenticationProvider
+                        completionBlock:completionBlock
+                          progressBlock:nil];
+}
+
+- (void)invoke:(NSURL *)url
+withHttpMethod:(CMISHttpRequestMethod)httpRequestMethod
+   withSession:(CMISBindingSession *)session
+   inputStream:(NSInputStream *)inputStream
+       headers:(NSDictionary *)additionalHeaders
+ bytesExpected:(unsigned long long)bytesExpected
+completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError *error))completionBlock
+ progressBlock:(void (^)(unsigned long long bytesDownloaded, unsigned long long bytesTotal))progressBlock
+ requestObject:(CMISRequest *)requestObject
+{
+    if (!requestObject.isCancelled) {
+        NSMutableURLRequest *urlRequest = [CMISDefaultNetworkProvider createRequestForUrl:url
+                                                         withHttpMethod:httpRequestMethod
+                                                           usingSession:session];
+        
+        CMISHttpUploadRequest *uploadRequest = [CMISHttpUploadRequest startRequest:urlRequest
+                                                                    withHttpMethod:httpRequestMethod
+                                                                       inputStream:inputStream
+                                                                           headers:additionalHeaders
+                                                                     bytesExpected:bytesExpected
+                                                            authenticationProvider:session.authenticationProvider
+                                                                   completionBlock:completionBlock
+                                                                     progressBlock:progressBlock];
+        requestObject.httpRequest = uploadRequest;
+    } else {
+        if (completionBlock) {
+            completionBlock(nil, [CMISErrors createCMISErrorWithCode:kCMISErrorCodeCancelled
+                                             withDetailedDescription:@"Request was cancelled"]);
+        }
+    }
+}
+
+- (void)invoke:(NSURL *)url
+withHttpMethod:(CMISHttpRequestMethod)httpRequestMethod
+   withSession:(CMISBindingSession *)session
+  outputStream:(NSOutputStream *)outputStream
+ bytesExpected:(unsigned long long)bytesExpected
+completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError *error))completionBlock
+ progressBlock:(void (^)(unsigned long long bytesDownloaded, unsigned long long bytesTotal))progressBlock
+ requestObject:(CMISRequest *)requestObject
+{
+    if (!requestObject.isCancelled) {
+        NSMutableURLRequest *urlRequest = [CMISDefaultNetworkProvider createRequestForUrl:url
+                                                         withHttpMethod:HTTP_GET
+                                                           usingSession:session];
+        
+        CMISHttpDownloadRequest *downloadRequest = [CMISHttpDownloadRequest startRequest:urlRequest
+                                                                          withHttpMethod:httpRequestMethod
+                                                                            outputStream:outputStream
+                                                                           bytesExpected:bytesExpected
+                                                                  authenticationProvider:session.authenticationProvider
+                                                                         completionBlock:completionBlock
+                                                                           progressBlock:progressBlock];
+        requestObject.httpRequest = downloadRequest;
+    } else {
+        if (completionBlock) {
+            completionBlock(nil, [CMISErrors createCMISErrorWithCode:kCMISErrorCodeCancelled
+                                             withDetailedDescription:@"Request was cancelled"]);
+            
+        }
+    }
+}
+
+- (void)invokeGET:(NSURL *)url
+      withSession:(CMISBindingSession *)session
+  completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError *error))completionBlock
+{
+    return [self invoke:url
+         withHttpMethod:HTTP_GET
+            withSession:session
+                   body:nil
+                headers:nil
+        completionBlock:completionBlock];
+}
+
+- (void)invokePOST:(NSURL *)url
+       withSession:(CMISBindingSession *)session
+              body:(NSData *)body
+           headers:(NSDictionary *)additionalHeaders
+   completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError *error))completionBlock
+{
+    return [self invoke:url
+         withHttpMethod:HTTP_POST
+            withSession:session
+                   body:body
+                headers:additionalHeaders
+        completionBlock:completionBlock];
+}
+
+- (void)invokePUT:(NSURL *)url
+      withSession:(CMISBindingSession *)session
+             body:(NSData *)body
+          headers:(NSDictionary *)additionalHeaders
+  completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError *error))completionBlock
+{
+    return [self invoke:url
+         withHttpMethod:HTTP_PUT
+            withSession:session
+                   body:body
+                headers:additionalHeaders
+        completionBlock:completionBlock];
+}
+
+- (void)invokeDELETE:(NSURL *)url
+         withSession:(CMISBindingSession *)session
+     completionBlock:(void (^)(CMISHttpResponse *httpResponse, NSError *error))completionBlock
+{
+    return [self invoke:url
+         withHttpMethod:HTTP_DELETE
+            withSession:session
+                   body:nil
+                headers:nil
+        completionBlock:completionBlock];
+}
+
+#pragma mark Helper methods
++ (NSMutableURLRequest *)createRequestForUrl:(NSURL *)url
+                              withHttpMethod:(CMISHttpRequestMethod)httpRequestMethod
+                                usingSession:(CMISBindingSession *)session
+{
+    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
+                                                           cachePolicy:NSURLRequestReloadIgnoringCacheData
+                                                       timeoutInterval:60];
+    NSString *httpMethod;
+    switch (httpRequestMethod) {
+        case HTTP_GET:
+            httpMethod = @"GET";
+            break;
+        case HTTP_POST:
+            httpMethod = @"POST";
+            break;
+        case HTTP_DELETE:
+            httpMethod = @"DELETE";
+            break;
+        case HTTP_PUT:
+            httpMethod = @"PUT";
+            break;
+        default:
+            log(@"Invalid http request method: %d", httpRequestMethod);
+            return nil;
+    }
+    
+    [request setHTTPMethod:httpMethod];
+    log(@"HTTP %@: %@", httpMethod, [url absoluteString]);
+    
+    return request;
+}
+
+@end

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpRequest.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpRequest.h?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpRequest.h (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpRequest.h Thu Feb  7 09:52:52 2013
@@ -18,7 +18,8 @@
  */
 
 #import <Foundation/Foundation.h>
-#import "CMISHttpUtil.h"
+#import "CMISBindingSession.h"
+#import "CMISNetworkProvider.h"
 
 @class CMISAuthenticationProvider;
 

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpRequest.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpRequest.m?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpRequest.m (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpRequest.m Thu Feb  7 09:52:52 2013
@@ -18,7 +18,6 @@
  */
 
 #import "CMISHttpRequest.h"
-#import "CMISHttpUtil.h"
 #import "CMISHttpResponse.h"
 #import "CMISErrors.h"
 #import "CMISAuthenticationProvider.h"

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpResponse.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpResponse.h?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpResponse.h (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpResponse.h Thu Feb  7 09:52:52 2013
@@ -26,6 +26,10 @@
 @property (nonatomic, strong, readonly) NSData *data;
 
 + (CMISHttpResponse *)responseUsingURLHTTPResponse:(NSHTTPURLResponse *)HTTPURLResponse andData:(NSData *)data;
++ (CMISHttpResponse *)responseWithStatusCode:(int)statusCode
+                               statusMessage:(NSString *)message
+                                     headers:(NSDictionary *)headers
+                                responseData:(NSData *)data;
 
 - (NSString*)exception;
 - (NSString*)errorMessage;

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpResponse.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpResponse.m?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpResponse.m (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMIS/Utils/CMISHttpResponse.m Thu Feb  7 09:52:52 2013
@@ -43,6 +43,18 @@
     return httpResponse;
 }
 
++ (CMISHttpResponse *)responseWithStatusCode:(int)statusCode
+                               statusMessage:(NSString *)message
+                                     headers:(NSDictionary *)headers
+                                responseData:(NSData *)data
+{
+    CMISHttpResponse *httpResponse = [[CMISHttpResponse alloc] init];
+    httpResponse.statusCode = statusCode;
+    httpResponse.statusCodeMessage = message;
+    httpResponse.data = data;
+    return httpResponse;
+}
+
 
 - (NSString*)responseString
 {

Modified: chemistry/objectivecmis/branches/mdm/ObjectiveCMISTests/ObjectiveCMISTests.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/mdm/ObjectiveCMISTests/ObjectiveCMISTests.m?rev=1443376&r1=1443375&r2=1443376&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/mdm/ObjectiveCMISTests/ObjectiveCMISTests.m (original)
+++ chemistry/objectivecmis/branches/mdm/ObjectiveCMISTests/ObjectiveCMISTests.m Thu Feb  7 09:52:52 2013
@@ -120,7 +120,7 @@
             STAssertTrue([createdBy isEqualToString:@"System"], @"root folder should be created by System");
             
             NSString *modifiedBy = rootFolder.lastModifiedBy;
-            STAssertTrue([modifiedBy isEqualToString:@"System"], @"root folder should be modified by System");
+            STAssertNotNil(modifiedBy, @"modifiedBy should not be nil");
             
             NSDate *createdDate = rootFolder.creationDate;
             STAssertNotNil(createdDate, @"created date should not be nil");