Example #1
0
 /**
  * Serialize extref to JSON
  *
  * @param JsonDeserializationVisitor $visitor Visitor
  * @param string                     $url     Extref URL
  * @param array                      $type    Type
  * @param Context                    $context Context
  * @return ExtReference|null
  */
 public function deserializeExtReferenceFromJson(JsonDeserializationVisitor $visitor, $url, array $type, Context $context)
 {
     try {
         return $this->converter->getExtReference($visitor->visitString($url, $type, $context));
     } catch (\InvalidArgumentException $e) {
         return null;
     }
 }
Example #2
0
 /**
  * @param JsonDeserializationVisitor|JsonSerializationVisitor $visitor
  * @param array                                               $data
  * @param array                                               $type
  * @param Context                                             $context
  *
  * @return PageBridge
  */
 public function doDeserialize(JsonDeserializationVisitor $visitor, array $data, array $type, Context $context)
 {
     $document = $context->accept($data['document'], ['name' => PageDocument::class]);
     $structure = $this->structureFactory->getStructureMetadata('page', $data['structure']);
     $bridge = new PageBridge($structure, $this->inspector, $this->propertyFactory, $document);
     // filthy hack to set the Visitor::$result to null and force the
     // serializer to return the Bridge and not the Document
     $visitor->setNavigator($context->getNavigator());
     return $bridge;
 }
 /**
  * Test ExtReferenceHandler::deserializeExtReferenceFromJson()
  *
  * @return void
  */
 public function testDeserializeExtReferenceFromJson()
 {
     $type = [__LINE__];
     $context = DeserializationContext::create();
     $url = __FUNCTION__;
     $extref = ExtReference::create(__METHOD__, __FILE__);
     $this->converter->expects($this->once())->method('getExtReference')->with($url)->willReturn($extref);
     $this->deserializationVisitor->expects($this->once())->method('visitString')->with($url, $type, $context)->willReturn($url);
     $handler = new ExtReferenceHandler($this->converter);
     $this->assertEquals($extref, $handler->deserializeExtReferenceFromJson($this->deserializationVisitor, $url, $type, $context));
 }
 public function visitArray($data, array $type, Context $context)
 {
     $types = array('NULL', 'string', 'integer', 'boolean', 'double', 'float', 'array', 'ArrayCollection');
     if (is_array($data) && count($type['params']) === 1 && !empty($type['params'][0]['name'])) {
         foreach ($data as $key => $value) {
             if (is_scalar($value) && !in_array($type['params'][0]['name'], $types)) {
                 /** @var DeserializationContext $context */
                 $context->useDoctrineConstructor();
                 $data[$key] = array('id' => $value);
             }
         }
     }
     return parent::visitArray($data, $type, $context);
 }
Example #5
0
 /**
  * Deserialize Hash object
  *
  * @param JsonDeserializationVisitor $visitor Visitor
  * @param array                      $data    Data
  * @param array                      $type    Type
  * @param Context                    $context Context
  * @return Hash
  */
 public function deserializeHashFromJson(JsonDeserializationVisitor $visitor, array $data, array $type, Context $context)
 {
     return new Hash($visitor->visitArray($data, $type, $context));
 }
 /**
  * @param JsonDeserializationVisitor $visitor
  * @param                            $data
  * @param array                      $type
  * @param Context                    $context
  *
  * @return mixed
  * @author Mario Mueller
  */
 public function serializeElastificationSource(JsonDeserializationVisitor $visitor, $data, array $type, Context $context)
 {
     $this->sourceDeSerClass = empty($this->sourceDeSerClass) ? $type['name'] : $this->sourceDeSerClass;
     return $visitor->getNavigator()->accept($data, ['name' => $this->sourceDeSerClass], $context);
 }