You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by ga...@apache.org on 2014/03/29 22:54:24 UTC

svn commit: r1583066 [1/2] - in /chemistry/objectivecmis/branches/browser-binding: ObjectiveCMIS.xcodeproj/ ObjectiveCMIS/Bindings/ ObjectiveCMIS/Bindings/AtomPub/ ObjectiveCMIS/Bindings/AtomPub/AtomPubParser/ ObjectiveCMIS/Bindings/Browser/ ObjectiveC...

Author: gavincornwell
Date: Sat Mar 29 21:54:23 2014
New Revision: 1583066

URL: http://svn.apache.org/r1583066
Log:
Skeleton implementation of the browser binding. A session can be created, from which the repository info and root folder can be retrieved. Individual objects and their children can be retrieved. The first four existing tests are also passing when run using the browser binding.

Added:
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/
    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/CMISBrowserBinding.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBinding.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.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserDiscoveryService.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserNavigationService.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserNavigationService.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserObjectService.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserObjectService.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserRepositoryService.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserRepositoryService.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.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserVersioningService.m
Modified:
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS.xcodeproj/project.pbxproj
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/AtomPubParser/CMISAtomPubConstants.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/AtomPubParser/CMISAtomPubConstants.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubBaseService.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubDiscoveryService.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubVersioningService.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISBindingFactory.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISBindingSession.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISBindingSession.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISTypeDefinition.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISEnums.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISErrors.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISErrors.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISSessionParameters.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Common/CMISSessionParameters.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMISTests/CMISBaseTest.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMISTests/ObjectiveCMISTests.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=1583066&r1=1583065&r2=1583066&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS.xcodeproj/project.pbxproj (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS.xcodeproj/project.pbxproj Sat Mar 29 21:54:23 2014
@@ -62,6 +62,24 @@
 		4EA61BE91564F75000C759E4 /* CMISErrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EA61BE71564F75000C759E4 /* CMISErrors.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		4EA61BEA1564F75000C759E4 /* CMISErrors.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EA61BE81564F75000C759E4 /* CMISErrors.m */; };
 		4EA61BEB1564F75000C759E4 /* CMISErrors.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EA61BE81564F75000C759E4 /* CMISErrors.m */; };
+		58B9C8D618DE3379001D5C1B /* CMISBrowserBaseService.h in Headers */ = {isa = PBXBuildFile; fileRef = 58B9C8CA18DE3379001D5C1B /* CMISBrowserBaseService.h */; };
+		58B9C8D718DE3379001D5C1B /* CMISBrowserBaseService.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B9C8CB18DE3379001D5C1B /* CMISBrowserBaseService.m */; };
+		58B9C8D818DE3379001D5C1B /* CMISBrowserBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = 58B9C8CC18DE3379001D5C1B /* CMISBrowserBinding.h */; };
+		58B9C8D918DE3379001D5C1B /* CMISBrowserBinding.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B9C8CD18DE3379001D5C1B /* CMISBrowserBinding.m */; };
+		58B9C8DA18DE3379001D5C1B /* CMISBrowserNavigationService.h in Headers */ = {isa = PBXBuildFile; fileRef = 58B9C8CE18DE3379001D5C1B /* CMISBrowserNavigationService.h */; };
+		58B9C8DB18DE3379001D5C1B /* CMISBrowserNavigationService.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B9C8CF18DE3379001D5C1B /* CMISBrowserNavigationService.m */; };
+		58B9C8DC18DE3379001D5C1B /* CMISBrowserObjectService.h in Headers */ = {isa = PBXBuildFile; fileRef = 58B9C8D018DE3379001D5C1B /* CMISBrowserObjectService.h */; };
+		58B9C8DD18DE3379001D5C1B /* CMISBrowserObjectService.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B9C8D118DE3379001D5C1B /* CMISBrowserObjectService.m */; };
+		58B9C8DE18DE3379001D5C1B /* CMISBrowserRepositoryService.h in Headers */ = {isa = PBXBuildFile; fileRef = 58B9C8D218DE3379001D5C1B /* CMISBrowserRepositoryService.h */; };
+		58B9C8DF18DE3379001D5C1B /* CMISBrowserRepositoryService.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B9C8D318DE3379001D5C1B /* CMISBrowserRepositoryService.m */; };
+		58B9C8E018DE3379001D5C1B /* CMISBrowserVersioningService.h in Headers */ = {isa = PBXBuildFile; fileRef = 58B9C8D418DE3379001D5C1B /* CMISBrowserVersioningService.h */; };
+		58B9C8E118DE3379001D5C1B /* CMISBrowserVersioningService.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B9C8D518DE3379001D5C1B /* CMISBrowserVersioningService.m */; };
+		58B9C8E418DE344B001D5C1B /* CMISBrowserDiscoveryService.h in Headers */ = {isa = PBXBuildFile; fileRef = 58B9C8E218DE344B001D5C1B /* CMISBrowserDiscoveryService.h */; };
+		58B9C8E518DE344B001D5C1B /* CMISBrowserDiscoveryService.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B9C8E318DE344B001D5C1B /* CMISBrowserDiscoveryService.m */; };
+		58B9C8FE18E58028001D5C1B /* CMISBrowserUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = 58B9C8FC18E58028001D5C1B /* CMISBrowserUtil.h */; };
+		58B9C8FF18E58028001D5C1B /* CMISBrowserUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B9C8FD18E58028001D5C1B /* CMISBrowserUtil.m */; };
+		58B9C90218E588D7001D5C1B /* CMISBrowserConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 58B9C90018E588D7001D5C1B /* CMISBrowserConstants.h */; };
+		58B9C90318E588D7001D5C1B /* CMISBrowserConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B9C90118E588D7001D5C1B /* CMISBrowserConstants.m */; };
 		750CB2BE159C56A5004576F7 /* AllowableActions.xml in Resources */ = {isa = PBXBuildFile; fileRef = 750CB2BB159C56A5004576F7 /* AllowableActions.xml */; };
 		750CB2BF159C56A5004576F7 /* FolderChildren-webscripts.xml in Resources */ = {isa = PBXBuildFile; fileRef = 750CB2BC159C56A5004576F7 /* FolderChildren-webscripts.xml */; };
 		750CB2C0159C56A5004576F7 /* FolderChildren-opencmis.xml in Resources */ = {isa = PBXBuildFile; fileRef = 750CB2BD159C56A5004576F7 /* FolderChildren-opencmis.xml */; };
