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/17 13:11:02 UTC

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

Author: lgross
Date: Thu Apr 17 11:11:01 2014
New Revision: 1588209

URL: http://svn.apache.org/r1588209
Log:
CMIS-786: Implement read support for browser binding

Added:
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISFolderTypeDefinition.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISFolderTypeDefinition.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISItemTypeDefinition.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISItemTypeDefinition.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISRelationshipTypeDefinition.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISRelationshipTypeDefinition.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISSecondaryTypeDefinition.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISSecondaryTypeDefinition.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/CMISObjectByIdUriBuilder.h
    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/CMISBrowserNavigationService.m
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserObjectService.m
    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.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/CMISPropertyDefinition.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISRenditionData.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISTypeDefinition.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/CMISTypeDefinition.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/CMISRepositoryInfo.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Utils/CMISURLUtil.h
    chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Utils/CMISURLUtil.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=1588209&r1=1588208&r2=1588209&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS.xcodeproj/project.pbxproj (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS.xcodeproj/project.pbxproj Thu Apr 17 11:11:01 2014
@@ -192,8 +192,6 @@
 		82C1C63F15358733009B7B78 /* CMISAtomPubDiscoveryService.h in Headers */ = {isa = PBXBuildFile; fileRef = 82C1C63F15358733009B7B77 /* CMISAtomPubDiscoveryService.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		82C1C63F15358733009B7B7E /* CMISAtomCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 82C1C63F15358733009B7B7D /* CMISAtomCollection.m */; };
 		82C1C63F15358733009B7B80 /* CMISAtomCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 82C1C63F15358733009B7B7F /* CMISAtomCollection.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		82C1C63F15358733009B7B86 /* CMISObjectByPathUriBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 82C1C63F15358733009B7B85 /* CMISObjectByPathUriBuilder.m */; };
-		82C1C63F15358733009B7B88 /* CMISObjectByPathUriBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 82C1C63F15358733009B7B87 /* CMISObjectByPathUriBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		82C1C63F15358733009B7B93 /* test_file_2.txt in Resources */ = {isa = PBXBuildFile; fileRef = 82C1C63F15358733009B7B92 /* test_file_2.txt */; };
 		82C1C63F15358733009B7BA1 /* CMISTypeByIdUriBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 82C1C63F15358733009B7BA0 /* CMISTypeByIdUriBuilder.m */; };
 		82C1C63F15358733009B7BA3 /* CMISTypeByIdUriBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 82C1C63F15358733009B7BA2 /* CMISTypeByIdUriBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -217,6 +215,16 @@
 		BD5C9715162C11E3002DDC6E /* CMISHttpResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = BD5C9712162C11E3002DDC6E /* CMISHttpResponse.m */; };
 		BD70F11B17F4649B00AE2B0C /* CMISDocumentTypeDefinition.h in Headers */ = {isa = PBXBuildFile; fileRef = BD70F11917F4649B00AE2B0C /* CMISDocumentTypeDefinition.h */; };
 		BD70F11C17F4649B00AE2B0C /* CMISDocumentTypeDefinition.m in Sources */ = {isa = PBXBuildFile; fileRef = BD70F11A17F4649B00AE2B0C /* CMISDocumentTypeDefinition.m */; };
