Bene has uploaded a new change for review.

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

Change subject: Obtain entity serializer from WikibaseClient
......................................................................

Obtain entity serializer from WikibaseClient

ClientEntitySerializer now requires a Serializer to be passed to it
supporting all registered entity types. It is obtained from global state
in the scribunto access layer and gets passed to the client serializer via
the EntityAccessor.

Change-Id: I05d89ef2ffdddd051e28377189598c682ab2a7ef
---
M client/includes/DataAccess/Scribunto/EntityAccessor.php
M client/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseLibrary.php
M client/includes/Serializer/ClientEntitySerializer.php
M client/tests/phpunit/includes/DataAccess/Scribunto/EntityAccessorTest.php
M client/tests/phpunit/includes/Serializer/ClientEntitySerializerTest.php
5 files changed, 34 insertions(+), 0 deletions(-)


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

diff --git a/client/includes/DataAccess/Scribunto/EntityAccessor.php 
b/client/includes/DataAccess/Scribunto/EntityAccessor.php
index 2a3d79e..3e5b06f 100644
--- a/client/includes/DataAccess/Scribunto/EntityAccessor.php
+++ b/client/includes/DataAccess/Scribunto/EntityAccessor.php
@@ -3,6 +3,7 @@
 namespace Wikibase\Client\DataAccess\Scribunto;
 
 use Language;
+use Serializers\Serializer;
 use Wikibase\Client\Serializer\ClientEntitySerializer;
 use Wikibase\Client\Usage\UsageAccumulator;
 use Wikibase\DataModel\Entity\EntityIdParser;
@@ -41,6 +42,11 @@
        private $usageAccumulator;
 
        /**
+        * @var Serializer
+        */
+       private $entitySerializer;
+
+       /**
         * @var PropertyDataTypeLookup
         */
        private $dataTypeLookup;
@@ -64,6 +70,7 @@
         * @param EntityIdParser $entityIdParser
         * @param EntityLookup $entityLookup
         * @param UsageAccumulator $usageAccumulator
+        * @param Serializer $entitySerializer
         * @param PropertyDataTypeLookup $dataTypeLookup
         * @param LanguageFallbackChain $fallbackChain
         * @param Language $language
@@ -73,6 +80,7 @@
                EntityIdParser $entityIdParser,
                EntityLookup $entityLookup,
                UsageAccumulator $usageAccumulator,
+               Serializer $entitySerializer,
                PropertyDataTypeLookup $dataTypeLookup,
                LanguageFallbackChain $fallbackChain,
                Language $language,
@@ -81,6 +89,7 @@
                $this->entityIdParser = $entityIdParser;
                $this->entityLookup = $entityLookup;
                $this->usageAccumulator = $usageAccumulator;
+               $this->entitySerializer = $entitySerializer;
                $this->dataTypeLookup = $dataTypeLookup;
                $this->fallbackChain = $fallbackChain;
                $this->language = $language;
