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,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() |