jenkins-bot has submitted this change and it was merged. ( 
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/PerRepositoryServiceContainer.php
M data-access/src/PerRepositoryServiceWiring.php
M data-access/tests/phpunit/GenericServicesTest.php
4 files changed, 36 insertions(+), 5 deletions(-)

Approvals:
  WMDE-leszek: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/data-access/src/GenericServices.php 
b/data-access/src/GenericServices.php
index a8ad864..84b40a9 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;
 
 /**
  * A container/factory of services which don't rely/require 
repository-specific configuration.
@@ -36,6 +37,11 @@
         * @var LanguageFallbackChainFactory
         */
        private $languageFallbackChainFactory;
+
+       /**
+        * @var StringNormalizer
+        */
+       private $stringNormalizer;
 
        public function __construct(
                EntityNamespaceLookup $entityNamespaceLookup,
@@ -92,4 +98,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/PerRepositoryServiceContainer.php 
b/data-access/src/PerRepositoryServiceContainer.php
index b755f55..4127387 100644
--- a/data-access/src/PerRepositoryServiceContainer.php
+++ b/data-access/src/PerRepositoryServiceContainer.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/PerRepositoryServiceWiring.php 
b/data-access/src/PerRepositoryServiceWiring.php
index 8de5ac5..9275711 100644
--- a/data-access/src/PerRepositoryServiceWiring.php
+++ b/data-access/src/PerRepositoryServiceWiring.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\PerRepositoryServiceContainer;
@@ -120,11 +119,10 @@
        'TermIndex' => function (
                PerRepositoryServiceContainer $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: merged
Gerrit-Change-Id: Ia2ff94c437f5f5e5cde2d3c948f07661798eb839
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: WMDE-leszek <[email protected]>
Gerrit-Reviewer: Daniel Kinzler <[email protected]>
Gerrit-Reviewer: WMDE-leszek <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to