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

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

Remove data-access dependency on WikibaseClient::getStringNormalizer

This makes GenericServices provide a StringNormalizer instance
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.

With this changes, it is no longer needed to pass WikibaseClient
instance to the callbacks instantiating services defined in
the RepositoryServiceWiring.
Note: this does not yet remove entirely dependency of data-access
on the Client component.

Change-Id: Ia2ff94c437f5f5e5cde2d3c948f07661798eb839
---
M data-access/src/GenericServices.php
M data-access/src/RepositoryServiceContainer.php
M data-access/src/RepositoryServiceWiring.php
M data-access/tests/phpunit/GenericServicesTest.php
4 files changed, 36 insertions(+), 5 deletions(-)


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

diff --git a/data-access/src/GenericServices.php 
b/data-access/src/GenericServices.php
index 41f842c..a9d31a9 100644
--- a/data-access/src/GenericServices.php
+++ b/data-access/src/GenericServices.php
@@ -9,6 +9,7 @@
 use Wikibase\LanguageFallbackChainFactory;
 use Wikibase\Lib\EntityTypeDefinitions;
 use Wikibase\Lib\Store\EntityNamespaceLookup;
+use Wikibase\StringNormalizer;
 
 class GenericServices {
 
@@ -31,6 +32,11 @@
         * @var LanguageFallbackChainFactory
         */
        private $languageFallbackChainFactory;
+
+       /**
+        * @var StringNormalizer
+        */
+       private $stringNormalizer;
 
        public function __construct(
                EntityNamespaceLookup $entityNamespaceLookup,
@@ -87,4 +93,15 @@
                return $this->languageFallbackChainFactory;
        }
 
+       /**
+        * @return StringNormalizer
+        */
+       public function getStringNormalizer() {
+               if ( $this->stringNormalizer === null ) {
+                       $this->stringNormalizer = new StringNormalizer();
+               }
+
+               return $this->stringNormalizer;
+       }
+
 }
diff --git a/data-access/src/RepositoryServiceContainer.php 
b/data-access/src/RepositoryServiceContainer.php
index d4524e0..496d51b 100644
--- a/data-access/src/RepositoryServiceContainer.php
+++ b/data-access/src/RepositoryServiceContainer.php
@@ -74,7 +74,7 @@
                DataAccessSettings $settings,
                WikibaseClient $client
        ) {
-               parent::__construct( [ $genericServices, $settings, $client ] );
+               parent::__construct( [ $genericServices, $settings ] );
 
                $this->databaseName = $databaseName;
                $this->repositoryName = $repositoryName;
diff --git a/data-access/src/RepositoryServiceWiring.php 
b/data-access/src/RepositoryServiceWiring.php
index d40b69e..9db373c 100644
--- a/data-access/src/RepositoryServiceWiring.php
+++ b/data-access/src/RepositoryServiceWiring.php
@@ -1,7 +1,6 @@
 <?php
 
 use Wikibase\Client\Serializer\ForbiddenSerializer;
-use Wikibase\Client\WikibaseClient;
 use Wikibase\DataAccess\DataAccessSettings;
 use Wikibase\DataAccess\GenericServices;
 use Wikibase\DataAccess\RepositoryServiceContainer;
@@ -126,11 +125,10 @@
        'TermIndex' => function (
                RepositoryServiceContainer $services,
                GenericServices $genericServices,
-               DataAccessSettings $settings,
-               WikibaseClient $client
+               DataAccessSettings $settings
        ) {
                $index = new TermSqlIndex(
-                       $client->getStringNormalizer(),
+                       $genericServices->getStringNormalizer(),
                        $services->getEntityIdComposer(),
                        $services->getEntityIdParser(),
                        $services->getDatabaseName(),
diff --git a/data-access/tests/phpunit/GenericServicesTest.php 
b/data-access/tests/phpunit/GenericServicesTest.php
index 1fe2288..17482de 100644
--- a/data-access/tests/phpunit/GenericServicesTest.php
+++ b/data-access/tests/phpunit/GenericServicesTest.php
@@ -8,6 +8,7 @@
 use Wikibase\LanguageFallbackChainFactory;
 use Wikibase\Lib\EntityTypeDefinitions;
 use Wikibase\Lib\Store\EntityNamespaceLookup;
+use Wikibase\StringNormalizer;
 
 /**
  * @covers Wikibase\DataAccess\GenericServices
@@ -68,6 +69,21 @@
                $this->assertSame( $serviceOne, $serviceTwo );
        }
 
+       public function testGetStringNormalizer() {
+               $services = $this->newGenericServices();
+
+               $this->assertInstanceOf( StringNormalizer::class, 
$services->getStringNormalizer() );
+       }
+
+       public function 
testGetStringNormalizerReusesTheInstanceForMultipleCalls() {
+               $services = $this->newGenericServices();
+
+               $serviceOne = $services->getStringNormalizer();
+               $serviceTwo = $services->getStringNormalizer();
+
+               $this->assertSame( $serviceOne, $serviceTwo );
+       }
+
        private function newGenericServices() {
                return new GenericServices( new EntityNamespaceLookup( [] ), 
new EntityTypeDefinitions( [] ) );
        }

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

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