public function parse(array $data, ParsingDispatcher $parsingDispatcher)
{
$roleLimitation = null;
if (array_key_exists('limitation', $data)) {
$limitation = $parsingDispatcher->parse($data['limitation'], $data['limitation']['_media-type']);
switch ($limitation->getIdentifier()) {
case APILimitation::SECTION:
$roleLimitation = new \eZ\Publish\API\Repository\Values\User\Limitation\SectionLimitation();
break;
case APILimitation::SUBTREE:
$roleLimitation = new \eZ\Publish\API\Repository\Values\User\Limitation\SubtreeLimitation();
break;
default:
throw new \eZ\Publish\Core\Base\Exceptions\NotFoundException('RoleLimitation', $limitation->getIdentifier());
}
$roleLimitation->limitationValues = $limitation->limitationValues;
}
return new Client\Values\User\RoleAssignment(array('role' => $parsingDispatcher->parse($data['Role'], $data['Role']['_media-type']), 'limitation' => $roleLimitation));
}