Made the cache factory strict

* Return types
* Typehints
* made strict
* fix tests

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
This commit is contained in:
Roeland Jago Douma 2018-01-16 20:44:51 +01:00
parent 2b70c708ab
commit c5fcfb0709
No known key found for this signature in database
GPG key ID: F941078878347C0C
3 changed files with 33 additions and 28 deletions

View file

@ -31,8 +31,10 @@
namespace OC\Memcache;
use \OCP\ICacheFactory;
use \OCP\ILogger;
use OCP\ICache;
use OCP\ICacheFactory;
use OCP\ILogger;
use OCP\IMemcache;
class Factory implements ICacheFactory {
const NULL_CACHE = '\\OC\\Memcache\\NullCache';
@ -69,7 +71,7 @@ class Factory implements ICacheFactory {
* @param string|null $distributedCacheClass
* @param string|null $lockingCacheClass
*/
public function __construct($globalPrefix, ILogger $logger,
public function __construct(string $globalPrefix, ILogger $logger,
$localCacheClass = null, $distributedCacheClass = null, $lockingCacheClass = null)
{
$this->logger = $logger;
@ -128,9 +130,9 @@ class Factory implements ICacheFactory {
* create a cache instance for storing locks
*
* @param string $prefix
* @return \OCP\IMemcache
* @return IMemcache
*/
public function createLocking($prefix = '') {
public function createLocking(string $prefix = ''): IMemcache {
return new $this->lockingCacheClass($this->globalPrefix . '/' . $prefix);
}
@ -138,9 +140,9 @@ class Factory implements ICacheFactory {
* create a distributed cache instance
*
* @param string $prefix
* @return \OC\Memcache\Cache
* @return ICache
*/
public function createDistributed($prefix = '') {
public function createDistributed(string $prefix = ''): ICache {
return new $this->distributedCacheClass($this->globalPrefix . '/' . $prefix);
}
@ -148,18 +150,19 @@ class Factory implements ICacheFactory {
* create a local cache instance
*
* @param string $prefix
* @return \OC\Memcache\Cache
* @return ICache
*/
public function createLocal($prefix = '') {
public function createLocal(string $prefix = ''): ICache {
return new $this->localCacheClass($this->globalPrefix . '/' . $prefix);
}
/**
* @see \OC\Memcache\Factory::createDistributed()
* @param string $prefix
* @return \OC\Memcache\Cache
* @return ICache
* @deprecated 13.0.0 Use either createLocking, createDistributed or createLocal
*/
public function create($prefix = '') {
public function create(string $prefix = ''): ICache {
return $this->createDistributed($prefix);
}
@ -168,16 +171,16 @@ class Factory implements ICacheFactory {
*
* @return bool
*/
public function isAvailable() {
public function isAvailable(): bool {
return ($this->distributedCacheClass !== self::NULL_CACHE);
}
/**
* @see \OC\Memcache\Factory::createLocal()
* @param string $prefix
* @return Cache
* @return ICache
*/
public function createLowLatency($prefix = '') {
public function createLowLatency(string $prefix = ''): ICache {
return $this->createLocal($prefix);
}
@ -186,7 +189,7 @@ class Factory implements ICacheFactory {
*
* @return bool
*/
public function isAvailableLowLatency() {
public function isAvailableLowLatency(): bool {
return ($this->localCacheClass !== self::NULL_CACHE);
}
}

View file

@ -1,4 +1,5 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
@ -36,11 +37,11 @@ interface ICacheFactory{
* All entries added trough the cache instance will be namespaced by $prefix to prevent collisions between apps
*
* @param string $prefix
* @return \OCP\ICache
* @return ICache
* @since 7.0.0
* @deprecated 13.0.0 Use either createLocking, createDistributed or createLocal
*/
public function create($prefix = '');
public function create(string $prefix = ''): ICache;
/**
* Check if any memory cache backend is available
@ -48,32 +49,32 @@ interface ICacheFactory{
* @return bool
* @since 7.0.0
*/
public function isAvailable();
public function isAvailable(): bool;
/**
* create a cache instance for storing locks
*
* @param string $prefix
* @return \OCP\IMemcache
* @return IMemcache
* @since 13.0.0
*/
public function createLocking($prefix = '');
public function createLocking(string $prefix = ''): IMemcache;
/**
* create a distributed cache instance
*
* @param string $prefix
* @return \OCP\ICache
* @return ICache
* @since 13.0.0
*/
public function createDistributed($prefix = '');
public function createDistributed(string $prefix = ''): ICache;
/**
* create a local cache instance
*
* @param string $prefix
* @return \OCP\ICache
* @return ICache
* @since 13.0.0
*/
public function createLocal($prefix = '');
public function createLocal(string $prefix = ''): ICache;
}

View file

@ -20,9 +20,10 @@
*/
namespace Test\Memcache;
use OC\Memcache\NullCache;
use OCP\ILogger;
class Test_Factory_Available_Cache1 {
class Test_Factory_Available_Cache1 extends NullCache {
public function __construct($prefix = '') {
}
@ -31,7 +32,7 @@ class Test_Factory_Available_Cache1 {
}
}
class Test_Factory_Available_Cache2 {
class Test_Factory_Available_Cache2 extends NullCache {
public function __construct($prefix = '') {
}
@ -40,7 +41,7 @@ class Test_Factory_Available_Cache2 {
}
}
class Test_Factory_Unavailable_Cache1 {
class Test_Factory_Unavailable_Cache1 extends NullCache {
public function __construct($prefix = '') {
}
@ -49,7 +50,7 @@ class Test_Factory_Unavailable_Cache1 {
}
}
class Test_Factory_Unavailable_Cache2 {
class Test_Factory_Unavailable_Cache2 extends NullCache {
public function __construct($prefix = '') {
}