@@ -265,6 +283,24 @@
 		4EA61BE01564F73900C759E4 /* CMISQueryResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISQueryResult.m; path = Bindings/CMISQueryResult.m; sourceTree = "<group>"; };
 		4EA61BE71564F75000C759E4 /* CMISErrors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISErrors.h; path = Common/CMISErrors.h; sourceTree = "<group>"; };
 		4EA61BE81564F75000C759E4 /* CMISErrors.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISErrors.m; path = Common/CMISErrors.m; sourceTree = "<group>"; };
+		58B9C8CA18DE3379001D5C1B /* CMISBrowserBaseService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISBrowserBaseService.h; path = Bindings/Browser/CMISBrowserBaseService.h; sourceTree = "<group>"; };
+		58B9C8CB18DE3379001D5C1B /* CMISBrowserBaseService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISBrowserBaseService.m; path = Bindings/Browser/CMISBrowserBaseService.m; sourceTree = "<group>"; };
+		58B9C8CC18DE3379001D5C1B /* CMISBrowserBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISBrowserBinding.h; path = Bindings/Browser/CMISBrowserBinding.h; sourceTree = "<group>"; };
+		58B9C8CD18DE3379001D5C1B /* CMISBrowserBinding.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISBrowserBinding.m; path = Bindings/Browser/CMISBrowserBinding.m; sourceTree = "<group>"; };
+		58B9C8CE18DE3379001D5C1B /* CMISBrowserNavigationService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISBrowserNavigationService.h; path = Bindings/Browser/CMISBrowserNavigationService.h; sourceTree = "<group>"; };
+		58B9C8CF18DE3379001D5C1B /* CMISBrowserNavigationService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISBrowserNavigationService.m; path = Bindings/Browser/CMISBrowserNavigationService.m; sourceTree = "<group>"; };
+		58B9C8D018DE3379001D5C1B /* CMISBrowserObjectService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISBrowserObjectService.h; path = Bindings/Browser/CMISBrowserObjectService.h; sourceTree = "<group>"; };
+		58B9C8D118DE3379001D5C1B /* CMISBrowserObjectService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISBrowserObjectService.m; path = Bindings/Browser/CMISBrowserObjectService.m; sourceTree = "<group>"; };
+		58B9C8D218DE3379001D5C1B /* CMISBrowserRepositoryService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISBrowserRepositoryService.h; path = Bindings/Browser/CMISBrowserRepositoryService.h; sourceTree = "<group>"; };
+		58B9C8D318DE3379001D5C1B /* CMISBrowserRepositoryService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISBrowserRepositoryService.m; path = Bindings/Browser/CMISBrowserRepositoryService.m; sourceTree = "<group>"; };
+		58B9C8D418DE3379001D5C1B /* CMISBrowserVersioningService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISBrowserVersioningService.h; path = Bindings/Browser/CMISBrowserVersioningService.h; sourceTree = "<group>"; };
+		58B9C8D518DE3379001D5C1B /* CMISBrowserVersioningService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISBrowserVersioningService.m; path = Bindings/Browser/CMISBrowserVersioningService.m; sourceTree = "<group>"; };
+		58B9C8E218DE344B001D5C1B /* CMISBrowserDiscoveryService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISBrowserDiscoveryService.h; path = Bindings/Browser/CMISBrowserDiscoveryService.h; sourceTree = "<group>"; };
+		58B9C8E318DE344B001D5C1B /* CMISBrowserDiscoveryService.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISBrowserDiscoveryService.m; path = Bindings/Browser/CMISBrowserDiscoveryService.m; sourceTree = "<group>"; };
+		58B9C8FC18E58028001D5C1B /* CMISBrowserUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISBrowserUtil.h; path = Bindings/Browser/CMISBrowserUtil.h; sourceTree = "<group>"; };
+		58B9C8FD18E58028001D5C1B /* CMISBrowserUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISBrowserUtil.m; path = Bindings/Browser/CMISBrowserUtil.m; sourceTree = "<group>"; };
+		58B9C90018E588D7001D5C1B /* CMISBrowserConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISBrowserConstants.h; path = Bindings/Browser/CMISBrowserConstants.h; sourceTree = "<group>"; };
+		58B9C90118E588D7001D5C1B /* CMISBrowserConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISBrowserConstants.m; path = Bindings/Browser/CMISBrowserConstants.m; sourceTree = "<group>"; };
 		750CB2BB159C56A5004576F7 /* AllowableActions.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = AllowableActions.xml; sourceTree = "<group>"; };
 		750CB2BC159C56A5004576F7 /* FolderChildren-webscripts.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "FolderChildren-webscripts.xml"; sourceTree = "<group>"; };
 		750CB2BD159C56A5004576F7 /* FolderChildren-opencmis.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "FolderChildren-opencmis.xml"; sourceTree = "<group>"; };
@@ -446,6 +482,31 @@
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
+		58B9C8C918DE335C001D5C1B /* Browser */ = {
+			isa = PBXGroup;
+			children = (
+				58B9C8CA18DE3379001D5C1B /* CMISBrowserBaseService.h */,
+				58B9C8CB18DE3379001D5C1B /* CMISBrowserBaseService.m */,
+				58B9C8CC18DE3379001D5C1B /* CMISBrowserBinding.h */,
+				58B9C8CD18DE3379001D5C1B /* CMISBrowserBinding.m */,
+				58B9C90018E588D7001D5C1B /* CMISBrowserConstants.h */,
+				58B9C90118E588D7001D5C1B /* CMISBrowserConstants.m */,
+				58B9C8E218DE344B001D5C1B /* CMISBrowserDiscoveryService.h */,
+				58B9C8E318DE344B001D5C1B /* CMISBrowserDiscoveryService.m */,
+				58B9C8CE18DE3379001D5C1B /* CMISBrowserNavigationService.h */,
+				58B9C8CF18DE3379001D5C1B /* CMISBrowserNavigationService.m */,
+				58B9C8D018DE3379001D5C1B /* CMISBrowserObjectService.h */,
+				58B9C8D118DE3379001D5C1B /* CMISBrowserObjectService.m */,
+				58B9C8D218DE3379001D5C1B /* CMISBrowserRepositoryService.h */,
+				58B9C8D318DE3379001D5C1B /* CMISBrowserRepositoryService.m */,
+				58B9C8D418DE3379001D5C1B /* CMISBrowserVersioningService.h */,
+				58B9C8D518DE3379001D5C1B /* CMISBrowserVersioningService.m */,
+				58B9C8FC18E58028001D5C1B /* CMISBrowserUtil.h */,
+				58B9C8FD18E58028001D5C1B /* CMISBrowserUtil.m */,
+			);
+			name = Browser;
+			sourceTree = "<group>";
+		};
 		750CB2BA159C56A5004576F7 /* Test Resources */ = {
 			isa = PBXGroup;
 			children = (
@@ -652,6 +713,7 @@
 				BD70F11A17F4649B00AE2B0C /* CMISDocumentTypeDefinition.m */,
 				8276E158155E392A00344A29 /* CMISVersioningService.h */,
 				8280730D1515405C00EF635C /* AtomPub */,
+				58B9C8C918DE335C001D5C1B /* Browser */,
 			);
 			name = Bindings;
 			sourceTree = "<group>";
@@ -781,7 +843,9 @@
 				8280731C1515405C00EF635C /* CMISAtomEntryParser.h in Headers */,
 				8280731E1515405C00EF635C /* CMISServiceDocumentParser.h in Headers */,
 				828073201515405C00EF635C /* CMISAtomPubBinding.h in Headers */,
+				58B9C8FE18E58028001D5C1B /* CMISBrowserUtil.h in Headers */,
 				828073221515405C00EF635C /* CMISAtomPubObjectService.h in Headers */,
+				58B9C8E418DE344B001D5C1B /* CMISBrowserDiscoveryService.h in Headers */,
 				828073241515405C00EF635C /* CMISAtomPubRepositoryService.h in Headers */,
 				828073261515405C00EF635C /* CMISBinding.h in Headers */,
 				8280732B1515407000EF635C /* CMISObjectConverter.h in Headers */,
@@ -793,10 +857,13 @@
 				82AD4AEF15416A150012DDB6 /* CMISAclService.h in Headers */,
 				82AD4AF015416A1A0012DDB6 /* CMISObjectService.h in Headers */,
 				258998DB18D73D5A0091BA96 /* CMISAce.h in Headers */,
+				58B9C8DA18DE3379001D5C1B /* CMISBrowserNavigationService.h in Headers */,
 				82AD4AF315416A7B0012DDB6 /* CMISMultiFilingService.h in Headers */,
+				58B9C90218E588D7001D5C1B /* CMISBrowserConstants.h in Headers */,
 				82AD4AF415416A7F0012DDB6 /* CMISDiscoveryService.h in Headers */,
 				82AD4AF615416AA90012DDB6 /* CMISPolicyService.h in Headers */,
 				82AD4AF815416AC10012DDB6 /* CMISRelationshipService.h in Headers */,
+				58B9C8D818DE3379001D5C1B /* CMISBrowserBinding.h in Headers */,
 				82C1C63F15358733009B7B45 /* CMISObjectByIdUriBuilder.h in Headers */,
 				82ABA0481554655A00935225 /* CMISBindingSession.h in Headers */,
 				82ABA04C1554819300935225 /* CMISAtomPubBaseService+Protected.h in Headers */,
@@ -822,10 +889,12 @@
 				4EA61BE11564F73900C759E4 /* CMISObjectList.h in Headers */,
 				4EA61BE41564F73900C759E4 /* CMISQueryResult.h in Headers */,
 				4EA61BE91564F75000C759E4 /* CMISErrors.h in Headers */,
+				58B9C8D618DE3379001D5C1B /* CMISBrowserBaseService.h in Headers */,
 				758B5A78156506840050D034 /* CMISRepositoryInfoParser.h in Headers */,
 				758B5A81156517F00050D034 /* CMISWorkspace.h in Headers */,
 				258998DD18D73D5A0091BA96 /* CMISAcl.h in Headers */,
 				82C1C63F15358733009B7BA3 /* CMISTypeByIdUriBuilder.h in Headers */,
+				58B9C8DC18DE3379001D5C1B /* CMISBrowserObjectService.h in Headers */,
 				82C1C63F15358733009B7BA7 /* CMISTypeDefinitionAtomEntryParser.h in Headers */,
 				82C1C63F15358733009B7BAB /* CMISPropertyDefinitionParser.h in Headers */,
 				752067F5156AC06300231A5D /* CMISExtensionData.h in Headers */,
@@ -845,6 +914,8 @@
 				BD5C96FE16281A54002DDC6E /* CMISHttpRequest.h in Headers */,
 				BD5C97091628293F002DDC6E /* CMISHttpUploadRequest.h in Headers */,
 				BD5C970E16282977002DDC6E /* CMISHttpDownloadRequest.h in Headers */,
+				58B9C8DE18DE3379001D5C1B /* CMISBrowserRepositoryService.h in Headers */,
+				58B9C8E018DE3379001D5C1B /* CMISBrowserVersioningService.h in Headers */,
 				BD5C9713162C11E3002DDC6E /* CMISHttpResponse.h in Headers */,
 				4E3E14B316AFFB190057CE22 /* CMISNetworkProvider.h in Headers */,
 				4E10ABFF16B916B500E2287E /* CMISDefaultNetworkProvider.h in Headers */,
@@ -997,6 +1068,8 @@
 				8280731D1515405C00EF635C /* CMISAtomEntryParser.m in Sources */,
 				8280731F1515405C00EF635C /* CMISServiceDocumentParser.m in Sources */,
 				258998E618D73E1A0091BA96 /* CMISPrincipalParser.m in Sources */,
+				58B9C8DB18DE3379001D5C1B /* CMISBrowserNavigationService.m in Sources */,
+				58B9C8D718DE3379001D5C1B /* CMISBrowserBaseService.m in Sources */,
 				828073211515405C00EF635C /* CMISAtomPubBinding.m in Sources */,
 				258998DE18D73D5A0091BA96 /* CMISAcl.m in Sources */,
 				828073231515405C00EF635C /* CMISAtomPubObjectService.m in Sources */,
@@ -1006,8 +1079,12 @@
 				82C1C63315344B56009B7B3D /* CMISAtomPubBaseService.m in Sources */,
 				82C1C63715348EC4009B7B3D /* CMISAtomPubNavigationService.m in Sources */,
 				82C1C63B1535790B009B7B3D /* CMISAtomFeedParser.m in Sources */,
+				58B9C8DF18DE3379001D5C1B /* CMISBrowserRepositoryService.m in Sources */,
 				82C1C63F15358733009B7B3D /* CMISAtomPubConstants.m in Sources */,
 				82AD4AEC1541642A0012DDB6 /* CMISBindingFactory.m in Sources */,
+				58B9C8E118DE3379001D5C1B /* CMISBrowserVersioningService.m in Sources */,
+				58B9C90318E588D7001D5C1B /* CMISBrowserConstants.m in Sources */,
+				58B9C8FF18E58028001D5C1B /* CMISBrowserUtil.m in Sources */,
 				82C1C63F15358733009B7B43 /* CMISObjectByIdUriBuilder.m in Sources */,
 				82ABA0491554655A00935225 /* CMISBindingSession.m in Sources */,
 				82C1C63F15358733009B7B5A /* CMISAtomEntryWriter.m in Sources */,
@@ -1022,6 +1099,7 @@
 				82C1C63F15358733009B7B72 /* CMISQueryAtomEntryWriter.m in Sources */,
 				82C1C63F15358733009B7B76 /* CMISAtomPubDiscoveryService.m in Sources */,
 				82C1C63F15358733009B7B7E /* CMISAtomCollection.m in Sources */,
+				58B9C8D918DE3379001D5C1B /* CMISBrowserBinding.m in Sources */,
 				82C1C63F15358733009B7B86 /* CMISObjectByPathUriBuilder.m in Sources */,
 				4EA61BD81564F70C00C759E4 /* CMISStringInOutParameter.m in Sources */,
 				258998E218D73D900091BA96 /* CMISPrincipal.m in Sources */,
@@ -1039,6 +1117,7 @@
 				75206803156AE29900231A5D /* CMISAtomPubExtensionElementParser.m in Sources */,
 				FE417D5815761A0C009056AA /* CMISOperationContext.m in Sources */,
 				FE417D5A15761A0C009056AA /* CMISPagedResult.m in Sources */,
+				58B9C8E518DE344B001D5C1B /* CMISBrowserDiscoveryService.m in Sources */,
 				FE417D5C15761A1C009056AA /* CMISEnums.m in Sources */,
 				FE417D6415761A34009056AA /* CMISLinkCache.m in Sources */,
 				FE417D6615761A34009056AA /* CMISPropertyDefinition.m in Sources */,
@@ -1047,6 +1126,7 @@
 				FE417D6815761A34009056C6 /* CMISRendition.m in Sources */,
 				755E7D071586E8C3002CACB0 /* CMISAtomPubExtensionDataParserBase.m in Sources */,
 				258998DC18D73D5A0091BA96 /* CMISAce.m in Sources */,
+				58B9C8DD18DE3379001D5C1B /* CMISBrowserObjectService.m in Sources */,
 				BD5C96FF16281A54002DDC6E /* CMISHttpRequest.m in Sources */,
 				BD5C970A1628293F002DDC6E /* CMISHttpUploadRequest.m in Sources */,
 				BD5C970F16282977002DDC6E /* CMISHttpDownloadRequest.m in Sources */,

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/AtomPubParser/CMISAtomPubConstants.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/AtomPubParser/CMISAtomPubConstants.h?rev=1583066&r1=1583065&r2=1583066&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/AtomPubParser/CMISAtomPubConstants.h (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/AtomPubParser/CMISAtomPubConstants.h Sat Mar 29 21:54:23 2014
@@ -19,6 +19,12 @@
 
 #import <Foundation/Foundation.h>
 
+// Session keys
+extern NSString * const kCMISAtomBindingSessionKeyQueryUri;
+extern NSString * const kCMISAtomBindingSessionKeyQueryCollection;
+extern NSString * const kCMISAtomBindingSessionKeyCheckedoutCollection;
+extern NSString * const kCMISAtomBindingSessionKeyLinkCache;
+
 // Feed
 extern NSString * const kCMISAtomFeedNumItems;
 

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/AtomPubParser/CMISAtomPubConstants.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/AtomPubParser/CMISAtomPubConstants.m?rev=1583066&r1=1583065&r2=1583066&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/AtomPubParser/CMISAtomPubConstants.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/AtomPubParser/CMISAtomPubConstants.m Sat Mar 29 21:54:23 2014
@@ -19,6 +19,12 @@
 
 #import "CMISAtomPubConstants.h"
 
+// Session keys
+NSString * const kCMISAtomBindingSessionKeyQueryUri = @"cmis_session_key_atom_query_uri";
+NSString * const kCMISAtomBindingSessionKeyQueryCollection = @"cmis_session_key_atom_query_collection";
+NSString * const kCMISAtomBindingSessionKeyCheckedoutCollection = @"cmis_session_key_atom_checkedout_collection";
+NSString * const kCMISAtomBindingSessionKeyLinkCache = @"cmis_session_key_atom_link_cache";
+
 // Feed
 NSString * const kCMISAtomFeedNumItems = @"numItems";
 
@@ -157,7 +163,7 @@ NSString * const kCMISCoreDisplayName = 
 NSString * const kCMISCoreQueryName = @"queryName";
 NSString * const kCMISCoreDescription = @"description";
 NSString * const kCMISCoreBaseId = @"baseId";
-NSString * const kCMISCoreCreatable = @"createable";
+NSString * const kCMISCoreCreatable = @"creatable";
 NSString * const kCMISCoreFileable = @"fileable";
 NSString * const kCMISCoreQueryable = @"queryable";
 NSString * const kCMISCoreFullTextIndexed = @"fulltextIndexed";

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubBaseService.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubBaseService.m?rev=1583066&r1=1583065&r2=1583066&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubBaseService.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubBaseService.m Sat Mar 29 21:54:23 2014
@@ -46,7 +46,7 @@
     self = [super init];
     if (self) {
         self.bindingSession = session;
-        self.atomPubUrl = [session objectForKey:kCMISBindingSessionKeyAtomPubUrl];
+        self.atomPubUrl = [session objectForKey:kCMISBindingSessionKeyUrl];
     }
     return self;
 }
@@ -90,8 +90,8 @@
                     repositoryFound = YES;
                     
                     // Cache collections
-                    [self.bindingSession setObject:[workspace collectionHrefForCollectionType:kCMISAtomCollectionQuery] forKey:kCMISBindingSessionKeyQueryCollection];
-                    [self.bindingSession setObject:[workspace collectionHrefForCollectionType:kCMISAtomCollectionCheckedout] forKey:kCMISBindingSessionKeyCheckedoutCollection];
+                    [self.bindingSession setObject:[workspace collectionHrefForCollectionType:kCMISAtomCollectionQuery] forKey:kCMISAtomBindingSessionKeyQueryCollection];
+                    [self.bindingSession setObject:[workspace collectionHrefForCollectionType:kCMISAtomCollectionCheckedout] forKey:kCMISAtomBindingSessionKeyCheckedoutCollection];
                     
                     
                     // Cache uri's and uri templates
@@ -104,7 +104,7 @@
                     CMISTypeByIdUriBuilder *typeByIdUriBuilder = [[CMISTypeByIdUriBuilder alloc] initWithTemplateUrl:workspace.typeByIdUriTemplate];
                     [self.bindingSession setObject:typeByIdUriBuilder forKey:kCMISBindingSessionKeyTypeByIdUriBuilder];
                     
-                    [self.bindingSession setObject:workspace.queryUriTemplate forKey:kCMISBindingSessionKeyQueryUri];
+                    [self.bindingSession setObject:workspace.queryUriTemplate forKey:kCMISAtomBindingSessionKeyQueryUri];
                     
                     break;
                 }
