/**
  * @test
  */
 public function getTypeConverterReturnsTypeConverterIfItHasBeenSet()
 {
     $mockTypeConverter = $this->getMock('TYPO3\\Flow\\Property\\TypeConverterInterface');
     $this->propertyMappingConfiguration->setTypeConverter($mockTypeConverter);
     $this->assertSame($mockTypeConverter, $this->propertyMappingConfiguration->getTypeConverter());
 }
 /**
  * @param MediaTypeConverterInterface $mediaTypeConverter
  * @return void
  */
 public function injectMediaTypeConverter(MediaTypeConverterInterface $mediaTypeConverter)
 {
     $this->propertyMappingConfiguration = new PropertyMappingConfiguration();
     $this->propertyMappingConfiguration->setTypeConverter($mediaTypeConverter);
 }
 /**
  * The content of the HTTP request is provided as json in a
  * jsonapi.org structure.
  *
  * @return mixed
  * @throws \TYPO3\Flow\Http\Exception
  */
 protected function extractRequestBody()
 {
     $propertyMappingConfiguration = new PropertyMappingConfiguration();
     $propertyMappingConfiguration->setTypeConverter($this->objectManager->get(MediaTypeConverterInterface::class));
     $propertyMappingConfiguration->setTypeConverterOption(MediaTypeConverterInterface::class, MediaTypeConverterInterface::CONFIGURATION_MEDIA_TYPE, 'application/json');
     $result = $this->objectManager->get(PropertyMapper::class)->convert($this->request->getHttpRequest()->getContent(), 'array', $propertyMappingConfiguration);
     return $result['data'];
 }
 /**
  * Parses the request body according to the media type.
  *
  * @param HttpRequest $httpRequest
  * @return array
  */
 protected function parseRequestBody(HttpRequest $httpRequest)
 {
     $requestBody = $httpRequest->getContent();
     if ($requestBody === null || $requestBody === '') {
         return [];
     }
     $mediaTypeConverter = $this->objectManager->get(MediaTypeConverterInterface::class);
     $propertyMappingConfiguration = new PropertyMappingConfiguration();
     $propertyMappingConfiguration->setTypeConverter($mediaTypeConverter);
     $propertyMappingConfiguration->setTypeConverterOption(MediaTypeConverterInterface::class, MediaTypeConverterInterface::CONFIGURATION_MEDIA_TYPE, $httpRequest->getHeader('Content-Type'));
     $arguments = $this->propertyMapper->convert($requestBody, 'array', $propertyMappingConfiguration);
     return $arguments;
 }
 /**
  * @param PropertyMappingConfiguration $propertyMappingConfiguration
  * @param string $dataType
  * @return boolean
  */
 protected function setTypeConverterForType(PropertyMappingConfiguration $propertyMappingConfiguration, $dataType)
 {
     if (!isset($this->typesConfiguration[$dataType]) || !isset($this->typesConfiguration[$dataType]['typeConverter'])) {
         return false;
     }
     $typeConverter = $this->objectManager->get($this->typesConfiguration[$dataType]['typeConverter']);
     $propertyMappingConfiguration->setTypeConverter($typeConverter);
     $this->setTypeConverterOptionsForType($propertyMappingConfiguration, $this->typesConfiguration[$dataType]['typeConverter'], $dataType);
     return true;
 }