+		C97B945818FE828300EDC1A6 /* CMISObjectByPathUriBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = C97B945618FE828300EDC1A6 /* CMISObjectByPathUriBuilder.h */; };
+		C97B945918FE828300EDC1A6 /* CMISObjectByPathUriBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = C97B945718FE828300EDC1A6 /* CMISObjectByPathUriBuilder.m */; };
+		C97B947818FECA6400EDC1A6 /* CMISFolderTypeDefinition.h in Headers */ = {isa = PBXBuildFile; fileRef = C97B947618FECA6400EDC1A6 /* CMISFolderTypeDefinition.h */; };
+		C97B947918FECA6400EDC1A6 /* CMISFolderTypeDefinition.m in Sources */ = {isa = PBXBuildFile; fileRef = C97B947718FECA6400EDC1A6 /* CMISFolderTypeDefinition.m */; };
+		C97B947C18FECB1400EDC1A6 /* CMISRelationshipTypeDefinition.h in Headers */ = {isa = PBXBuildFile; fileRef = C97B947A18FECB1400EDC1A6 /* CMISRelationshipTypeDefinition.h */; };
+		C97B947D18FECB1400EDC1A6 /* CMISRelationshipTypeDefinition.m in Sources */ = {isa = PBXBuildFile; fileRef = C97B947B18FECB1400EDC1A6 /* CMISRelationshipTypeDefinition.m */; };
+		C97B948018FECD8C00EDC1A6 /* CMISSecondaryTypeDefinition.h in Headers */ = {isa = PBXBuildFile; fileRef = C97B947E18FECD8C00EDC1A6 /* CMISSecondaryTypeDefinition.h */; };
+		C97B948118FECD8C00EDC1A6 /* CMISSecondaryTypeDefinition.m in Sources */ = {isa = PBXBuildFile; fileRef = C97B947F18FECD8C00EDC1A6 /* CMISSecondaryTypeDefinition.m */; };
+		C97B948418FECD9600EDC1A6 /* CMISItemTypeDefinition.h in Headers */ = {isa = PBXBuildFile; fileRef = C97B948218FECD9600EDC1A6 /* CMISItemTypeDefinition.h */; };
+		C97B948518FECD9600EDC1A6 /* CMISItemTypeDefinition.m in Sources */ = {isa = PBXBuildFile; fileRef = C97B948318FECD9600EDC1A6 /* CMISItemTypeDefinition.m */; };
 		FE21296415946B94005234FE /* CMISAuthenticationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 82C1C62A153426E4009B7B3D /* CMISAuthenticationProvider.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		FE417D5715761A0C009056AA /* CMISOperationContext.h in Headers */ = {isa = PBXBuildFile; fileRef = FE417D5315761A0C009056AA /* CMISOperationContext.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		FE417D5815761A0C009056AA /* CMISOperationContext.m in Sources */ = {isa = PBXBuildFile; fileRef = FE417D5415761A0C009056AA /* CMISOperationContext.m */; };
@@ -419,8 +427,6 @@
 		82C1C63F15358733009B7B77 /* CMISAtomPubDiscoveryService.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMISAtomPubDiscoveryService.h; sourceTree = "<group>"; };
 		82C1C63F15358733009B7B7D /* CMISAtomCollection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMISAtomCollection.m; sourceTree = "<group>"; };
 		82C1C63F15358733009B7B7F /* CMISAtomCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMISAtomCollection.h; sourceTree = "<group>"; };
-		82C1C63F15358733009B7B85 /* CMISObjectByPathUriBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMISObjectByPathUriBuilder.m; sourceTree = "<group>"; };
-		82C1C63F15358733009B7B87 /* CMISObjectByPathUriBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMISObjectByPathUriBuilder.h; sourceTree = "<group>"; };
 		82C1C63F15358733009B7B92 /* test_file_2.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = test_file_2.txt; sourceTree = "<group>"; };
 		82C1C63F15358733009B7BA0 /* CMISTypeByIdUriBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMISTypeByIdUriBuilder.m; sourceTree = "<group>"; };
 		82C1C63F15358733009B7BA2 /* CMISTypeByIdUriBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMISTypeByIdUriBuilder.h; sourceTree = "<group>"; };
@@ -440,6 +446,16 @@
 		BD5C9712162C11E3002DDC6E /* CMISHttpResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = CMISHttpResponse.m; path = Utils/CMISHttpResponse.m; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
 		BD70F11917F4649B00AE2B0C /* CMISDocumentTypeDefinition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISDocumentTypeDefinition.h; path = Bindings/CMISDocumentTypeDefinition.h; sourceTree = "<group>"; };
 		BD70F11A17F4649B00AE2B0C /* CMISDocumentTypeDefinition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISDocumentTypeDefinition.m; path = Bindings/CMISDocumentTypeDefinition.m; sourceTree = "<group>"; };
+		C97B945618FE828300EDC1A6 /* CMISObjectByPathUriBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMISObjectByPathUriBuilder.h; sourceTree = "<group>"; };
+		C97B945718FE828300EDC1A6 /* CMISObjectByPathUriBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMISObjectByPathUriBuilder.m; sourceTree = "<group>"; };
+		C97B947618FECA6400EDC1A6 /* CMISFolderTypeDefinition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISFolderTypeDefinition.h; path = Bindings/CMISFolderTypeDefinition.h; sourceTree = "<group>"; };
+		C97B947718FECA6400EDC1A6 /* CMISFolderTypeDefinition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISFolderTypeDefinition.m; path = Bindings/CMISFolderTypeDefinition.m; sourceTree = "<group>"; };
+		C97B947A18FECB1400EDC1A6 /* CMISRelationshipTypeDefinition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISRelationshipTypeDefinition.h; path = Bindings/CMISRelationshipTypeDefinition.h; sourceTree = "<group>"; };
+		C97B947B18FECB1400EDC1A6 /* CMISRelationshipTypeDefinition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISRelationshipTypeDefinition.m; path = Bindings/CMISRelationshipTypeDefinition.m; sourceTree = "<group>"; };
+		C97B947E18FECD8C00EDC1A6 /* CMISSecondaryTypeDefinition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISSecondaryTypeDefinition.h; path = Bindings/CMISSecondaryTypeDefinition.h; sourceTree = "<group>"; };
+		C97B947F18FECD8C00EDC1A6 /* CMISSecondaryTypeDefinition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISSecondaryTypeDefinition.m; path = Bindings/CMISSecondaryTypeDefinition.m; sourceTree = "<group>"; };
+		C97B948218FECD9600EDC1A6 /* CMISItemTypeDefinition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISItemTypeDefinition.h; path = Bindings/CMISItemTypeDefinition.h; sourceTree = "<group>"; };
+		C97B948318FECD9600EDC1A6 /* CMISItemTypeDefinition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISItemTypeDefinition.m; path = Bindings/CMISItemTypeDefinition.m; sourceTree = "<group>"; };
 		FE417D5315761A0C009056AA /* CMISOperationContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISOperationContext.h; path = Client/CMISOperationContext.h; sourceTree = "<group>"; };
 		FE417D5415761A0C009056AA /* CMISOperationContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CMISOperationContext.m; path = Client/CMISOperationContext.m; sourceTree = "<group>"; };
 		FE417D5515761A0C009056AA /* CMISPagedResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CMISPagedResult.h; path = Client/CMISPagedResult.h; sourceTree = "<group>"; };
@@ -711,6 +727,14 @@
 				FE417D6215761A34009056AA /* CMISTypeDefinition.m */,
 				BD70F11917F4649B00AE2B0C /* CMISDocumentTypeDefinition.h */,
 				BD70F11A17F4649B00AE2B0C /* CMISDocumentTypeDefinition.m */,
+				C97B947618FECA6400EDC1A6 /* CMISFolderTypeDefinition.h */,
+				C97B947718FECA6400EDC1A6 /* CMISFolderTypeDefinition.m */,
+				C97B947A18FECB1400EDC1A6 /* CMISRelationshipTypeDefinition.h */,
+				C97B948218FECD9600EDC1A6 /* CMISItemTypeDefinition.h */,
+				C97B948318FECD9600EDC1A6 /* CMISItemTypeDefinition.m */,
+				C97B947E18FECD8C00EDC1A6 /* CMISSecondaryTypeDefinition.h */,
+				C97B947F18FECD8C00EDC1A6 /* CMISSecondaryTypeDefinition.m */,
+				C97B947B18FECB1400EDC1A6 /* CMISRelationshipTypeDefinition.m */,
 				8276E158155E392A00344A29 /* CMISVersioningService.h */,
 				8280730D1515405C00EF635C /* AtomPub */,
 				58B9C8C918DE335C001D5C1B /* Browser */,
@@ -767,12 +791,12 @@
 				828073161515405C00EF635C /* CMISAtomPubObjectService.m */,
 				828073171515405C00EF635C /* CMISAtomPubRepositoryService.h */,
 				828073181515405C00EF635C /* CMISAtomPubRepositoryService.m */,
-				82C1C63F15358733009B7B42 /* CMISObjectByIdUriBuilder.m */,
-				82C1C63F15358733009B7B44 /* CMISObjectByIdUriBuilder.h */,
-				82C1C63F15358733009B7B87 /* CMISObjectByPathUriBuilder.h */,
-				82C1C63F15358733009B7B85 /* CMISObjectByPathUriBuilder.m */,
 				82C1C63F15358733009B7B73 /* CMISQueryAtomEntryWriter.h */,
 				82C1C63F15358733009B7B71 /* CMISQueryAtomEntryWriter.m */,
+				82C1C63F15358733009B7B44 /* CMISObjectByIdUriBuilder.h */,
+				82C1C63F15358733009B7B42 /* CMISObjectByIdUriBuilder.m */,
+				C97B945618FE828300EDC1A6 /* CMISObjectByPathUriBuilder.h */,
+				C97B945718FE828300EDC1A6 /* CMISObjectByPathUriBuilder.m */,
 				82C1C63F15358733009B7BA2 /* CMISTypeByIdUriBuilder.h */,
 				82C1C63F15358733009B7BA0 /* CMISTypeByIdUriBuilder.m */,
 				8280730E1515405C00EF635C /* AtomPubParser */,
@@ -855,6 +879,7 @@
 				82C1C63E15358733009B7B3D /* CMISAtomPubConstants.h in Headers */,
 				82AD4AEB1541642A0012DDB6 /* CMISBindingFactory.h in Headers */,
 				82AD4AEF15416A150012DDB6 /* CMISAclService.h in Headers */,
+				C97B948018FECD8C00EDC1A6 /* CMISSecondaryTypeDefinition.h in Headers */,
 				82AD4AF015416A1A0012DDB6 /* CMISObjectService.h in Headers */,
 				258998DB18D73D5A0091BA96 /* CMISAce.h in Headers */,
 				58B9C8DA18DE3379001D5C1B /* CMISBrowserNavigationService.h in Headers */,
@@ -879,11 +904,12 @@
 				8276E15A155E392A00344A29 /* CMISRepositoryService.h in Headers */,
 				8276E15B155E392A00344A29 /* CMISVersioningService.h in Headers */,
 				75803D411560BD5300C738C1 /* CMISAtomLink.h in Headers */,
+				C97B947818FECA6400EDC1A6 /* CMISFolderTypeDefinition.h in Headers */,
 				75803D4F1560CFCB00C738C1 /* CMISLinkRelations.h in Headers */,
 				82C1C63F15358733009B7B74 /* CMISQueryAtomEntryWriter.h in Headers */,
 				82C1C63F15358733009B7B78 /* CMISAtomPubDiscoveryService.h in Headers */,
+				C97B945818FE828300EDC1A6 /* CMISObjectByPathUriBuilder.h in Headers */,
 				82C1C63F15358733009B7B80 /* CMISAtomCollection.h in Headers */,
-				82C1C63F15358733009B7B88 /* CMISObjectByPathUriBuilder.h in Headers */,
 				4EA61BD71564F70C00C759E4 /* CMISStringInOutParameter.h in Headers */,
 				4EA61BDA1564F70C00C759E4 /* CMISURLUtil.h in Headers */,
 				4EA61BE11564F73900C759E4 /* CMISObjectList.h in Headers */,
@@ -916,6 +942,7 @@
 				BD5C970E16282977002DDC6E /* CMISHttpDownloadRequest.h in Headers */,
 				58B9C8DE18DE3379001D5C1B /* CMISBrowserRepositoryService.h in Headers */,
 				58B9C8E018DE3379001D5C1B /* CMISBrowserVersioningService.h in Headers */,
+				C97B948418FECD9600EDC1A6 /* CMISItemTypeDefinition.h in Headers */,
 				BD5C9713162C11E3002DDC6E /* CMISHttpResponse.h in Headers */,
 				4E3E14B316AFFB190057CE22 /* CMISNetworkProvider.h in Headers */,
 				4E10ABFF16B916B500E2287E /* CMISDefaultNetworkProvider.h in Headers */,
@@ -925,6 +952,7 @@
 				278B269C177BB10B0049C229 /* CMISStandardAuthenticationProvider.h in Headers */,
 				258998E118D73D900091BA96 /* CMISPrincipal.h in Headers */,
 				278B269F177BB3000049C229 /* CMISStandardUntrustedSSLAuthenticationProvider.h in Headers */,
+				C97B947C18FECB1400EDC1A6 /* CMISRelationshipTypeDefinition.h in Headers */,
 				BD70F11B17F4649B00AE2B0C /* CMISDocumentTypeDefinition.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -1068,8 +1096,10 @@
 				8280731D1515405C00EF635C /* CMISAtomEntryParser.m in Sources */,
 				8280731F1515405C00EF635C /* CMISServiceDocumentParser.m in Sources */,
 				258998E618D73E1A0091BA96 /* CMISPrincipalParser.m in Sources */,
+				C97B947D18FECB1400EDC1A6 /* CMISRelationshipTypeDefinition.m in Sources */,
 				58B9C8DB18DE3379001D5C1B /* CMISBrowserNavigationService.m in Sources */,
 				58B9C8D718DE3379001D5C1B /* CMISBrowserBaseService.m in Sources */,
+				C97B948118FECD8C00EDC1A6 /* CMISSecondaryTypeDefinition.m in Sources */,
 				828073211515405C00EF635C /* CMISAtomPubBinding.m in Sources */,
 				258998DE18D73D5A0091BA96 /* CMISAcl.m in Sources */,
 				828073231515405C00EF635C /* CMISAtomPubObjectService.m in Sources */,
@@ -1084,6 +1114,7 @@
 				82AD4AEC1541642A0012DDB6 /* CMISBindingFactory.m in Sources */,
 				58B9C8E118DE3379001D5C1B /* CMISBrowserVersioningService.m in Sources */,
 				58B9C90318E588D7001D5C1B /* CMISBrowserConstants.m in Sources */,
+				C97B945918FE828300EDC1A6 /* CMISObjectByPathUriBuilder.m in Sources */,
 				58B9C8FF18E58028001D5C1B /* CMISBrowserUtil.m in Sources */,
 				82C1C63F15358733009B7B43 /* CMISObjectByIdUriBuilder.m in Sources */,
 				82ABA0491554655A00935225 /* CMISBindingSession.m in Sources */,
@@ -1091,6 +1122,7 @@
 				75C5E2F81559172B0065550A /* CMISAllowableActionsParser.m in Sources */,
 				75C8D0871559B7EA00B63D2B /* CMISAllowableActions.m in Sources */,
 				8276E124155E34ED00344A29 /* CMISObjectId.m in Sources */,
+				C97B947918FECA6400EDC1A6 /* CMISFolderTypeDefinition.m in Sources */,
 				8276E130155E355D00344A29 /* CMISBase64Encoder.m in Sources */,
 				8276E132155E355D00344A29 /* CMISFileUtil.m in Sources */,
 				258998D418D73D160091BA96 /* CMISAceParser.m in Sources */,
@@ -1100,7 +1132,6 @@
 				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 */,
 				4EA61BDB1564F70C00C759E4 /* CMISURLUtil.m in Sources */,
@@ -1125,6 +1156,7 @@
 				FE417D6815761A34009056C2 /* CMISRenditionData.m in Sources */,
 				FE417D6815761A34009056C6 /* CMISRendition.m in Sources */,
 				755E7D071586E8C3002CACB0 /* CMISAtomPubExtensionDataParserBase.m in Sources */,
+				C97B948518FECD9600EDC1A6 /* CMISItemTypeDefinition.m in Sources */,
 				258998DC18D73D5A0091BA96 /* CMISAce.m in Sources */,
 				58B9C8DD18DE3379001D5C1B /* CMISBrowserObjectService.m in Sources */,
 				BD5C96FF16281A54002DDC6E /* CMISHttpRequest.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=1588209&r1=1588208&r2=1588209&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 Thu Apr 17 11:11:01 2014
@@ -74,31 +74,6 @@ extern NSString * const kCMISLinkEditMed
 extern NSString * const kCMISLinkRelationNext;
 extern NSString * const kCMISLinkRelationWorkingCopy;
 
-// URL parameters
-extern NSString * const kCMISParameterChangeToken;
-extern NSString * const kCMISParameterOverwriteFlag;
-extern NSString * const kCMISParameterIncludeAllowableActions;
-extern NSString * const kCMISParameterFilter;
-extern NSString * const kCMISParameterMaxItems;
-extern NSString * const kCMISParameterObjectId;
-extern NSString * const kCMISParameterOrderBy;
-extern NSString * const kCMISParameterIncludePathSegment;
-extern NSString * const kCMISParameterIncludeRelationships;
-extern NSString * const kCMISParameterRenditionFilter;
-extern NSString * const kCMISParameterSkipCount;
-extern NSString * const kCMISParameterStreamId;
-extern NSString * const kCMISParameterAllVersions;
-extern NSString * const kCMISParameterContinueOnFailure;
-extern NSString * const kCMISParameterUnfileObjects;
-extern NSString * const kCMISParameterRelativePathSegment;
-extern NSString * const kCMISParameterMajor;
-extern NSString * const kCMISParameterCheckin;
-extern NSString * const kCMISParameterCheckinComment;
-
-// Parameter Values
-extern NSString * const kCMISParameterValueTrue;
-extern NSString * const kCMISParameterValueFalse;
-
 // Namespaces
 extern NSString * const kCMISNamespaceCmis;
 extern NSString * const kCMISNamespaceCmisRestAtom;

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=1588209&r1=1588208&r2=1588209&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 Thu Apr 17 11:11:01 2014
@@ -74,31 +74,6 @@ NSString * const kCMISLinkEditMedia = @"
 NSString * const kCMISLinkRelationNext = @"next";
 NSString * const kCMISLinkRelationWorkingCopy = @"working-copy";
 
-// Parameters
-NSString * const kCMISParameterChangeToken = @"changeToken";
-NSString * const kCMISParameterOverwriteFlag = @"overwriteFlag";
-NSString * const kCMISParameterIncludeAllowableActions = @"includeAllowableActions";
-NSString * const kCMISParameterFilter = @"filter";
-NSString * const kCMISParameterMaxItems = @"maxItems";
-NSString * const kCMISParameterObjectId = @"objectId";
-NSString * const kCMISParameterOrderBy = @"orderBy";
-NSString * const kCMISParameterIncludePathSegment = @"includePathSegment";
-NSString * const kCMISParameterIncludeRelationships = @"includeRelationships";
-NSString * const kCMISParameterRenditionFilter = @"renditionFilter";
-NSString * const kCMISParameterSkipCount = @"skipCount";
-NSString * const kCMISParameterStreamId = @"streamId";
-NSString * const kCMISParameterAllVersions = @"allVersions";
-NSString * const kCMISParameterContinueOnFailure= @"continueOnFailure";
-NSString * const kCMISParameterUnfileObjects = @"unfileObjects";
-NSString * const kCMISParameterRelativePathSegment = @"includeRelativePathSegment";
-NSString * const kCMISParameterMajor = @"major";
-NSString * const kCMISParameterCheckin = @"checkin";
-NSString * const kCMISParameterCheckinComment = @"checkinComment";
-
-// Parameter Values
-NSString * const kCMISParameterValueTrue = @"true";
-NSString * const kCMISParameterValueFalse = @"false";
-
 // Namespaces
 NSString * const kCMISNamespaceCmis = @"http://docs.oasis-open.org/ns/cmis/core/200908/";
 NSString * const kCMISNamespaceCmisRestAtom = @"http://docs.oasis-open.org/ns/cmis/restatom/200908/";

Modified: chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/CMISObjectByIdUriBuilder.h
URL: http://svn.apache.org/viewvc/chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/CMISObjectByIdUriBuilder.h?rev=1588209&r1=1588208&r2=1588209&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/CMISObjectByIdUriBuilder.h (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/AtomPub/CMISObjectByIdUriBuilder.h Thu Apr 17 11:11:01 2014
@@ -21,15 +21,6 @@
 #import <Foundation/Foundation.h>
 #import "CMISEnums.h"
 
-
-typedef NS_ENUM(NSInteger, CMISReturnVersion)
-{
-    NOT_PROVIDED,
-    THIS,
-    LATEST,
-    LATEST_MAJOR
-};
-
 @interface CMISObjectByIdUriBuilder : NSObject
 
 @property (nonatomic, strong) NSString *objectId;

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=1588209&r1=1588208&r2=1588209&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBaseService.h (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBaseService.h Thu Apr 17 11:11:01 2014
@@ -27,4 +27,8 @@
 
 - (id)initWithBindingSession:(CMISBindingSession *)session;
 
+-(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=1588209&r1=1588208&r2=1588209&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBaseService.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserBaseService.m Thu Apr 17 11:11:01 2014
@@ -18,6 +18,9 @@
  */
 
 #import "CMISBrowserBaseService.h"
+#import "CMISConstants.h"
+#import "CMISBrowserConstants.h"
+#import "CMISURLUtil.h"
 
 @interface CMISBrowserBaseService ()
 @property (nonatomic, strong, readwrite) CMISBindingSession *bindingSession;
@@ -36,4 +39,29 @@
     return self;
 }
 
