예제 #1
0
 /**
  * Parses the given $objectElement, if it contains embedded data
  *
  * @param array $objectElement
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @return mixed
  */
 public function parseObjectElement(array $objectElement, ParsingDispatcher $parsingDispatcher)
 {
     if ($this->isEmbeddedObject($objectElement)) {
         $parsingDispatcher->parse($objectElement, $objectElement['_media-type']);
     }
     return $objectElement['_href'];
 }
 /**
  * Parse input structure
  *
  * @param array $data
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @todo Error handling
  *
  * @return \eZ\Publish\API\Repository\Values\ObjectState\ObjectStateGroup[]
  */
 public function parse(array $data, ParsingDispatcher $parsingDispatcher)
 {
     $groups = array();
     foreach ($data['ObjectStateGroup'] as $rawGroupData) {
         $groups[] = $parsingDispatcher->parse($rawGroupData, $rawGroupData['_media-type']);
     }
     return $groups;
 }
예제 #3
0
 /**
  * Parse input structure.
  *
  * @param array $data
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @todo Error handling
  *
  * @return \eZ\Publish\API\Repository\Values\Content\Section[]
  */
 public function parse(array $data, ParsingDispatcher $parsingDispatcher)
 {
     $sections = array();
     foreach ($data['Section'] as $rawSectionData) {
         $sections[] = $parsingDispatcher->parse($rawSectionData, $rawSectionData['_media-type']);
     }
     return $sections;
 }
 /**
  * Parse input structure.
  *
  * @param array $data
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @todo Error handling
  *
  * @return \eZ\Publish\API\Repository\Values\Content\Section[]
  */
 public function parse(array $data, ParsingDispatcher $parsingDispatcher)
 {
     $contentTypeGroups = array();
     foreach ($data['ContentTypeGroup'] as $rawContentTypeGroupData) {
         $contentTypeGroups[] = $parsingDispatcher->parse($rawContentTypeGroupData, $rawContentTypeGroupData['_media-type']);
     }
     return $contentTypeGroups;
 }
 /**
  * Parse input structure
  *
  * @param array $data
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @todo Error handling
  *
  * @return \eZ\Publish\API\Repository\Values\User\RoleAssignment[]
  */
 public function parse(array $data, ParsingDispatcher $parsingDispatcher)
 {
     $roleAssignments = array();
     foreach ($data['RoleAssignment'] as $rawRoleAssignmentData) {
         $roleAssignments[] = $parsingDispatcher->parse($rawRoleAssignmentData, $rawRoleAssignmentData['_media-type']);
     }
     return $roleAssignments;
 }
 /**
  * Parse input structure.
  *
  * @param array $data
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @todo Error handling
  *
  * @return \eZ\Publish\API\Repository\Values\ObjectState\ObjectState[]
  */
 public function parse(array $data, ParsingDispatcher $parsingDispatcher)
 {
     $states = array();
     foreach ($data['ObjectState'] as $rawStateData) {
         $states[] = $parsingDispatcher->parse($rawStateData, $rawStateData['_media-type']);
     }
     return $states;
 }
 public function testParseVersion()
 {
     $parserVersionOne = $this->createParserMock();
     $parserVersionTwo = $this->createParserMock();
     $dispatcher = new Common\Input\ParsingDispatcher(['text/html' => $parserVersionOne, 'text/html; version=2' => $parserVersionTwo]);
     $parserVersionOne->expects($this->never())->method('parse');
     $parserVersionTwo->expects($this->once())->method('parse');
     $dispatcher->parse(array(42), 'text/html; version=2');
 }
예제 #8
0
 /**
  * Dispatches parsing of a criterion name + data to its own parser
  * @param string $criterionName
  * @param mixed $criterionData
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @throws \eZ\Publish\Core\REST\Common\Exceptions\Parser
  *
  * @return \eZ\Publish\API\Repository\Values\Content\Query\Criterion
  */
 public function dispatchCriterion($criterionName, $criterionData, ParsingDispatcher $parsingDispatcher)
 {
     $mediaType = $this->getCriterionMediaType($criterionName);
     try {
         return $parsingDispatcher->parse(array($criterionName => $criterionData), $mediaType);
     } catch (Exceptions\Parser $e) {
         throw new Exceptions\Parser("Invalid Criterion id <{$criterionName}> in <AND>", 0, $e);
     }
 }
