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