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