public function parse(array $data, ParsingDispatcher $parsingDispatcher)
{
$policyUpdate = $this->roleService->newPolicyUpdateStruct();
// @todo XSD says that limitations field is mandatory, but
// it needs to be possible to remove limitations from policy
if (array_key_exists('limitations', $data)) {
if (!is_array($data['limitations'])) {
throw new Exceptions\Parser("Invalid format for 'limitations' in PolicyUpdate.");
}
if (!isset($data['limitations']['limitation']) || !is_array($data['limitations']['limitation'])) {
throw new Exceptions\Parser("Invalid format for 'limitations' in PolicyUpdate.");
}
foreach ($data['limitations']['limitation'] as $limitationData) {
$policyUpdate->addLimitation($this->parserTools->parseLimitation($limitationData));
}
}
return $policyUpdate;
}