Addshore has uploaded a new change for review.
https://gerrit.wikimedia.org/r/226509
Change subject: Use DMSerialization in JsonDumps
......................................................................
Use DMSerialization in JsonDumps
This should not change the output of the json
dumps at all, per the integration / compat
test that I introduced for the
DispatchingEntitySerializer in a previous change
vs the DataModel Serializer.
Change-Id: If1faecf40ff57671b38290095449ca942f8d400c
---
M repo/includes/Dumpers/JsonDumpGenerator.php
M repo/maintenance/dumpJson.php
M repo/tests/phpunit/includes/Dumpers/JsonDumpGeneratorTest.php
3 files changed, 38 insertions(+), 29 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/09/226509/1
diff --git a/repo/includes/Dumpers/JsonDumpGenerator.php
b/repo/includes/Dumpers/JsonDumpGenerator.php
index ffdfd62..8beef8e 100644
--- a/repo/includes/Dumpers/JsonDumpGenerator.php
+++ b/repo/includes/Dumpers/JsonDumpGenerator.php
@@ -5,8 +5,8 @@
use InvalidArgumentException;
use MWContentSerializationException;
use MWException;
+use Serializers\Serializer;
use Wikibase\DataModel\Entity\EntityId;
-use Wikibase\Lib\Serializers\Serializer;
use Wikibase\Lib\Store\EntityLookup;
use Wikibase\Lib\Store\EntityPrefetcher;
use Wikibase\Lib\Store\RedirectResolvingEntityLookup;
@@ -52,7 +52,12 @@
*
* @throws InvalidArgumentException
*/
- public function __construct( $out, EntityLookup $lookup, Serializer
$entitySerializer, EntityPrefetcher $entityPrefetcher ) {
+ public function __construct(
+ $out,
+ EntityLookup $lookup,
+ Serializer $entitySerializer,
+ EntityPrefetcher $entityPrefetcher
+ ) {
parent::__construct( $out, $entityPrefetcher );
if ( $lookup instanceof RedirectResolvingEntityLookup ) {
throw new InvalidArgumentException( '$lookup must not
resolve redirects!' );
@@ -111,7 +116,7 @@
return null;
}
- $data = $this->entitySerializer->getSerialized( $entity );
+ $data = $this->entitySerializer->serialize( $entity );
$json = $this->encode( $data );
return $json;
diff --git a/repo/maintenance/dumpJson.php b/repo/maintenance/dumpJson.php
index 111bdc7..cea224e 100644
--- a/repo/maintenance/dumpJson.php
+++ b/repo/maintenance/dumpJson.php
@@ -2,11 +2,10 @@
namespace Wikibase;
+use DataValues\Serializers\DataValueSerializer;
+use Wikibase\DataModel\SerializerFactory;
use Wikibase\Dumpers\DumpGenerator;
use Wikibase\Dumpers\JsonDumpGenerator;
-use Wikibase\Lib\Serializers\DispatchingEntitySerializer;
-use Wikibase\Lib\Serializers\SerializationOptions;
-use Wikibase\Lib\Serializers\LibSerializerFactory;
require_once __DIR__ . '/dumpEntities.php';
@@ -30,16 +29,11 @@
* @return DumpGenerator
*/
protected function createDumper( $output ) {
- $entityFactory = $this->wikibaseRepo->getEntityFactory();
- $serializerOptions = new SerializationOptions();
+ $serializerOptions =
SerializerFactory::OPTION_SERIALIZE_MAIN_SNAKS_WITHOUT_HASH +
+
SerializerFactory::OPTION_SERIALIZE_REFERENCE_SNAKS_WITHOUT_HASH;
+ $serializerFactory = new SerializerFactory( new
DataValueSerializer(), $serializerOptions );
- $serializerFactory = new LibSerializerFactory(
- $serializerOptions,
- $this->wikibaseRepo->getPropertyDataTypeLookup(),
- $entityFactory
- );
-
- $entitySerializer = new DispatchingEntitySerializer(
$serializerFactory, $serializerOptions );
+ $entitySerializer = $serializerFactory->newEntitySerializer();
$entityPrefetcher =
$this->wikibaseRepo->getStore()->getEntityPrefetcher();
$dumper = new JsonDumpGenerator(
diff --git a/repo/tests/phpunit/includes/Dumpers/JsonDumpGeneratorTest.php
b/repo/tests/phpunit/includes/Dumpers/JsonDumpGeneratorTest.php
index 89744a1..f7357ac 100644
--- a/repo/tests/phpunit/includes/Dumpers/JsonDumpGeneratorTest.php
+++ b/repo/tests/phpunit/includes/Dumpers/JsonDumpGeneratorTest.php
@@ -2,8 +2,10 @@
namespace Wikibase\Test\Dumpers;
+use DataValues\Serializers\DataValueSerializer;
use InvalidArgumentException;
use MWContentSerializationException;
+use Wikibase\DataModel\DeserializerFactory;
use Wikibase\DataModel\Entity\BasicEntityIdParser;
use Wikibase\DataModel\Entity\Entity;
use Wikibase\DataModel\Entity\EntityId;
@@ -11,14 +13,13 @@
use Wikibase\DataModel\Entity\ItemId;
use Wikibase\DataModel\Entity\Property;
use Wikibase\DataModel\Entity\PropertyId;
+use Wikibase\DataModel\SerializerFactory;
use Wikibase\Dumpers\JsonDumpGenerator;
-use Wikibase\Lib\Serializers\DispatchingEntitySerializer;
-use Wikibase\Lib\Serializers\SerializationOptions;
-use Wikibase\Lib\Serializers\LibSerializerFactory;
use Wikibase\Lib\Store\EntityLookup;
use Wikibase\Lib\Store\NullEntityPrefetcher;
use Wikibase\Lib\Store\UnresolvedRedirectException;
use Wikibase\Repo\Store\EntityIdPager;
+use Wikibase\Repo\WikibaseRepo;
/**
* @covers Wikibase\Dumpers\JsonDumpGenerator
@@ -29,24 +30,30 @@
*
* @license GPL 2+
* @author Daniel Kinzler
+ * @author Adam Shorland
*/
class JsonDumpGeneratorTest extends \PHPUnit_Framework_TestCase {
/**
- * @var LibSerializerFactory|null
+ * @var SerializerFactory|null
*/
- public $serializerFactory = null;
+ private $serializerFactory = null;
/**
- * @var SerializationOptions|null
+ * @var DeserializerFactory|null
*/
- public $serializationOptions = null;
+ private $deserializerFactory = null;
protected function setUp() {
parent::setUp();
- $this->serializerFactory = new LibSerializerFactory();
- $this->serializationOptions = new SerializationOptions();
+ $serializerOptions =
SerializerFactory::OPTION_SERIALIZE_MAIN_SNAKS_WITHOUT_HASH +
+
SerializerFactory::OPTION_SERIALIZE_REFERENCE_SNAKS_WITHOUT_HASH;
+ $this->serializerFactory = new SerializerFactory( new
DataValueSerializer(), $serializerOptions );
+ $this->deserializerFactory = new DeserializerFactory(
+
WikibaseRepo::getDefaultInstance()->getDataValueDeserializer(),
+ WikibaseRepo::getDefaultInstance()->getEntityIdParser()
+ );
}
/**
@@ -98,7 +105,7 @@
protected function newDumpGenerator( array $ids = array(), array
$missingIds = array(), array $redirectedIds = array() ) {
$out = fopen( 'php://output', 'w' );
- $serializer = new DispatchingEntitySerializer(
$this->serializerFactory );
+ $serializer = $this->serializerFactory->newEntitySerializer();
$entities = $this->makeEntities( $ids );
@@ -198,7 +205,7 @@
private function getJsonDumperWithExceptionHandler( array $ids ) {
$entityLookup =
$this->getEntityLookupThrowsMWContentSerializationException();
$out = fopen( 'php://output', 'w' );
- $serializer = new DispatchingEntitySerializer(
$this->serializerFactory );
+ $serializer = $this->serializerFactory->newEntitySerializer();
$jsonDumper = new JsonDumpGenerator(
$out,
@@ -279,10 +286,13 @@
return;
}
- $serializer =
$this->serializerFactory->newUnserializerForEntity( $id->getEntityType(),
$this->serializationOptions );
- $actualEntity = $serializer->newFromSerialization( $data );
+ $deserializer =
$this->deserializerFactory->newEntityDeserializer();
+ $actualEntity = $deserializer->deserialize( $data );
- $this->assertTrue( $expectedEntity->equals( $actualEntity ),
'Round trip failed for ' . $id->getSerialization() );
+ $this->assertTrue(
+ $expectedEntity->equals( $actualEntity ),
+ 'Round trip failed for ' . $id->getSerialization()
+ );
}
public function typeFilterProvider() {
--
To view, visit https://gerrit.wikimedia.org/r/226509
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: If1faecf40ff57671b38290095449ca942f8d400c
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Addshore <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits