Bene has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/278564

Change subject: [WIP] Inject entity serializer into api ResultBuilder
......................................................................

[WIP] Inject entity serializer into api ResultBuilder

Change-Id: I78ce2ac14a6750807f09722c7b0a48a3e199228e
Problem: The serialization flags get duplicated in the code base.
---
M repo/includes/Api/ApiHelperFactory.php
M repo/includes/Api/ResultBuilder.php
M repo/includes/WikibaseRepo.php
M repo/tests/phpunit/includes/Api/ApiHelperFactoryTest.php
M repo/tests/phpunit/includes/Api/ResultBuilderTest.php
5 files changed, 30 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/64/278564/1

diff --git a/repo/includes/Api/ApiHelperFactory.php 
b/repo/includes/Api/ApiHelperFactory.php
index a5ecaf7..1c988a1 100644
--- a/repo/includes/Api/ApiHelperFactory.php
+++ b/repo/includes/Api/ApiHelperFactory.php
@@ -4,6 +4,7 @@
 
 use ApiBase;
 use DataValues\Serializers\DataValueSerializer;
+use Serializers\Serializer;
 use SiteStore;
 use Wikibase\DataModel\SerializerFactory;
 use Wikibase\DataModel\Services\Lookup\PropertyDataTypeLookup;
@@ -59,6 +60,11 @@
         */
        private $siteStore;
 
+       /**
+        * @var Serializer
+        */
+       private $entitySerializer;
+
        public function __construct(
                EntityTitleLookup $titleLookup,
                ExceptionLocalizer $exceptionLocalizer,
@@ -66,7 +72,8 @@
                SiteStore $siteStore,
                SummaryFormatter $summaryFormatter,
                EntityRevisionLookup $entityRevisionLookup,
-               EditEntityFactory $editEntityFactory
+               EditEntityFactory $editEntityFactory,
+               Serializer $entitySerializer
        ) {
                $this->titleLookup = $titleLookup;
                $this->exceptionLocalizer = $exceptionLocalizer;
@@ -75,6 +82,7 @@
                $this->summaryFormatter = $summaryFormatter;
                $this->entityRevisionLookup = $entityRevisionLookup;
                $this->editEntityFactory = $editEntityFactory;
+               $this->entitySerializer = $entitySerializer;
        }
 
        /**
@@ -89,6 +97,7 @@
                        $api->getResult(),
                        $this->titleLookup,
                        $this->newSerializerFactory(),
+                       $this->entitySerializer,
                        $this->siteStore,
                        $this->dataTypeLookup,
                        true // The mediawiki api should always be given 
metadata
diff --git a/repo/includes/Api/ResultBuilder.php 
b/repo/includes/Api/ResultBuilder.php
index b7c21d7..8db5cfe 100644
--- a/repo/includes/Api/ResultBuilder.php
+++ b/repo/includes/Api/ResultBuilder.php
@@ -4,6 +4,7 @@
 
 use ApiResult;
 use Revision;
+use Serializers\Serializer;
 use SiteStore;
 use Status;
 use Wikibase\DataModel\Entity\EntityDocument;
@@ -50,6 +51,11 @@
        private $serializerFactory;
 
        /**
+        * @var Serializer
+        */
+       private $entitySerializer;
+
+       /**
         * @var SiteStore
         */
        private $siteStore;
@@ -83,6 +89,7 @@
         * @param ApiResult $result
         * @param EntityTitleLookup $entityTitleLookup
         * @param SerializerFactory $serializerFactory
+        * @param Serializer $entitySerializer
         * @param SiteStore $siteStore
         * @param PropertyDataTypeLookup $dataTypeLookup
         * @param bool|null $addMetaData when special elements such as 
'_element' are needed
@@ -91,6 +98,7 @@
                ApiResult $result,
                EntityTitleLookup $entityTitleLookup,
                SerializerFactory $serializerFactory,
+               Serializer $entitySerializer,
                SiteStore $siteStore,
                PropertyDataTypeLookup $dataTypeLookup,
                $addMetaData = null
