You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by lg...@apache.org on 2014/04/25 19:10:50 UTC

svn commit: r1590084 - in /chemistry/objectivecmis/branches/browser-binding: ObjectiveCMIS.xcodeproj/ ObjectiveCMIS/Bindings/ ObjectiveCMIS/Bindings/Browser/ ObjectiveCMIS/Common/ ObjectiveCMIS/Utils/

Author: lgross
Date: Fri Apr 25 17:10:49 2014
New Revision: 1590084

URL: http://svn.apache.org/r1590084
Log:
CMIS-791: Browser Binding: Implemented Query and DeleteObject

Added:
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISFormDataWriter.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISFormDataWriter.m
Modified:
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS.xcodeproj/project.pbxproj
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBaseService.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBaseService.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserConstants.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserConstants.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserDiscoveryService.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserNavigationService.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserObjectService.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserUtil.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserUtil.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserVersioningService.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISObjectList.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISAllowableActions.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISConstants.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISConstants.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISEnums.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISEnums.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISObjectData.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISPropertyData.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Utils/CMISHttpRequest.m

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS.xcodeproj/project.pbxproj
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS.xcodeproj/project.pbxproj?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS.xcodeproj/project.pbxproj (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS.xcodeproj/project.pbxproj Fri Apr 25 17:10:49 2014
@@ -221,6 +221,8 @@
 		C945D35F1909219C008B01D1 /* CMISCreatablePropertyTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = C945D35B1909219C008B01D1 /* CMISCreatablePropertyTypes.m */; };
 		C945D3601909219C008B01D1 /* CMISNewTypeSettableAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = C945D35C1909219C008B01D1 /* CMISNewTypeSettableAttributes.h */; };
 		C945D3611909219C008B01D1 /* CMISNewTypeSettableAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = C945D35D1909219C008B01D1 /* CMISNewTypeSettableAttributes.m */; };
+		C949386A19096B5F008A1CE8 /* CMISFormDataWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = C949386819096B5F008A1CE8 /* CMISFormDataWriter.h */; };
+		C949386B19096B5F008A1CE8 /* CMISFormDataWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = C949386919096B5F008A1CE8 /* CMISFormDataWriter.m */; };
 		C94AB15F19003A5A00ACC3D4 /* CMISBrowserVersioningService.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B9C8D518DE3379001D5C1B /* CMISBrowserVersioningService.m */; };
 		C94AB17119065C7500ACC3D4 /* CMISNSDictionary+CMISUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = C94AB16F19065C7500ACC3D4 /* CMISNSDictionary+CMISUtil.h */; };
 		C94AB17219065C7500ACC3D4 /* CMISNSDictionary+CMISUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = C94AB17019065C7500ACC3D4 /* CMISNSDictionary+CMISUtil.m */; };
@@ -467,6 +469,8 @@
 		C945D35B1909219C008B01D1 /* CMISCreatablePropertyTypes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISCreatablePropertyTypes.m; path = Common/CMISCreatablePropertyTypes.m; sourceTree = "<group>"; };
 		C945D35C1909219C008B01D1 /* CMISNewTypeSettableAttributes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISNewTypeSettableAttributes.h; path = Common/CMISNewTypeSettableAttributes.h; sourceTree = "<group>"; };
 		C945D35D1909219C008B01D1 /* CMISNewTypeSettableAttributes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISNewTypeSettableAttributes.m; path = Common/CMISNewTypeSettableAttributes.m; sourceTree = "<group>"; };
+		C949386819096B5F008A1CE8 /* CMISFormDataWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISFormDataWriter.h; path = Bindings/Browser/CMISFormDataWriter.h; sourceTree = "<group>"; };
+		C949386919096B5F008A1CE8 /* CMISFormDataWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISFormDataWriter.m; path = Bindings/Browser/CMISFormDataWriter.m; sourceTree = "<group>"; };
 		C94AB16F19065C7500ACC3D4 /* CMISNSDictionary+CMISUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "CMISNSDictionary+CMISUtil.h"; path = "Bindings/Browser/CMISNSDictionary+CMISUtil.h"; sourceTree = "<group>"; };
 		C94AB17019065C7500ACC3D4 /* CMISNSDictionary+CMISUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "CMISNSDictionary+CMISUtil.m"; path = "Bindings/Browser/CMISNSDictionary+CMISUtil.m"; sourceTree = "<group>"; };
 		C94AB17419065D7500ACC3D4 /* CMISTypeCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISTypeCache.h; path = Bindings/Browser/CMISTypeCache.h; sourceTree = "<group>"; };
@@ -552,6 +556,8 @@
 				C94AB17019065C7500ACC3D4 /* CMISNSDictionary+CMISUtil.m */,
 				C94AB17419065D7500ACC3D4 /* CMISTypeCache.h */,
 				C94AB17519065D7500ACC3D4 /* CMISTypeCache.m */,
+				C949386819096B5F008A1CE8 /* CMISFormDataWriter.h */,
+				C949386919096B5F008A1CE8 /* CMISFormDataWriter.m */,
 			);
 			name = Browser;
 			sourceTree = "<group>";
@@ -988,6 +994,7 @@
 				BD5C97091628293F002DDC6E /* CMISHttpUploadRequest.h in Headers */,
 				BD5C970E16282977002DDC6E /* CMISHttpDownloadRequest.h in Headers */,
 				58B9C8DE18DE3379001D5C1B /* CMISBrowserRepositoryService.h in Headers */,
+				C949386A19096B5F008A1CE8 /* CMISFormDataWriter.h in Headers */,
 				58B9C8E018DE3379001D5C1B /* CMISBrowserVersioningService.h in Headers */,
 				C94AB17119065C7500ACC3D4 /* CMISNSDictionary+CMISUtil.h in Headers */,
 				C97B948418FECD9600EDC1A6 /* CMISItemTypeDefinition.h in Headers */,
@@ -1222,6 +1229,7 @@
 				4E39DF61163A767B00F21DE6 /* CMISAtomParserUtil.m in Sources */,
 				4E10AC0016B916B500E2287E /* CMISDefaultNetworkProvider.m in Sources */,
 				4E3C32A916C4EF190099B21E /* CMISAtomPubVersioningService.m in Sources */,
+				C949386B19096B5F008A1CE8 /* CMISFormDataWriter.m in Sources */,
 				82895A1B16D8A8C5007BC80A /* CMISLog.m in Sources */,
 				278B26A0177BB3000049C229 /* CMISStandardUntrustedSSLAuthenticationProvider.m in Sources */,
 				BD70F11C17F4649B00AE2B0C /* CMISDocumentTypeDefinition.m in Sources */,

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBaseService.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBaseService.h?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBaseService.h (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBaseService.h Fri Apr 25 17:10:49 2014
@@ -27,8 +27,10 @@
 
 - (id)initWithBindingSession:(CMISBindingSession *)session;
 
--(NSString *)getObjectUrlObjectId:(NSString *)objectId selector:(NSString *)selector;
--(NSString *)getObjectUrlByPath:(NSString *)path selector:(NSString *)selector;
--(NSString *)getRepositoryUrlWithSelector:(NSString *)selector;
+- (NSString *)getRepositoryUrl;
+- (NSString *)getObjectUrlObjectId:(NSString *)objectId;
+- (NSString *)getObjectUrlObjectId:(NSString *)objectId selector:(NSString *)selector;
+- (NSString *)getObjectUrlByPath:(NSString *)path selector:(NSString *)selector;
+- (NSString *)getRepositoryUrlWithSelector:(NSString *)selector;
 
 @end

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBaseService.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBaseService.m?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBaseService.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBaseService.m Fri Apr 25 17:10:49 2014
@@ -41,16 +41,29 @@
     return self;
 }
 