+-(NSString *)getObjectUrlObjectId:(NSString *)objectId selector:(NSString *)selector
+{
+    NSString *rootUrl = [self.bindingSession objectForKey:kCMISBrowserBindingSessionKeyRootFolderUrl];
+    
+    NSString *objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterObjectId value:objectId urlString:rootUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterSelector value:selector urlString:objectUrl];
+    return objectUrl;
+}
+
+-(NSString *)getObjectUrlByPath:(NSString *)path selector:(NSString *)selector
+{
+    NSString *rootUrl = [self.bindingSession objectForKey:kCMISBrowserBindingSessionKeyRootFolderUrl];
+    
+    NSString *objectUrl = [CMISURLUtil urlStringByAppendingPath:path urlString:rootUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterSelector value:selector urlString:objectUrl];
+    return objectUrl;
+}
+
+-(NSString *)getRepositoryUrlWithSelector:(NSString *)selector
+{
+    NSString *repoUrl = [self.bindingSession objectForKey:kCMISBrowserBindingSessionKeyRepositoryUrl];
+    repoUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterSelector value:selector urlString:repoUrl];
+    return repoUrl;
+}
+
 @end

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=1588209&r1=1588208&r2=1588209&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserConstants.h (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserConstants.h Thu Apr 17 11:11:01 2014
@@ -46,25 +46,55 @@ extern NSString * const kCMISBrowserJSON
 extern NSString * const kCMISBrowserJSONQueryName;
 extern NSString * const kCMISBrowserJSONDescription;
 extern NSString * const kCMISBrowserJSONBaseId;
+extern NSString * const kCMISBrowserJSONParentId;
 extern NSString * const kCMISBrowserJSONCreateable;
 extern NSString * const kCMISBrowserJSONFileable;
 extern NSString * const kCMISBrowserJSONQueryable;
+extern NSString * const kCMISBrowserJSONVersionable; // document
+extern NSString * const kCMISBrowserJSONContentStreamAllowed; // document
+extern NSString * const kCMISBrowserJSONAllowedSourceTypes; // relationship
+extern NSString * const kCMISBrowserJSONAllowedTargetTypes; // relationship
 extern NSString * const kCMISBrowserJSONFullTextIndexed;
 extern NSString * const kCMISBrowserJSONIncludedInSuperTypeQuery;
 extern NSString * const kCMISBrowserJSONControllablePolicy;
 extern NSString * const kCMISBrowserJSONControllableAcl;
 extern NSString * const kCMISBrowserJSONPropertyDefinitions;
+extern NSString * const kCMISBrowserJSONTypeMutability;
 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 kCMISBrowserJSONOpenChoice;
+extern NSString * const kCMISBrowserJSONChoice;
+extern NSString * const kCMISBrowserJSONDefaultValue;
+extern NSString * const kCMISBrowserJSONProperties;
 extern NSString * const kCMISBrowserJSONSuccinctProperties;
+extern NSString * const kCMISBrowserJSONPropertiesExtension;
+extern NSString * const kCMISBrowserJSONAllowableActions;
+extern NSString * const kCMISBrowserJSONRelationships;
+extern NSString * const kCMISBrowserJSONChangeEventInfo;
+extern NSString * const kCMISBrowserJSONAcl;
+extern NSString * const kCMISBrowserJSONExactAcl;
+extern NSString * const kCMISBrowserJSONPolicyIds;
+extern NSString * const kCMISBrowserJSONPolicyIdsIds;
+extern NSString * const kCMISBrowserJSONRenditions;
 extern NSString * const kCMISBrowserJSONObjects;
 extern NSString * const kCMISBrowserJSONObject;
 extern NSString * const kCMISBrowserJSONHasMoreItems;
 extern NSString * const kCMISBrowserJSONNumberItems;
+extern NSString * const kCMISBrowserJSONThinClientUri;
+extern NSString * const kCMISBrowserJSONChangesIncomplete;
+extern NSString * const kCMISBrowserJSONChangesOnType;
+extern NSString * const kCMISBrowserJSONLatestChangeLogToken;
+extern NSString * const kCMISBrowserJSONAclCapabilities;
+extern NSString * const kCMISBrowserJSONExtendedFeatures;
+extern NSString * const kCMISBrowserJSONMaxLength;
+extern NSString * const kCMISBrowserJSONMinValue;
+extern NSString * const kCMISBrowserJSONMaxValue;
+extern NSString * const kCMISBrowserJSONPrecision;
+extern NSString * const kCMISBrowserJSONResolution;
 
 // JSON enum values
 extern NSString * const kCMISBrowserJSONPropertyTypeValueString;
@@ -82,7 +112,44 @@ extern NSString * const kCMISBrowserJSON
 extern NSString * const kCMISBrowserJSONUpdateabilityValueOnCreate;
 extern NSString * const kCMISBrowserJSONUpdateabilityValueWhenCheckedOut;
 
+//JSON selectors
+extern NSString * const kCMISBrowserJSONSSelectorLastResult;
+extern NSString * const kCMISBrowserJSONSelectorRepositoryInfo;
+extern NSString * const kCMISBrowserJSONSelectorTypeChildren;
+extern NSString * const kCMISBrowserJSONSelectorTypeDescendants;
+extern NSString * const kCMISBrowserJSONSelectorTypeDefinition;
+extern NSString * const kCMISBrowserJSONSelectorContent;
+extern NSString * const kCMISBrowserJSONSelectorObject;
+extern NSString * const kCMISBrowserJSONSelectorProperties;
+extern NSString * const kCMISBrowserJSONSelectorAllowableActions;
+extern NSString * const kCMISBrowserJSONSelectorRenditions;
+extern NSString * const kCMISBrowserJSONSelectorChildren;
+extern NSString * const kCMISBrowserJSONSelectorDescendants;
+extern NSString * const kCMISBrowserJSONSelectorParents;
+extern NSString * const kCMISBrowserJSONSelectorParent;
+extern NSString * const kCMISBrowserJSONSelectorFolderTree;
+extern NSString * const kCMISBrowserJSONSelectorQuery;
+extern NSString * const kCMISBrowserJSONSelectorVersions;
+extern NSString * const kCMISBrowserJSONSelectorRelationships;
+extern NSString * const kCMISBrowserJSONSelectorCheckedout;
+extern NSString * const kCMISBrowserJSONSelectorPolicies;
+extern NSString * const kCMISBrowserJSONSelectorAcl;
+extern NSString * const kCMISBrowserJSONSelectorContentChanges;
 
+//JSON rendition properties
+extern NSString * const kCMISBrowserJSONRenditionStreamId;
+extern NSString * const kCMISBrowserJSONRenditionMimeType;
+extern NSString * const kCMISBrowserJSONRenditionLength;
+extern NSString * const kCMISBrowserJSONRenditionKind;
+extern NSString * const kCMISBrowserJSONRenditionTitle;
+extern NSString * const kCMISBrowserJSONRenditionHeight;
+extern NSString * const kCMISBrowserJSONRenditionWidth;
+extern NSString * const kCMISBrowserJSONRenditionDocumentId;
 
++ (NSSet *)objectKeys;
++ (NSSet *)repositoryInfoKeys;
++ (NSSet *)typeKeys;
++ (NSSet *)propertyTypeKeys;
++ (NSSet *)renditionKeys;
 
 @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=1588209&r1=1588208&r2=1588209&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserConstants.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserConstants.m Thu Apr 17 11:11:01 2014
@@ -19,6 +19,12 @@
 
 #import "CMISBrowserConstants.h"
 
+static NSSet *_objectKeys;
+static NSSet *_repositoryInfoKeys;
+static NSSet *_typeKeys;
+static NSSet *_propertyTypeKeys;
+static NSSet *_renditionKeys;
+
 @implementation CMISBrowserConstants
 
 // Session keys
@@ -46,25 +52,55 @@ NSString * const kCMISBrowserJSONDisplay
 NSString * const kCMISBrowserJSONQueryName = @"queryName";
 NSString * const kCMISBrowserJSONDescription = @"description";
 NSString * const kCMISBrowserJSONBaseId = @"baseId";
+NSString * const kCMISBrowserJSONParentId = @"parentId";
 NSString * const kCMISBrowserJSONCreateable = @"creatable";
 NSString * const kCMISBrowserJSONFileable = @"fileable";
 NSString * const kCMISBrowserJSONQueryable = @"queryable";
+NSString * const kCMISBrowserJSONVersionable = @"versionable"; // document
+NSString * const kCMISBrowserJSONContentStreamAllowed = @"contentStreamAllowed"; // document
+NSString * const kCMISBrowserJSONAllowedSourceTypes = @"allowedSourceTypes"; // relationship
+NSString * const kCMISBrowserJSONAllowedTargetTypes = @"allowedTargetTypes"; // relationship
 NSString * const kCMISBrowserJSONFullTextIndexed = @"fulltextIndexed";
 NSString * const kCMISBrowserJSONIncludedInSuperTypeQuery = @"includedInSupertypeQuery";
 NSString * const kCMISBrowserJSONControllablePolicy = @"controllablePolicy";
 NSString * const kCMISBrowserJSONControllableAcl = @"controllableACL";
 NSString * const kCMISBrowserJSONPropertyDefinitions = @"propertyDefinitions";
+NSString * const kCMISBrowserJSONTypeMutability = @"typeMutability";
 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 kCMISBrowserJSONOpenChoice = @"openChoice";
+NSString * const kCMISBrowserJSONChoice = @"choice";
+NSString * const kCMISBrowserJSONDefaultValue = @"defaultValue";
+NSString * const kCMISBrowserJSONProperties = @"properties";
 NSString * const kCMISBrowserJSONSuccinctProperties = @"succinctProperties";
+NSString * const kCMISBrowserJSONPropertiesExtension = @"propertiesExtension";
+NSString * const kCMISBrowserJSONAllowableActions = @"allowableActions";
+NSString * const kCMISBrowserJSONRelationships = @"relationships";
+NSString * const kCMISBrowserJSONChangeEventInfo = @"changeEventInfo";
+NSString * const kCMISBrowserJSONAcl = @"acl";
+NSString * const kCMISBrowserJSONExactAcl = @"exactACL";
+NSString * const kCMISBrowserJSONPolicyIds = @"policyIds";
+NSString * const kCMISBrowserJSONPolicyIdsIds = @"ids";
+NSString * const kCMISBrowserJSONRenditions = @"renditions";
 NSString * const kCMISBrowserJSONObjects = @"objects";
 NSString * const kCMISBrowserJSONObject = @"object";
 NSString * const kCMISBrowserJSONHasMoreItems = @"hasMoreItems";
 NSString * const kCMISBrowserJSONNumberItems = @"numItems";
+NSString * const kCMISBrowserJSONThinClientUri = @"thinClientURI";
+NSString * const kCMISBrowserJSONChangesIncomplete = @"changesIncomplete";
+NSString * const kCMISBrowserJSONChangesOnType = @"changesOnType";
+NSString * const kCMISBrowserJSONLatestChangeLogToken = @"latestChangeLogToken";
+NSString * const kCMISBrowserJSONAclCapabilities = @"aclCapabilities";
+NSString * const kCMISBrowserJSONExtendedFeatures = @"extendedFeatures";
+NSString * const kCMISBrowserJSONMaxLength = @"maxLength";
+NSString * const kCMISBrowserJSONMinValue = @"minValue";
+NSString * const kCMISBrowserJSONMaxValue = @"maxValue";
+NSString * const kCMISBrowserJSONPrecision = @"precision";
+NSString * const kCMISBrowserJSONResolution = @"resolution";
 
 // JSON enum values
 NSString * const kCMISBrowserJSONPropertyTypeValueString = @"string";
@@ -84,4 +120,161 @@ NSString * const kCMISBrowserJSONUpdatea
 NSString * const kCMISBrowserJSONUpdateabilityValueOnCreate = @"oncreate";
 NSString * const kCMISBrowserJSONUpdateabilityValueWhenCheckedOut = @"whencheckedout";
 
+//JSON selectors
+NSString * const kCMISBrowserJSONSSelectorLastResult = @"lastResult";
+NSString * const kCMISBrowserJSONSelectorRepositoryInfo = @"repositoryInfo";
+NSString * const kCMISBrowserJSONSelectorTypeChildren = @"typeChildren";
+NSString * const kCMISBrowserJSONSelectorTypeDescendants = @"typeDescendants";
+NSString * const kCMISBrowserJSONSelectorTypeDefinition = @"typeDefinition";
+NSString * const kCMISBrowserJSONSelectorContent = @"content";
+NSString * const kCMISBrowserJSONSelectorObject = @"object";
+NSString * const kCMISBrowserJSONSelectorProperties = @"properties";
+NSString * const kCMISBrowserJSONSelectorAllowableActions = @"allowableActions";
+NSString * const kCMISBrowserJSONSelectorRenditions = @"renditions";
+NSString * const kCMISBrowserJSONSelectorChildren = @"children";
+NSString * const kCMISBrowserJSONSelectorDescendants = @"descendants";
+NSString * const kCMISBrowserJSONSelectorParents = @"parents";
+NSString * const kCMISBrowserJSONSelectorParent = @"parent";
+NSString * const kCMISBrowserJSONSelectorFolderTree = @"folder";
+NSString * const kCMISBrowserJSONSelectorQuery = @"query";
+NSString * const kCMISBrowserJSONSelectorVersions = @"versions";
+NSString * const kCMISBrowserJSONSelectorRelationships = @"relationships";
+NSString * const kCMISBrowserJSONSelectorCheckedout = @"checkedout";
+NSString * const kCMISBrowserJSONSelectorPolicies = @"policies";
+NSString * const kCMISBrowserJSONSelectorAcl = @"acl";
+NSString * const kCMISBrowserJSONSelectorContentChanges = @"contentChanges";
+
+//JSON rendition properties
+NSString * const kCMISBrowserJSONRenditionStreamId = @"streamId";
+NSString * const kCMISBrowserJSONRenditionMimeType = @"mimeType";
+NSString * const kCMISBrowserJSONRenditionLength = @"length";
+NSString * const kCMISBrowserJSONRenditionKind = @"kind";
+NSString * const kCMISBrowserJSONRenditionTitle = @"title";
+NSString * const kCMISBrowserJSONRenditionHeight = @"height";
+NSString * const kCMISBrowserJSONRenditionWidth = @"width";
+NSString * const kCMISBrowserJSONRenditionDocumentId = @"renditionDocumentId";
+
++(NSSet *)objectKeys
+{
+    if(!_objectKeys) {
+        _objectKeys = [NSSet setWithObjects:
+                       kCMISBrowserJSONProperties,
+                       kCMISBrowserJSONSuccinctProperties,
+                       kCMISBrowserJSONAllowableActions,
+                       kCMISBrowserJSONRelationships,
+                       kCMISBrowserJSONChangeEventInfo,
+                       kCMISBrowserJSONAcl,
+                       kCMISBrowserJSONExactAcl,
+                       kCMISBrowserJSONPolicyIds,
+                       kCMISBrowserJSONRenditions,
+                       nil];
+    }
+    return _objectKeys;
+}
+
++ (NSSet *)repositoryInfoKeys
+{
+    if(!_repositoryInfoKeys) {
+        _repositoryInfoKeys = [NSSet setWithObjects:
+                               kCMISBrowserJSONRepositoryId,
+                               kCMISBrowserJSONRepositoryName,
+                               kCMISBrowserJSONRepositoryDescription,
+                               kCMISBrowserJSONVendorName,
+                               kCMISBrowserJSONProductName,
+                               kCMISBrowserJSONProductVersion,
+                               kCMISBrowserJSONRootFolderId,
+                               kCMISBrowserJSONRepositoryUrl,
+                               kCMISBrowserJSONRootFolderUrl,
+                               kCMISBrowserJSONCapabilities,
+                               kCMISBrowserJSONAclCapabilities,
+                               kCMISBrowserJSONLatestChangeLogToken,
+                               kCMISBrowserJSONCMISVersionSupported,
+                               kCMISBrowserJSONThinClientUri,
+                               kCMISBrowserJSONChangesIncomplete,
+                               kCMISBrowserJSONChangesOnType,
+                               kCMISBrowserJSONPrincipalIdAnonymous,
+                               kCMISBrowserJSONPrincipalIdAnyone,
+                               kCMISBrowserJSONExtendedFeatures,
+                               nil];
+    }
+    return _repositoryInfoKeys;
+}
+
++ (NSSet *)typeKeys
+{
+    if(!_typeKeys) {
+        _typeKeys = [NSSet setWithObjects:
+                     kCMISBrowserJSONId,
+                     kCMISBrowserJSONLocalName,
+                     kCMISBrowserJSONLocalNamespace,
+                     kCMISBrowserJSONDisplayName,
+                     kCMISBrowserJSONQueryName,
+                     kCMISBrowserJSONDescription,
+                     kCMISBrowserJSONBaseId,
+                     kCMISBrowserJSONParentId,
+                     kCMISBrowserJSONCreateable,
+                     kCMISBrowserJSONFileable,
+                     kCMISBrowserJSONQueryable,
+                     kCMISBrowserJSONFullTextIndexed,
+                     kCMISBrowserJSONIncludedInSuperTypeQuery,
+                     kCMISBrowserJSONControllablePolicy,
+                     kCMISBrowserJSONControllableAcl,
+                     kCMISBrowserJSONPropertyDefinitions,
+                     kCMISBrowserJSONVersionable,
+                     kCMISBrowserJSONContentStreamAllowed,
+                     kCMISBrowserJSONAllowedSourceTypes,
+                     kCMISBrowserJSONAllowedTargetTypes,
+                     kCMISBrowserJSONTypeMutability,
+                     nil];
+    }
+    return _typeKeys;
+}
+
++ (NSSet *)propertyTypeKeys
+{
+    if(!_propertyTypeKeys) {
+        _propertyTypeKeys = [NSSet setWithObjects:
+                             kCMISBrowserJSONId,
+                             kCMISBrowserJSONLocalName,
+                             kCMISBrowserJSONLocalNamespace,
+                             kCMISBrowserJSONDisplayName,
+                             kCMISBrowserJSONQueryName,
+                             kCMISBrowserJSONDescription,
+                             kCMISBrowserJSONPropertyType,
+                             kCMISBrowserJSONCardinality,
+                             kCMISBrowserJSONUpdateability,
+                             kCMISBrowserJSONInherited,
+                             kCMISBrowserJSONRequired,
+                             kCMISBrowserJSONQueryable,
+                             kCMISBrowserJSONOrderable,
+                             kCMISBrowserJSONOpenChoice,
+                             kCMISBrowserJSONDefaultValue,
+                             kCMISBrowserJSONMaxLength,
+                             kCMISBrowserJSONMinValue,
+                             kCMISBrowserJSONMaxValue,
+                             kCMISBrowserJSONPrecision,
+                             kCMISBrowserJSONResolution,
+                             kCMISBrowserJSONChoice,
+                             nil];
+    }
+    return _propertyTypeKeys;
+}
+
++(NSSet *)renditionKeys
+{
+    if(!_renditionKeys) {
+        _renditionKeys = [NSSet setWithObjects:
+                          kCMISBrowserJSONRenditionStreamId,
+                          kCMISBrowserJSONRenditionMimeType,
+                          kCMISBrowserJSONRenditionLength,
+                          kCMISBrowserJSONRenditionKind,
+                          kCMISBrowserJSONRenditionTitle,
+                          kCMISBrowserJSONRenditionHeight,
+                          kCMISBrowserJSONRenditionWidth,
+                          kCMISBrowserJSONRenditionDocumentId,
+                          nil];
+    }
+    return _renditionKeys;
+}
+
 @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=1588209&r1=1588208&r2=1588209&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserNavigationService.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserNavigationService.m Thu Apr 17 11:11:01 2014
@@ -23,6 +23,7 @@
 #import "CMISConstants.h"
 #import "CMISBrowserUtil.h"
 #import "CMISBrowserConstants.h"
+#import "CMISURLUtil.h"
 
 @implementation CMISBrowserNavigationService
 
@@ -37,14 +38,20 @@
                         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];
