Commit b49c3655dc75599592edae0c5f4b284aa6e70ea6
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
Showing
6 changed files
with
26 additions
and
77 deletions
lib/api/ktcmis/ktRepositoryService.inc.php
| ... | ... | @@ -68,16 +68,10 @@ class KTRepositoryService extends KTCMISBase { |
| 68 | 68 | * |
| 69 | 69 | * @return repositoryList[] |
| 70 | 70 | */ |
| 71 | + // TODO error handling | |
| 71 | 72 | public function getRepositories() |
| 72 | 73 | { |
| 73 | 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 | 76 | // extract the required info fields into array format for easy encoding; |
| 83 | 77 | $count = 0; |
| ... | ... | @@ -86,14 +80,10 @@ class KTRepositoryService extends KTCMISBase { |
| 86 | 80 | { |
| 87 | 81 | $repositoryList[$count]['repositoryId'] = $repository->getRepositoryId(); |
| 88 | 82 | $repositoryList[$count]['repositoryName'] = $repository->getRepositoryName(); |
| 89 | - //$repositoryList[$count]['repositoryURI'] = $repository->getRepositoryURI(); | |
| 90 | 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 | 91 | * |
| 102 | 92 | * @param string $repositoryId |
| 103 | 93 | */ |
| 94 | + // TODO error handling | |
| 104 | 95 | public function getRepositoryInfo($repositoryId) |
| 105 | 96 | { |
| 106 | 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 | 99 | // TODO output this manually, the function works but only for some objects so rather avoid it completely? |
| 116 | 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 | 114 | $repositoryObjectTypeResult = $this->RepositoryService->getTypes($repositoryId, $typeId, $returnPropertyDefinitions, |
| 133 | 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 | 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 | 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 | 138 | $typeDefinition = $this->RepositoryService->getTypeDefinition($repositoryId, $typeId); |
| 169 | 139 | } |
| 170 | 140 | catch (Exception $e) { |
| 171 | - // propogate upward | |
| 172 | 141 | throw $e; |
| 173 | 142 | } |
| 174 | 143 | ... | ... |
lib/api/ktcmis/services/CMISRepositoryService.inc.php
| ... | ... | @@ -66,8 +66,7 @@ class CMISRepositoryService { |
| 66 | 66 | // TODO what if file does not exist? |
| 67 | 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 | 70 | $repositoryId = (string)$repositoryXML->repositoryInfo[0]->repositoryId; |
| 72 | 71 | $Repository = new CMISRepository($repositoryId, $repositoryXML); |
| 73 | 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 | 116 | $response = $ObjectService->getProperties($repositoryId, $folderId, false, false); |
| 117 | 117 | } |
| 118 | 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 | 120 | return null; |
| 122 | 121 | } |
| 123 | 122 | |
| ... | ... | @@ -134,8 +133,7 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service { |
| 134 | 133 | $response = $NavigationService->getFolderParent($repositoryId, $folderId, false, false, false); |
| 135 | 134 | } |
| 136 | 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 | 137 | return null; |
| 140 | 138 | } |
| 141 | 139 | |
| ... | ... | @@ -298,9 +296,7 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service { |
| 298 | 296 | $response = $ObjectService->deleteTree($repositoryId, $this->params[0], 'delete', true); |
| 299 | 297 | } |
| 300 | 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 | 300 | return null; |
| 305 | 301 | } |
| 306 | 302 | |
| ... | ... | @@ -350,8 +346,7 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service { |
| 350 | 346 | $entries = $NavigationService->getChildren($repositoryId, $folderId, false, false); |
| 351 | 347 | } |
| 352 | 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 | 350 | return null; |
| 356 | 351 | } |
| 357 | 352 | } |
| ... | ... | @@ -370,8 +365,7 @@ class KT_cmis_atom_service_folder extends KT_cmis_atom_service { |
| 370 | 365 | $entries = $NavigationService->getDescendants($repositoryId, $folderId, $depth); |
| 371 | 366 | } |
| 372 | 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 | 369 | return null; |
| 376 | 370 | } |
| 377 | 371 | } |
| ... | ... | @@ -618,8 +612,7 @@ class KT_cmis_atom_service_checkedout extends KT_cmis_atom_service { |
| 618 | 612 | $checkedout = $NavigationService->getCheckedOutDocs($repositoryId); |
| 619 | 613 | } |
| 620 | 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 | 616 | return null; |
| 624 | 617 | } |
| 625 | 618 | |
| ... | ... | @@ -712,10 +705,13 @@ class KT_cmis_atom_service_types extends KT_cmis_atom_service { |
| 712 | 705 | $RepositoryService = new KTRepositoryService(); |
| 713 | 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 | 716 | $type = ((empty($this->params[0])) ? 'all' : $this->params[0]); |
| 721 | 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 | 737 | $typeDefinition = $RepositoryService->getTypeDefinition($repositoryId, $type); |
| 742 | 738 | } |
| 743 | 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 | 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 | 21 | |
| 22 | 22 | $repositories = $RepositoryService->getRepositories(); |
| 23 | 23 | |
| 24 | - // hack for removing one level of access | |
| 25 | - $repositories = $repositories['results']; | |
| 26 | - | |
| 27 | 24 | // TODO handle multiple repositories |
| 28 | 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 | 49 | |
| 50 | 50 | // fetch data for response |
| 51 | 51 | $repositories = $RepositoryService->getRepositories(); |
| 52 | - | |
| 53 | - // hack for removing one level of access | |
| 54 | - $repositories = $repositories['results']; | |
| 55 | 52 | |
| 56 | 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 | 63 | // fetch data for response |
| 64 | 64 | $repositories = $RepositoryService->getRepositories(); |
| 65 | 65 | |
| 66 | - // hack for removing one level of access | |
| 67 | - $repositories = $repositories['results']; | |
| 68 | - | |
| 69 | 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 | 70 | protected function constructServiceDocumentHeaders() | ... | ... |