@@ -147,6 +156,7 @@
 
        private function newClientEntitySerializer() {
                return new ClientEntitySerializer(
+                       $this->entitySerializer,
                        $this->dataTypeLookup,
                        array_unique( array_merge(
                                $this->termsLanguages->getLanguages(),
diff --git 
a/client/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseLibrary.php 
b/client/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseLibrary.php
index 016e764..6e654df 100644
--- a/client/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseLibrary.php
+++ b/client/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseLibrary.php
@@ -15,6 +15,7 @@
 use Wikibase\Client\Usage\UsageTrackingTermLookup;
 use Wikibase\Client\WikibaseClient;
 use Wikibase\DataModel\Entity\EntityIdParsingException;
+use Wikibase\DataModel\SerializerFactory;
 use Wikibase\DataModel\Services\Lookup\EntityAccessLimitException;
 use Wikibase\DataModel\Services\Lookup\EntityRetrievingTermLookup;
 use Wikibase\LanguageFallbackChain;
@@ -192,6 +193,10 @@
                        $wikibaseClient->getEntityIdParser(),
                        $wikibaseClient->getRestrictedEntityLookup(),
                        $this->getUsageAccumulator(),
+                       $wikibaseClient->getEntitySerializer(
+                               
SerializerFactory::OPTION_SERIALIZE_MAIN_SNAKS_WITHOUT_HASH +
+                               
SerializerFactory::OPTION_SERIALIZE_REFERENCE_SNAKS_WITHOUT_HASH
+                       ),
                        $wikibaseClient->getPropertyDataTypeLookup(),
                        $this->getLanguageFallbackChain(),
                        $this->getLanguage(),
diff --git a/client/includes/Serializer/ClientEntitySerializer.php 
b/client/includes/Serializer/ClientEntitySerializer.php
index 37175fc..96612b2 100644
--- a/client/includes/Serializer/ClientEntitySerializer.php
+++ b/client/includes/Serializer/ClientEntitySerializer.php
@@ -21,6 +21,11 @@
 class ClientEntitySerializer implements Serializer {
 
        /**
+        * @var Serializer
+        */
+       private $entitySerializer;
+
+       /**
         * @var PropertyDataTypeLookup
         */
        private $dataTypeLookup;
@@ -46,15 +51,18 @@
        private $fallbackChains;
 
        /**
+        * @param Serializer $entitySerializer
         * @param PropertyDataTypeLookup $dataTypeLookup
         * @param string[] $filterLangCodes
         * @param LanguageFallbackChain[] $fallbackChains
         */
        public function __construct(
+               Serializer $entitySerializer,
                PropertyDataTypeLookup $dataTypeLookup,
                array $filterLangCodes,
                array $fallbackChains
        ) {
+               $this->entitySerializer = $entitySerializer;
                $this->dataTypeLookup = $dataTypeLookup;
                $this->filterLangCodes = $filterLangCodes;
                $this->fallbackChains = $fallbackChains;
diff --git 
a/client/tests/phpunit/includes/DataAccess/Scribunto/EntityAccessorTest.php 
b/client/tests/phpunit/includes/DataAccess/Scribunto/EntityAccessorTest.php
index 4981380..96a4b42 100644
--- a/client/tests/phpunit/includes/DataAccess/Scribunto/EntityAccessorTest.php
+++ b/client/tests/phpunit/includes/DataAccess/Scribunto/EntityAccessorTest.php
@@ -2,6 +2,7 @@
 
 namespace Wikibase\Client\Tests\DataAccess\Scribunto;
 
+use DataValues\Serializers\DataValueSerializer;
 use DataValues\StringValue;
 use Language;
 use ReflectionMethod;
@@ -14,6 +15,7 @@
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\DataModel\ReferenceList;
 use Wikibase\DataModel\Entity\BasicEntityIdParser;
+use Wikibase\DataModel\SerializerFactory;
 use Wikibase\DataModel\Services\Lookup\EntityLookup;
 use Wikibase\DataModel\Services\Lookup\PropertyDataTypeLookup;
 use Wikibase\DataModel\Snak\PropertySomeValueSnak;
@@ -48,6 +50,9 @@
        ) {
                $language = new Language( $langCode );
 
+               $serializerFactory = new SerializerFactory( new 
DataValueSerializer() );
+               $entitySerializer = $serializerFactory->newEntitySerializer();
+
                $propertyDataTypeLookup = $this->getMock( 
PropertyDataTypeLookup::class );
                $propertyDataTypeLookup->expects( $this->any() )
                        ->method( 'getDataTypeIdForProperty' )
@@ -62,6 +67,7 @@
                        new BasicEntityIdParser(),
                        $entityLookup ?: new MockRepository(),
                        $usageAccumulator ? $usageAccumulator : new 
HashUsageAccumulator(),
+                       $entitySerializer,
                        $propertyDataTypeLookup,
                        $fallbackChain,
                        $language,
diff --git 
a/client/tests/phpunit/includes/Serializer/ClientEntitySerializerTest.php 
b/client/tests/phpunit/includes/Serializer/ClientEntitySerializerTest.php
index 0e93fb5..f749f56 100644
--- a/client/tests/phpunit/includes/Serializer/ClientEntitySerializerTest.php
+++ b/client/tests/phpunit/includes/Serializer/ClientEntitySerializerTest.php
@@ -2,9 +2,11 @@
 
 namespace Wikibase\Client\Tests\Serializer;
 
+use DataValues\Serializers\DataValueSerializer;
 use PHPUnit_Framework_TestCase;
 use Wikibase\Client\Serializer\ClientEntitySerializer;
 use Wikibase\DataModel\Entity\Item;
+use Wikibase\DataModel\SerializerFactory;
 use Wikibase\DataModel\Services\Lookup\PropertyDataTypeLookup;
 use Wikibase\DataModel\Snak\PropertyNoValueSnak;
 use Wikibase\LanguageFallbackChain;
@@ -21,6 +23,8 @@
 class ClientEntitySerializerTest extends PHPUnit_Framework_TestCase {
 
        private function newInstance() {
+               $serializerFactory = new SerializerFactory( new 
DataValueSerializer() );
+
                $fallbackChain = $this->getMockBuilder( 
LanguageFallbackChain::class )
                        ->disableOriginalConstructor()
                        ->getMock();
@@ -34,6 +38,7 @@
                        ->will( $this->returnValue( '<DATATYPE>' ) );
 
                return new ClientEntitySerializer(
+                       $serializerFactory->newItemSerializer(),
                        $dataTypeLookup,
                        array( 'en' ),
                        array( 'en' => $fallbackChain )

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I05d89ef2ffdddd051e28377189598c682ab2a7ef
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