예제 #9
0
 /**
  * Parse input structure.
  *
  * @param array $data
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @todo Error handling
  *
  * @return \eZ\Publish\API\Repository\Values\User\Policy[]
  */
 public function parse(array $data, ParsingDispatcher $parsingDispatcher)
 {
     $policies = array();
     if (array_key_exists('Policy', $data) && is_array($data['Policy'])) {
         foreach ($data['Policy'] as $rawPolicyData) {
             $policies[] = $parsingDispatcher->parse($rawPolicyData, $rawPolicyData['_media-type']);
         }
     }
     return $policies;
 }
예제 #10
0
 /**
  * Parse input structure
  *
  * @param array $data
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @todo Error handling
  *
  * @return \eZ\Publish\API\Repository\Values\User\Policy
  */
 public function parse(array $data, ParsingDispatcher $parsingDispatcher)
 {
     $limitations = array();
     if (array_key_exists('limitations', $data)) {
         foreach ($data['limitations']['limitation'] as $limitation) {
             $limitations[] = $parsingDispatcher->parse($limitation, $limitation['_media-type']);
         }
     }
     return new Client\Values\User\Policy(array('id' => $data['id'], 'module' => $data['module'], 'function' => $data['function'], 'limitations' => $limitations));
 }
예제 #11
0
 /**
  * Parses input structure to a RestViewInput struct.
  *
  * @param array $data
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @throws \eZ\Publish\Core\REST\Common\Exceptions\Parser
  *
  * @return \eZ\Publish\Core\REST\Server\Values\RestViewInput
  */
 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('Query', $data) || !is_array($data['Query'])) {
         throw new Exceptions\Parser('Missing <Query> attribute for <ViewInput>.');
     }
     $restViewInput->query = $parsingDispatcher->parse($data['Query'], 'application/vnd.ez.api.internal.ContentQuery');
     return $restViewInput;
 }
예제 #12
0
 /**
  * Parses input structure to a RestViewInput struct.
  *
  * @param array $data
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @throws \eZ\Publish\Core\REST\Common\Exceptions\Parser
  *
  * @return \eZ\Publish\Core\REST\Server\Values\RestViewInput
  */
 public function parse(array $data, ParsingDispatcher $parsingDispatcher)
 {
     $valueData = [];
     if (!array_key_exists('searchHits', $data) || !is_array($data['searchHits'])) {
         throw new Exceptions\Parser("Missing or invalid SearchHits in ViewResult data");
     }
     if (!array_key_exists('searchHit', $data['searchHits']) || !is_array($data['searchHits']['searchHit'])) {
         throw new Exceptions\Parser("Missing or invalid searchHits.searchHit in ViewResult data");
     }
     $valueData['searchHits'] = [];
     foreach ($data['searchHits']['searchHit'] as $searchHit) {
         $valueData['searchHits'][] = $parsingDispatcher->parse($searchHit, $searchHit['_media-type']);
     }
     return new ViewResultValue($valueData);
 }
예제 #13
0
 /**
  * Parse provided request.
  *
  * @param \eZ\Publish\Core\REST\Common\Message $message
  *
  * @return mixed
  */
 public function parse(Message $message)
 {
     if (!isset($message->headers['Content-Type'])) {
         throw new Exceptions\Parser('Missing Content-Type header in message.');
     }
     $mediaTypeParts = explode(';', $message->headers['Content-Type']);
     $contentTypeParts = explode('+', $mediaTypeParts[0]);
     if (count($contentTypeParts) !== 2) {
         // TODO expose default format
         $contentTypeParts[1] = 'xml';
     }
     $media = $contentTypeParts[0];
     $format = $contentTypeParts[1];
     if (!isset($this->handlers[$format])) {
         throw new Exceptions\Parser("Unknown format specification: '{$format}'.");
     }
     $rawArray = $this->handlers[$format]->convert($message->body);
     // Only 1 XML root node
     $rootNodeArray = reset($rawArray);
     // @todo: This needs to be refactored in order to make the called URL
     // available to parsers in the server in a sane way
     if (isset($message->headers['Url'])) {
         $rootNodeArray['__url'] = $message->headers['Url'];
     }
     if (isset($message->headers['__publish'])) {
         $rootNodeArray['__publish'] = $message->headers['__publish'];
     }
     return $this->parsingDispatcher->parse($rootNodeArray, $media);
 }