--(NSString *)getObjectUrlObjectId:(NSString *)objectId selector:(NSString *)selector
+- (NSString *)getRepositoryUrl
+{
+    NSString *repoUrl = [self.bindingSession objectForKey:kCMISBrowserBindingSessionKeyRepositoryUrl];
+    return repoUrl;
+}
+
+- (NSString *)getObjectUrlObjectId:(NSString *)objectId
 {
     NSString *rootUrl = [self.bindingSession objectForKey:kCMISBrowserBindingSessionKeyRootFolderUrl];
     
     NSString *objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterObjectId value:objectId urlString:rootUrl];
+    
+    return objectUrl;
+}
+
+- (NSString *)getObjectUrlObjectId:(NSString *)objectId selector:(NSString *)selector
+{
+    NSString *objectUrl = [self getObjectUrlObjectId:objectId];
     objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISBrowserJSONParameterSelector value:selector urlString:objectUrl];
     return objectUrl;
 }
 
--(NSString *)getObjectUrlByPath:(NSString *)path selector:(NSString *)selector
+- (NSString *)getObjectUrlByPath:(NSString *)path selector:(NSString *)selector
 {
     NSString *rootUrl = [self.bindingSession objectForKey:kCMISBrowserBindingSessionKeyRootFolderUrl];
     
@@ -59,9 +72,9 @@
     return objectUrl;
 }
 
