/**
  * @dataProvider referencesProvider
  */
 public function testReferenceSerializationRoundtrips(ReferenceList $references)
 {
     $serializerFactory = new SerializerFactory(new DataValueSerializer());
     $deserializerFactory = new DeserializerFactory(new DataValueDeserializer(), new BasicEntityIdParser());
     $serialization = $serializerFactory->newReferencesSerializer()->serialize($references);
     $newReferences = $deserializerFactory->newReferencesDeserializer()->deserialize($serialization);
     $this->assertReferenceListEquals($references, $newReferences);
 }
 /**
  * @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));
 }
 /**
  * @dataProvider siteLinkProvider
  */
 public function testSiteLinkSerializationRoundtrips(SiteLink $siteLink)
 {
     $serializerFactory = new SerializerFactory(new DataValueSerializer());
     $deserializerFactory = new DeserializerFactory(new DataValueDeserializer(), new BasicEntityIdParser());
     $serialization = $serializerFactory->newSiteLinkSerializer()->serialize($siteLink);
     $newSiteLink = $deserializerFactory->newSiteLinkDeserializer()->deserialize($serialization);
     $this->assertEquals($siteLink, $newSiteLink);
 }
 /**
  * @dataProvider snakListProvider
  */
 public function testSnakSerializationRoundtrips(SnakList $snaks)
 {
     $serializerFactory = new SerializerFactory(new DataValueSerializer());
     $deserializerFactory = new DeserializerFactory(new DataValueDeserializer(), new BasicEntityIdParser());
     $serialization = $serializerFactory->newSnakListSerializer()->serialize($snaks);
     $newSnaks = $deserializerFactory->newSnakListDeserializer()->deserialize($serialization);
     $this->assertEquals($snaks, $newSnaks);
 }
 /**
  * @dataProvider snaksProvider
  */
 public function testSnakSerializationRoundtrips(Statement $statement)
 {
     $serializerFactory = new SerializerFactory(new DataValueSerializer());
     $deserializerFactory = new DeserializerFactory(new DataValueDeserializer(), new BasicEntityIdParser());
     $serialization = $serializerFactory->newStatementSerializer()->serialize($statement);
     $newStatement = $deserializerFactory->newStatementDeserializer()->deserialize($serialization);
     $this->assertEquals($statement->getHash(), $newStatement->getHash());
 }
 /**
  * @dataProvider referenceProvider
  */
 public function testSnakSerializationRoundtrips(Reference $reference)
 {
     $serializerFactory = new SerializerFactory(new DataValueSerializer());
     $deserializerFactory = new DeserializerFactory(new DataValueDeserializer(), new BasicEntityIdParser());
     $serialization = $serializerFactory->newReferenceSerializer()->serialize($reference);
     $newReference = $deserializerFactory->newReferenceDeserializer()->deserialize($serialization);
     $this->assertTrue($reference->equals($newReference));
 }
 /**
  * Unserializes a serialized Reference object (if not unserialized already).
  *
  * @param array|Reference $reference
  * @return Reference Reference
  */
 protected function unserializeReference($reference)
 {
     if (is_array($reference)) {
         $reference = $this->deserializerFactory->newReferenceDeserializer()->deserialize($reference);
     }
     return $reference;
 }
 protected function assertEntitySerialization(EntityId $id, $data)
 {
     $expectedEntity = $this->makeEntity($id);
     if (!$expectedEntity) {
         return;
     }
     $deserializer = $this->deserializerFactory->newEntityDeserializer();
     $actualEntity = $deserializer->deserialize($data);
     $this->assertTrue($expectedEntity->equals($actualEntity), 'Round trip failed for ' . $id->getSerialization());
 }
 /**
  * @see ApiBase::execute
  *
  * @since 0.3
  */
 public function execute()
 {
     $params = $this->extractRequestParams();
     $this->validateParameters($params);
     $entityId = $this->guidParser->parse($params['statement'])->getEntityId();
     if (isset($params['baserevid'])) {
         $entityRevision = $this->loadEntityRevision($entityId, (int) $params['baserevid']);
     } else {
         $entityRevision = $this->loadEntityRevision($entityId);
     }
     $entity = $entityRevision->getEntity();
     $summary = $this->modificationHelper->createSummary($params, $this);
     $claim = $this->modificationHelper->getStatementFromEntity($params['statement'], $entity);
     if (isset($params['reference'])) {
         $this->validateReferenceHash($claim, $params['reference']);
     }
     if (isset($params['snaks-order'])) {
         $snaksOrder = $this->getArrayFromParam($params['snaks-order']);
     } else {
         $snaksOrder = array();
     }
     $deserializer = $this->deserializerFactory->newSnakListDeserializer();
     /** @var SnakList $snakList */
     try {
         $snakList = $deserializer->deserialize($this->getArrayFromParam($params['snaks']));
     } catch (DeserializationException $e) {
         $this->errorReporter->dieError('Failed to get reference from reference Serialization ' . $e->getMessage(), 'snak-instantiation-failure');
     }
     $snakList->orderByProperty($snaksOrder);
     $newReference = new Reference($snakList);
     $changeOp = $this->getChangeOp($newReference);
     $this->modificationHelper->applyChangeOp($changeOp, $entity, $summary);
     $status = $this->saveChanges($entity, $summary);
     $resultBuilder = $this->getResultBuilder();
     $resultBuilder->addRevisionIdFromStatusToResult($status, 'pageinfo');
     $resultBuilder->markSuccess();
     $resultBuilder->addReference($newReference);
 }
 /**
  * @return Deserializer
  */
 public function newEntityDeserializer()
 {
     $factory = new DeserializerFactory($this->newDataValueDeserializer(), new BasicEntityIdParser());
     return $factory->newEntityDeserializer();
 }
 private function getSnakDeserializer(array $dataValueClasses = array())
 {
     $factory = new DeserializerFactory(new DataValueDeserializer($dataValueClasses), new BasicEntityIdParser());
     return $factory->newSnakDeserializer();
 }
 private function newEntityDeserializer()
 {
     $wikibaseRepo = WikibaseRepo::getDefaultInstance();
     $deserializerFactory = new DeserializerFactory($wikibaseRepo->getDataValueDeserializer(), $wikibaseRepo->getEntityIdParser());
     return $deserializerFactory->newEntityDeserializer();
 }
Exemple #13
0
 public function getEntityDeserializer() : Deserializer
 {
     $factory = new DeserializerFactory($this->newDataValueDeserializer(), $this->newEntityIdParser());
     return $factory->newEntityDeserializer();
 }
 protected function setUp()
 {
     $deserializerFactory = new DeserializerFactory(new DataValueDeserializer(array('boolean' => 'DataValues\\BooleanValue', 'number' => 'DataValues\\NumberValue', 'string' => 'DataValues\\StringValue', 'unknown' => 'DataValues\\UnknownValue', 'globecoordinate' => 'DataValues\\GlobeCoordinateValue', 'monolingualtext' => 'DataValues\\MonolingualTextValue', 'multilingualtext' => 'DataValues\\MultilingualTextValue', 'quantity' => 'DataValues\\QuantityValue', 'time' => 'DataValues\\TimeValue', 'wikibase-entityid' => 'Wikibase\\DataModel\\Entity\\EntityIdValue')), new BasicEntityIdParser());
     $this->deserializer = $deserializerFactory->newEntityDeserializer();
 }