WMDE-leszek has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/373050 )

Change subject: Remove data-access dependency on 
WikibaseClient::getLFChainFactory
......................................................................

Remove data-access dependency on WikibaseClient::getLFChainFactory

This makes GenericServices provide LanguageFallbackChainFactory
to the data access service instantiators.

Note that with this change WikibaseClient and/or WikibaseRepo
might be using two instances of LanguageFallbackChainFactory,
one used by services provided by WikibaseServices container,
and another one provided by top-level factories themselves.

This is temporary and will be fixed by having WikibaseServices
provide one single instance of this service.

Change-Id: Ifdc3f8bc29dbdbd9ff2b9df7c9cf9f434a90add5
---
M data-access/src/GenericServices.php
M data-access/src/RepositoryServiceWiring.php
M data-access/tests/phpunit/GenericServicesTest.php
3 files changed, 35 insertions(+), 4 deletions(-)


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

diff --git a/data-access/src/GenericServices.php 
b/data-access/src/GenericServices.php
index d380c10..41f842c 100644
--- a/data-access/src/GenericServices.php
+++ b/data-access/src/GenericServices.php
@@ -6,6 +6,7 @@
 use Serializers\DispatchingSerializer;
 use Serializers\Serializer;
 use Wikibase\DataModel\SerializerFactory;
+use Wikibase\LanguageFallbackChainFactory;
 use Wikibase\Lib\EntityTypeDefinitions;
 use Wikibase\Lib\Store\EntityNamespaceLookup;
 
@@ -25,6 +26,11 @@
         * @var Serializer[]
         */
        private $entitySerializers;
+
+       /**
+        * @var LanguageFallbackChainFactory
+        */
+       private $languageFallbackChainFactory;
 
        public function __construct(
                EntityNamespaceLookup $entityNamespaceLookup,
@@ -70,4 +76,15 @@
                return new SerializerFactory( new DataValueSerializer(), 
$options );
        }
 
+       /**
+        * @return LanguageFallbackChainFactory
+        */
+       public function getLanguageFallbackChainFactory() {
+               if ( $this->languageFallbackChainFactory === null ) {
+                       $this->languageFallbackChainFactory = new 
LanguageFallbackChainFactory();
+               }
+
+               return $this->languageFallbackChainFactory;
+       }
+
 }
diff --git a/data-access/src/RepositoryServiceWiring.php 
b/data-access/src/RepositoryServiceWiring.php
index 716c28f..d40b69e 100644
--- a/data-access/src/RepositoryServiceWiring.php
+++ b/data-access/src/RepositoryServiceWiring.php
@@ -142,9 +142,7 @@
 
        'TermSearchInteractorFactory' => function (
                RepositoryServiceContainer $services,
-               GenericServices $genericServices,
-               DataAccessSettings $settings,
-               WikibaseClient $client
+               GenericServices $genericServices
        ) {
                /** @var TermIndex $termIndex */
                $termIndex = $services->getService( 'TermIndex' );
@@ -153,7 +151,7 @@
 
                return new TermIndexSearchInteractorFactory(
                        $termIndex,
-                       $client->getLanguageFallbackChainFactory(),
+                       $genericServices->getLanguageFallbackChainFactory(),
                        $prefetchingTermLookup
                );
        },
diff --git a/data-access/tests/phpunit/GenericServicesTest.php 
b/data-access/tests/phpunit/GenericServicesTest.php
index c43a766..1fe2288 100644
--- a/data-access/tests/phpunit/GenericServicesTest.php
+++ b/data-access/tests/phpunit/GenericServicesTest.php
@@ -5,6 +5,7 @@
 use Serializers\Serializer;
 use Wikibase\DataAccess\GenericServices;
 use Wikibase\DataModel\SerializerFactory;
+use Wikibase\LanguageFallbackChainFactory;
 use Wikibase\Lib\EntityTypeDefinitions;
 use Wikibase\Lib\Store\EntityNamespaceLookup;
 
@@ -52,6 +53,21 @@
                $this->assertNotSame( $defaultSerializerOne, $otherSerializer );
        }
 
+       public function testGetLanguageFallbackChainFactory() {
+               $services = $this->newGenericServices();
+
+               $this->assertInstanceOf( LanguageFallbackChainFactory::class, 
$services->getLanguageFallbackChainFactory() );
+       }
+
+       public function 
testGetLanguageFallbackChainFactoryReusesTheInstanceForMultipleCalls() {
+               $services = $this->newGenericServices();
+
+               $serviceOne = $services->getLanguageFallbackChainFactory();
+               $serviceTwo = $services->getLanguageFallbackChainFactory();
+
+               $this->assertSame( $serviceOne, $serviceTwo );
+       }
+
        private function newGenericServices() {
                return new GenericServices( new EntityNamespaceLookup( [] ), 
new EntityTypeDefinitions( [] ) );
        }

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

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

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

Reply via email to