/** * 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; } }
/** * @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); }
/** * 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); }