DI for CommentStore in RevisionStore
authoraddshore <addshorewiki@gmail.com>
Mon, 29 Jan 2018 14:25:49 +0000 (14:25 +0000)
committeraddshore <addshorewiki@gmail.com>
Thu, 8 Feb 2018 18:09:41 +0000 (18:09 +0000)
Change-Id: I527388514489e79c53b6016a8bd3119ee1750c83

includes/ServiceWiring.php
includes/Storage/RevisionStore.php
tests/phpunit/includes/RevisionDbTestBase.php
tests/phpunit/includes/RevisionTest.php
tests/phpunit/includes/Storage/RevisionStoreDbTest.php
tests/phpunit/includes/Storage/RevisionStoreTest.php

index 0ab5f6d..3a9474b 100644 (file)
@@ -475,7 +475,8 @@ return [
                $store = new RevisionStore(
                        $services->getDBLoadBalancer(),
                        $blobStore,
-                       $services->getMainWANObjectCache()
+                       $services->getMainWANObjectCache(),
+                       $services->getCommentStore()
                );
 
                $store->setLogger( LoggerFactory::getInstance( 'RevisionStore' ) );
index bce3ba1..2140209 100644 (file)
@@ -92,6 +92,11 @@ class RevisionStore
         */
        private $cache;
 
+       /**
+        * @var CommentStore
+        */
+       private $commentStore;
+
        /**
         * @var LoggerInterface
         */
@@ -103,12 +108,14 @@ class RevisionStore
         * @param LoadBalancer $loadBalancer
         * @param SqlBlobStore $blobStore
         * @param WANObjectCache $cache
+        * @param CommentStore $commentStore
         * @param bool|string $wikiId
         */
        public function __construct(
                LoadBalancer $loadBalancer,
                SqlBlobStore $blobStore,
                WANObjectCache $cache,
+               CommentStore $commentStore,
                $wikiId = false
        ) {
                Assert::parameterType( 'string|boolean', $wikiId, '$wikiId' );
@@ -116,6 +123,7 @@ class RevisionStore
                $this->loadBalancer = $loadBalancer;
                $this->blobStore = $blobStore;
                $this->cache = $cache;
+               $this->commentStore = $commentStore;
                $this->wikiId = $wikiId;
                $this->logger = new NullLogger();
        }
@@ -393,7 +401,7 @@ class RevisionStore
                }
 
                list( $commentFields, $commentCallback ) =
-                       CommentStore::getStore()->insertWithTempTable( $dbw, 'rev_comment', $comment );
+                       $this->commentStore->insertWithTempTable( $dbw, 'rev_comment', $comment );
                $row += $commentFields;
 
                if ( $this->contentHandlerUseDB ) {
@@ -1069,7 +1077,7 @@ class RevisionStore
 
                $user = $this->getUserIdentityFromRowObject( $row, 'ar_' );
 
-               $comment = CommentStore::getStore()
+               $comment = $this->commentStore
                        // Legacy because $row may have come from self::selectFields()
                        ->getCommentLegacy( $this->getDBConnection( DB_REPLICA ), 'ar_comment', $row, true );
 
@@ -1139,7 +1147,7 @@ class RevisionStore
 
                $user = $this->getUserIdentityFromRowObject( $row );
 
-               $comment = CommentStore::getStore()
+               $comment = $this->commentStore
                        // Legacy because $row may have come from self::selectFields()
                        ->getCommentLegacy( $this->getDBConnection( DB_REPLICA ), 'rev_comment', $row, true );
 
@@ -1614,7 +1622,7 @@ class RevisionStore
                        'rev_sha1',
                ] );
 
-               $commentQuery = CommentStore::getStore()->getJoin( 'rev_comment' );
+               $commentQuery = $this->commentStore->getJoin( 'rev_comment' );
                $ret['tables'] = array_merge( $ret['tables'], $commentQuery['tables'] );
                $ret['fields'] = array_merge( $ret['fields'], $commentQuery['fields'] );
                $ret['joins'] = array_merge( $ret['joins'], $commentQuery['joins'] );