예제 #14
0
 /**
  * Parses input structure to a RestViewInput struct.
  *
  * @param array $data
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @throws \eZ\Publish\Core\REST\Common\Exceptions\Parser
  *
  * @return \eZ\Publish\Core\REST\Server\Values\RestViewInput
  */
 public function parse(array $data, ParsingDispatcher $parsingDispatcher)
 {
     $valueData = [];
     if (!array_key_exists('value', $data) || !is_array($data['value'])) {
         throw new Exceptions\Parser("Missing or invalid data property in SearchHit");
     }
     $value = $data['value'];
     if (array_key_exists('Content', $value)) {
         $valueData['valueObject'] = $parsingDispatcher->parse($value['Content'], $value['Content']['_media-type']);
     }
     if (array_key_exists('Location', $value)) {
         $valueData['valueObject'] = $parsingDispatcher->parse($value['Location'], $value['Location']['_media-type']);
     }
     $valueData['score'] = $data['_score'];
     $valueData['index'] = $data['_index'];
     return new SearchHitValue($valueData);
 }
 /**
  * Parse input structure
  *
  * @param array $data
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @return \eZ\Publish\API\Repository\Values\User\RoleAssignment
  * @todo Error handling
  * @todo Use dependency injection system for Role Limitation lookup
  */
 public function parse(array $data, ParsingDispatcher $parsingDispatcher)
 {
     $roleLimitation = null;
     if (array_key_exists('limitation', $data)) {
         $limitation = $parsingDispatcher->parse($data['limitation'], $data['limitation']['_media-type']);
         switch ($limitation->getIdentifier()) {
             case APILimitation::SECTION:
                 $roleLimitation = new \eZ\Publish\API\Repository\Values\User\Limitation\SectionLimitation();
                 break;
             case APILimitation::SUBTREE:
                 $roleLimitation = new \eZ\Publish\API\Repository\Values\User\Limitation\SubtreeLimitation();
                 break;
             default:
                 throw new \eZ\Publish\Core\Base\Exceptions\NotFoundException('RoleLimitation', $limitation->getIdentifier());
         }
         $roleLimitation->limitationValues = $limitation->limitationValues;
     }
     return new Client\Values\User\RoleAssignment(array('role' => $parsingDispatcher->parse($data['Role'], $data['Role']['_media-type']), 'limitation' => $roleLimitation));
 }
예제 #16
0
 /**
  * Parses input structure to a RestViewInput struct.
  *
  * @param array $data
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @throws \eZ\Publish\Core\REST\Common\Exceptions\Parser
  *
  * @return \eZ\Publish\Core\REST\Server\Values\RestViewInput
  */
 public function parse(array $data, ParsingDispatcher $parsingDispatcher)
 {
     $viewData = [];
     // identifier
     if (!array_key_exists('identifier', $data)) {
         throw new Exceptions\Parser('Missing identifier attribute for ViewInput.');
     }
     $viewData['identifier'] = $data['identifier'];
     // query
     if (array_key_exists('ContentQuery', $data) && is_array($data['ContentQuery'])) {
         $viewData['query'] = $parsingDispatcher->parse($data['Query'], 'application/vnd.ez.api.internal.ContentQuery');
     } elseif (array_key_exists('LocationQuery', $data) && is_array($data['LocationQuery'])) {
         $viewData['query'] = $parsingDispatcher->parse($data['LocationQuery'], 'application/vnd.ez.api.internal.LocationQuery');
     } elseif (array_key_exists('Query', $data) && is_array($data['Query'])) {
         $viewData['query'] = $parsingDispatcher->parse($data['Query'], 'application/vnd.ez.api.internal.ContentQuery');
     } else {
         throw new Exceptions\Parser('Missing or invalid LocationQuery or ContentQuery attribute for View.');
     }
     // results
     $viewData['result'] = $parsingDispatcher->parse($data['Result'], $data['Result']['_media-type']);
     return new ViewValue($viewData);
 }
 /**
  * Parses input structure to a RestViewInput struct.
  *
  * @param array $data
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @throws \eZ\Publish\Core\REST\Common\Exceptions\Parser
  *
  * @return \eZ\Publish\Core\REST\Server\Values\RestViewInput
  */
 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;
 }