+    NSString *objectUrl = [self getObjectUrlObjectId:objectId selector:kCMISBrowserJSONSelectorChildren];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterFilter value:filter urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterOrderBy value:orderBy urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterIncludeAllowableActions boolValue:includeAllowableActions urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterIncludeRelationships value:[CMISEnums stringForIncludeRelationShip:relationships] urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterRenditionFilter value:renditionFilter urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterIncludePathSegment boolValue:includePathSegment urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterMaxItems numberValue:maxItems urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterSkipCount numberValue:skipCount urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterSuccinct value:kCMISParameterValueTrue urlString:objectUrl];
     
     CMISRequest *cmisRequest = [[CMISRequest alloc] init];
     
-    [self.bindingSession.networkProvider invokeGET:childrenUrl
+    [self.bindingSession.networkProvider invokeGET:[NSURL URLWithString:objectUrl]
                                            session:self.bindingSession
                                        cmisRequest:cmisRequest
                                    completionBlock:^(CMISHttpResponse *httpResponse, NSError *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=1588209&r1=1588208&r2=1588209&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserObjectService.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserObjectService.m Thu Apr 17 11:11:01 2014
@@ -23,6 +23,10 @@
 #import "CMISConstants.h"
 #import "CMISBrowserUtil.h"
 #import "CMISBrowserConstants.h"
+#import "CMISURLUtil.h"
+#import "CMISFileUtil.h"
+#import "CMISErrors.h"
+#import "CMISLog.h"
 
 @implementation CMISBrowserObjectService
 
@@ -35,28 +39,29 @@
        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];
+    NSString *objectUrl = [self getObjectUrlObjectId:objectId selector:kCMISBrowserJSONSelectorObject];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterFilter value:filter urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterIncludeAllowableActions boolValue:includeAllowableActions urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterIncludeRelationships value:[CMISEnums stringForIncludeRelationShip:relationships] urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterRenditionFilter value:renditionFilter urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterIncludePolicyIds boolValue:includePolicyIds urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterIncludeAcl boolValue:includeACL urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterSuccinct value:kCMISParameterValueTrue urlString:objectUrl];
     
     CMISRequest *cmisRequest = [[CMISRequest alloc] init];
     
-    [self.bindingSession.networkProvider invokeGET:objectUrl
+    [self.bindingSession.networkProvider invokeGET:[NSURL URLWithString: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);
-                                               }
+                                       if (httpResponse.statusCode == 200 && httpResponse.data) {
+                                           NSError *parsingError = nil;
+                                           CMISObjectData *objectData = [CMISBrowserUtil objectDataFromJSONData:httpResponse.data error:&parsingError];
+                                           if (parsingError)
+                                           {
+                                               completionBlock(nil, parsingError);
+                                           } else {
+                                               completionBlock(objectData, nil);
                                            }
                                        } else {
                                            completionBlock(nil, error);
@@ -75,9 +80,36 @@
              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;
+    NSString *objectUrl = [self getObjectUrlByPath:path selector:kCMISBrowserJSONSelectorObject];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterFilter value:filter urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterIncludeAllowableActions boolValue:includeAllowableActions urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterIncludeRelationships value:[CMISEnums stringForIncludeRelationShip:relationships] urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterRenditionFilter value:renditionFilter urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterIncludePolicyIds boolValue:includePolicyIds urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterIncludeAcl boolValue:includeACL urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterSuccinct value:kCMISParameterValueTrue urlString:objectUrl];
+    
+    CMISRequest *cmisRequest = [[CMISRequest alloc] init];
+    
+    [self.bindingSession.networkProvider invokeGET:[NSURL URLWithString:objectUrl]
+                                           session:self.bindingSession
+                                       cmisRequest:cmisRequest
+                                   completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
+                                       if (httpResponse.statusCode == 200 && httpResponse.data) {
+                                           NSError *parsingError = nil;
+                                           CMISObjectData *objectData = [CMISBrowserUtil objectDataFromJSONData:httpResponse.data error:&parsingError];
+                                           if (parsingError)
+                                           {
+                                               completionBlock(nil, parsingError);
+                                           } else {
+                                               completionBlock(objectData, nil);
+                                           }
+                                       } else {
+                                           completionBlock(nil, error);
+                                       }
+                                   }];
+    
+    return cmisRequest;
 }
 
 - (CMISRequest*)downloadContentOfObject:(NSString *)objectId
