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