@@ -1671,7 +1679,7 @@ class RevisionStore
         *   - joins: (array) to include in the `$join_conds` to `IDatabase->select()`
         */
        public function getArchiveQueryInfo() {
-               $commentQuery = CommentStore::getStore()->getJoin( 'ar_comment' );
+               $commentQuery = $this->commentStore->getJoin( 'ar_comment' );
                $ret = [
                        'tables' => [ 'archive' ] + $commentQuery['tables'],
                        'fields' => [
index 511b109..b36fd7d 100644 (file)
@@ -396,7 +396,8 @@ abstract class RevisionDbTestBase extends MediaWikiTestCase {
                $store = new RevisionStore(
                        $services->getDBLoadBalancer(),
                        $services->getService( '_SqlBlobStore' ),
-                       $services->getMainWANObjectCache()
+                       $services->getMainWANObjectCache(),
+                       $services->getCommentStore()
                );
 
                $store->setContentHandlerUseDB( $this->getContentHandlerUseDB() );
index 872a23e..57c0531 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 
+use MediaWiki\MediaWikiServices;
 use MediaWiki\Storage\BlobStoreFactory;
 use MediaWiki\Storage\MutableRevisionRecord;
 use MediaWiki\Storage\RevisionAccessException;
@@ -489,7 +490,12 @@ class RevisionTest extends MediaWikiTestCase {
 
                $cache = $this->getWANObjectCache();
 
-               $blobStore = new RevisionStore( $lb, $this->getBlobStore(), $cache );
+               $blobStore = new RevisionStore(
+                       $lb,
+                       $this->getBlobStore(),
+                       $cache,
+                       MediaWikiServices::getInstance()->getCommentStore()
+               );
                return $blobStore;
        }
 
index 6c90854..d31ca5c 100644 (file)
@@ -133,6 +133,7 @@ class RevisionStoreDbTest extends MediaWikiTestCase {
                        $loadBalancer,
                        $blobStore,
                        new WANObjectCache( [ 'cache' => new HashBagOStuff() ] ),
+                       MediaWikiServices::getInstance()->getCommentStore(),
                        $wikiId
                );
 
index bee94f3..8e8de6e 100644 (file)
@@ -4,6 +4,7 @@ namespace MediaWiki\Tests\Storage;
 
 use HashBagOStuff;
 use Language;
+use MediaWiki\MediaWikiServices;
 use MediaWiki\Storage\RevisionAccessException;
 use MediaWiki\Storage\RevisionStore;
 use MediaWiki\Storage\SqlBlobStore;
@@ -30,7 +31,8 @@ class RevisionStoreTest extends MediaWikiTestCase {
                return new RevisionStore(
                        $loadBalancer ? $loadBalancer : $this->getMockLoadBalancer(),
                        $blobStore ? $blobStore : $this->getMockSqlBlobStore(),
-                       $WANObjectCache ? $WANObjectCache : $this->getHashWANObjectCache()
+                       $WANObjectCache ? $WANObjectCache : $this->getHashWANObjectCache(),
+                       MediaWikiServices::getInstance()->getCommentStore()
                );
        }
 
@@ -597,7 +599,7 @@ class RevisionStoreTest extends MediaWikiTestCase {
                $blobStore = new SqlBlobStore( wfGetLB(), $cache );
                $blobStore->setLegacyEncoding( $encoding, Language::factory( $locale ) );
 
-               $store = new RevisionStore( wfGetLB(), $blobStore, $cache );
+               $store = $this->getRevisionStore( wfGetLB(), $blobStore, $cache );
 
                $record = $store->newRevisionFromRow(
                        $this->makeRow( $row ),
@@ -623,7 +625,7 @@ class RevisionStoreTest extends MediaWikiTestCase {
                $blobStore = new SqlBlobStore( wfGetLB(), $cache );
                $blobStore->setLegacyEncoding( 'windows-1252', Language::factory( 'en' ) );
 
-               $store = new RevisionStore( wfGetLB(), $blobStore, $cache );
+               $store = $this->getRevisionStore( wfGetLB(), $blobStore, $cache );
 
                $record = $store->newRevisionFromRow(
                        $this->makeRow( $row ),