/** * handle exceptions * * @param Zend_Json_Server_Request_Http $request * @param Exception $exception * @return Zend_Json_Server_Response */ protected function _handleException($request, $exception) { $server = self::_getServer(); $exceptionData = method_exists($exception, 'toArray') ? $exception->toArray() : array(); $exceptionData['message'] = htmlentities($exception->getMessage(), ENT_COMPAT, 'UTF-8'); $exceptionData['code'] = $exception->getCode(); if ($exception instanceof Tinebase_Exception) { $exceptionData['appName'] = $exception->getAppName(); $exceptionData['title'] = $exception->getTitle(); } Tinebase_Core::getLogger()->warn(__METHOD__ . '::' . __LINE__ . ' ' . get_class($exception) . ' -> ' . $exception->getMessage()); $suppressTrace = Tinebase_Core::getConfig()->suppressExceptionTraces; if ($suppressTrace !== TRUE) { $exceptionData['trace'] = Tinebase_Exception::getTraceAsArray($exception); } Tinebase_Exception::log($exception, $suppressTrace); $server->fault($exceptionData['message'], $exceptionData['code'], $exceptionData); $response = $server->getResponse(); if (null !== ($id = $request->getId())) { $response->setId($id); } if (null !== ($version = $request->getVersion())) { $response->setVersion($version); } return $response; }