jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/373098 )

Change subject: Use the StringNormalizer instance provided by WikibaseServices 
in Client and (optionally) repo
......................................................................


Use the StringNormalizer instance provided by WikibaseServices in Client and 
(optionally) repo

Change-Id: I168418f80988159f617bb0ebfa963e47dbeaef8c
---
M client/includes/WikibaseClient.php
M data-access/src/MultipleRepositoryAwareWikibaseServices.php
M data-access/src/WikibaseServices.php
M data-access/tests/phpunit/MultipleRepositoryAwareWikibaseServicesTest.php
M repo/includes/WikibaseRepo.php
5 files changed, 52 insertions(+), 27 deletions(-)

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



diff --git a/client/includes/WikibaseClient.php 
b/client/includes/WikibaseClient.php
index 9456d7b..dc50d38 100644
--- a/client/includes/WikibaseClient.php
+++ b/client/includes/WikibaseClient.php
@@ -163,11 +163,6 @@
        private $store = null;
 
        /**
-        * @var StringNormalizer|null
-        */
-       private $stringNormalizer = null;
-
-       /**
         * @var Site|null
         */
        private $site = null;
@@ -513,11 +508,7 @@
         * @return StringNormalizer
         */
        public function getStringNormalizer() {
-               if ( $this->stringNormalizer === null ) {
-                       $this->stringNormalizer = new StringNormalizer();
-               }
-
-               return $this->stringNormalizer;
+               return $this->getWikibaseServices()->getStringNormalizer();
        }
 
        /**
diff --git a/data-access/src/MultipleRepositoryAwareWikibaseServices.php 
b/data-access/src/MultipleRepositoryAwareWikibaseServices.php
index 986d3f5..75171e2 100644
--- a/data-access/src/MultipleRepositoryAwareWikibaseServices.php
+++ b/data-access/src/MultipleRepositoryAwareWikibaseServices.php
@@ -18,6 +18,7 @@
 use Wikibase\Lib\Store\EntityRevisionLookup;
 use Wikibase\Lib\Store\EntityStoreWatcher;
 use Wikibase\Lib\Store\PropertyInfoLookup;
+use Wikibase\StringNormalizer;
 
 /**
  * Top-level container/factory of data access services making use of the 
"dispatching" pattern of
@@ -55,27 +56,29 @@
        ) {
                parent::__construct();
 
+               $genericServices = new GenericServices( $entityNamespaceLookup, 
$entityTypeDefinitions );
+
                $this->multiRepositoryServices = 
$this->createMultiRepositoryServices(
                        $idParser,
                        $idComposer,
-                       $entityNamespaceLookup,
                        $repositoryDefinitions,
                        $entityTypeDefinitions,
+                       $genericServices,
                        $settings,
                        $perRepositoryServiceWiring
 
                );
                $this->multiRepositoryServices->applyWiring( 
$multiRepositoryServiceWiring );
 
-               $this->defineServices();
+               $this->defineServices( $genericServices );
        }
 
        private function createMultiRepositoryServices(
                EntityIdParser $idParser,
                EntityIdComposer $idComposer,
-               EntityNamespaceLookup $entityNamespaceLookup,
                RepositoryDefinitions $repositoryDefinitions,
                EntityTypeDefinitions $entityTypeDefinitions,
+               GenericServices $genericServices,
                DataAccessSettings $settings,
                array $perRepositoryServiceWiring
        ) {
@@ -83,9 +86,9 @@
                        $this->getRepositoryServiceContainerFactory(
                                $idParser,
                                $idComposer,
-                               $entityNamespaceLookup,
                                $repositoryDefinitions,
                                $entityTypeDefinitions,
+                               $genericServices,
                                $settings,
                                $perRepositoryServiceWiring
                        ),
@@ -96,9 +99,9 @@
        private function getRepositoryServiceContainerFactory(
                EntityIdParser $idParser,
                EntityIdComposer $idComposer,
-               EntityNamespaceLookup $entityNamespaceLookup,
                RepositoryDefinitions $repositoryDefinitions,
                EntityTypeDefinitions $entityTypeDefinitions,
+               GenericServices $genericServices,
                DataAccessSettings $settings,
                array $perRepositoryServiceWiring
        ) {
@@ -106,8 +109,6 @@
                        $idParser,
                        $repositoryDefinitions->getPrefixMappings()
                );
-
-               $genericServices = new GenericServices( $entityNamespaceLookup, 
$entityTypeDefinitions );
 
                return new PerRepositoryServiceContainerFactory(
                        $idParserFactory,
@@ -121,7 +122,7 @@
                );
        }
 
-       private function defineServices() {
+       private function defineServices( GenericServices $genericServices ) {
                $multiRepositoryServices = $this->multiRepositoryServices;
 
                $this->applyWiring( [
@@ -139,6 +140,9 @@
                        },
                        'PropertyInfoLookup' => function() use ( 
$multiRepositoryServices ) {
                                return 
$multiRepositoryServices->getPropertyInfoLookup();
+                       },
+                       'StringNormalizer' => function() use ( $genericServices 
) {
+                               return $genericServices->getStringNormalizer();
                        },
                        'TermBuffer' => function() use ( 
$multiRepositoryServices ) {
                                return 
$multiRepositoryServices->getTermBuffer();
@@ -185,6 +189,13 @@
        }
 
        /**
+        * @return StringNormalizer
+        */
+       public function getStringNormalizer() {
+               return $this->getService( 'StringNormalizer' );
+       }
+
+       /**
         * @return TermBuffer
         */
        public function getTermBuffer() {
diff --git a/data-access/src/WikibaseServices.php 
b/data-access/src/WikibaseServices.php
index 76342fd..6679575 100644
--- a/data-access/src/WikibaseServices.php
+++ b/data-access/src/WikibaseServices.php
@@ -9,6 +9,7 @@
 use Wikibase\Lib\Store\EntityRevisionLookup;
 use Wikibase\Lib\Store\EntityStoreWatcher;
 use Wikibase\Lib\Store\PropertyInfoLookup;
+use Wikibase\StringNormalizer;
 
 /**
  * Interface of the top-level container/factory of data access services.
@@ -53,6 +54,11 @@
        public function getPropertyInfoLookup();
 
        /**
+        * @return StringNormalizer
+        */
+       public function getStringNormalizer();
+
+       /**
         * @return TermBuffer
         */
        public function getTermBuffer();
diff --git 
a/data-access/tests/phpunit/MultipleRepositoryAwareWikibaseServicesTest.php 
b/data-access/tests/phpunit/MultipleRepositoryAwareWikibaseServicesTest.php
index f7839b0..25d2835 100644
--- a/data-access/tests/phpunit/MultipleRepositoryAwareWikibaseServicesTest.php
+++ b/data-access/tests/phpunit/MultipleRepositoryAwareWikibaseServicesTest.php
@@ -3,8 +3,8 @@
 namespace Wikibase\DataAccess\Tests;
 
 use Wikibase\DataAccess\DataAccessSettings;
-use Wikibase\DataAccess\MultiRepositoryServices;
 use Wikibase\DataAccess\MultipleRepositoryAwareWikibaseServices;
+use Wikibase\DataAccess\MultiRepositoryServices;
 use Wikibase\DataModel\Entity\BasicEntityIdParser;
 use Wikibase\DataModel\Services\Entity\EntityPrefetcher;
 use Wikibase\DataModel\Services\Term\TermBuffer;
@@ -17,6 +17,7 @@
 use Wikibase\Lib\Store\EntityRevisionLookup;
 use Wikibase\Lib\Store\EntityStoreWatcher;
 use Wikibase\Lib\Store\PropertyInfoLookup;
+use Wikibase\StringNormalizer;
 
 /**
  * @covers Wikibase\DataAccess\MultipleRepositoryAwareWikibaseServices
@@ -109,6 +110,12 @@
                $this->assertInstanceOf( PropertyInfoLookup::class, 
$wikibaseServices->getPropertyInfoLookup() );
        }
 
+       public function testGetStringNormalizer() {
+               $wikibaseServices = 
$this->newMultipleRepositoryAwareWikibaseServices();
+
+               $this->assertInstanceOf( StringNormalizer::class, 
$wikibaseServices->getStringNormalizer() );
+       }
+
        public function testGetTermBuffer() {
                $wikibaseServices = 
$this->newMultipleRepositoryAwareWikibaseServices();
 
@@ -124,18 +131,24 @@
                );
        }
 
-       public function 
testGetServicesIncludesServicesProvidedByMultiRepositoryServiceContainer() {
+       public function testGetServiceNames() {
                $wikibaseServices = 
$this->newMultipleRepositoryAwareWikibaseServices();
 
                $serviceNames = $wikibaseServices->getServiceNames();
 
-               $this->assertContains( 'EntityInfoBuilderFactory', 
$serviceNames );
-               $this->assertContains( 'EntityPrefetcher', $serviceNames );
-               $this->assertContains( 'EntityRevisionLookup', $serviceNames );
-               $this->assertContains( 'EntityStoreWatcher', $serviceNames );
-               $this->assertContains( 'PropertyInfoLookup', $serviceNames );
-               $this->assertContains( 'TermBuffer', $serviceNames );
-               $this->assertContains( 'TermSearchInteractorFactory', 
$serviceNames );
+               $this->assertEquals(
+                       [
+                               'EntityInfoBuilderFactory',
+                               'EntityPrefetcher',
+                               'EntityRevisionLookup',
+                               'EntityStoreWatcher',
+                               'PropertyInfoLookup',
+                               'StringNormalizer',
+                               'TermBuffer',
+                               'TermSearchInteractorFactory',
+                       ],
+                       $serviceNames
+               );
        }
 
        public function testGetMultiRepositoryServices() {
diff --git a/repo/includes/WikibaseRepo.php b/repo/includes/WikibaseRepo.php
index c7fb1fa..be8243d 100644
--- a/repo/includes/WikibaseRepo.php
+++ b/repo/includes/WikibaseRepo.php
@@ -780,6 +780,10 @@
         * @return StringNormalizer
         */
        public function getStringNormalizer() {
+               if ( $this->wikibaseServices !== null ) {
+                       return $this->wikibaseServices->getStringNormalizer();
+               }
+
                if ( $this->stringNormalizer === null ) {
                        $this->stringNormalizer = new StringNormalizer();
                }

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I168418f80988159f617bb0ebfa963e47dbeaef8c
Gerrit-PatchSet: 6
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: WMDE-leszek <leszek.mani...@wikimedia.de>
Gerrit-Reviewer: Daniel Kinzler <daniel.kinz...@wikimedia.de>
Gerrit-Reviewer: WMDE-leszek <leszek.mani...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to