Split out new ObjectCache::newWANCacheFromParams() method

Change-Id: Ib2e409dd129bd1e2871fe239e71a4eb8fb42944c
This commit is contained in:
Aaron Schulz 2016-09-21 09:47:34 -07:00
parent 5a3d42dbd8
commit 64060bea46

View file

@ -321,23 +321,41 @@ class ObjectCache {
* @since 1.26
* @param string $id A key in $wgWANObjectCaches.
* @return WANObjectCache
* @throws InvalidArgumentException
* @throws UnexpectedValueException
*/
public static function newWANCacheFromId( $id ) {
global $wgWANObjectCaches;
global $wgWANObjectCaches, $wgObjectCaches;
if ( !isset( $wgWANObjectCaches[$id] ) ) {
throw new InvalidArgumentException( "Invalid object cache type \"$id\" requested. " .
"It is not present in \$wgWANObjectCaches." );
throw new UnexpectedValueException(
"Cache type \"$id\" requested is not present in \$wgWANObjectCaches." );
}
$params = $wgWANObjectCaches[$id];
if ( !isset( $wgObjectCaches[$params['cacheId']] ) ) {
throw new UnexpectedValueException(
"Cache type \"{$params['cacheId']}\" is not present in \$wgObjectCaches." );
}
$params['store'] = $wgObjectCaches[$params['cacheId']];
return self::newWANCacheFromParams( $params );
}
/**
* Create a new cache object of the specified type.
*
* @since 1.28
* @param array $params
* @return WANObjectCache
* @throws UnexpectedValueException
*/
public static function newWANCacheFromParams( array $params ) {
foreach ( $params['channels'] as $action => $channel ) {
$params['relayers'][$action] = MediaWikiServices::getInstance()->getEventRelayerGroup()
->getRelayer( $channel );
$params['channels'][$action] = $channel;
}
$params['cache'] = self::newFromId( $params['cacheId'] );
$params['cache'] = self::newFromParams( $params['store'] );
if ( isset( $params['loggroup'] ) ) {
$params['logger'] = LoggerFactory::getInstance( $params['loggroup'] );
} else {