예제 #18
0
 /**
  * Parse input structure.
  *
  * @param array $data
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @return \eZ\Publish\Core\REST\Server\Values\RoleAssignment
  */
 public function parse(array $data, ParsingDispatcher $parsingDispatcher)
 {
     if (!array_key_exists('Role', $data)) {
         throw new Exceptions\Parser("Missing 'Role' element for RoleAssignInput.");
     }
     if (!is_array($data['Role']) || !array_key_exists('_href', $data['Role'])) {
         throw new Exceptions\Parser("Invalid 'Role' element for RoleAssignInput.");
     }
     try {
         $roleId = $this->requestParser->parseHref($data['Role']['_href'], 'roleId');
     } catch (Exceptions\InvalidArgumentException $e) {
         throw new Exceptions\Parser('Invalid format for <Role> reference in <RoleAssignInput>.');
     }
     // @todo XSD says that limitation is mandatory, but roles can be assigned without limitations
     $limitation = null;
     if (array_key_exists('limitation', $data) && is_array($data['limitation'])) {
         if (!array_key_exists('_identifier', $data['limitation'])) {
             throw new Exceptions\Parser("Missing '_identifier' attribute for Limitation.");
         }
         $limitation = $parsingDispatcher->parse($data['limitation'], 'application/vnd.ez.api.internal.limitation.' . $data['limitation']['_identifier']);
     }
     return new RoleAssignment($roleId, $limitation);
 }
 /**
  * @expectedException \eZ\Publish\Core\REST\Common\Exceptions\Parser
  */
 public function testParseMissingContentType()
 {
     $dispatcher = new Common\Input\ParsingDispatcher();
     $dispatcher->parse(array(), 'text/unknown');
 }
예제 #20
0
 /**
  * Dispatches parsing of a sort clause name + direction to its own parser.
  *
  * @param string $sortClauseName
  * @param string $direction
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @throws \eZ\Publish\Core\REST\Common\Exceptions\Parser
  *
  * @return \eZ\Publish\API\Repository\Values\Content\Query\Criterion
  */
 public function dispatchSortClause($sortClauseName, $direction, ParsingDispatcher $parsingDispatcher)
 {
     $mediaType = $this->getSortClauseMediaType($sortClauseName);
     return $parsingDispatcher->parse(array($sortClauseName => $direction), $mediaType);
 }
예제 #21
0
 /**
  * Parse input structure
  *
  * @param array $data
  * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher
  *
  * @todo Error handling
  *
  * @return \eZ\Publish\API\Repository\Values\Content\Location
  */
 public function parse(array $data, ParsingDispatcher $parsingDispatcher)
 {
     $content = $parsingDispatcher->parse($data['Content'], 'Content');
     return new Values\Content\Location(array('contentInfo' => $content instanceof APIContent ? $content->getVersionInfo()->getContentInfo() : null, 'id' => $data['_href'], 'priority' => (int) $data['priority'], 'hidden' => $data['hidden'] === 'true' ? true : false, 'invisible' => $data['invisible'] === 'true' ? true : false, 'remoteId' => $data['remoteId'], 'parentLocationId' => $data['ParentLocation']['_href'], 'pathString' => $data['pathString'], 'depth' => (int) $data['depth'], 'sortField' => $this->parserTools->parseDefaultSortField($data['sortField']), 'sortOrder' => $this->parserTools->parseDefaultSortOrder($data['sortOrder'])));
 }
예제 #22
0
 */
