public function visit(Visitor $visitor, Generator $generator, $data)
{
$status = $data->created ? 201 : 200;
$visitor->setStatus($status);
$visitor->setHeader('Content-Type', $generator->getMediaType('Session'));
$sessionHref = $this->router->generate('ezpublish_rest_deleteSession', array('sessionId' => $data->sessionId));
//@todo Needs refactoring, disabling certain headers should not be done this way
$visitor->setHeader('Accept-Patch', false);
$generator->startObjectElement('Session');
$generator->startAttribute('href', $sessionHref);
$generator->endAttribute('href');
$generator->startValueElement('name', $data->sessionName);
$generator->endValueElement('name');
$generator->startValueElement('identifier', $data->sessionId);
$generator->endValueElement('identifier');
$generator->startValueElement('csrfToken', $data->csrfToken);
$generator->endValueElement('csrfToken');
$generator->startObjectElement('User', 'User');
$generator->startAttribute('href', $this->router->generate('ezpublish_rest_loadUser', array('userId' => $data->user->id)));
$generator->endAttribute('href');
$generator->endObjectElement('User');
$generator->endObjectElement('Session');
}