@@ -98,6 +106,7 @@
                $this->result = $result;
                $this->entityTitleLookup = $entityTitleLookup;
                $this->serializerFactory = $serializerFactory;
+               $this->entitySerializer = $entitySerializer;
                $this->siteStore = $siteStore;
                $this->dataTypeLookup = $dataTypeLookup;
                $this->addMetaData = $addMetaData;
@@ -339,8 +348,7 @@
                array $filterLangCodes,
                array $fallbackChains
        ) {
-               $entitySerializer = 
$this->serializerFactory->newEntitySerializer();
-               $serialization = $entitySerializer->serialize( $entity );
+               $serialization = $this->entitySerializer->serialize( $entity );
 
                $serialization = $this->filterEntitySerializationUsingProps( 
$serialization, $props );
 
diff --git a/repo/includes/WikibaseRepo.php b/repo/includes/WikibaseRepo.php
index 984b3f9..2dd80e3 100644
--- a/repo/includes/WikibaseRepo.php
+++ b/repo/includes/WikibaseRepo.php
@@ -1453,7 +1453,11 @@
                        $this->getSiteStore(),
                        $this->getSummaryFormatter(),
                        $this->getEntityRevisionLookup( 'uncached' ),
-                       $this->newEditEntityFactory( $context )
+                       $this->newEditEntityFactory( $context ),
+                       $this->getEntitySerializer(
+                               
SerializerFactory::OPTION_SERIALIZE_MAIN_SNAKS_WITHOUT_HASH +
+                               
SerializerFactory::OPTION_SERIALIZE_REFERENCE_SNAKS_WITHOUT_HASH
+                       )
                );
        }
 
diff --git a/repo/tests/phpunit/includes/Api/ApiHelperFactoryTest.php 
b/repo/tests/phpunit/includes/Api/ApiHelperFactoryTest.php
index 52abfce..4ba5fba 100644
--- a/repo/tests/phpunit/includes/Api/ApiHelperFactoryTest.php
+++ b/repo/tests/phpunit/includes/Api/ApiHelperFactoryTest.php
@@ -6,6 +6,7 @@
 use ApiResult;
 use HashSiteStore;
 use Language;
+use Serializers\Serializer;
 use Wikibase\DataModel\Services\Lookup\PropertyDataTypeLookup;
 use Wikibase\EditEntityFactory;
 use Wikibase\Lib\Store\EntityRevisionLookup;
@@ -39,6 +40,7 @@
                $entityRevisionLookup = $this->getMock( 
EntityRevisionLookup::class );
                $editEntityFactory = $this->getMockBuilder( 
EditEntityFactory::class )
                        ->disableOriginalConstructor()->getMock();
+               $entitySeriailzer = $this->getMock( Serializer::class );
 
                return new ApiHelperFactory(
                        $titleLookup,
@@ -47,7 +49,8 @@
                        new HashSiteStore(),
                        $summaryFormatter,
                        $entityRevisionLookup,
-                       $editEntityFactory
+                       $editEntityFactory,
+                       $entitySeriailzer
                );
        }
 
diff --git a/repo/tests/phpunit/includes/Api/ResultBuilderTest.php 
b/repo/tests/phpunit/includes/Api/ResultBuilderTest.php
index c15b292..376958d 100644
--- a/repo/tests/phpunit/includes/Api/ResultBuilderTest.php
+++ b/repo/tests/phpunit/includes/Api/ResultBuilderTest.php
@@ -87,6 +87,7 @@
                        $result,
                        $mockEntityTitleLookup,
                        $serializerFactory,
+                       $serializerFactory->newEntitySerializer(),
                        new HashSiteStore(),
                        $mockPropertyDataTypeLookup,
                        $addMetaData

-- 
To view, visit https://gerrit.wikimedia.org/r/278564
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I78ce2ac14a6750807f09722c7b0a48a3e199228e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Bene <[email protected]>

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

Reply via email to