/**
  * Update a Content Type Group object
  *
  * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException if the user is not allowed to create a content type group
  * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException If the given identifier (if set) already exists
  *
  * @param \eZ\Publish\API\Repository\Values\ContentType\ContentTypeGroup $contentTypeGroup the content type group to be updated
  * @param \eZ\Publish\API\Repository\Values\ContentType\ContentTypeGroupUpdateStruct $contentTypeGroupUpdateStruct
  */
 public function updateContentTypeGroup(APIContentTypeGroup $contentTypeGroup, ContentTypeGroupUpdateStruct $contentTypeGroupUpdateStruct)
 {
     if ($this->repository->hasAccess('class', 'update') !== true) {
         throw new UnauthorizedException('ContentType', 'update');
     }
     $loadedContentTypeGroup = $this->loadContentTypeGroup($contentTypeGroup->id);
     if ($contentTypeGroupUpdateStruct->identifier !== null && $contentTypeGroupUpdateStruct->identifier !== $loadedContentTypeGroup->identifier) {
         try {
             $this->loadContentTypeGroupByIdentifier($contentTypeGroupUpdateStruct->identifier);
             throw new InvalidArgumentException('$contentTypeGroupUpdateStruct->identifier', "given identifier already exists");
         } catch (APINotFoundException $e) {
             // Do nothing
         }
     }
     if ($contentTypeGroupUpdateStruct->modificationDate !== null) {
         $modifiedTimestamp = $contentTypeGroupUpdateStruct->modificationDate->getTimestamp();
     } else {
         $modifiedTimestamp = time();
     }
     $spiGroupUpdateStruct = new SPIContentTypeGroupUpdateStruct(array("id" => $loadedContentTypeGroup->id, "identifier" => $contentTypeGroupUpdateStruct->identifier === null ? $loadedContentTypeGroup->identifier : $contentTypeGroupUpdateStruct->identifier, "modified" => $modifiedTimestamp, "modifierId" => $contentTypeGroupUpdateStruct->modifierId === null ? $this->repository->getCurrentUser()->id : $contentTypeGroupUpdateStruct->modifierId));
     $this->repository->beginTransaction();
     try {
         $this->contentTypeHandler->updateGroup($spiGroupUpdateStruct);
         $this->repository->commit();
     } catch (Exception $e) {
         $this->repository->rollback();
         throw $e;
     }
 }
 /**
  * @param \eZ\Publish\SPI\Persistence\Content\Type\Group\UpdateStruct $struct
  * @return \eZ\Publish\SPI\Persistence\Content\Type\Group
  */
 public function updateGroup(GroupUpdateStruct $struct)
 {
     $this->clearCache();
     return $this->innerHandler->updateGroup($struct);
 }