/**
  * @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));
 }
Example #3
0
 /**
  * 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);
 }
Example #6
0
 /**
  * @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()));
 }
Example #8
0
 public function getEntitySerializer() : Serializer
 {
     $factory = new SerializerFactory(new DataValueSerializer());
     return $factory->newEntitySerializer();
 }