From 449084ec4e2bfbcb029e942f18efa10d556e51bd Mon Sep 17 00:00:00 2001 From: Kunal Mehta Date: Thu, 12 May 2016 15:44:33 -0700 Subject: [PATCH] Add LinkCache to MediaWikiServices LinkCache::singleton() is now deprecated, and the destroySingleton() and setSingleton() methods were removed. They were not used in extensions, and the usage in core was updated to use MediaWikiServices. Change-Id: I08bb4f7913b03f71331ff683d0197c948aad6790 --- includes/MediaWikiServices.php | 10 ++++++ includes/ServiceWiring.php | 6 ++++ includes/cache/LinkCache.php | 33 ++----------------- .../includes/MediaWikiServicesTest.php | 1 + .../includes/content/ContentHandlerTest.php | 5 +-- 5 files changed, 22 insertions(+), 33 deletions(-) diff --git a/includes/MediaWikiServices.php b/includes/MediaWikiServices.php index 5bb5597b78..891f426d74 100644 --- a/includes/MediaWikiServices.php +++ b/includes/MediaWikiServices.php @@ -8,6 +8,7 @@ use GenderCache; use GlobalVarConfig; use Hooks; use LBFactory; +use LinkCache; use Liuggio\StatsdClient\Factory\StatsdDataFactory; use LoadBalancer; use MediaWiki\Services\ServiceContainer; @@ -460,6 +461,15 @@ class MediaWikiServices extends ServiceContainer { public function getGenderCache() { return $this->getService( 'GenderCache' ); } + + /** + * @since 1.28 + * @return LinkCache + */ + public function getLinkCache() { + return $this->getService( 'LinkCache' ); + } + /** * @since 1.28 * @return TitleFormatter diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php index aa99a71315..293e6eb176 100644 --- a/includes/ServiceWiring.php +++ b/includes/ServiceWiring.php @@ -139,6 +139,12 @@ return [ return $store; }, + 'LinkCache' => function( MediaWikiServices $services ) { + return new LinkCache( + $services->getTitleFormatter() + ); + }, + 'GenderCache' => function( MediaWikiServices $services ) { return new GenderCache(); }, diff --git a/includes/cache/LinkCache.php b/includes/cache/LinkCache.php index bb2242b225..1dfefdfdac 100644 --- a/includes/cache/LinkCache.php +++ b/includes/cache/LinkCache.php @@ -65,39 +65,10 @@ class LinkCache { * Get an instance of this class. * * @return LinkCache + * @deprecated since 1.28, use MediaWikiServices instead */ public static function singleton() { - if ( !self::$instance ) { - self::$instance = new LinkCache( - MediaWikiServices::getInstance()->getTitleFormatter() - ); - } - - return self::$instance; - } - - /** - * Destroy the singleton instance - * - * A new one will be created next time singleton() is called. - * - * @since 1.22 - */ - public static function destroySingleton() { - self::$instance = null; - } - - /** - * Set the singleton instance to a given object. - * - * Since we do not have an interface for LinkCache, you have to be sure the - * given object implements all the LinkCache public methods. - * - * @param LinkCache $instance - * @since 1.22 - */ - public static function setSingleton( LinkCache $instance ) { - self::$instance = $instance; + return MediaWikiServices::getInstance()->getLinkCache(); } /** diff --git a/tests/phpunit/includes/MediaWikiServicesTest.php b/tests/phpunit/includes/MediaWikiServicesTest.php index 467a2adff6..51ef9d7ae1 100644 --- a/tests/phpunit/includes/MediaWikiServicesTest.php +++ b/tests/phpunit/includes/MediaWikiServicesTest.php @@ -243,6 +243,7 @@ class MediaWikiServicesTest extends PHPUnit_Framework_TestCase { 'DBLoadBalancer' => [ 'DBLoadBalancer', 'LoadBalancer' ], 'WatchedItemStore' => [ 'WatchedItemStore', WatchedItemStore::class ], 'GenderCache' => [ 'GenderCache', GenderCache::class ], + 'LinkCache' => [ 'LinkCache', LinkCache::class ], '_MediaWikiTitleCodec' => [ '_MediaWikiTitleCodec', MediaWikiTitleCodec::class ], 'TitleFormatter' => [ 'TitleFormatter', TitleFormatter::class ], 'TitleParser' => [ 'TitleParser', TitleParser::class ], diff --git a/tests/phpunit/includes/content/ContentHandlerTest.php b/tests/phpunit/includes/content/ContentHandlerTest.php index 91f27fbe71..545b964fcb 100644 --- a/tests/phpunit/includes/content/ContentHandlerTest.php +++ b/tests/phpunit/includes/content/ContentHandlerTest.php @@ -1,4 +1,5 @@ resetNamespaces(); // And LinkCache - LinkCache::destroySingleton(); + MediaWikiServices::getInstance()->resetServiceForTesting( 'LinkCache' ); } protected function tearDown() { @@ -46,7 +47,7 @@ class ContentHandlerTest extends MediaWikiTestCase { MWNamespace::getCanonicalNamespaces( true ); $wgContLang->resetNamespaces(); // And LinkCache - LinkCache::destroySingleton(); + MediaWikiServices::getInstance()->resetServiceForTesting( 'LinkCache' ); parent::tearDown(); } -- 2.20.1