/** * @param Entity $entity * * @return string */ private function getSerializedEntity(Entity $entity) { $serializer = $this->serializerFactory->newEntitySerializer(); $serialization = $serializer->serialize($entity); // Remove empty parts of the serialization (Added when Lib Serializers were removed) // We could allow parts if we are sure it would not break anything foreach ($serialization as $key => $serializationPart) { if (is_array($serializationPart) && empty($serializationPart)) { unset($serialization[$key]); } } return $serialization; }
/** * @dataProvider entityProvider */ public function testEntitySerializationRoundtrips(Entity $entity) { $serializerFactory = new SerializerFactory(new DataValueSerializer()); $deserializerFactory = new DeserializerFactory(new DataValueDeserializer(), new BasicEntityIdParser()); $serialization = $serializerFactory->newEntitySerializer()->serialize($entity); $newEntity = $deserializerFactory->newEntityDeserializer()->deserialize($serialization); $this->assertTrue($entity->equals($newEntity)); }
/** * Create concrete dumper instance * @param resource $output * @return DumpGenerator */ protected function createDumper($output) { $serializerOptions = SerializerFactory::OPTION_SERIALIZE_MAIN_SNAKS_WITHOUT_HASH + SerializerFactory::OPTION_SERIALIZE_REFERENCE_SNAKS_WITHOUT_HASH; $serializerFactory = new SerializerFactory(new DataValueSerializer(), $serializerOptions); $entitySerializer = $serializerFactory->newEntitySerializer(); $dataTypeLookup = $this->propertyDatatypeLookup; $dumper = new JsonDumpGenerator($output, $this->entityLookup, $entitySerializer, $this->entityPrefetcher, $dataTypeLookup); $dumper->setUseSnippets((bool) $this->getOption('snippet', false)); return $dumper; }
private function getJsonDumperWithExceptionHandler(array $ids, Exception $ex) { $entityLookup = $this->getEntityLookupThrows($ex); $out = fopen('php://output', 'w'); $serializer = $this->serializerFactory->newEntitySerializer(); $jsonDumper = new JsonDumpGenerator($out, $entityLookup, $serializer, new NullEntityPrefetcher(), $this->getMockPropertyDataTypeLookup()); $exceptionHandler = $this->getMock('Wikibase\\Lib\\Reporting\\ExceptionHandler'); $exceptionHandler->expects($this->exactly(count($ids)))->method('handleException'); $jsonDumper->setExceptionHandler($exceptionHandler); return $jsonDumper; }
/** * @see ResultBuilder::addEntityRevision * * @param EntityDocument $entity * * @throws SerializationException * @return array */ public function serialize($entity) { $serializerOptions = SerializerFactory::OPTION_SERIALIZE_MAIN_SNAKS_WITHOUT_HASH + SerializerFactory::OPTION_SERIALIZE_REFERENCE_SNAKS_WITHOUT_HASH; $serializerFactory = new SerializerFactory(new DataValueSerializer(), $serializerOptions); $entitySerializer = $serializerFactory->newEntitySerializer(); $serialization = $entitySerializer->serialize($entity); if (!empty($this->fallbackChains)) { $serialization = $this->addEntitySerializationFallbackInfo($serialization); } $serialization = $this->injectEntitySerializationWithDataTypes($serialization); $serialization = $this->filterEntitySerializationUsingLangCodes($serialization); return $this->omitEmptyArrays($serialization); }
/** * @see ResultBuilder::addEntityRevision * * @param Entity $entity * @param array|string $props * @param string[]|null $filterSiteIds * @param string[] $filterLangCodes * @param LanguageFallbackChain[] $fallbackChains * * @return array */ private function getEntityArray(Entity $entity, $props, array $filterSiteIds = null, array $filterLangCodes, array $fallbackChains) { $entitySerializer = $this->serializerFactory->newEntitySerializer(); $serialization = $entitySerializer->serialize($entity); $serialization = $this->filterEntitySerializationUsingProps($serialization, $props); if ($props == 'all' || in_array('sitelinks/urls', $props)) { $serialization = $this->injectEntitySerializationWithSiteLinkUrls($serialization); } $serialization = $this->sortEntitySerializationSiteLinks($serialization); $serialization = $this->injectEntitySerializationWithDataTypes($serialization); $serialization = $this->filterEntitySerializationUsingSiteIds($serialization, $filterSiteIds); if (!empty($fallbackChains)) { $serialization = $this->addEntitySerializationFallbackInfo($serialization, $fallbackChains); } $serialization = $this->filterEntitySerializationUsingLangCodes($serialization, $filterLangCodes); if ($this->addMetaData) { $serialization = $this->getEntitySerializationWithMetaData($serialization); } return $serialization; }
/** * @return Serializer */ public function newEntitySerializer() { $factory = new SerializerFactory(new DataValueSerializer()); return new DispatchingSerializer(array(new SerializedEntitySerializer(), $factory->newEntitySerializer())); }
public function getEntitySerializer() : Serializer { $factory = new SerializerFactory(new DataValueSerializer()); return $factory->newEntitySerializer(); }