@@ -86,9 +118,17 @@
                         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;
+    return [self downloadContentOfObject:objectId
+                                streamId:streamId
+                                  toFile:filePath
+                                  offset:nil
+                                  length:nil
+                         completionBlock:completionBlock
+                           progressBlock:^(unsigned long long bytesDownloaded, unsigned long long bytesTotal) {
+                               if (progressBlock) {
+                                   progressBlock(bytesDownloaded, bytesTotal);
+                               }
+                           }];
 }
 
 - (CMISRequest*)downloadContentOfObject:(NSString *)objectId
@@ -99,9 +139,14 @@
                         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;
+    NSOutputStream *outputStream = [NSOutputStream outputStreamToFileAtPath:filePath append:NO];
+    return [self downloadContentOfObject:objectId
+                                streamId:streamId
+                          toOutputStream:outputStream
+                                  offset:offset
+                                  length:length
+                         completionBlock:completionBlock
+                           progressBlock:progressBlock];
 }
 
 - (CMISRequest*)downloadContentOfObject:(NSString *)objectId
@@ -110,9 +155,17 @@
                         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;
+    return [self downloadContentOfObject:objectId
+                                streamId:streamId
+                          toOutputStream:outputStream
+                                  offset:nil
+                                  length:nil
+                         completionBlock:completionBlock
+                           progressBlock:^(unsigned long long bytesDownloaded, unsigned long long bytesTotal) {
+                               if (progressBlock) {
+                                   progressBlock(bytesDownloaded, bytesTotal);
+                               }
+                           }];
 }
 
 - (CMISRequest*)downloadContentOfObject:(NSString *)objectId
@@ -123,9 +176,32 @@
                         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 *request = [[CMISRequest alloc] init];
+    
+    NSString *rootUrl = [self.bindingSession objectForKey:kCMISBrowserBindingSessionKeyRootFolderUrl];
+    
+    NSString *contentUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterStreamId value:streamId urlString:rootUrl];
+    contentUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterObjectId value:objectId urlString:contentUrl];
+    contentUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterSelector value:kCMISBrowserJSONSelectorContent urlString:contentUrl];
+
+    unsigned long long streamLength = 0; //TODO do we need this?
+
+    [self.bindingSession.networkProvider invoke:[NSURL URLWithString:contentUrl]
+                                  httpMethod:HTTP_GET
+                                     session:self.bindingSession
+                                outputStream:outputStream
+                               bytesExpected:streamLength
+                                      offset:offset
+                                      length:length
+                                 cmisRequest:request
+                             completionBlock:^(CMISHttpResponse *httpResponse, NSError *error)
+    {
+        if (completionBlock) {
+          completionBlock(error);
+        }
+    } progressBlock:progressBlock];
+    
+    return request;
 }
 
 - (CMISRequest*)deleteContentOfObject:(CMISStringInOutParameter *)objectIdParam
@@ -172,9 +248,29 @@
                            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;
