public function parse(array $data, ParsingDispatcher $parsingDispatcher)
{
$restViewInput = new RestViewInput();
// identifier
if (!array_key_exists('identifier', $data)) {
throw new Exceptions\Parser('Missing <identifier> attribute for <ViewInput>.');
}
$restViewInput->identifier = $data['identifier'];
// query
if (array_key_exists('ContentQuery', $data) && is_array($data['ContentQuery'])) {
$queryData = $data['ContentQuery'];
$queryMediaType = 'application/vnd.ez.api.internal.ContentQuery';
}
if (array_key_exists('LocationQuery', $data) && is_array($data['LocationQuery'])) {
$queryData = $data['LocationQuery'];
$queryMediaType = 'application/vnd.ez.api.internal.LocationQuery';
}
if (!isset($queryMediaType) || !isset($queryData)) {
throw new Exceptions\Parser('Missing <ContentQuery> or <LocationQuery> attribute for <ViewInput>.');
}
$restViewInput->query = $parsingDispatcher->parse($queryData, $queryMediaType);
return $restViewInput;
}