/**
  * @param mixed $groupId
  * @return Group
  * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException If type group with $groupId is not found
  */
 public function loadGroup($groupId)
 {
     if (isset($this->groups[$groupId])) {
         return $this->groups[$groupId];
     }
     return $this->groups[$groupId] = $this->innerHandler->loadGroup($groupId);
 }
    /**
     * Get a Content Type Group object by id
     *
     * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException If group can not be found
     *
     * @param mixed $contentTypeGroupId
     *
     * @return \eZ\Publish\API\Repository\Values\ContentType\ContentTypeGroup
     */
    public function loadContentTypeGroup( $contentTypeGroupId )
    {
        $spiGroup = $this->contentTypeHandler->loadGroup(
            $contentTypeGroupId
        );

        return $this->buildContentTypeGroupDomainObject( $spiGroup );
    }
 /**
  * Creates a draft from an existing content type.
  *
  * This is a complete copy of the content
  * type which has the state STATUS_DRAFT.
  *
  * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException if the user is not allowed to edit a content type
  * @throws \eZ\Publish\API\Repository\Exceptions\BadStateException If there is already a draft assigned to another user
  *
  * @param \eZ\Publish\API\Repository\Values\ContentType\ContentType $contentType
  *
  * @return \eZ\Publish\API\Repository\Values\ContentType\ContentTypeDraft
  */
 public function createContentTypeDraft(APIContentType $contentType)
 {
     if ($this->repository->hasAccess('class', 'create') !== true) {
         throw new UnauthorizedException('ContentType', 'create');
     }
     try {
         $this->contentTypeHandler->load($contentType->id, SPIContentType::STATUS_DRAFT);
         throw new BadStateException('$contentType', 'Draft of the ContentType already exists');
     } catch (APINotFoundException $e) {
         $this->repository->beginTransaction();
         try {
             $spiContentType = $this->contentTypeHandler->createDraft($this->repository->getCurrentUserReference()->getUserId(), $contentType->id);
             $this->repository->commit();
         } catch (Exception $e) {
             $this->repository->rollback();
             throw $e;
         }
     }
     return $this->contentTypeDomainMapper->buildContentTypeDraftDomainObject($spiContentType, array_map(function ($id) {
         return $this->contentTypeHandler->loadGroup($id);
     }, $spiContentType->groupIds));
 }