public function parse(array $data, ParsingDispatcher $parsingDispatcher)
{
// Since ContentTypeGroupInput is used both for creating and updating ContentTypeGroup and identifier is not
// required when updating ContentTypeGroup, we need to rely on PAPI to throw the exception on missing
// identifier when creating a ContentTypeGroup
// @todo Bring in line with XSD which says that identifier is required always
$contentTypeGroupIdentifier = null;
if (array_key_exists('identifier', $data)) {
$contentTypeGroupIdentifier = $data['identifier'];
}
$contentTypeGroupCreateStruct = $this->contentTypeService->newContentTypeGroupCreateStruct($contentTypeGroupIdentifier);
if (array_key_exists('modificationDate', $data)) {
$contentTypeGroupCreateStruct->creationDate = new DateTime($data['modificationDate']);
}
// @todo mainLanguageCode, names, descriptions?
if (array_key_exists('User', $data) && is_array($data['User'])) {
if (!array_key_exists('_href', $data['User'])) {
throw new Exceptions\Parser("Missing '_href' attribute for User element in ContentTypeGroupInput.");
}
$contentTypeGroupCreateStruct->creatorId = $this->requestParser->parseHref($data['User']['_href'], 'userId');
}
return $contentTypeGroupCreateStruct;
}