--(NSString *)getRepositoryUrlWithSelector:(NSString *)selector
+- (NSString *)getRepositoryUrlWithSelector:(NSString *)selector
 {
-    NSString *repoUrl = [self.bindingSession objectForKey:kCMISBrowserBindingSessionKeyRepositoryUrl];
+    NSString *repoUrl = [self getRepositoryUrl];
     repoUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISBrowserJSONParameterSelector value:selector urlString:repoUrl];
     return repoUrl;
 }

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserConstants.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserConstants.h?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserConstants.h (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserConstants.h Fri Apr 25 17:10:49 2014
@@ -60,8 +60,10 @@ extern NSString * const kCMISBrowserJSON
 extern NSString * const kCMISBrowserJSONControllableAcl;
 extern NSString * const kCMISBrowserJSONPropertyDefinitions;
 extern NSString * const kCMISBrowserJSONTypeMutability;
+extern NSString * const kCMISBrowserJSONValue;
 extern NSString * const kCMISBrowserJSONPropertyType;
 extern NSString * const kCMISBrowserJSONCardinality;
+extern NSString * const kCMISBrowserJSONDatatype;
 extern NSString * const kCMISBrowserJSONUpdateability;
 extern NSString * const kCMISBrowserJSONInherited;
 extern NSString * const kCMISBrowserJSONRequired;
@@ -76,11 +78,14 @@ extern NSString * const kCMISBrowserJSON
 extern NSString * const kCMISBrowserJSONRelationships;
 extern NSString * const kCMISBrowserJSONChangeEventInfo;
 extern NSString * const kCMISBrowserJSONAcl;
+extern NSString * const kCMISBrowserJSONAces;
 extern NSString * const kCMISBrowserJSONExactAcl;
+extern NSString * const kCMISBrowserJSONIsExact;
 extern NSString * const kCMISBrowserJSONPolicyIds;
 extern NSString * const kCMISBrowserJSONPolicyIdsIds;
 extern NSString * const kCMISBrowserJSONRenditions;
 extern NSString * const kCMISBrowserJSONObjects;
+extern NSString * const kCMISBrowserJSONResults;
 extern NSString * const kCMISBrowserJSONObject;
 extern NSString * const kCMISBrowserJSONHasMoreItems;
 extern NSString * const kCMISBrowserJSONNumberItems;
@@ -95,6 +100,10 @@ extern NSString * const kCMISBrowserJSON
 extern NSString * const kCMISBrowserJSONMaxValue;
 extern NSString * const kCMISBrowserJSONPrecision;
 extern NSString * const kCMISBrowserJSONResolution;
+extern NSString * const kCMISBrowserJSONAcePrincipal;
+extern NSString * const kCMISBrowserJSONAcePrincipalId;
+extern NSString * const kCMISBrowserJSONAcePermissions;
+extern NSString * const kCMISBrowserJSONAceIsDirect;
 
 // JSON enum values
 extern NSString * const kCMISBrowserJSONPropertyTypeValueString;
@@ -150,10 +159,47 @@ extern NSString * const kCMISBrowserJSON
 extern NSString * const kCMISBrowserJSONParameterSelector;
 extern NSString * const kCMISBrowserJSONParameterSuccinct;
 
+// Browser binding control
+extern NSString * const kCMISBrowserJSONControlCmisAction;
+
+// Browser binding actions
+extern NSString * const kCMISBrowserJSONActionCreateType;
+extern NSString * const kCMISBrowserJSONActionUpdateType;
+extern NSString * const kCMISBrowserJSONActionDeleteType;
+extern NSString * const kCMISBrowserJSONActionCreateDocument;
+extern NSString * const kCMISBrowserJSONActionCreateDocumentFromSource;
+extern NSString * const kCMISBrowserJSONActionCreateFolder;
+extern NSString * const kCMISBrowserJSONActionCreateRelationship;
+extern NSString * const kCMISBrowserJSONActionCreatePolicy;
+extern NSString * const kCMISBrowserJSONActionCreateItem;
+extern NSString * const kCMISBrowserJSONActionUpdateProperties;
+extern NSString * const kCMISBrowserJSONActionBulkUpdate;
+extern NSString * const kCMISBrowserJSONActionDeleteContent;
+extern NSString * const kCMISBrowserJSONActionSetContent;
+extern NSString * const kCMISBrowserJSONActionAppendContent;
+extern NSString * const kCMISBrowserJSONActionDelete;
+extern NSString * const kCMISBrowserJSONActionDeleteTree;
+extern NSString * const kCMISBrowserJSONActionMove;
+extern NSString * const kCMISBrowserJSONActionAddObjectToFolder;
+extern NSString * const kCMISBrowserJSONActionRemoveObjectFromFolder;
+extern NSString * const kCMISBrowserJSONActionQuery;
+extern NSString * const kCMISBrowserJSONActionCheckOut;
+extern NSString * const kCMISBrowserJSONActionCancelCheckOut;
+extern NSString * const kCMISBrowserJSONActionCheckIn;
+extern NSString * const kCMISBrowserJSONActionApplyPolicy;
+extern NSString * const kCMISBrowserJSONActionRemovePolicy;
+extern NSString * const kCMISBrowserJSONActionApplyAcl;
+
 + (NSSet *)objectKeys;
 + (NSSet *)repositoryInfoKeys;
 + (NSSet *)typeKeys;
++ (NSSet *)propertyKeys;
 + (NSSet *)propertyTypeKeys;
 + (NSSet *)renditionKeys;
++ (NSSet *)objectListKeys;
++ (NSSet *)queryResultListKeys;
++ (NSSet *)aclKeys;
++ (NSSet *)aceKeys;
++ (NSSet *)principalKeys;
 
 @end

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserConstants.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserConstants.m?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserConstants.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserConstants.m Fri Apr 25 17:10:49 2014
@@ -22,8 +22,14 @@
 static NSSet *_objectKeys;
 static NSSet *_repositoryInfoKeys;
 static NSSet *_typeKeys;
+static NSSet *_propertyKeys;
 static NSSet *_propertyTypeKeys;
 static NSSet *_renditionKeys;
+static NSSet *_objectListKeys;
+static NSSet *_queryResultListKeys;
+static NSSet *_aclKeys;
+static NSSet *_aceKeys;
+static NSSet *_principalKeys;
 
 @implementation CMISBrowserConstants
 
@@ -68,6 +74,8 @@ NSString * const kCMISBrowserJSONPropert
 NSString * const kCMISBrowserJSONTypeMutability = @"typeMutability";
 NSString * const kCMISBrowserJSONPropertyType = @"propertyType";
 NSString * const kCMISBrowserJSONCardinality = @"cardinality";
+NSString * const kCMISBrowserJSONValue = @"value";
+NSString * const kCMISBrowserJSONDatatype = @"type";
 NSString * const kCMISBrowserJSONUpdateability = @"updatability";
 NSString * const kCMISBrowserJSONInherited = @"inherited";
 NSString * const kCMISBrowserJSONRequired = @"required";
@@ -82,14 +90,18 @@ NSString * const kCMISBrowserJSONAllowab
 NSString * const kCMISBrowserJSONRelationships = @"relationships";
 NSString * const kCMISBrowserJSONChangeEventInfo = @"changeEventInfo";
 NSString * const kCMISBrowserJSONAcl = @"acl";
+NSString * const kCMISBrowserJSONAces = @"aces";
 NSString * const kCMISBrowserJSONExactAcl = @"exactACL";
+NSString * const kCMISBrowserJSONIsExact = @"isExact";
 NSString * const kCMISBrowserJSONPolicyIds = @"policyIds";
 NSString * const kCMISBrowserJSONPolicyIdsIds = @"ids";
 NSString * const kCMISBrowserJSONRenditions = @"renditions";
 NSString * const kCMISBrowserJSONObjects = @"objects";
+NSString * const kCMISBrowserJSONResults = @"results";
 NSString * const kCMISBrowserJSONObject = @"object";
 NSString * const kCMISBrowserJSONHasMoreItems = @"hasMoreItems";
 NSString * const kCMISBrowserJSONNumberItems = @"numItems";
+NSString * const kCMISBrowserJSONChangeLogToken = @"changeLogToken";
 NSString * const kCMISBrowserJSONThinClientUri = @"thinClientURI";
 NSString * const kCMISBrowserJSONChangesIncomplete = @"changesIncomplete";
 NSString * const kCMISBrowserJSONChangesOnType = @"changesOnType";
@@ -101,6 +113,11 @@ NSString * const kCMISBrowserJSONMinValu
 NSString * const kCMISBrowserJSONMaxValue = @"maxValue";
 NSString * const kCMISBrowserJSONPrecision = @"precision";
 NSString * const kCMISBrowserJSONResolution = @"resolution";
+NSString * const kCMISBrowserJSONAcePrincipal = @"principal";
+NSString * const kCMISBrowserJSONAcePrincipalId = @"principalId";
+NSString * const kCMISBrowserJSONAcePermissions = @"permissions";
+NSString * const kCMISBrowserJSONAceIsDirect = @"isDirect";
+
 
 // JSON enum values
 NSString * const kCMISBrowserJSONPropertyTypeValueString = @"string";
@@ -158,7 +175,39 @@ NSString * const kCMISBrowserJSONRenditi
 NSString * const kCMISBrowserJSONParameterSelector = @"cmisselector";
 NSString * const kCMISBrowserJSONParameterSuccinct = @"succinct";
 
-+(NSSet *)objectKeys
+// Browser binding control
+NSString * const kCMISBrowserJSONControlCmisAction = @"cmisaction";
+
+
+// Browser binding actions
+NSString * const kCMISBrowserJSONActionCreateType = @"createType";
+NSString * const kCMISBrowserJSONActionUpdateType = @"updateType";
+NSString * const kCMISBrowserJSONActionDeleteType = @"deleteType";
+NSString * const kCMISBrowserJSONActionCreateDocument = @"createDocument";
+NSString * const kCMISBrowserJSONActionCreateDocumentFromSource = @"createDocumentFromSource";
+NSString * const kCMISBrowserJSONActionCreateFolder = @"createFolder";
+NSString * const kCMISBrowserJSONActionCreateRelationship = @"createRelationship";
+NSString * const kCMISBrowserJSONActionCreatePolicy = @"createPolicy";
+NSString * const kCMISBrowserJSONActionCreateItem = @"createItem";
+NSString * const kCMISBrowserJSONActionUpdateProperties = @"update";
+NSString * const kCMISBrowserJSONActionBulkUpdate = @"bulkUpdate";
+NSString * const kCMISBrowserJSONActionDeleteContent = @"deleteContent";
+NSString * const kCMISBrowserJSONActionSetContent = @"setContent";
+NSString * const kCMISBrowserJSONActionAppendContent = @"appendContent";
+NSString * const kCMISBrowserJSONActionDelete = @"delete";
+NSString * const kCMISBrowserJSONActionDeleteTree = @"deleteTree";
+NSString * const kCMISBrowserJSONActionMove = @"move";
+NSString * const kCMISBrowserJSONActionAddObjectToFolder = @"addObjectToFolder";
+NSString * const kCMISBrowserJSONActionRemoveObjectFromFolder = @"removeObjectFromFolder";
+NSString * const kCMISBrowserJSONActionQuery = @"query";
+NSString * const kCMISBrowserJSONActionCheckOut = @"checkOut";
+NSString * const kCMISBrowserJSONActionCancelCheckOut = @"cancelCheckOut";
+NSString * const kCMISBrowserJSONActionCheckIn = @"checkIn";
+NSString * const kCMISBrowserJSONActionApplyPolicy = @"applyPolicy";
+NSString * const kCMISBrowserJSONActionRemovePolicy = @"removePolicy";
+NSString * const kCMISBrowserJSONActionApplyAcl = @"applyACL";
+
++ (NSSet *)objectKeys
 {
     if(!_objectKeys) {
         _objectKeys = [NSSet setWithObjects:
@@ -234,6 +283,22 @@ NSString * const kCMISBrowserJSONParamet
     return _typeKeys;
 }
 
++ (NSSet *)propertyKeys
+{
+    if(!_propertyKeys) {
+        _propertyKeys = [NSSet setWithObjects:
+                         kCMISBrowserJSONId,
+                         kCMISBrowserJSONLocalName,
+                         kCMISBrowserJSONDisplayName,
+                         kCMISBrowserJSONQueryName,
+                         kCMISBrowserJSONValue,
+                         kCMISBrowserJSONDatatype,
+                         kCMISBrowserJSONCardinality,
+                         nil];
+    }
+    return _propertyKeys;
+}
+
 + (NSSet *)propertyTypeKeys
 {
     if(!_propertyTypeKeys) {
@@ -264,7 +329,7 @@ NSString * const kCMISBrowserJSONParamet
     return _propertyTypeKeys;
 }
 
-+(NSSet *)renditionKeys
++ (NSSet *)renditionKeys
 {
     if(!_renditionKeys) {
         _renditionKeys = [NSSet setWithObjects:
@@ -281,4 +346,63 @@ NSString * const kCMISBrowserJSONParamet
     return _renditionKeys;
 }
 
++ (NSSet *)objectListKeys
+{
+    if(!_objectListKeys) {
+        _objectListKeys = [NSSet setWithObjects:
+                           kCMISBrowserJSONObjects,
+                           kCMISBrowserJSONHasMoreItems,
+                           kCMISBrowserJSONNumberItems,
+                           kCMISBrowserJSONChangeLogToken,
+                           nil];
+    }
+    return _objectListKeys;
+}
+
++ (NSSet *)queryResultListKeys
+{
+    if(!_queryResultListKeys) {
+        _queryResultListKeys = [NSSet setWithObjects:
+                                kCMISBrowserJSONResults,
+                                kCMISBrowserJSONHasMoreItems,
+                                kCMISBrowserJSONNumberItems,
+                                nil];
+    }
+    return _queryResultListKeys;
+}
+
++ (NSSet *)aclKeys
+{
+    if(!_aclKeys) {
+        _aclKeys = [NSSet setWithObjects:
+                    kCMISBrowserJSONAces,
+                    kCMISBrowserJSONIsExact,
+                    nil];
+    }
+    return _aclKeys;
+}
+
++ (NSSet *)aceKeys
+{
+    if(!_aceKeys) {
+        _aceKeys = [NSSet setWithObjects:
+                    kCMISBrowserJSONAcePrincipal,
+                    kCMISBrowserJSONAcePrincipalId,
+                    kCMISBrowserJSONAcePermissions,
+                    kCMISBrowserJSONAceIsDirect,
+                    nil];
+    }
+    return _aceKeys;
+}
+
++ (NSSet *)principalKeys
+{
+    if(!_principalKeys) {
+        _principalKeys = [NSSet setWithObjects:
+                          kCMISBrowserJSONAcePrincipalId,
+                          nil];
+    }
+    return _principalKeys;
+}
+
 @end

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserDiscoveryService.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserDiscoveryService.m?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserDiscoveryService.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserDiscoveryService.m Fri Apr 25 17:10:49 2014
@@ -18,11 +18,19 @@
  */
 
 #import "CMISBrowserDiscoveryService.h"
-#import "CMISErrors.h"
+#import "CMISRequest.h"
+#import "CMISHttpResponse.h"
+#import "CMISTypeCache.h"
+#import "CMISBrowserUtil.h"
+#import "CMISFormDataWriter.h"
+#import "CMISBrowserConstants.h"
+#import "CMISConstants.h"
+#import "CMISEnums.h"
 
 @implementation CMISBrowserDiscoveryService
 
-- (CMISRequest*)query:(NSString *)statement searchAllVersions:(BOOL)searchAllVersions
+- (CMISRequest*)query:(NSString *)statement
+    searchAllVersions:(BOOL)searchAllVersions
         relationships:(CMISIncludeRelationship)relationships
       renditionFilter:(NSString *)renditionFilter
 includeAllowableActions:(BOOL)includeAllowableActions
@@ -30,9 +38,41 @@ includeAllowableActions:(BOOL)includeAll
             skipCount:(NSNumber *)skipCount
       completionBlock:(void (^)(CMISObjectList *objectList, NSError *error))completionBlock
 {
-    NSString * message = [NSString stringWithFormat:@"%s is not implemented yet", __PRETTY_FUNCTION__];
-    NSException *exception = [NSException exceptionWithName:NSInvalidArgumentException reason:message userInfo:nil];
-    @throw exception;
+    NSString *url = [self getRepositoryUrl];
+
+    // prepare form data
+    CMISFormDataWriter *formData = [[CMISFormDataWriter alloc] initWithAction:kCMISBrowserJSONActionQuery];
+    [formData addParameter:kCMISParameterStatement value:statement];
+    [formData addParameter:kCMISParameterSearchAllVersions boolValue:searchAllVersions];
+    [formData addParameter:kCMISParameterIncludeAllowableActions boolValue:includeAllowableActions];
+    [formData addParameter:kCMISParameterIncludeRelationships value:[CMISEnums stringForIncludeRelationShip:relationships]];
+    [formData addParameter:kCMISParameterRenditionFilter value:renditionFilter];
+    [formData addParameter:kCMISParameterMaxItems value:maxItems];
+    [formData addParameter:kCMISParameterSkipCount value:skipCount];
+    // Important: No succinct flag here!!!
+    
+    CMISRequest *cmisRequest = [[CMISRequest alloc] init];
+    
+    [self.bindingSession.networkProvider invokePOST:[NSURL URLWithString:url]
+                                            session:self.bindingSession
+                                               body:formData.body
+                                            headers:formData.headers
+                                        cmisRequest:cmisRequest
+                                    completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
+                                       if ((httpResponse.statusCode == 200 || httpResponse.statusCode == 201) && httpResponse.data) {
+                                           CMISTypeCache *typeCache = [[CMISTypeCache alloc] initWithRepositoryId:self.bindingSession.repositoryId bindingService:self];
+                                           [CMISBrowserUtil objectListFromJSONData:httpResponse.data typeCache:typeCache isQueryResult:YES completionBlock:^(CMISObjectList *objectList, NSError *error) {
+                                               if (error) {
+                                                   completionBlock(nil, error);
+                                               } else {
+                                                   completionBlock(objectList, nil);
+                                               }
+                                           }];
+                                       } else {
+                                           completionBlock(nil, error);
+                                       }
+                                   }];
+    return cmisRequest;
 }
 
 @end

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserNavigationService.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserNavigationService.m?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserNavigationService.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserNavigationService.m Fri Apr 25 17:10:49 2014
@@ -55,19 +55,15 @@
                                            session:self.bindingSession
                                        cmisRequest:cmisRequest
                                    completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
-                                       if (httpResponse) {
-                                           NSData *data = httpResponse.data;
-                                           if (data) {
-                                               CMISTypeCache *typeCache = [[CMISTypeCache alloc] initWithRepositoryId:self.bindingSession.repositoryId bindingService:self];
-                                               [CMISBrowserUtil objectListFromJSONData:data typeCache:typeCache completionBlock:^(CMISObjectList *objectList, NSError *error) {
-                                                   if (error) {
-                                                       completionBlock(nil, error);
-                                                   } else {
-                                                       completionBlock(objectList, nil);
-                                                   }
-                                               }];
-                                               
-                                           }
+                                      if (httpResponse.statusCode == 200 && httpResponse.data) {
+                                           CMISTypeCache *typeCache = [[CMISTypeCache alloc] initWithRepositoryId:self.bindingSession.repositoryId bindingService:self];
+                                           [CMISBrowserUtil objectListFromJSONData:httpResponse.data typeCache:typeCache isQueryResult:NO completionBlock:^(CMISObjectList *objectList, NSError *error) {
+                                               if (error) {
+                                                   completionBlock(nil, error);
+                                               } else {
+                                                   completionBlock(objectList, nil);
+                                               }
+                                           }];
                                        } else {
                                            completionBlock(nil, error);
                                        }

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserObjectService.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserObjectService.m?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserObjectService.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserObjectService.m Fri Apr 25 17:10:49 2014
@@ -27,6 +27,7 @@
 #import "CMISFileUtil.h"
 #import "CMISErrors.h"
 #import "CMISLog.h"
+#import "CMISFormDataWriter.h"
 
 @implementation CMISBrowserObjectService
 
@@ -292,9 +293,29 @@
                  allVersions:(BOOL)allVersions
              completionBlock:(void (^)(BOOL objectDeleted, NSError *error))completionBlock
 {
-    NSString * message = [NSString stringWithFormat:@"%s is not implemented yet", __PRETTY_FUNCTION__];
-    NSException *exception = [NSException exceptionWithName:NSInvalidArgumentException reason:message userInfo:nil];
-    @throw exception;
+    // build URL
+    NSString *objectUrl = [self getObjectUrlObjectId:objectId];
+    
+    CMISFormDataWriter *formData = [[CMISFormDataWriter alloc] initWithAction:kCMISBrowserJSONActionDelete];
+    [formData addParameter:kCMISParameterAllVersions boolValue:allVersions];
+    
+
+    CMISRequest *cmisRequest = [[CMISRequest alloc] init];
+    
+    // send
+    [self.bindingSession.networkProvider invokePOST:[NSURL URLWithString:objectUrl]
+                                            session:self.bindingSession
+                                               body:formData.body
+                                            headers:formData.headers
+                                        cmisRequest:cmisRequest
+                                    completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
+                                        if ((httpResponse.statusCode == 200 || httpResponse.statusCode == 201) && httpResponse.data) {
+                                            completionBlock(YES, nil);
+                                        } else {
+                                            completionBlock(NO, [CMISErrors cmisError:error cmisErrorCode:kCMISErrorCodeUpdateConflict]);
+                                        }
+                                    }];
+    return cmisRequest;
 }
 
 - (CMISRequest*)createFolderInParentFolder:(NSString *)folderObjectId

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserUtil.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserUtil.h?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserUtil.h (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserUtil.h Fri Apr 25 17:10:49 2014
@@ -44,7 +44,7 @@
 /**
  Returns a CMISObjectList object parsed from the given JSON data.
  */
-+ (void)objectListFromJSONData:(NSData *)jsonData typeCache:(CMISTypeCache *)typeCache completionBlock:(void(^)(CMISObjectList *objectList, NSError *error))completionBlock;
++ (void)objectListFromJSONData:(NSData *)jsonData typeCache:(CMISTypeCache *)typeCache isQueryResult:(BOOL)isQueryResult completionBlock:(void(^)(CMISObjectList *objectList, NSError *error))completionBlock;
 
 /**
  Returns an array of CMISRenditionData objects, parsed from the given JSON data.

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserUtil.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserUtil.m?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserUtil.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserUtil.m Fri Apr 25 17:10:49 2014
@@ -32,6 +32,10 @@
 #import "CMISNSDictionary+CMISUtil.h"
 #import "CMISRepositoryCapabilities.h"
 #import "CMISObjectConverter.h"
+#import "CMISAcl.h"
+#import "CMISAce.h"
+#import "CMISPrincipal.h"
+#import "CMISAllowableActions.h"
 
 @implementation CMISBrowserUtil
 
@@ -202,7 +206,7 @@
     }
 }
 
-+ (void)objectListFromJSONData:(NSData *)jsonData typeCache:(CMISTypeCache *)typeCache completionBlock:(void(^)(CMISObjectList *objectList, NSError *error))completionBlock
++ (void)objectListFromJSONData:(NSData *)jsonData typeCache:(CMISTypeCache *)typeCache isQueryResult:(BOOL)isQueryResult completionBlock:(void(^)(CMISObjectList *objectList, NSError *error))completionBlock
 {
     // TODO: error handling i.e. if jsonData is nil, also handle outError being nil
     
@@ -223,8 +227,11 @@
             objectList.hasMoreItems = NO;
             objectList.numItems = (int)objectsArray.count;
         } else { // is NSDictionary
-            objectsArray = [jsonDictionary cmis_objectForKeyNotNull:kCMISBrowserJSONObjects];
-            
+            if (isQueryResult) {
+                objectsArray = [jsonDictionary cmis_objectForKeyNotNull:kCMISBrowserJSONResults];
+            } else {
+                objectsArray = [jsonDictionary cmis_objectForKeyNotNull:kCMISBrowserJSONObjects];
+            }
             // retrieve the paging data
             objectList.hasMoreItems = [jsonDictionary cmis_boolForKey:kCMISBrowserJSONHasMoreItems];
             objectList.numItems = [jsonDictionary cmis_intForKey:kCMISBrowserJSONNumberItems];
@@ -237,6 +244,13 @@
                 // pass objects to list
                 objectList.objects = objects;
                 
+                // handle extension data
+                if (isQueryResult) {
+                    objectList.extensions = [CMISObjectConverter convertExtensions:jsonDictionary cmisKeys:[CMISBrowserConstants queryResultListKeys]];
+                } else {
+                    objectList.extensions = [CMISObjectConverter convertExtensions:jsonDictionary cmisKeys:[CMISBrowserConstants objectListKeys]];
+                }
+                
                 completionBlock(objectList, nil);
             }
         }];
@@ -272,21 +286,46 @@
     }
     
     CMISObjectData *objectData = [CMISObjectData new];
+    
+    BOOL hasSuccinctProperties = YES;
     NSDictionary *propertiesJson = [dictionary cmis_objectForKeyNotNull:kCMISBrowserJSONSuccinctProperties];
-    objectData.identifier = [propertiesJson cmis_objectForKeyNotNull:kCMISPropertyObjectId];
+    if(!propertiesJson){
+        hasSuccinctProperties = NO;
+        propertiesJson = [dictionary cmis_objectForKeyNotNull:kCMISBrowserJSONProperties];
+    }
+    
+    
+    id identifier = [propertiesJson cmis_objectForKeyNotNull:kCMISPropertyObjectId];
+    if ([identifier isKindOfClass:NSDictionary.class]){
+        objectData.identifier = [identifier cmis_objectForKeyNotNull:kCMISBrowserJSONValue];
+    } else {
+        objectData.identifier = identifier;
+    }
     
     // determine the object type
-    NSString *baseType = [propertiesJson cmis_objectForKeyNotNull:kCMISPropertyBaseTypeId];
+    id baseType = [propertiesJson cmis_objectForKeyNotNull:kCMISPropertyBaseTypeId];
+    if([baseType isKindOfClass:NSDictionary.class]) {
+        baseType = [baseType cmis_objectForKeyNotNull:kCMISBrowserJSONValue];
+    }
+    
+    // TODO other base types
     if ([baseType isEqualToString:kCMISPropertyObjectTypeIdValueDocument]) {
         objectData.baseType = CMISBaseTypeDocument;
     } else if ([baseType isEqualToString:kCMISPropertyObjectTypeIdValueFolder]) {
         objectData.baseType = CMISBaseTypeFolder;
     }
     
-    // set the properties
+    objectData.acl = [CMISBrowserUtil convertAcl:[dictionary cmis_objectForKeyNotNull:kCMISBrowserJSONAcl]]; //TODO here we should pass isExactAcl:nil!
+    
+    objectData.allowableActions = [CMISBrowserUtil convertAllowableActions:[dictionary cmis_objectForKeyNotNull:kCMISBrowserJSONAllowableActions]];
+    
+    objectData.isExactAcl = [dictionary cmis_boolForKey:kCMISBrowserJSONIsExact];
+
+    // TODO set policyIds
+    
     NSDictionary *propertiesExtension = [dictionary cmis_objectForKeyNotNull:kCMISBrowserJSONPropertiesExtension];
     
-    [CMISBrowserUtil convertSuccinctProperties:propertiesJson propertiesExtension:propertiesExtension typeCache:typeCache completionBlock:^(CMISProperties *properties, NSError *error) {
+    void (^continueWithObjectConversion)(CMISProperties*, NSError*) = ^(CMISProperties *properties, NSError *error) {
         if (error){
             completionBlock(nil, error);
         } else {
@@ -311,8 +350,18 @@
                 }
             }];
         }
+    };
+    
+    if(hasSuccinctProperties) {
+        [CMISBrowserUtil convertSuccinctProperties:propertiesJson propertiesExtension:propertiesExtension typeCache:typeCache completionBlock:^(CMISProperties *properties, NSError *error) {
+            continueWithObjectConversion(properties, error);
+        }];
+    } else {
+        NSError *error = nil;
+        CMISProperties *properties = [CMISBrowserUtil convertProperties:propertiesJson propertiesExtension:propertiesExtension error:&error];
+        continueWithObjectConversion(properties, error);
+    }
 
-    }];
 }
 
 + (void)convertObjects:(NSArray *)objectsArray position:(NSInteger)position convertedObjects:(NSMutableArray *)convertedObjects typeCache:(CMISTypeCache *)typeCache completionBlock:(void(^)(NSArray* objects, NSError *error))completionBlock
@@ -372,6 +421,69 @@
     }
 }
 
++ (CMISProperties *)convertProperties:(NSDictionary *)propertiesJson propertiesExtension:(NSDictionary *)extJson error:(NSError **)outError
+{
+    if(!propertiesJson) {
+        return nil;
+    }
+    
+    CMISProperties *properties = [[CMISProperties alloc] init];
+    
+    for (NSString *propName in propertiesJson) {
+        NSDictionary *propertyDictionary = [propertiesJson cmis_objectForKeyNotNull:propName];
+        if (!propertyDictionary) {
+            continue;
+        }
+        
+        CMISPropertyType propertyType = [CMISEnums enumForPropertyType:[propertyDictionary cmis_objectForKeyNotNull:kCMISBrowserJSONDatatype]];
+        
+        id propValue = [propertyDictionary cmis_objectForKeyNotNull:kCMISBrowserJSONValue];
+        NSArray *values = nil;
+        if ([propValue isKindOfClass:NSArray.class]) {
+            values = propValue;
+        } else if (propValue) {
+            values = [NSArray arrayWithObject:propValue];
+        }
+        
+        CMISPropertyData *propertyData;
+        switch (propertyType) {
+            case CMISPropertyTypeString:
+            case CMISPropertyTypeId:
+            case CMISPropertyTypeBoolean:
+            case CMISPropertyTypeInteger:
+            case CMISPropertyTypeDecimal:
+            case CMISPropertyTypeHtml:
+            case CMISPropertyTypeUri:
+                propertyData = [CMISPropertyData createPropertyForId:propName arrayValue:values type:propertyType];
+                break;
+            case CMISPropertyTypeDateTime: {
+                NSArray *dateValues = [CMISBrowserUtil convertNumbersToDates:values];
+                propertyData = [CMISPropertyData createPropertyForId:propName arrayValue:dateValues type:propertyType];
+                break;
+            }
+            default: {
+                if (outError != NULL) *outError = [CMISErrors createCMISErrorWithCode:kCMISErrorCodeInvalidArgument
+                                                 detailedDescription:@"Unknown property type!"];
+                return nil;
+            }
+        }
+        propertyData.identifier = propName;
+        propertyData.displayName = [propertyDictionary cmis_objectForKeyNotNull:kCMISBrowserJSONDisplayName];
+        propertyData.queryName = [propertyDictionary cmis_objectForKeyNotNull:kCMISBrowserJSONQueryName];
+        propertyData.localName = [propertyDictionary cmis_objectForKeyNotNull:kCMISBrowserJSONLocalName];
+        
+        propertyData.extensions = [CMISObjectConverter convertExtensions:propertyDictionary cmisKeys:[CMISBrowserConstants propertyKeys]];
+        
+        [properties addProperty:propertyData];
+    }
+    
+    if (extJson){
+        properties.extensions = [CMISObjectConverter convertExtensions:extJson cmisKeys:[NSSet set]];
+    }
+    
+    return properties;
+}
+
 + (void)convertSuccinctProperties:(NSDictionary *)propertiesJson propertiesExtension:(NSDictionary *)extJson typeCache:(CMISTypeCache *)typeCache completionBlock:(void(^)(CMISProperties *properties, NSError *error))completionBlock
 {
     if (!propertiesJson) {
@@ -631,6 +743,71 @@
     return result;
 }
 
++ (CMISAcl *)convertAcl:(NSDictionary *)jsonDictionary
+{
+    if (!jsonDictionary) {
+        return nil;
+    }
+    
+    CMISAcl *result = [[CMISAcl alloc] init];
+    
+    NSMutableArray *aces = [[NSMutableArray alloc] init];
+    
+    NSArray *jsonAces = [jsonDictionary cmis_objectForKeyNotNull:kCMISBrowserJSONAces];
+    if (jsonAces) {
+        for (NSDictionary *entry in jsonAces) {
+            CMISAce *ace = [[CMISAce alloc] init];
+            
+            id isDirect = [entry cmis_objectForKeyNotNull:kCMISBrowserJSONAceIsDirect];
+            ace.isDirect = isDirect != nil ? [isDirect boolValue] : YES;
+            
+            NSArray *jsonPermissions = [entry cmis_objectForKeyNotNull:kCMISBrowserJSONAcePermissions];
+            if (jsonPermissions) {
+                NSMutableSet *permissions = [[NSMutableSet alloc] init];
+                for (NSObject *perm in jsonPermissions) {
+                    [permissions addObject:[perm description]];
+                }
+                ace.permissions = permissions;
+            }
+            
+            NSDictionary *jsonPrincipal = [entry cmis_objectForKeyNotNull:kCMISBrowserJSONAcePrincipal];
+            if (jsonPrincipal) {
+                CMISPrincipal *principal = [[CMISPrincipal alloc] init];
+                
+                principal.principalId = [jsonPrincipal cmis_objectForKeyNotNull:kCMISBrowserJSONAcePrincipalId];
+                
+                principal.extensions = [CMISObjectConverter convertExtensions:jsonPrincipal cmisKeys:[CMISBrowserConstants principalKeys]];
+                
+                ace.principal = principal;
+            }
+            
+            ace.extensions = [CMISObjectConverter convertExtensions:entry cmisKeys:[CMISBrowserConstants aceKeys]];
+            
+            [aces addObject:ace];
+        }
+    }
+    
+    result.aces = [aces copy];
+    
+    //TODO result.isExact = isExact; // there should be a "isExcat" parameter of this method
+    
+    result.extensions = [CMISObjectConverter convertExtensions:jsonDictionary cmisKeys:[CMISBrowserConstants aclKeys]];
+    
+    return result;
+}
+
++ (CMISAllowableActions *)convertAllowableActions:(NSDictionary *)jsonDictionary
+{
+    if (!jsonDictionary) {
+        return nil;
+    }
+    
+    NSArray *extensions = [CMISObjectConverter convertExtensions:jsonDictionary cmisKeys:[NSSet setWithObjects:CMISAllowableActionsArray]];
+    CMISAllowableActions *result = [[CMISAllowableActions alloc] initWithAllowableActionsDictionary:jsonDictionary extensionElementArray:extensions];
+
+    return result;
+}
+
 + (void)retrieveTypeDefinitions:(NSArray *)objectTypeIds position:(NSInteger)position typeCache:(CMISTypeCache *)typeCache completionBlock:(void (^)(NSMutableArray *typeDefinitions, NSError *error))completionBlock
 {
     [typeCache typeDefinition:[objectTypeIds objectAtIndex:position]
@@ -717,24 +894,7 @@
     propDef.required = [propertyDictionary cmis_boolForKey:kCMISBrowserJSONRequired];
     
     // determine property type
-    NSString *typeString = [propertyDictionary cmis_objectForKeyNotNull:kCMISBrowserJSONPropertyType];
-    if ([typeString isEqualToString:kCMISBrowserJSONPropertyTypeValueString]) {
-        propDef.propertyType = CMISPropertyTypeString;
-    } else if ([typeString isEqualToString:kCMISBrowserJSONPropertyTypeValueId]) {
-        propDef.propertyType = CMISPropertyTypeId;
-    } else if ([typeString isEqualToString:kCMISBrowserJSONPropertyTypeValueInteger]) {
-        propDef.propertyType = CMISPropertyTypeInteger;
-    } else if ([typeString isEqualToString:kCMISBrowserJSONPropertyTypeValueDecimal]) {
-        propDef.propertyType = CMISPropertyTypeDecimal;
-    } else if ([typeString isEqualToString:kCMISBrowserJSONPropertyTypeValueBoolean]) {
-        propDef.propertyType = CMISPropertyTypeBoolean;
-    } else if ([typeString isEqualToString:kCMISBrowserJSONPropertyTypeValueDateTime]) {
-        propDef.propertyType = CMISPropertyTypeDateTime;
-    } else if ([typeString isEqualToString:kCMISBrowserJSONPropertyTypeValueHtml]) {
-        propDef.propertyType = CMISPropertyTypeHtml;
-    } else if ([typeString isEqualToString:kCMISBrowserJSONPropertyTypeValueUri]) {
-        propDef.propertyType = CMISPropertyTypeUri;
-    }
+    propDef.propertyType = [CMISEnums enumForPropertyType:[propertyDictionary cmis_objectForKeyNotNull:kCMISBrowserJSONPropertyType]];
     
     // determine cardinality
     NSString *cardinalityString = [propertyDictionary cmis_objectForKeyNotNull:kCMISBrowserJSONCardinality];

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserVersioningService.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserVersioningService.m?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserVersioningService.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserVersioningService.m Fri Apr 25 17:10:49 2014
@@ -90,7 +90,7 @@
                                    completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
                                        if (httpResponse.statusCode == 200 && httpResponse.data) {
                                            CMISTypeCache *typeCache = [[CMISTypeCache alloc] initWithRepositoryId:self.bindingSession.repositoryId bindingService:self];
-                                           [CMISBrowserUtil objectListFromJSONData:httpResponse.data typeCache:typeCache completionBlock:^(CMISObjectList *objectList, NSError *error) {
+                                           [CMISBrowserUtil objectListFromJSONData:httpResponse.data typeCache:typeCache isQueryResult:NO completionBlock:^(CMISObjectList *objectList, NSError *error) {
                                                if (error) {
                                                    completionBlock(nil, error);
                                                } else {

Added: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISFormDataWriter.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISFormDataWriter.h?rev=1590084&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISFormDataWriter.h (added)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISFormDataWriter.h Fri Apr 25 17:10:49 2014
@@ -0,0 +1,34 @@
+/*
+ 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 <Foundation/Foundation.h>
+
+@interface CMISFormDataWriter : NSObject
+
+- (id)initWithAction:(NSString *)action;
+
+- (void)addParameter:(NSString *)name value:(id)value;
+
+- (void)addParameter:(NSString *)name boolValue:(BOOL)value;
+
+- (NSDictionary *)headers;
+
+- (NSData *)body;
+
+@end

Added: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISFormDataWriter.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISFormDataWriter.m?rev=1590084&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISFormDataWriter.m (added)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISFormDataWriter.m Fri Apr 25 17:10:49 2014
@@ -0,0 +1,90 @@
+/*
+ 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 "CMISFormDataWriter.h"
+#import "CMISConstants.h"
+#import "CMISBrowserConstants.h"
+
+NSString * const kCMISFormDataContentTypeUrlEncoded = @"application/x-www-form-urlencoded;charset=utf-8";
+
+@interface CMISFormDataWriter ()
+
+@property (nonatomic, strong) NSMutableDictionary *parameters;
+@property (nonatomic, strong) NSString *boundary;
+
+@end
+
+@implementation CMISFormDataWriter
+
+
+
+- (id)initWithAction:(NSString *)action
+{
+    self = [super init];
+    if (self) {
+        self.parameters = [[NSMutableDictionary alloc] init];
+        
+        [self addParameter:kCMISBrowserJSONControlCmisAction value:action];
+        //self.contentStream = contentStream;
+        self.boundary = [NSString stringWithFormat:@"aPacHeCheMIStryoBjECtivEcmiS%x%a%x", (unsigned int) action.hash, CFAbsoluteTimeGetCurrent(), (unsigned int) self.hash];
+        
+    }
+    return self;
+}
+
+- (void)addParameter:(NSString *)name value:(id)value
+{
+    if(!name || !value) {
+        return;
+    }
+    
+    [self.parameters setValue:[value description] forKey:name];
+}
+
+- (void)addParameter:(NSString *)name boolValue:(BOOL)value
+{
+    [self addParameter:name value:(value? kCMISParameterValueTrue : kCMISParameterValueFalse)];
+}
+
+- (NSDictionary *)headers
+{
+    return @{@"Content-Type" : kCMISFormDataContentTypeUrlEncoded};
+}
+
+- (NSData *)body
+{
+    BOOL first = YES;
+    NSData *amp = [@"&" dataUsingEncoding:NSUTF8StringEncoding];
+    NSMutableData *data = [[NSMutableData alloc] init];
+    
+    for (NSString *parameterKey in self.parameters) {
+        if (first) {
+            first = NO;
+        } else {
+            [data appendData:amp];
+        }
+        NSString *parameterValue = [self.parameters[parameterKey] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+        NSString *parameter = [NSString stringWithFormat:@"%@=%@", parameterKey, parameterValue];
+        [data appendData:[parameter dataUsingEncoding:NSUTF8StringEncoding]];
+    }
+
+    return data;
+}
+
+@end

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISObjectList.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISObjectList.h?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISObjectList.h (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISObjectList.h Fri Apr 25 17:10:49 2014
@@ -19,6 +19,7 @@
  
 #import <Foundation/Foundation.h>
 #import "CMISEnums.h"
+#import "CMISExtensionData.h"
 
 @protocol CMISBinding;
 
@@ -26,7 +27,7 @@
 /**
   * Class to hold the result of executing a query
   */
-@interface CMISObjectList : NSObject
+@interface CMISObjectList : CMISExtensionData
 
 /**
  * Array of CMISObjectData, representing a result of some query

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISAllowableActions.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISAllowableActions.m?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISAllowableActions.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISAllowableActions.m Fri Apr 25 17:10:49 2014
@@ -72,9 +72,13 @@
 
 - (void)setAllowableActionsWithDictionary:(NSDictionary *)allowableActionsDict
 {
-    NSSet *filteredSet = [allowableActionsDict keysOfEntriesPassingTest:^BOOL(id key, id obj, BOOL *aMethod) 
+    NSSet *filteredSet = [allowableActionsDict keysOfEntriesPassingTest:^BOOL(id key, id obj, BOOL *aMethod)
                           {
-                              return [obj isEqualToString:@"true"];
+                              if([obj isKindOfClass:NSString.class]) {
+                                  return [obj isEqualToString:@"true"];
+                              } else {
+                                  return [obj boolValue];
+                              }
                           }];
     [self setAllowableActionsSet:filteredSet];
 }

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISConstants.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISConstants.h?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISConstants.h (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISConstants.h Fri Apr 25 17:10:49 2014
@@ -118,6 +118,8 @@ extern NSString * const kCMISParameterCh
 extern NSString * const kCMISParameterSourceFolderId;
 extern NSString * const kCMISParameterReturnVersion;
 extern NSString * const kCMISParameterTypeId;
+extern NSString * const kCMISParameterStatement;
+extern NSString * const kCMISParameterSearchAllVersions;
 
 // Parameter Values
 extern NSString * const kCMISParameterValueTrue;

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISConstants.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISConstants.m?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISConstants.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISConstants.m Fri Apr 25 17:10:49 2014
@@ -126,6 +126,8 @@ NSString * const kCMISParameterCheckinCo
 NSString * const kCMISParameterSourceFolderId = @"sourceFolderId";
 NSString * const kCMISParameterReturnVersion = @"returnVersion";
 NSString * const kCMISParameterTypeId = @"typeId";
+NSString * const kCMISParameterStatement = @"statement";
+NSString * const kCMISParameterSearchAllVersions = @"searchAllVersions";
 
 // Parameter Values
 NSString * const kCMISParameterValueTrue = @"true";

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISEnums.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISEnums.h?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISEnums.h (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISEnums.h Fri Apr 25 17:10:49 2014
@@ -57,7 +57,8 @@ typedef NS_ENUM(NSInteger, CMISPropertyT
     CMISPropertyTypeDecimal,
     CMISPropertyTypeHtml,
     CMISPropertyTypeString,
-    CMISPropertyTypeUri
+    CMISPropertyTypeUri,
+    CMISPropertyTypeUnknown
 };
 
 // Property cardinality options
@@ -222,5 +223,6 @@ typedef NS_ENUM(NSInteger, CMISReturnVer
 + (NSString *)stringForReturnVersion:(BOOL)major;
 + (CMISBaseType)enumForBaseId:(NSString *)baseId;
 + (CMISContentStreamAllowedType)enumForContentStreamAllowed:(NSString *)contentStreamAllowed;
++ (CMISPropertyType)enumForPropertyType:(NSString *)typeString;
 
 @end

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISEnums.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISEnums.m?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISEnums.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISEnums.m Fri Apr 25 17:10:49 2014
@@ -20,6 +20,7 @@
 #import "CMISEnums.h"
 #import "CMISLog.h"
 #import "CMISConstants.h"
+#import "CMISBrowserConstants.h"
 
 @implementation CMISEnums
 
@@ -103,4 +104,29 @@
     }
 }
 
++ (CMISPropertyType)enumForPropertyType:(NSString *)typeString
+{
+    CMISPropertyType propertyType;
+    if ([typeString isEqualToString:kCMISBrowserJSONPropertyTypeValueString]) {
+        propertyType = CMISPropertyTypeString;
+    } else if ([typeString isEqualToString:kCMISBrowserJSONPropertyTypeValueId]) {
+        propertyType = CMISPropertyTypeId;
+    } else if ([typeString isEqualToString:kCMISBrowserJSONPropertyTypeValueInteger]) {
+        propertyType = CMISPropertyTypeInteger;
+    } else if ([typeString isEqualToString:kCMISBrowserJSONPropertyTypeValueDecimal]) {
+        propertyType = CMISPropertyTypeDecimal;
+    } else if ([typeString isEqualToString:kCMISBrowserJSONPropertyTypeValueBoolean]) {
+        propertyType = CMISPropertyTypeBoolean;
+    } else if ([typeString isEqualToString:kCMISBrowserJSONPropertyTypeValueDateTime]) {
+        propertyType = CMISPropertyTypeDateTime;
+    } else if ([typeString isEqualToString:kCMISBrowserJSONPropertyTypeValueHtml]) {
+        propertyType = CMISPropertyTypeHtml;
+    } else if ([typeString isEqualToString:kCMISBrowserJSONPropertyTypeValueUri]) {
+        propertyType = CMISPropertyTypeUri;
+    } else {
+        propertyType = CMISPropertyTypeUnknown;
+    }
+    return propertyType;
+}
+
 @end
\ No newline at end of file

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISObjectData.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISObjectData.h?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISObjectData.h (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISObjectData.h Fri Apr 25 17:10:49 2014
@@ -38,5 +38,6 @@
 @property (nonatomic, strong) CMISAcl *acl;
 @property (nonatomic, strong) NSArray *renditions; // An array containing CMISRenditionData objects
 @property (nonatomic, strong) NSArray *relationships; // An array containing CMISObjectData objects; Relationships from and to this object.
+@property (nonatomic, assign) BOOL isExactAcl; //TODO set this value also from atom
 
 @end

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISPropertyData.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISPropertyData.h?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISPropertyData.h (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISPropertyData.h Fri Apr 25 17:10:49 2014
@@ -19,8 +19,9 @@
  
 #import <Foundation/Foundation.h>
 #import "CMISEnums.h"
+#import "CMISExtensionData.h"
 
-@interface CMISPropertyData : NSObject
+@interface CMISPropertyData : CMISExtensionData
 
 @property (nonatomic, strong) NSString *identifier;
 @property (nonatomic, strong) NSString *localName;

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Utils/CMISHttpRequest.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Utils/CMISHttpRequest.m?rev=1590084&r1=1590083&r2=1590084&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Utils/CMISHttpRequest.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Utils/CMISHttpRequest.m Fri Apr 25 17:10:49 2014
@@ -199,7 +199,7 @@ NSString * const kCMISExceptionVersionin
     }
     
     if ( (httpRequestMethod == HTTP_GET && response.statusCode != 200 && response.statusCode != 206)
-        || (httpRequestMethod == HTTP_POST && response.statusCode != 201)
+        || (httpRequestMethod == HTTP_POST && response.statusCode != 200 && response.statusCode != 201)
         || (httpRequestMethod == HTTP_DELETE && response.statusCode != 204)
         || (httpRequestMethod == HTTP_PUT && ((response.statusCode < 200 || response.statusCode > 299)))) {
         if (error) {