jenkins-bot has submitted this change and it was merged.

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(-)

Approvals:
  Jonas Kress (WMDE): Looks good to me, but someone else must approve
  Jeroen De Dauw: Looks good to me, approved
  jenkins-bot: Verified



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: merged
Gerrit-Change-Id: If1faecf40ff57671b38290095449ca942f8d400c
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Addshore <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: Aude <[email protected]>
Gerrit-Reviewer: Daniel Kinzler <[email protected]>
Gerrit-Reviewer: JanZerebecki <[email protected]>
Gerrit-Reviewer: Jeroen De Dauw <[email protected]>
Gerrit-Reviewer: Jonas Kress (WMDE) <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to