+    NSInputStream *inputStream = [NSInputStream inputStreamWithFileAtPath:filePath];
+    if (inputStream == nil) {
+        CMISLogError(@"Could not find file %@", filePath);
+        if (completionBlock) {
+            completionBlock(nil, [CMISErrors createCMISErrorWithCode:kCMISErrorCodeInvalidArgument
+                                                 detailedDescription:@"Invalid file"]);
+        }
+        return nil;
+    }
+    
+    NSError *fileError = nil;
+    unsigned long long bytesExpected = [CMISFileUtil fileSizeForFileAtPath:filePath error:&fileError];
+    if (fileError) {
+        CMISLogError(@"Could not determine size of file %@: %@", filePath, [fileError description]);
+    }
+    
+    return [self createDocumentFromInputStream:inputStream
+                                      mimeType:mimeType
+                                    properties:properties
+                                      inFolder:folderObjectId
+                                 bytesExpected:bytesExpected
+                               completionBlock:completionBlock
+                                 progressBlock:progressBlock];
 }
 
 - (CMISRequest*)createDocumentFromInputStream:(NSInputStream *)inputStream
@@ -235,9 +331,32 @@
                          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;
+    NSString *objectUrl = [self getObjectUrlObjectId:objectId selector:kCMISBrowserJSONSelectorRenditions];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterRenditionFilter value:renditionFilter urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterMaxItems value:[maxItems stringValue] urlString:objectUrl];
+    objectUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterSkipCount value:[skipCount stringValue] urlString:objectUrl];
+    
+    CMISRequest *cmisRequest = [[CMISRequest alloc] init];
+    
+    [self.bindingSession.networkProvider invokeGET:[NSURL URLWithString:objectUrl]
+                                           session:self.bindingSession
+                                       cmisRequest:cmisRequest
+                                   completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {
+                                       if (httpResponse.statusCode == 200 && httpResponse.data) {
+                                           NSError *parsingError = nil;
+                                           NSArray *renditions = [CMISBrowserUtil renditionsFromJSONData:httpResponse.data error:&parsingError];
+                                           if (parsingError)
+                                           {
+                                               completionBlock(nil, parsingError);
+                                           } else {
+                                               completionBlock(renditions, nil);
+                                           }
+                                       } else {
+                                           completionBlock(nil, error);
+                                       }
+                                   }];
+    
+    return cmisRequest;
 }
 
 @end

