public function testDenormalizationWithType()
 {
     $dummy = $this->getDummy();
     $this->normalizer->addType('dummy', TypehintNormalizerClassDummy::class);
     $this->normalizer->addType('subdummy', TypehintNormalizerSubclassDummy::class);
     $expected = $dummy;
     $normalized = $this->normalizer->normalize($dummy);
     $this->assertTrue($this->normalizer->supportsDenormalization($normalized, RecursiveNormalizerClassDummy::class));
     $actual = $this->normalizer->denormalize($normalized, TypehintNormalizerClassDummy::class);
     $this->assertEquals($expected, $actual);
 }
 /**
  * @param mixed $data
  * @param string $class
  * @param mixed $format
  * @param array $context
  * @return AbstractTypedAddress
  */
 public function denormalize($data, $class, $format = null, array $context = array())
 {
     /** @var AbstractTypedAddress $result */
     $result = $this->addressNormalizer->denormalize($data, $class, $format, $context);
     if (!empty($data['types']) && is_array($data['types'])) {
         $types = $this->serializer->denormalize($data['types'], static::TYPES_TYPE, $format, $context);
         if ($types) {
             foreach ($types as $type) {
                 $result->addType($type);
             }
         }
     }
     return $result;
 }
 /**
  * Returns collection of denormalized data
  *
  * @param mixed $data
  * @param string $class
  * @param mixed $format
  * @param array $context
  * @return ArrayCollection
  */
 public function denormalize($data, $class, $format = null, array $context = array())
 {
     if (!is_array($data)) {
         return new ArrayCollection();
     }
     $itemType = $this->getItemType($class);
     if (!$itemType) {
         return new ArrayCollection($data);
     }
     $result = new ArrayCollection();
     foreach ($data as $item) {
         $result->add($this->serializer->denormalize($item, $itemType, $format, $context));
     }
     return $result;
 }
 /**
  * {@inheritdoc}
  */
 public function denormalize($data, $class, $format = null, array $context = [])
 {
     if (isset($data['#type'])) {
         $type = $data['#type'];
         unset($data['#type']);
         $data = $this->denormalize($data, $type, $format, $context);
         $data = $this->objectNormalizer->denormalize($data, $type, $format, $context);
         return $data;
     }
     if (is_array($data) || $data instanceof \Traversable) {
         foreach ($data as $key => $value) {
             $data[$key] = $this->serializer->denormalize($value, $class, $format, $context);
         }
     }
     return $data;
 }
예제 #5
0
 /**
  * {@inheritdoc}
  */
 public function handleUpdateRequest(Request $request, $identifier)
 {
     $parameters = $request->request->all();
     $resource = $this->getResourceById($identifier);
     $className = ClassUtils::getRealClass(get_class($resource));
     $resource = $this->serializer->denormalize($parameters, $className, self::RESPONSE_FORMAT, ['resource' => $resource]);
     $data = $this->serializer->serialize($resource, self::RESPONSE_FORMAT, ['group' => $this->getResourceType()]);
     $this->manager->updateResource($resource);
     return new Response($data);
 }