DI for CommentStore in RevisionStore

Change-Id: I527388514489e79c53b6016a8bd3119ee1750c83
This commit is contained in:
addshore 2018-01-29 14:25:49 +00:00
parent cebaff84b1
commit 423ba71f42
6 changed files with 30 additions and 11 deletions

View file

@ -475,7 +475,8 @@ return [
$store = new RevisionStore(
$services->getDBLoadBalancer(),
$blobStore,
$services->getMainWANObjectCache()
$services->getMainWANObjectCache(),
$services->getCommentStore()
);
$store->setLogger( LoggerFactory::getInstance( 'RevisionStore' ) );

View 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' => [

View 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() );

View 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;
}

View file

@ -133,6 +133,7 @@ class RevisionStoreDbTest extends MediaWikiTestCase {
$loadBalancer,
$blobStore,
new WANObjectCache( [ 'cache' => new HashBagOStuff() ] ),
MediaWikiServices::getInstance()->getCommentStore(),
$wikiId
);

View 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 ),