@@ -273,17 +273,17 @@
 
 - (CMISLinkCache *)linkCache
 {
-    CMISLinkCache *linkCache = [self.bindingSession objectForKey:kCMISBindingSessionKeyLinkCache];
+    CMISLinkCache *linkCache = [self.bindingSession objectForKey:kCMISAtomBindingSessionKeyLinkCache];
     if (linkCache == nil) {
         linkCache = [[CMISLinkCache alloc] initWithBindingSession:self.bindingSession];
-        [self.bindingSession setObject:linkCache forKey:kCMISBindingSessionKeyLinkCache];
+        [self.bindingSession setObject:linkCache forKey:kCMISAtomBindingSessionKeyLinkCache];
     }
     return linkCache;
 }
 
 - (void)clearCacheFromService
 {
-    CMISLinkCache *linkCache = [self.bindingSession objectForKey:kCMISBindingSessionKeyLinkCache];
+    CMISLinkCache *linkCache = [self.bindingSession objectForKey:kCMISAtomBindingSessionKeyLinkCache];
     if (linkCache != nil) {
         [linkCache removeAllLinks];
     }    

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubDiscoveryService.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubDiscoveryService.m?rev=1583066&r1=1583065&r2=1583066&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubDiscoveryService.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubDiscoveryService.m Sat Mar 29 21:54:23 2014
@@ -45,7 +45,7 @@ includeAllowableActions:(BOOL)includeAll
     }
     
     // Validate query uri