Modified: 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=1588209&r1=1588208&r2=1588209&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserRepositoryService.m (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserRepositoryService.m Thu Apr 17 11:11:01 2014
@@ -26,7 +26,9 @@
 #import "CMISTypeDefinition.h"
 #import "CMISPropertyDefinition.h"
 #import "CMISBrowserUtil.h"
+#import "CMISConstants.h"
 #import "CMISBrowserConstants.h"
+#import "CMISURLUtil.h"
 
 @interface CMISBrowserRepositoryService ()
 @property (nonatomic, strong) NSDictionary *repositories;
@@ -90,15 +92,12 @@
 - (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];
+    NSString *repoUrl = [self getRepositoryUrlWithSelector:kCMISBrowserJSONSelectorTypeDefinition];
+    repoUrl = [CMISURLUtil urlStringByAppendingParameter:kCMISParameterTypeId value:typeId urlString:repoUrl];
     
-    NSURL *typeUrl = [NSURL URLWithString:urlString];
-    
-    CMISRequest *cmisRequest = [CMISRequest new];
+    CMISRequest *cmisRequest = [[CMISRequest alloc] init];
     
-    [self.bindingSession.networkProvider invokeGET:typeUrl
+    [self.bindingSession.networkProvider invokeGET:[NSURL URLWithString:repoUrl]
                                            session:self.bindingSession
                                        cmisRequest:cmisRequest
                                    completionBlock:^(CMISHttpResponse *httpResponse, NSError *error) {

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=1588209&r1=1588208&r2=1588209&view=diff
==============================================================================
--- chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserUtil.h (original)
+++ chemistry/objectivecmis/branches/browser-binding/ObjectiveCMIS/Bindings/Browser/CMISBrowserUtil.h Thu Apr 17 11:11:01 2014
@@ -45,4 +45,9 @@
  */
 + (CMISObjectList *)objectListFromJSONData:(NSData *)jsonData error:(NSError **)outError;
 
+/**
+ Returns an array of CMISRenditionData objects, parsed from the given JSON data.
+ */
++ (NSArray *)renditionsFromJSONData:(NSData *)jsonData error:(NSError **)outError;
+
 @end