// Set communication encoding depending on environment defined in the
// phpunit.xml files. This defines what encoding will be generated and thus send
// to the server.
$generator = getenv('backendEncoding') === 'xml' ? new Common\Output\Generator\Xml(new Common\Output\Generator\Xml\FieldTypeHashGenerator()) : new Common\Output\Generator\Json(new Common\Output\Generator\Json\FieldTypeHashGenerator());
// The URL Handler is responsible for URL parsing and generation. It will be
// used in the output generators and in some parsing handlers.
$requestParser = new Common\RequestParser\EzPublish();
// FieldTypes to be used in integration tests. The field types are only used
// in terms of conversions from and to hash values.
$fieldTypes = array(new Client\FieldType(new FieldType\Author\Type()), new Client\FieldType(new FieldType\Checkbox\Type()), new Client\FieldType(new FieldType\DateAndTime\Type()), new Client\FieldType(new FieldType\Float\Type()), new Client\FieldType(new FieldType\Integer\Type()), new Client\FieldType(new FieldType\Keyword\Type()), new Client\FieldType(new FieldType\MapLocation\Type()), new Client\FieldType(new FieldType\Relation\Type()), new Client\FieldType(new FieldType\RelationList\Type()), new Client\FieldType(new FieldType\Selection\Type()), new Client\FieldType(new FieldType\TextBlock\Type()), new Client\FieldType(new FieldType\TextLine\Type()), new Client\FieldType(new FieldType\Url\Type()), new Client\FieldType(new FieldType\User\Type()), new Client\FieldType(new FieldType\Null\Type('ezpage')));
// The IntegrationTestRepository is only meant for integration tests. It
// handles sessions which run throughout a single test case run and submission
// of user information to the server, which needs a corresponding
// authenticator.
$repository = new Client\IntegrationTestRepository($authenticator = new Client\HttpClient\Authentication\IntegrationTestAuthenticator(new Client\HttpClient\Stream(HTTP_BASE_URL)), new Common\Input\Dispatcher($parsingDispatcher = new Common\Input\ParsingDispatcher(), array('json' => new Common\Input\Handler\Json(), 'xml' => new Common\Input\Handler\Xml())), new Common\Output\Visitor($generator, array('\\eZ\\Publish\\API\\Repository\\Values\\Content\\SectionCreateStruct' => new Client\Output\ValueObjectVisitor\SectionCreateStruct($requestParser), '\\eZ\\Publish\\API\\Repository\\Values\\Content\\SectionUpdateStruct' => new Client\Output\ValueObjectVisitor\SectionUpdateStruct($requestParser), '\\eZ\\Publish\\Core\\REST\\Common\\Values\\SectionIncludingContentMetadataUpdateStruct' => new Client\Output\ValueObjectVisitor\SectionIncludingContentMetadataUpdateStruct($requestParser), '\\eZ\\Publish\\API\\Repository\\Values\\User\\RoleCreateStruct' => new Client\Output\ValueObjectVisitor\RoleCreateStruct($requestParser), '\\eZ\\Publish\\API\\Repository\\Values\\User\\RoleUpdateStruct' => new Client\Output\ValueObjectVisitor\RoleUpdateStruct($requestParser), '\\eZ\\Publish\\API\\Repository\\Values\\User\\PolicyCreateStruct' => new Client\Output\ValueObjectVisitor\PolicyCreateStruct($requestParser), '\\eZ\\Publish\\API\\Repository\\Values\\User\\Limitation' => new Client\Output\ValueObjectVisitor\Limitation($requestParser), '\\eZ\\Publish\\API\\Repository\\Values\\User\\PolicyUpdateStruct' => new Client\Output\ValueObjectVisitor\PolicyUpdateStruct($requestParser), '\\eZ\\Publish\\API\\Repository\\Values\\Content\\LocationCreateStruct' => new Client\Output\ValueObjectVisitor\LocationCreateStruct($requestParser), '\\eZ\\Publish\\API\\Repository\\Values\\ObjectState\\ObjectStateGroupCreateStruct' => new Client\Output\ValueObjectVisitor\ObjectStateGroupCreateStruct($requestParser), '\\eZ\\Publish\\API\\Repository\\Values\\ObjectState\\ObjectStateGroupUpdateStruct' => new Client\Output\ValueObjectVisitor\ObjectStateGroupUpdateStruct($requestParser), '\\eZ\\Publish\\API\\Repository\\Values\\ObjectState\\ObjectStateCreateStruct' => new Client\Output\ValueObjectVisitor\ObjectStateCreateStruct($requestParser), '\\eZ\\Publish\\API\\Repository\\Values\\ObjectState\\ObjectStateUpdateStruct' => new Client\Output\ValueObjectVisitor\ObjectStateUpdateStruct($requestParser))), $requestParser, $fieldTypes, $authenticator);
// Object with convenience methods for parsers
$parserTools = new Common\Input\ParserTools();
// Parser for field values (using FieldTypes for toHash()/fromHash() operations)
$fieldTypeParser = new Common\Input\FieldTypeParser($repository->getContentService(), $repository->getContentTypeService(), $repository->getFieldTypeService(), new Common\FieldTypeProcessorRegistry());
// The parsing dispatcher configures which parsers are used for which
// mime type. The mime types (content types) are provided *WITHOUT* an
// encoding type (+json / +xml).
//
// For each mime type you specify an instance of the parser which
// should be used to process the given mime type.
$inputParsers = array('application/vnd.ez.api.Version' => new Client\Input\Parser\Content($parserTools, $repository->getContentService(), new Client\Input\Parser\VersionInfo($parserTools, $repository->getContentService()), $fieldTypeParser), 'application/vnd.ez.api.ContentList' => new Client\Input\Parser\ContentList(), 'application/vnd.ez.api.ContentInfo' => new Client\Input\Parser\ContentInfo($parserTools, $repository->getContentTypeService()), 'application/vnd.ez.api.ContentType' => new Client\Input\Parser\ContentType($parserTools, $repository->getContentTypeService()), 'application/vnd.ez.api.FieldDefinitionList' => new Client\Input\Parser\FieldDefinitionList($parserTools, $repository->getContentTypeService()), 'application/vnd.ez.api.FieldDefinition' => new Client\Input\Parser\FieldDefinition($parserTools, $fieldTypeParser), 'application/vnd.ez.api.SectionList' => new Client\Input\Parser\SectionList(), 'application/vnd.ez.api.Section' => new Client\Input\Parser\Section(), 'application/vnd.ez.api.ErrorMessage' => new Client\Input\Parser\ErrorMessage(), 'application/vnd.ez.api.RoleList' => new Client\Input\Parser\RoleList(), 'application/vnd.ez.api.Role' => new Client\Input\Parser\Role(), 'application/vnd.ez.api.Policy' => new Client\Input\Parser\Policy(), 'application/vnd.ez.api.limitation' => new Client\Input\Parser\Limitation(), 'application/vnd.ez.api.PolicyList' => new Client\Input\Parser\PolicyList(), 'application/vnd.ez.api.RelationList' => new Client\Input\Parser\RelationList(), 'application/vnd.ez.api.Relation' => new Client\Input\Parser\Relation($repository->getContentService()), 'application/vnd.ez.api.RoleAssignmentList' => new Client\Input\Parser\RoleAssignmentList(), 'application/vnd.ez.api.RoleAssignment' => new Client\Input\Parser\RoleAssignment(), 'application/vnd.ez.api.Location' => new Client\Input\Parser\Location($parserTools), 'application/vnd.ez.api.LocationList' => new Client\Input\Parser\LocationList(), 'application/vnd.ez.api.ObjectStateGroup' => new Client\Input\Parser\ObjectStateGroup($parserTools), 'application/vnd.ez.api.ObjectStateGroupList' => new Client\Input\Parser\ObjectStateGroupList(), 'application/vnd.ez.api.ObjectState' => new Client\Input\Parser\ObjectState($parserTools), 'application/vnd.ez.api.ObjectStateList' => new Client\Input\Parser\ObjectStateList());
foreach ($inputParsers as $mimeType => $parser) {
    $parsingDispatcher->addParser($mimeType, $parser);
}
// Force sets the used user. This will be refactored most likely, since this is