-    NSString *queryUrlString = [self.bindingSession objectForKey:kCMISBindingSessionKeyQueryCollection];
+    NSString *queryUrlString = [self.bindingSession objectForKey:kCMISAtomBindingSessionKeyQueryCollection];
     if (queryUrlString == nil) {
         CMISLogDebug(@"Unknown repository or query not supported!");
         completionBlock(nil, [CMISErrors createCMISErrorWithCode:kCMISErrorCodeObjectNotFound detailedDescription:nil]);

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubVersioningService.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubVersioningService.m?rev=1583066&r1=1583065&r2=1583066&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubVersioningService.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/CMISAtomPubVersioningService.m Sat Mar 29 21:54:23 2014
@@ -118,7 +118,7 @@
         return nil;
     }
     
-    NSString *checkedoutUrlString = [self.bindingSession objectForKey:kCMISBindingSessionKeyCheckedoutCollection];
+    NSString *checkedoutUrlString = [self.bindingSession objectForKey:kCMISAtomBindingSessionKeyCheckedoutCollection];
     if (checkedoutUrlString == nil) {
         CMISLogDebug(@"Checkedout not supported!");
         completionBlock(nil, [CMISErrors createCMISErrorWithCode:kCMISErrorCodeNotSupported detailedDescription:nil]);

Added: 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=1583066&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBaseService.h (added)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBaseService.h Sat Mar 29 21:54:23 2014
@@ -0,0 +1,30 @@
+/*
+ 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>
+#import "CMISBindingSession.h"
+
+@interface CMISBrowserBaseService : NSObject
+
+@property (nonatomic, strong, readonly) CMISBindingSession *bindingSession;
+@property (nonatomic, strong, readonly) NSURL *browserUrl;
+
+- (id)initWithBindingSession:(CMISBindingSession *)session;
+
+@end

Added: 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=1583066&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBaseService.m (added)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBaseService.m Sat Mar 29 21:54:23 2014
@@ -0,0 +1,39 @@
+/*
+ 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 "CMISBrowserBaseService.h"
+
+@interface CMISBrowserBaseService ()
+@property (nonatomic, strong, readwrite) CMISBindingSession *bindingSession;
+@property (nonatomic, strong, readwrite) NSURL *browserUrl;
+@end
+
+@implementation CMISBrowserBaseService
+
+- (id)initWithBindingSession:(CMISBindingSession *)session
+{
+    self = [super init];
+    if (self) {
+        self.bindingSession = session;
+        self.browserUrl = [session objectForKey:kCMISBindingSessionKeyUrl];
+    }
+    return self;
+}
+
+@end

Added: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBinding.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBinding.h?rev=1583066&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBinding.h (added)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBinding.h Sat Mar 29 21:54:23 2014
@@ -0,0 +1,28 @@
+/*
+ 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>
+#import "CMISBinding.h"
+#import "CMISSessionParameters.h"
+
+@interface CMISBrowserBinding : NSObject <CMISBinding>
+
+- (id)initWithSessionParameters:(CMISSessionParameters *)sessionParameters;
+
+@end

Added: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBinding.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBinding.m?rev=1583066&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBinding.m (added)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBinding.m Sat Mar 29 21:54:23 2014
@@ -0,0 +1,75 @@
+/*
+ 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 "CMISBrowserBinding.h"
+#import "CMISBindingSession.h"
+#import "CMISBrowserRepositoryService.h"
+#import "CMISBrowserObjectService.h"
+#import "CMISBrowserNavigationService.h"
+#import "CMISBrowserVersioningService.h"
+#import "CMISBrowserDiscoveryService.h"
+
+@interface CMISBrowserBinding ()
+
+@property (nonatomic, strong) CMISBindingSession *session;
+@property (nonatomic, strong, readwrite) id<CMISAclService> aclService;
+@property (nonatomic, strong, readwrite) id<CMISDiscoveryService> discoveryService;
+@property (nonatomic, strong, readwrite) id<CMISMultiFilingService> multiFilingService;
+@property (nonatomic, strong, readwrite) id<CMISObjectService> objectService;
+@property (nonatomic, strong, readwrite) id<CMISPolicyService> policyService;
+@property (nonatomic, strong, readwrite) id<CMISRelationshipService> relationshipService;
+@property (nonatomic, strong, readwrite) id<CMISRepositoryService> repositoryService;
+@property (nonatomic, strong, readwrite) id<CMISNavigationService> navigationService;
+@property (nonatomic, strong, readwrite) id<CMISVersioningService> versioningService;
+
+@end
+
+@implementation CMISBrowserBinding
+
+- (id)initWithSessionParameters:(CMISSessionParameters *)sessionParameters
+{
+    self = [super init];
+    if (self) {
+        self.session = [[CMISBindingSession alloc] initWithSessionParameters:sessionParameters];
+        
+        self.repositoryService = [[CMISBrowserRepositoryService alloc] initWithBindingSession:self.session];
+        self.objectService = [[CMISBrowserObjectService alloc] initWithBindingSession:self.session];
+        self.navigationService = [[CMISBrowserNavigationService alloc] initWithBindingSession:self.session];
+        self.versioningService = [[CMISBrowserVersioningService alloc] initWithBindingSession:self.session];
+        self.discoveryService = [[CMISBrowserDiscoveryService alloc] initWithBindingSession:self.session];
+    }
+    return self;
+}
+
+- (void)clearAllCaches
+{
+    // do nothing for now
+}
+
+- (void)clearCacheForRepositoryId:(NSString*)repositoryId
+{
+    // do nothing for now
+}
+
+- (void)close
+{
+    // do nothing for now
+}
+
+@end

Added: 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=1583066&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserConstants.h (added)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserConstants.h Sat Mar 29 21:54:23 2014
@@ -0,0 +1,88 @@
+/*
+ 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 CMISBrowserConstants : NSObject
+
+// Session keys
+extern NSString * const kCMISBrowserBindingSessionKeyRepositoryUrl;
+extern NSString * const kCMISBrowserBindingSessionKeyRootFolderUrl;
+
+// JSON properties
+extern NSString * const kCMISBrowserJSONRepositoryId;
+extern NSString * const kCMISBrowserJSONRepositoryName;
+extern NSString * const kCMISBrowserJSONRepositoryDescription;
+extern NSString * const kCMISBrowserJSONVendorName;
+extern NSString * const kCMISBrowserJSONProductName;
+extern NSString * const kCMISBrowserJSONProductVersion;
+extern NSString * const kCMISBrowserJSONRootFolderId;
+extern NSString * const kCMISBrowserJSONCapabilities;
+extern NSString * const kCMISBrowserJSONCMISVersionSupported;
+extern NSString * const kCMISBrowserJSONPrincipalIdAnonymous;
+extern NSString * const kCMISBrowserJSONPrincipalIdAnyone;
+extern NSString * const kCMISBrowserJSONRepositoryUrl;
+extern NSString * const kCMISBrowserJSONRootFolderUrl;
+extern NSString * const kCMISBrowserJSONId;
+extern NSString * const kCMISBrowserJSONLocalName;
+extern NSString * const kCMISBrowserJSONLocalNamespace;
+extern NSString * const kCMISBrowserJSONDisplayName;
+extern NSString * const kCMISBrowserJSONQueryName;
+extern NSString * const kCMISBrowserJSONDescription;
+extern NSString * const kCMISBrowserJSONBaseId;
+extern NSString * const kCMISBrowserJSONCreateable;
+extern NSString * const kCMISBrowserJSONFileable;
+extern NSString * const kCMISBrowserJSONQueryable;
+extern NSString * const kCMISBrowserJSONFullTextIndexed;
+extern NSString * const kCMISBrowserJSONIncludedInSuperTypeQuery;
+extern NSString * const kCMISBrowserJSONControllablePolicy;
+extern NSString * const kCMISBrowserJSONControllableAcl;
+extern NSString * const kCMISBrowserJSONPropertyDefinitions;
+extern NSString * const kCMISBrowserJSONPropertyType;
+extern NSString * const kCMISBrowserJSONCardinality;
+extern NSString * const kCMISBrowserJSONUpdateability;
+extern NSString * const kCMISBrowserJSONInherited;
+extern NSString * const kCMISBrowserJSONRequired;
+extern NSString * const kCMISBrowserJSONOrderable;
+extern NSString * const kCMISBrowserJSONSuccinctProperties;
+extern NSString * const kCMISBrowserJSONObjects;
+extern NSString * const kCMISBrowserJSONObject;
+extern NSString * const kCMISBrowserJSONHasMoreItems;
+extern NSString * const kCMISBrowserJSONNumberItems;
+
+// JSON enum values
+extern NSString * const kCMISBrowserJSONPropertyTypeValueString;
+extern NSString * const kCMISBrowserJSONPropertyTypeValueId;
+extern NSString * const kCMISBrowserJSONPropertyTypeValueInteger;
+extern NSString * const kCMISBrowserJSONPropertyTypeValueDecimal;
+extern NSString * const kCMISBrowserJSONPropertyTypeValueBoolean;
+extern NSString * const kCMISBrowserJSONPropertyTypeValueDateTime;
+extern NSString * const kCMISBrowserJSONPropertyTypeValueHtml;
+extern NSString * const kCMISBrowserJSONPropertyTypeValueUri;
+extern NSString * const kCMISBrowserJSONCardinalityValueSingle;
+extern NSString * const kCMISBrowserJSONCardinalityValueMultiple;
+extern NSString * const kCMISBrowserJSONUpdateabilityValueReadOnly;
+extern NSString * const kCMISBrowserJSONUpdateabilityValueReadWrite;
+extern NSString * const kCMISBrowserJSONUpdateabilityValueOnCreate;
+extern NSString * const kCMISBrowserJSONUpdateabilityValueWhenCheckedOut;
+
+
+
+
+@end

Added: 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=1583066&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserConstants.m (added)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserConstants.m Sat Mar 29 21:54:23 2014
@@ -0,0 +1,87 @@
+/*
+ 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 "CMISBrowserConstants.h"
+
+@implementation CMISBrowserConstants
+
+// Session keys
+NSString * const kCMISBrowserBindingSessionKeyRepositoryUrl = @"cmis_session_key_browser_repo_url";
+NSString * const kCMISBrowserBindingSessionKeyRootFolderUrl = @"cmis_session_key_browser_root_folder_url";
+
+// JSON properties
+NSString * const kCMISBrowserJSONRepositoryId = @"repositoryId";
+NSString * const kCMISBrowserJSONRepositoryName = @"repositoryName";
+NSString * const kCMISBrowserJSONRepositoryDescription = @"repositoryDescription";
+NSString * const kCMISBrowserJSONVendorName = @"vendorName";
+NSString * const kCMISBrowserJSONProductName = @"productName";
+NSString * const kCMISBrowserJSONProductVersion = @"productVersion";
+NSString * const kCMISBrowserJSONRootFolderId = @"rootFolderId";
+NSString * const kCMISBrowserJSONCapabilities = @"capabilities";
+NSString * const kCMISBrowserJSONCMISVersionSupported = @"cmisVersionSupported";
+NSString * const kCMISBrowserJSONPrincipalIdAnonymous = @"principalIdAnonymous";
+NSString * const kCMISBrowserJSONPrincipalIdAnyone = @"principalIdAnyone";
+NSString * const kCMISBrowserJSONRepositoryUrl = @"repositoryUrl";
+NSString * const kCMISBrowserJSONRootFolderUrl = @"rootFolderUrl";
+NSString * const kCMISBrowserJSONId = @"id";
+NSString * const kCMISBrowserJSONLocalName = @"localName";
+NSString * const kCMISBrowserJSONLocalNamespace = @"localNamespace";
+NSString * const kCMISBrowserJSONDisplayName = @"displayName";
+NSString * const kCMISBrowserJSONQueryName = @"queryName";
+NSString * const kCMISBrowserJSONDescription = @"description";
+NSString * const kCMISBrowserJSONBaseId = @"baseId";
+NSString * const kCMISBrowserJSONCreateable = @"creatable";
+NSString * const kCMISBrowserJSONFileable = @"fileable";
+NSString * const kCMISBrowserJSONQueryable = @"queryable";
+NSString * const kCMISBrowserJSONFullTextIndexed = @"fulltextIndexed";
+NSString * const kCMISBrowserJSONIncludedInSuperTypeQuery = @"includedInSupertypeQuery";
+NSString * const kCMISBrowserJSONControllablePolicy = @"controllablePolicy";
+NSString * const kCMISBrowserJSONControllableAcl = @"controllableACL";
+NSString * const kCMISBrowserJSONPropertyDefinitions = @"propertyDefinitions";
+NSString * const kCMISBrowserJSONPropertyType = @"propertyType";
+NSString * const kCMISBrowserJSONCardinality = @"cardinality";
+NSString * const kCMISBrowserJSONUpdateability = @"updatability";
+NSString * const kCMISBrowserJSONInherited = @"inherited";
+NSString * const kCMISBrowserJSONRequired = @"required";
+NSString * const kCMISBrowserJSONOrderable = @"orderable";
+NSString * const kCMISBrowserJSONSuccinctProperties = @"succinctProperties";
+NSString * const kCMISBrowserJSONObjects = @"objects";
+NSString * const kCMISBrowserJSONObject = @"object";
+NSString * const kCMISBrowserJSONHasMoreItems = @"hasMoreItems";
+NSString * const kCMISBrowserJSONNumberItems = @"numItems";
+
+// JSON enum values
+NSString * const kCMISBrowserJSONPropertyTypeValueString = @"string";
+NSString * const kCMISBrowserJSONPropertyTypeValueId = @"id";
+NSString * const kCMISBrowserJSONPropertyTypeValueInteger = @"integer";
+NSString * const kCMISBrowserJSONPropertyTypeValueDecimal = @"decimal";
+NSString * const kCMISBrowserJSONPropertyTypeValueBoolean = @"boolean";
+NSString * const kCMISBrowserJSONPropertyTypeValueDateTime = @"datetime";
+NSString * const kCMISBrowserJSONPropertyTypeValueHtml = @"html";
+NSString * const kCMISBrowserJSONPropertyTypeValueUri = @"uri";
+
+NSString * const kCMISBrowserJSONCardinalityValueSingle = @"single";
+NSString * const kCMISBrowserJSONCardinalityValueMultiple = @"multi";
+
+NSString * const kCMISBrowserJSONUpdateabilityValueReadOnly = @"readonly";
+NSString * const kCMISBrowserJSONUpdateabilityValueReadWrite = @"readwrite";
+NSString * const kCMISBrowserJSONUpdateabilityValueOnCreate = @"oncreate";
+NSString * const kCMISBrowserJSONUpdateabilityValueWhenCheckedOut = @"whencheckedout";
+
+@end

Added: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserDiscoveryService.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserDiscoveryService.h?rev=1583066&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserDiscoveryService.h (added)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserDiscoveryService.h Sat Mar 29 21:54:23 2014
@@ -0,0 +1,24 @@
+/*
+ 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 "CMISBrowserBaseService.h"
+
+@interface CMISBrowserDiscoveryService : CMISBrowserBaseService <CMISDiscoveryService>
+
+@end

Added: 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=1583066&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserDiscoveryService.m (added)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserDiscoveryService.m Sat Mar 29 21:54:23 2014
@@ -0,0 +1,37 @@
+/*
+ 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 "CMISBrowserDiscoveryService.h"
+
+@implementation CMISBrowserDiscoveryService
+
+- (CMISRequest*)query:(NSString *)statement searchAllVersions:(BOOL)searchAllVersions
+        relationships:(CMISIncludeRelationship)relationships
+      renditionFilter:(NSString *)renditionFilter
+includeAllowableActions:(BOOL)includeAllowableActions
+             maxItems:(NSNumber *)maxItems
+            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;
+}
+
+@end

Added: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserNavigationService.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserNavigationService.h?rev=1583066&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserNavigationService.h (added)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserNavigationService.h Sat Mar 29 21:54:23 2014
@@ -0,0 +1,24 @@
+/*
+ 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 "CMISBrowserBaseService.h"
+
+@interface CMISBrowserNavigationService : CMISBrowserBaseService <CMISNavigationService>
+
+@end

Added: 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=1583066&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserNavigationService.m (added)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserNavigationService.m Sat Mar 29 21:54:23 2014
@@ -0,0 +1,85 @@
+/*
+ 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 "CMISBrowserNavigationService.h"
+#import "CMISRequest.h"
+#import "CMISHttpResponse.h"
+#import "CMISConstants.h"
+#import "CMISBrowserUtil.h"
+#import "CMISBrowserConstants.h"
+
+@implementation CMISBrowserNavigationService
+
+- (CMISRequest*)retrieveChildren:(NSString *)objectId
+                         orderBy:(NSString *)orderBy
+                          filter:(NSString *)filter
+                   relationships:(CMISIncludeRelationship)relationships
+                 renditionFilter:(NSString *)renditionFilter
+         includeAllowableActions:(BOOL)includeAllowableActions
+              includePathSegment:(BOOL)includePathSegment
+                       skipCount:(NSNumber *)skipCount
+                        maxItems:(NSNumber *)maxItems
+                 completionBlock:(void (^)(CMISObjectList *objectList, NSError *error))completionBlock
+{
+    // TODO: Use a CMISChildrenByIdUriBuilder class??
+    NSString *rootUrl = [self.bindingSession objectForKey:kCMISBrowserBindingSessionKeyRootFolderUrl];
+    NSString *urlString = [NSString stringWithFormat:@"%@?objectId=%@&succinct=true&cmisselector=children", rootUrl, objectId];
+    NSURL *childrenUrl = [NSURL URLWithString:urlString];
+    
+    CMISRequest *cmisRequest = [[CMISRequest alloc] init];
+    
+    [self.bindingSession.networkProvider invokeGET:childrenUrl
+                                           session:self.bindingSession
+                                       cmisRequest:cmisRequest
+                                   completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
+                                       if (httpResponse) {
+                                           NSData *data = httpResponse.data;
+                                           if (data) {
+                                               NSError *parsingError = nil;
+                                               CMISObjectList *objectList = [CMISBrowserUtil objectListFromJSONData:data error:&parsingError];
+                                               if (parsingError)
+                                               {
+                                                   completionBlock(nil, parsingError);
+                                               } else {
+                                                   completionBlock(objectList, nil);
+                                               }
+                                           }
+                                       } else {
+                                           completionBlock(nil, error);
+                                       }
+                                   }];
+    
+    return cmisRequest;
+}
+
+
+- (CMISRequest*)retrieveParentsForObject:(NSString *)objectId
+                                  filter:(NSString *)filter
+                           relationships:(CMISIncludeRelationship)relationships
+                         renditionFilter:(NSString *)renditionFilter
+                 includeAllowableActions:(BOOL)includeAllowableActions
+              includeRelativePathSegment:(BOOL)includeRelativePathSegment
+                         completionBlock:(void (^)(NSArray *parents, 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;
+}
+
+@end

Added: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserObjectService.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserObjectService.h?rev=1583066&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserObjectService.h (added)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserObjectService.h Sat Mar 29 21:54:23 2014
@@ -0,0 +1,24 @@
+/*
+ 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 "CMISBrowserBaseService.h"
+
+@interface CMISBrowserObjectService : CMISBrowserBaseService <CMISObjectService>
+
+@end

Added: 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=1583066&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserObjectService.m (added)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserObjectService.m Sat Mar 29 21:54:23 2014
@@ -0,0 +1,243 @@
+/*
+ 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 "CMISBrowserObjectService.h"
+#import "CMISRequest.h"
+#import "CMISHttpResponse.h"
+#import "CMISConstants.h"
+#import "CMISBrowserUtil.h"
+#import "CMISBrowserConstants.h"
+
+@implementation CMISBrowserObjectService
+
+- (CMISRequest*)retrieveObject:(NSString *)objectId
+                        filter:(NSString *)filter
+                 relationships:(CMISIncludeRelationship)relationships
+              includePolicyIds:(BOOL)includePolicyIds
+               renditionFilder:(NSString *)renditionFilter
+                    includeACL:(BOOL)includeACL
+       includeAllowableActions:(BOOL)includeAllowableActions
+               completionBlock:(void (^)(CMISObjectData *objectData, NSError *error))completionBlock
+{
+    // TODO: Use the CMISObjectByIdUriBuilder class (after it's moved out of AtomPub folder)
+    NSString *rootUrl = [self.bindingSession objectForKey:kCMISBrowserBindingSessionKeyRootFolderUrl];
+    NSString *urlString = [NSString stringWithFormat:@"%@?objectId=%@&succinct=true&cmisselector=object", rootUrl, objectId];
+    NSURL *objectUrl = [NSURL URLWithString:urlString];
+    
+    CMISRequest *cmisRequest = [[CMISRequest alloc] init];
+    
+    [self.bindingSession.networkProvider invokeGET:objectUrl
+                                           session:self.bindingSession
+                                       cmisRequest:cmisRequest
+                                   completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
+                                       if (httpResponse) {
+                                           NSData *data = httpResponse.data;
+                                           if (data) {
+                                               NSError *parsingError = nil;
+                                               CMISObjectData *objectData = [CMISBrowserUtil objectDataFromJSONData:data error:&parsingError];
+                                               if (parsingError)
+                                               {
+                                                   completionBlock(nil, parsingError);
+                                               } else {
+                                                   completionBlock(objectData, nil);
+                                               }
+                                           }
+                                       } else {
+                                           completionBlock(nil, error);
+                                       }
+                                   }];
+    
+    return cmisRequest;
+}
+
+- (CMISRequest*)retrieveObjectByPath:(NSString *)path
+                              filter:(NSString *)filter
+                       relationships:(CMISIncludeRelationship)relationships
+                    includePolicyIds:(BOOL)includePolicyIds
+                     renditionFilder:(NSString *)renditionFilter
+                          includeACL:(BOOL)includeACL
+             includeAllowableActions:(BOOL)includeAllowableActions
+                     completionBlock:(void (^)(CMISObjectData *objectData, 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;
+}
+
+- (CMISRequest*)downloadContentOfObject:(NSString *)objectId
+                               streamId:(NSString *)streamId
+                                 toFile:(NSString *)filePath
+                        completionBlock:(void (^)(NSError *error))completionBlock
+                          progressBlock:(void (^)(unsigned long long bytesDownloaded, unsigned long long bytesTotal))progressBlock
+{
+    NSString * message = [NSString stringWithFormat:@"%s is not implemented yet", __PRETTY_FUNCTION__];
+    NSException *exception = [NSException exceptionWithName:NSInvalidArgumentException reason:message userInfo:nil];
+    @throw exception;
+}
+
+- (CMISRequest*)downloadContentOfObject:(NSString *)objectId
+                               streamId:(NSString *)streamId
+                                 toFile:(NSString *)filePath
+                                 offset:(NSDecimalNumber*)offset
+                                 length:(NSDecimalNumber*)length
+                        completionBlock:(void (^)(NSError *error))completionBlock
+                          progressBlock:(void (^)(unsigned long long bytesDownloaded, unsigned long long bytesTotal))progressBlock
+{
+    NSString * message = [NSString stringWithFormat:@"%s is not implemented yet", __PRETTY_FUNCTION__];
+    NSException *exception = [NSException exceptionWithName:NSInvalidArgumentException reason:message userInfo:nil];
+    @throw exception;
+}
+
+- (CMISRequest*)downloadContentOfObject:(NSString *)objectId
+                               streamId:(NSString *)streamId
+                         toOutputStream:(NSOutputStream *)outputStream
+                        completionBlock:(void (^)(NSError *error))completionBlock
+                          progressBlock:(void (^)(unsigned long long bytesDownloaded, unsigned long long bytesTotal))progressBlock
+{
+    NSString * message = [NSString stringWithFormat:@"%s is not implemented yet", __PRETTY_FUNCTION__];
+    NSException *exception = [NSException exceptionWithName:NSInvalidArgumentException reason:message userInfo:nil];
+    @throw exception;
+}
+
+- (CMISRequest*)downloadContentOfObject:(NSString *)objectId
+                               streamId:(NSString *)streamId
+                         toOutputStream:(NSOutputStream *)outputStream
+                                 offset:(NSDecimalNumber*)offset
+                                 length:(NSDecimalNumber*)length
+                        completionBlock:(void (^)(NSError *error))completionBlock
+                          progressBlock:(void (^)(unsigned long long bytesDownloaded, unsigned long long bytesTotal))progressBlock
+{
+    NSString * message = [NSString stringWithFormat:@"%s is not implemented yet", __PRETTY_FUNCTION__];
+    NSException *exception = [NSException exceptionWithName:NSInvalidArgumentException reason:message userInfo:nil];
+    @throw exception;
+}
+
+- (CMISRequest*)deleteContentOfObject:(CMISStringInOutParameter *)objectIdParam
+                          changeToken:(CMISStringInOutParameter *)changeTokenParam
+                      completionBlock:(void (^)(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;
+}
+
+- (CMISRequest*)changeContentOfObject:(CMISStringInOutParameter *)objectIdParam
+                      toContentOfFile:(NSString *)filePath
+                             mimeType:(NSString *)mimeType
+                    overwriteExisting:(BOOL)overwrite
+                          changeToken:(CMISStringInOutParameter *)changeTokenParam
+                      completionBlock:(void (^)(NSError *error))completionBlock
+                        progressBlock:(void (^)(unsigned long long bytesUploaded, unsigned long long bytesTotal))progressBlock
+{
+    NSString * message = [NSString stringWithFormat:@"%s is not implemented yet", __PRETTY_FUNCTION__];
+    NSException *exception = [NSException exceptionWithName:NSInvalidArgumentException reason:message userInfo:nil];
+    @throw exception;
+}
+
+- (CMISRequest*)changeContentOfObject:(CMISStringInOutParameter *)objectId
+               toContentOfInputStream:(NSInputStream *)inputStream
+                        bytesExpected:(unsigned long long)bytesExpected
+                             filename:(NSString *)filename
+                             mimeType:(NSString *)mimeType
+                    overwriteExisting:(BOOL)overwrite
+                          changeToken:(CMISStringInOutParameter *)changeToken
+                      completionBlock:(void (^)(NSError *error))completionBlock
+                        progressBlock:(void (^)(unsigned long long bytesUploaded, unsigned long long bytesTotal))progressBlock
+{
+    NSString * message = [NSString stringWithFormat:@"%s is not implemented yet", __PRETTY_FUNCTION__];
+    NSException *exception = [NSException exceptionWithName:NSInvalidArgumentException reason:message userInfo:nil];
+    @throw exception;
+}
+
+- (CMISRequest*)createDocumentFromFilePath:(NSString *)filePath
+                                  mimeType:(NSString *)mimeType
+                                properties:(CMISProperties *)properties
+                                  inFolder:(NSString *)folderObjectId
+                           completionBlock:(void (^)(NSString *objectId, NSError *error))completionBlock
+                             progressBlock:(void (^)(unsigned long long bytesUploaded, unsigned long long bytesTotal))progressBlock
+{
+    NSString * message = [NSString stringWithFormat:@"%s is not implemented yet", __PRETTY_FUNCTION__];
+    NSException *exception = [NSException exceptionWithName:NSInvalidArgumentException reason:message userInfo:nil];
+    @throw exception;
+}
+
+- (CMISRequest*)createDocumentFromInputStream:(NSInputStream *)inputStream
+                                     mimeType:(NSString *)mimeType
+                                   properties:(CMISProperties *)properties
+                                     inFolder:(NSString *)folderObjectId
+                                bytesExpected:(unsigned long long)bytesExpected // optional
+                              completionBlock:(void (^)(NSString *objectId, NSError *error))completionBlock
+                                progressBlock:(void (^)(unsigned long long bytesUploaded, unsigned long long bytesTotal))progressBlock
+{
+    NSString * message = [NSString stringWithFormat:@"%s is not implemented yet", __PRETTY_FUNCTION__];
+    NSException *exception = [NSException exceptionWithName:NSInvalidArgumentException reason:message userInfo:nil];
+    @throw exception;
+}
+
+- (CMISRequest*)deleteObject:(NSString *)objectId
+                 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;
+}
+
+- (CMISRequest*)createFolderInParentFolder:(NSString *)folderObjectId
+                                properties:(CMISProperties *)properties
+                           completionBlock:(void (^)(NSString *objectId, 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;
+}
+
+- (CMISRequest*)deleteTree:(NSString *)folderObjectId
+                allVersion:(BOOL)allVersions
+             unfileObjects:(CMISUnfileObject)unfileObjects
+         continueOnFailure:(BOOL)continueOnFailure
+           completionBlock:(void (^)(NSArray *failedObjects, 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;
+}
+
+- (CMISRequest*)updatePropertiesForObject:(CMISStringInOutParameter *)objectIdParam
+                               properties:(CMISProperties *)properties
+                              changeToken:(CMISStringInOutParameter *)changeTokenParam
+                          completionBlock:(void (^)(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;
+}
+
+- (CMISRequest*)retrieveRenditions:(NSString *)objectId
+                   renditionFilter:(NSString *)renditionFilter
+                          maxItems:(NSNumber *)maxItems
+                         skipCount:(NSNumber *)skipCount
+                   completionBlock:(void (^)(NSArray *renditions, 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;
+}
+
+@end

Added: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserRepositoryService.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserRepositoryService.h?rev=1583066&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserRepositoryService.h (added)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserRepositoryService.h Sat Mar 29 21:54:23 2014
@@ -0,0 +1,24 @@
+/*
+ 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 "CMISBrowserBaseService.h"
+
+@interface CMISBrowserRepositoryService : CMISBrowserBaseService <CMISRepositoryService>
+
+@end

Added: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserRepositoryService.m
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserRepositoryService.m?rev=1583066&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserRepositoryService.m (added)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserRepositoryService.m Sat Mar 29 21:54:23 2014
@@ -0,0 +1,125 @@
+/*
+ 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 "CMISBrowserRepositoryService.h"
+#import "CMISConstants.h"
+#import "CMISErrors.h"
+#import "CMISRequest.h"
+#import "CMISLog.h"
+#import "CMISHttpResponse.h"
+#import "CMISTypeDefinition.h"
+#import "CMISPropertyDefinition.h"
+#import "CMISBrowserUtil.h"
+#import "CMISBrowserConstants.h"
+
+@interface CMISBrowserRepositoryService ()
+@property (nonatomic, strong) NSDictionary *repositories;
+@end
+
+@implementation CMISBrowserRepositoryService
+
+- (CMISRequest*)retrieveRepositoriesWithCompletionBlock:(void (^)(NSArray *repositories, NSError *error))completionBlock
+{
+    return [self internalRetrieveRepositoriesWithCompletionBlock:^(NSError *error) {
+        if (error) {
+            completionBlock(nil, [CMISErrors cmisError:error cmisErrorCode:kCMISErrorCodeObjectNotFound]);
+        } else {
+            completionBlock([self.repositories allValues], nil);
+        }
+    }];
+}
+
+- (CMISRequest*)retrieveRepositoryInfoForId:(NSString *)repositoryId
+                            completionBlock:(void (^)(CMISRepositoryInfo *repositoryInfo, NSError *error))completionBlock
+{
+    return [self internalRetrieveRepositoriesWithCompletionBlock:^(NSError *error) {
+        if (error) {
+            completionBlock(nil, [CMISErrors cmisError:error cmisErrorCode:kCMISErrorCodeInvalidArgument]);
+        } else {
+            completionBlock([self.repositories objectForKey:repositoryId], nil);
+        }
+    }];
+}
+
+- (CMISRequest*)internalRetrieveRepositoriesWithCompletionBlock:(void (^)(NSError *error))completionBlock
+{
+    // TODO: cache the repo info objects
+
+    CMISRequest *cmisRequest = [[CMISRequest alloc] init];
+    [self.bindingSession.networkProvider invokeGET:self.browserUrl
+                                           session:self.bindingSession
+                                       cmisRequest:cmisRequest
+                                   completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
+                                       if (httpResponse) {
+                                           NSData *data = httpResponse.data;
+                                           if (data) {
+                                               NSError *parsingError = nil;
+                                               self.repositories = [CMISBrowserUtil repositoryInfoDictionaryFromJSONData:data
+                                                                                                          bindingSession:self.bindingSession
+                                                                                                                   error:&parsingError];
+                                               if (parsingError) {
+                                                   completionBlock(parsingError);
+                                               } else {
+                                                   completionBlock(nil);
+                                               }
+                                           }
+                                       } else {
+                                           completionBlock(error);
+                                       }
+                                   }];
+    
+    return cmisRequest;
+}
+
+- (CMISRequest*)retrieveTypeDefinition:(NSString *)typeId
+                       completionBlock:(void (^)(CMISTypeDefinition *typeDefinition, NSError *error))completionBlock
+{
+    // TODO: Use the CMISTypeByIdUriBuilder class (after it's moved out of AtomPub folder)
+    NSString *repoUrl = [self.bindingSession objectForKey:kCMISBrowserBindingSessionKeyRepositoryUrl];
+    NSString *urlString = [NSString stringWithFormat:@"%@?cmisselector=typeDefinition&typeId=%@", repoUrl, typeId];
+    
+    NSURL *typeUrl = [NSURL URLWithString:urlString];
+    
+    CMISRequest *cmisRequest = [CMISRequest new];
+    
+    [self.bindingSession.networkProvider invokeGET:typeUrl
+                                           session:self.bindingSession
+                                       cmisRequest:cmisRequest
+                                   completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
+                                       if (httpResponse) {
+                                           NSData *data = httpResponse.data;
+                                           if (data) {
+                                               NSError *parsingError = nil;
+                                               CMISTypeDefinition *typeDef = [CMISBrowserUtil typeDefinitionFromJSONData:data error:&parsingError];
+                                               if (parsingError) {
+                                                   completionBlock(nil, parsingError);
+                                               }
+                                               else {
+                                                   completionBlock(typeDef, nil);
+                                               }
+                                           }
+                                       } else {
+                                           completionBlock(nil, error);
+                                       }
+                                   }];
+    
+    return cmisRequest;
+}
+
+@end

Added: 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=1583066&view=auto
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserUtil.h (added)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserUtil.h Sat Mar 29 21:54:23 2014
@@ -0,0 +1,48 @@
+/*
+ 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>
+#import "CMISTypeDefinition.h"
+#import "CMISObjectData.h"
+#import "CMISObjectList.h"
+#import "CMISBindingSession.h"
+
+@interface CMISBrowserUtil : NSObject
+
+/**
+ Returns a dictionary of CMISRepositoryInfo objects keyed by the repository identifer, parsed from the given JSON data.
+ */
++ (NSDictionary *)repositoryInfoDictionaryFromJSONData:(NSData *)jsonData bindingSession:(CMISBindingSession *)bindingSession error:(NSError **)outError;
+
+/**
+ Returns a CMISTypeDefinition object parsed from the given JSON data.
+ */
++ (CMISTypeDefinition *)typeDefinitionFromJSONData:(NSData *)jsonData error:(NSError **)outError;
+
+/**
+ Returns a CMISObjectData object parsed from the given JSON data.
+ */
++ (CMISObjectData *)objectDataFromJSONData:(NSData *)jsonData error:(NSError **)outError;
+
+/**
+ Returns a CMISObjectList object parsed from the given JSON data.
+ */
++ (CMISObjectList *)objectListFromJSONData:(NSData *)jsonData error:(NSError **)outError;
+
+@end