/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetListContext $context */ $documentBuilder = $this->documentBuilderFactory->createDocumentBuilder(); try { if ($context->hasErrors()) { $documentBuilder->setErrorCollection($context->getErrors()); // remove errors from the Context to avoid processing them by other processors $context->resetErrors(); } elseif ($context->hasResult()) { $result = $context->getResult(); if (empty($result)) { $documentBuilder->setDataCollection($result); } else { $documentBuilder->setDataCollection($result, $context->getMetadata()); } } $context->setResult($documentBuilder->getDocument()); } catch (\Exception $e) { $context->setResponseStatusCode(Response::HTTP_INTERNAL_SERVER_ERROR); $error = new Error(); $error->setInnerException($e); $documentBuilder = $this->documentBuilderFactory->createDocumentBuilder(); $documentBuilder->setErrorObject($error); $context->setResult($documentBuilder->getDocument()); } }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var $context Context */ /** @var $context Context */ if (null !== $context->getResponseStatusCode()) { // the status code is already set return; } $statusCode = Response::HTTP_OK; if ($context->hasErrors()) { $groupedCodes = []; foreach ($context->getErrors() as $error) { $code = $error->getStatusCode() ?: Response::HTTP_INTERNAL_SERVER_ERROR; $groupCode = (int) floor($code / 100) * 100; $groupedCodes[$groupCode][] = $code; } if (!empty($groupedCodes)) { $maxGroup = max(array_keys($groupedCodes)); $statusCode = $maxGroup; if (count($groupedCodes[$maxGroup]) === 1) { $statusCode = array_pop($groupedCodes[$maxGroup]); } } else { $statusCode = Response::HTTP_INTERNAL_SERVER_ERROR; } } $context->setResponseStatusCode($statusCode); }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var Context $context */ if (!$context->hasErrors()) { // no errors return; } $errors = $context->getErrors(); $error = $errors[0]; $exception = $error->getInnerException(); if (null !== $exception) { $underlyingException = ExceptionUtil::getProcessorUnderlyingException($exception); if ($underlyingException instanceof HttpExceptionInterface) { $exception = $underlyingException; } } else { $message = $error->getDetail(); if (empty($message)) { $message = $error->getTitle(); } if (empty($message)) { $message = 'Unknown error.'; } $exception = new \RuntimeException($message); } throw $exception; }
/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var Context $context */ if (!$context->hasErrors()) { // no errors return; } $errors = $context->getErrors(); $context->resetErrors(); foreach ($errors as $error) { $error->trans($this->translator); $context->addError($error); } }