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) {