/**
* Visit struct returned by controllers.
*
* @param \eZ\Publish\Core\REST\Common\Output\Visitor $visitor
* @param \eZ\Publish\Core\REST\Common\Output\Generator $generator
* @param \eZ\Publish\API\Repository\Values\Content\URLAlias $data
*/
public function visit(Visitor $visitor, Generator $generator, $data)
{
$generator->startObjectElement('UrlAlias');
$visitor->setHeader('Content-Type', $generator->getMediaType('UrlAlias'));
$generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadURLAlias', array('urlAliasId' => $data->id)));
$generator->endAttribute('href');
$generator->startAttribute('id', $data->id);
$generator->endAttribute('id');
$generator->startAttribute('type', $this->serializeType($data->type));
$generator->endAttribute('type');
if ($data->type === Values\Content\URLAlias::LOCATION) {
$generator->startObjectElement('location', 'Location');
$generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadLocation', array('locationPath' => $data->destination)));
$generator->endAttribute('href');
$generator->endObjectElement('location');
} else {
$generator->startValueElement('resource', $data->destination);
$generator->endValueElement('resource');
}
$generator->startValueElement('path', $data->path);
$generator->endValueElement('path');
$generator->startValueElement('languageCodes', implode(',', $data->languageCodes));
$generator->endValueElement('languageCodes');
$generator->startValueElement('alwaysAvailable', $this->serializeBool($generator, $data->alwaysAvailable));
$generator->endValueElement('alwaysAvailable');
$generator->startValueElement('isHistory', $this->serializeBool($generator, $data->isHistory));
$generator->endValueElement('isHistory');
$generator->startValueElement('forward', $this->serializeBool($generator, $data->forward));
$generator->endValueElement('forward');
$generator->startValueElement('custom', $this->serializeBool($generator, $data->isCustom));
$generator->endValueElement('custom');
$generator->endObjectElement('UrlAlias');
}