Commit b49c3655dc75599592edae0c5f4b284aa6e70ea6

Authored by Paul Barrett
1 parent 52a9d9ac

CMIS Repository Services bubbling up exceptions and applying status code mapping

Story ID:2713417. CMIS working with PHP client

Committed by: Paul Barrett
lib/api/ktcmis/ktRepositoryService.inc.php
@@ -68,16 +68,10 @@ class KTRepositoryService extends KTCMISBase { @@ -68,16 +68,10 @@ class KTRepositoryService extends KTCMISBase {
68 * 68 *
69 * @return repositoryList[] 69 * @return repositoryList[]
70 */ 70 */
  71 + // TODO error handling
71 public function getRepositories() 72 public function getRepositories()
72 { 73 {
73 $repositories = $this->RepositoryService->getRepositories(); 74 $repositories = $this->RepositoryService->getRepositories();
74 - if (PEAR::isError($repositories))  
75 - {  
76 - return array(  
77 - "status_code" => 1,  
78 - "message" => "Failed getting repositories"  
79 - );  
80 - }  
81 75
82 // extract the required info fields into array format for easy encoding; 76 // extract the required info fields into array format for easy encoding;
83 $count = 0; 77 $count = 0;
@@ -86,14 +80,10 @@ class KTRepositoryService extends KTCMISBase { @@ -86,14 +80,10 @@ class KTRepositoryService extends KTCMISBase {
86 { 80 {
87 $repositoryList[$count]['repositoryId'] = $repository->getRepositoryId(); 81 $repositoryList[$count]['repositoryId'] = $repository->getRepositoryId();
88 $repositoryList[$count]['repositoryName'] = $repository->getRepositoryName(); 82 $repositoryList[$count]['repositoryName'] = $repository->getRepositoryName();
89 - //$repositoryList[$count]['repositoryURI'] = $repository->getRepositoryURI();  
90 ++$count; 83 ++$count;
91 } 84 }
92 85
93 - return array(  
94 - "status_code" => 0,  
95 - "results" => $repositoryList  
96 - ); 86 + return $repositoryList;
97 } 87 }
98 88
99 /** 89 /**
@@ -101,23 +91,15 @@ class KTRepositoryService extends KTCMISBase { @@ -101,23 +91,15 @@ class KTRepositoryService extends KTCMISBase {
101 * 91 *
102 * @param string $repositoryId 92 * @param string $repositoryId
103 */ 93 */
  94 + // TODO error handling
104 public function getRepositoryInfo($repositoryId) 95 public function getRepositoryInfo($repositoryId)
105 { 96 {
106 $repositoryInfo = $this->RepositoryService->getRepositoryInfo($repositoryId); 97 $repositoryInfo = $this->RepositoryService->getRepositoryInfo($repositoryId);
107 - if (PEAR::isError($repositoryInfo))  
108 - {  
109 - return array(  
110 - "status_code" => 1,  
111 - "message" => "Failed getting repository information"  
112 - );  
113 - }  
114 98
115 // TODO output this manually, the function works but only for some objects so rather avoid it completely? 99 // TODO output this manually, the function works but only for some objects so rather avoid it completely?
116 // NOTE the problems appear to be due to recursive objects 100 // NOTE the problems appear to be due to recursive objects
117 - return array (  
118 - "status_code" => 0,  
119 - "results" => CMISUtil::objectToArray($repositoryInfo)  
120 - ); 101 + $repositoryInfo = CMISUtil::objectToArray($repositoryInfo);
  102 + return $repositoryInfo;
121 } 103 }
122 104
123 /** 105 /**
@@ -132,28 +114,16 @@ class KTRepositoryService extends KTCMISBase { @@ -132,28 +114,16 @@ class KTRepositoryService extends KTCMISBase {
132 $repositoryObjectTypeResult = $this->RepositoryService->getTypes($repositoryId, $typeId, $returnPropertyDefinitions, 114 $repositoryObjectTypeResult = $this->RepositoryService->getTypes($repositoryId, $typeId, $returnPropertyDefinitions,
133 $maxItems, $skipCount, $hasMoreItems); 115 $maxItems, $skipCount, $hasMoreItems);
134 } 116 }
135 - catch (Exception $e)  
136 - {  
137 - return array(  
138 - "status_code" => 1,  
139 - "message" => $e->getMessage()  
140 - ); 117 + catch (Exception $e) {
  118 + throw $e;
141 } 119 }
142 120
143 // format as array style output 121 // format as array style output
144 - // NOTE only concerned with attributes at this time  
145 - // TODO add support for properties  
146 - foreach($repositoryObjectTypeResult as $key => $objectType)  
147 - { 122 + foreach($repositoryObjectTypeResult as $key => $objectType) {
148 $repositoryObjectTypes[$key] = $objectType['attributes']; 123 $repositoryObjectTypes[$key] = $objectType['attributes'];
149 - // TODO properties  
150 - // $repositoryObjectTypes[$key]['properties'] = $objectType['properties'];  
151 } 124 }
152 125
153 - return array (  
154 - "status_code" => 0,  
155 - "results" => $repositoryObjectTypes  
156 - ); 126 + return $repositoryObjectTypes;
157 } 127 }
158 128
159 /** 129 /**
@@ -168,7 +138,6 @@ class KTRepositoryService extends KTCMISBase { @@ -168,7 +138,6 @@ class KTRepositoryService extends KTCMISBase {
168 $typeDefinition = $this->RepositoryService->getTypeDefinition($repositoryId, $typeId); 138 $typeDefinition = $this->RepositoryService->getTypeDefinition($repositoryId, $typeId);
169 } 139 }
170 catch (Exception $e) { 140 catch (Exception $e) {
171 - // propogate upward  
172 throw $e; 141 throw $e;
173 } 142 }
174 143
lib/api/ktcmis/services/CMISRepositoryService.inc.php
@@ -66,8 +66,7 @@ class CMISRepositoryService { @@ -66,8 +66,7 @@ class CMISRepositoryService {
66 // TODO what if file does not exist? 66 // TODO what if file does not exist?
67 $xml = simplexml_load_file(CMIS_DIR . '/config/repositories.xml'); 67 $xml = simplexml_load_file(CMIS_DIR . '/config/repositories.xml');
68 68
69 - foreach($xml->repository as $repositoryXML)  
70 - { 69 + foreach($xml->repository as $repositoryXML) {
71 $repositoryId = (string)$repositoryXML->repositoryInfo[0]->repositoryId; 70 $repositoryId = (string)$repositoryXML->repositoryInfo[0]->repositoryId;
72 $Repository = new CMISRepository($repositoryId, $repositoryXML); 71 $Repository = new CMISRepository($repositoryId, $repositoryXML);
73 $repositories[] = $Repository; 72 $repositories[] = $Repository;
webservice/atompub/cmis/KT_cmis_atom_server.services.inc.php
@@ -116,8 +116,7 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service { @@ -116,8 +116,7 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service {
116 $response = $ObjectService->getProperties($repositoryId, $folderId, false, false); 116 $response = $ObjectService->getProperties($repositoryId, $folderId, false, false);
117 } 117 }
118 catch (Exception $e) { 118 catch (Exception $e) {
119 - $feed = KT_cmis_atom_service_helper::getErrorFeed($this, $this->getStatusCode($e), $e->getMessage());  
120 - $this->responseFeed = $feed; 119 + $this->responseFeed = KT_cmis_atom_service_helper::getErrorFeed($this, $this->getStatusCode($e), $e->getMessage());
121 return null; 120 return null;
122 } 121 }
123 122
@@ -134,8 +133,7 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service { @@ -134,8 +133,7 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service {
134 $response = $NavigationService->getFolderParent($repositoryId, $folderId, false, false, false); 133 $response = $NavigationService->getFolderParent($repositoryId, $folderId, false, false, false);
135 } 134 }
136 catch (Exception $e) { 135 catch (Exception $e) {
137 - $feed = KT_cmis_atom_service_helper::getErrorFeed($this, $this->getStatusCode($e), $e->getMessage());  
138 - $this->responseFeed = $feed; 136 + $this->responseFeed = KT_cmis_atom_service_helper::getErrorFeed($this, $this->getStatusCode($e), $e->getMessage());
139 return null; 137 return null;
140 } 138 }
141 139
@@ -298,9 +296,7 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service { @@ -298,9 +296,7 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service {
298 $response = $ObjectService->deleteTree($repositoryId, $this->params[0], 'delete', true); 296 $response = $ObjectService->deleteTree($repositoryId, $this->params[0], 'delete', true);
299 } 297 }
300 catch (Exception $e) { 298 catch (Exception $e) {
301 - $feed = KT_cmis_atom_service_helper::getErrorFeed($this, $this->getStatusCode($e), $e->getMessage());  
302 - // Expose the responseFeed  
303 - $this->responseFeed = $feed; 299 + $this->responseFeed = KT_cmis_atom_service_helper::getErrorFeed($this, $this->getStatusCode($e), $e->getMessage());
304 return null; 300 return null;
305 } 301 }
306 302
@@ -350,8 +346,7 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service { @@ -350,8 +346,7 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service {
350 $entries = $NavigationService->getChildren($repositoryId, $folderId, false, false); 346 $entries = $NavigationService->getChildren($repositoryId, $folderId, false, false);
351 } 347 }
352 catch (Exception $e) { 348 catch (Exception $e) {
353 - $feed = KT_cmis_atom_service_helper::getErrorFeed($this, $this->getStatusCode($e), $e->getMessage());  
354 - $this->responseFeed = $feed; 349 + $this->responseFeed = KT_cmis_atom_service_helper::getErrorFeed($this, $this->getStatusCode($e), $e->getMessage());
355 return null; 350 return null;
356 } 351 }
357 } 352 }
@@ -370,8 +365,7 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service { @@ -370,8 +365,7 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service {
370 $entries = $NavigationService->getDescendants($repositoryId, $folderId, $depth); 365 $entries = $NavigationService->getDescendants($repositoryId, $folderId, $depth);
371 } 366 }
372 catch (Exception $e) { 367 catch (Exception $e) {
373 - $feed = KT_cmis_atom_service_helper::getErrorFeed($this, $this->getStatusCode($e), $e->getMessage());  
374 - $this->responseFeed = $feed; 368 + $this->responseFeed = KT_cmis_atom_service_helper::getErrorFeed($this, $this->getStatusCode($e), $e->getMessage());
375 return null; 369 return null;
376 } 370 }
377 } 371 }
@@ -618,8 +612,7 @@ class KT_cmis_atom_service_checkedout extends KT_cmis_atom_service { @@ -618,8 +612,7 @@ class KT_cmis_atom_service_checkedout extends KT_cmis_atom_service {
618 $checkedout = $NavigationService->getCheckedOutDocs($repositoryId); 612 $checkedout = $NavigationService->getCheckedOutDocs($repositoryId);
619 } 613 }
620 catch (Exception $e) { 614 catch (Exception $e) {
621 - $feed = KT_cmis_atom_service_helper::getErrorFeed($this, $this->getStatusCode($e), $e->getMessage());  
622 - $this->responseFeed = $feed; 615 + $this->responseFeed = KT_cmis_atom_service_helper::getErrorFeed($this, $this->getStatusCode($e), $e->getMessage());
623 return null; 616 return null;
624 } 617 }
625 618
@@ -712,10 +705,13 @@ class KT_cmis_atom_service_types extends KT_cmis_atom_service { @@ -712,10 +705,13 @@ class KT_cmis_atom_service_types extends KT_cmis_atom_service {
712 $RepositoryService = new KTRepositoryService(); 705 $RepositoryService = new KTRepositoryService();
713 $repositoryId = KT_cmis_atom_service_helper::getRepositoryId($RepositoryService); 706 $repositoryId = KT_cmis_atom_service_helper::getRepositoryId($RepositoryService);
714 707
715 - $types = $RepositoryService->getTypes($repositoryId);  
716 -  
717 - // hack for removing one level of access  
718 - $types = $types['results']; 708 + try {
  709 + $types = $RepositoryService->getTypes($repositoryId);
  710 + }
  711 + catch (Exception $e) {
  712 + $this->responseFeed = KT_cmis_atom_service_helper::getErrorFeed($this, $this->getStatusCode($e), $e->getMessage());
  713 + return null;
  714 + }
719 715
720 $type = ((empty($this->params[0])) ? 'all' : $this->params[0]); 716 $type = ((empty($this->params[0])) ? 'all' : $this->params[0]);
721 $feed = KT_cmis_atom_service_helper::getTypeFeed($type, $types); 717 $feed = KT_cmis_atom_service_helper::getTypeFeed($type, $types);
@@ -741,9 +737,7 @@ class KT_cmis_atom_service_type extends KT_cmis_atom_service { @@ -741,9 +737,7 @@ class KT_cmis_atom_service_type extends KT_cmis_atom_service {
741 $typeDefinition = $RepositoryService->getTypeDefinition($repositoryId, $type); 737 $typeDefinition = $RepositoryService->getTypeDefinition($repositoryId, $type);
742 } 738 }
743 catch (Exception $e) { 739 catch (Exception $e) {
744 - $feed = KT_cmis_atom_service_helper::getErrorFeed($this, self::STATUS_SERVER_ERROR, $e->getMessage());  
745 - // Expose the responseFeed  
746 - $this->responseFeed = $feed; 740 + $this->responseFeed = KT_cmis_atom_service_helper::getErrorFeed($this, $this->getStatusCode($e), $e->getMessage());
747 return null; 741 return null;
748 } 742 }
749 743
webservice/atompub/cmis/KT_cmis_atom_service_helper.inc.php
@@ -21,9 +21,6 @@ class KT_cmis_atom_service_helper { @@ -21,9 +21,6 @@ class KT_cmis_atom_service_helper {
21 21
22 $repositories = $RepositoryService->getRepositories(); 22 $repositories = $RepositoryService->getRepositories();
23 23
24 - // hack for removing one level of access  
25 - $repositories = $repositories['results'];  
26 -  
27 // TODO handle multiple repositories 24 // TODO handle multiple repositories
28 self::$repositoryId = $repositories[0]['repositoryId']; 25 self::$repositoryId = $repositories[0]['repositoryId'];
29 } 26 }
webservice/classes/atompub/cmis/KT_cmis_atom_server.inc.php
@@ -49,14 +49,9 @@ class KT_cmis_atom_server extends KT_atom_server { @@ -49,14 +49,9 @@ class KT_cmis_atom_server extends KT_atom_server {
49 49
50 // fetch data for response 50 // fetch data for response
51 $repositories = $RepositoryService->getRepositories(); 51 $repositories = $RepositoryService->getRepositories();
52 -  
53 - // hack for removing one level of access  
54 - $repositories = $repositories['results'];  
55 52
56 // fetch for default first repo; NOTE that this will probably have to change at some point, quick and dirty for now 53 // fetch for default first repo; NOTE that this will probably have to change at some point, quick and dirty for now
57 - // hack for removing one level of access  
58 - $repositoryInfo = $RepositoryService->getRepositoryInfo($repositories[0]['repositoryId']);  
59 - $this->repositoryInfo = $repositoryInfo['results']; 54 + $this->repositoryInfo = $RepositoryService->getRepositoryInfo($repositories[0]['repositoryId']);
60 } 55 }
61 } 56 }
62 57
webservice/classes/atompub/cmis/KT_cmis_atom_serviceDoc.inc.php
@@ -63,13 +63,8 @@ class KT_cmis_atom_serviceDoc extends KT_atom_serviceDoc { @@ -63,13 +63,8 @@ class KT_cmis_atom_serviceDoc extends KT_atom_serviceDoc {
63 // fetch data for response 63 // fetch data for response
64 $repositories = $RepositoryService->getRepositories(); 64 $repositories = $RepositoryService->getRepositories();
65 65
66 - // hack for removing one level of access  
67 - $repositories = $repositories['results'];  
68 -  
69 // fetch for default first repo; NOTE that this will probably have to change at some point, quick and dirty for now 66 // fetch for default first repo; NOTE that this will probably have to change at some point, quick and dirty for now
70 - // hack for removing one level of access  
71 - $repositoryInfo = $RepositoryService->getRepositoryInfo($repositories[0]['repositoryId']);  
72 - $this->repositoryInfo = $repositoryInfo['results']; 67 + $this->repositoryInfo = $RepositoryService->getRepositoryInfo($repositories[0]['repositoryId']);
73 } 68 }
74 69
75 protected function constructServiceDocumentHeaders() 70 protected function constructServiceDocumentHeaders()