public function visit(Visitor $visitor, Generator $generator, $data)
{
$generator->startObjectElement('ErrorMessage');
$statusCode = $this->getStatus();
$visitor->setStatus($statusCode);
$visitor->setHeader('Content-Type', $generator->getMediaType('ErrorMessage'));
$generator->startValueElement('errorCode', $statusCode);
$generator->endValueElement('errorCode');
$generator->startValueElement('errorMessage', $this->httpStatusCodes[$statusCode]);
$generator->endValueElement('errorMessage');
if ($data instanceof Translatable && $this->translator) {
/** @Ignore */
$errorDescription = $this->translator->trans($data->getMessageTemplate(), $data->getParameters(), 'repository_exceptions');
} else {
$errorDescription = $data->getMessage();
}
$generator->startValueElement('errorDescription', $errorDescription);
$generator->endValueElement('errorDescription');
if ($this->debug) {
$generator->startValueElement('trace', $data->getTraceAsString());
$generator->endValueElement('trace');
$generator->startValueElement('file', $data->getFile());
$generator->endValueElement('file');
$generator->startValueElement('line', $data->getLine());
$generator->endValueElement('line');
}
if ($previous = $data->getPrevious()) {
$generator->startObjectElement('Previous', 'ErrorMessage');
$visitor->visitValueObject($previous);
$generator->endObjectElement('Previous');
}
$generator->endObjectElement('ErrorMessage');
}