diff --git a/apps/theming/lib/ThemingDefaults.php b/apps/theming/lib/ThemingDefaults.php index 94abb4e288af9..688878bb50a31 100644 --- a/apps/theming/lib/ThemingDefaults.php +++ b/apps/theming/lib/ThemingDefaults.php @@ -231,7 +231,7 @@ public function getAndroidClientUrl() { * @return array scss variables to overwrite */ public function getScssVariables() { - $cache = $this->cacheFactory->createDistributed('theming'); + $cache = $this->cacheFactory->createDistributed('theming-' . $this->urlGenerator->getBaseUrl()); if ($value = $cache->get('getScssVariables')) { return $value; } @@ -298,7 +298,7 @@ public function replaceImagePath($app, $image) { * @return bool */ public function shouldReplaceIcons() { - $cache = $this->cacheFactory->createDistributed('theming'); + $cache = $this->cacheFactory->createDistributed('theming-' . $this->urlGenerator->getBaseUrl()); if($value = $cache->get('shouldReplaceIcons')) { return (bool)$value; } @@ -320,7 +320,7 @@ public function shouldReplaceIcons() { private function increaseCacheBuster() { $cacheBusterKey = $this->config->getAppValue('theming', 'cachebuster', '0'); $this->config->setAppValue('theming', 'cachebuster', (int)$cacheBusterKey+1); - $this->cacheFactory->createDistributed('theming')->clear('getScssVariables'); + $this->cacheFactory->createDistributed('theming-')->clear('getScssVariables'); } /** diff --git a/apps/theming/tests/ThemingDefaultsTest.php b/apps/theming/tests/ThemingDefaultsTest.php index 1a4679a29931b..b29b27b565cfb 100644 --- a/apps/theming/tests/ThemingDefaultsTest.php +++ b/apps/theming/tests/ThemingDefaultsTest.php @@ -79,7 +79,7 @@ public function setUp() { $this->cacheFactory ->expects($this->any()) ->method('createDistributed') - ->with('theming') + ->with('theming-') ->willReturn($this->cache); $this->template = new ThemingDefaults( $this->config, diff --git a/lib/private/Server.php b/lib/private/Server.php index eae9c9d5a79b3..84af87f0d2f4c 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -496,7 +496,7 @@ public function __construct($webRoot, \OC\Config $config) { $version = implode(',', $v); $instanceId = \OC_Util::getInstanceId(); $path = \OC::$SERVERROOT; - $prefix = md5($instanceId . '-' . $version . '-' . $path . '-' . $urlGenerator->getBaseUrl()); + $prefix = md5($instanceId . '-' . $version . '-' . $path); return new \OC\Memcache\Factory($prefix, $c->getLogger(), $config->getSystemValue('memcache.local', null), $config->getSystemValue('memcache.distributed', null), @@ -963,7 +963,7 @@ public function __construct($webRoot, \OC\Config $config) { $c->getConfig(), $c->getThemingDefaults(), \OC::$SERVERROOT, - $cacheFactory->createDistributed('SCSS') + $this->getMemCacheFactory() ); }); $this->registerService(JSCombiner::class, function (Server $c) { @@ -972,7 +972,7 @@ public function __construct($webRoot, \OC\Config $config) { return new JSCombiner( $c->getAppDataDir('js'), $c->getURLGenerator(), - $cacheFactory->createDistributed('JS'), + $this->getMemCacheFactory(), $c->getSystemConfig(), $c->getLogger() ); diff --git a/lib/private/Template/JSCombiner.php b/lib/private/Template/JSCombiner.php index c5adcee68542e..e69ee9e7b45e3 100644 --- a/lib/private/Template/JSCombiner.php +++ b/lib/private/Template/JSCombiner.php @@ -30,6 +30,7 @@ use OCP\Files\NotFoundException; use OCP\Files\NotPermittedException; use OCP\Files\SimpleFS\ISimpleFolder; +use OCP\ICacheFactory; use OCP\ILogger; use OCP\IURLGenerator; @@ -50,21 +51,25 @@ class JSCombiner { /** @var ILogger */ protected $logger; + /** @var ICacheFactory */ + private $cacheFactory; + /** * @param IAppData $appData * @param IURLGenerator $urlGenerator - * @param ICache $depsCache + * @param ICacheFactory $cacheFactory * @param SystemConfig $config * @param ILogger $logger */ public function __construct(IAppData $appData, IURLGenerator $urlGenerator, - ICache $depsCache, + ICacheFactory $cacheFactory, SystemConfig $config, ILogger $logger) { $this->appData = $appData; $this->urlGenerator = $urlGenerator; - $this->depsCache = $depsCache; + $this->cacheFactory = $cacheFactory; + $this->depsCache = $this->cacheFactory->createDistributed('JS-' . md5($this->urlGenerator->getBaseUrl())); $this->config = $config; $this->logger = $logger; } @@ -236,7 +241,7 @@ public function getContent($root, $file) { * @throws NotFoundException */ public function resetCache() { - $this->depsCache->clear(); + $this->cacheFactory->createDistributed('JS-')->clear(); $appDirectory = $this->appData->getDirectoryListing(); foreach ($appDirectory as $folder) { foreach ($folder->getDirectoryListing() as $file) { diff --git a/lib/private/Template/SCSSCacher.php b/lib/private/Template/SCSSCacher.php index 66569cba02524..ba3c1a0ffe373 100644 --- a/lib/private/Template/SCSSCacher.php +++ b/lib/private/Template/SCSSCacher.php @@ -39,6 +39,7 @@ use OCP\Files\SimpleFS\ISimpleFile; use OCP\Files\SimpleFS\ISimpleFolder; use OCP\ICache; +use OCP\ICacheFactory; use OCP\IConfig; use OCP\ILogger; use OCP\IURLGenerator; @@ -66,6 +67,9 @@ class SCSSCacher { /** @var null|string */ protected $injectedVariables = null; + /** @var ICacheFactory */ + private $cacheFactory; + /** * @param ILogger $logger * @param Factory $appDataFactory @@ -73,7 +77,7 @@ class SCSSCacher { * @param IConfig $config * @param \OC_Defaults $defaults * @param string $serverRoot - * @param ICache $depsCache + * @param ICacheFactory $cacheFactory */ public function __construct(ILogger $logger, Factory $appDataFactory, @@ -81,14 +85,15 @@ public function __construct(ILogger $logger, IConfig $config, \OC_Defaults $defaults, $serverRoot, - ICache $depsCache) { + ICacheFactory $cacheFactory) { $this->logger = $logger; $this->appData = $appDataFactory->get('css'); $this->urlGenerator = $urlGenerator; $this->config = $config; $this->defaults = $defaults; $this->serverRoot = $serverRoot; - $this->depsCache = $depsCache; + $this->cacheFactory = $cacheFactory; + $this->depsCache = $cacheFactory->createDistributed('SCSS-' . md5($this->urlGenerator->getBaseUrl())); } /** @@ -256,7 +261,7 @@ private function cache($path, $fileNameCSS, $fileNameSCSS, ISimpleFolder $folder */ public function resetCache() { $this->injectedVariables = null; - $this->depsCache->clear(); + $this->cacheFactory->createDistributed('SCSS-')->clear(); $appDirectory = $this->appData->getDirectoryListing(); foreach ($appDirectory as $folder) { foreach ($folder->getDirectoryListing() as $file) { diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php index d37a8bbabbe89..12b063d96e250 100644 --- a/lib/private/TemplateLayout.php +++ b/lib/private/TemplateLayout.php @@ -301,13 +301,7 @@ static public function findJavascriptFiles($scripts) { $theme, array( \OC::$SERVERROOT => \OC::$WEBROOT ), array( \OC::$SERVERROOT => \OC::$WEBROOT ), - new JSCombiner( - \OC::$server->getAppDataDir('js'), - \OC::$server->getURLGenerator(), - \OC::$server->getMemCacheFactory()->createDistributed('JS'), - \OC::$server->getSystemConfig(), - \OC::$server->getLogger() - ) + \OC::$server->query(JSCombiner::class) ); $locator->find($scripts); return $locator->getResources(); diff --git a/tests/lib/Template/CSSResourceLocatorTest.php b/tests/lib/Template/CSSResourceLocatorTest.php index a16cc18cb0a66..22843d7f9355f 100644 --- a/tests/lib/Template/CSSResourceLocatorTest.php +++ b/tests/lib/Template/CSSResourceLocatorTest.php @@ -24,11 +24,12 @@ namespace Test\Template; use OC\Files\AppData\Factory; +use OCP\Files\IAppData; +use OCP\ICacheFactory; use OCP\ILogger; use OCP\IURLGenerator; use OCP\IConfig; use OCA\Theming\ThemingDefaults; -use OCP\ICache; use OC\Template\SCSSCacher; use OC\Template\CSSResourceLocator; @@ -41,8 +42,8 @@ class CSSResourceLocatorTest extends \Test\TestCase { protected $config; /** @var ThemingDefaults|\PHPUnit_Framework_MockObject_MockObject */ protected $themingDefaults; - /** @var ICache|\PHPUnit_Framework_MockObject_MockObject */ - protected $depsCache; + /** @var ICacheFactory|\PHPUnit_Framework_MockObject_MockObject */ + protected $cacheFactory; /** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */ protected $logger; @@ -53,7 +54,7 @@ protected function setUp() { $this->appData = $this->createMock(IAppData::class); $this->urlGenerator = $this->createMock(IURLGenerator::class); $this->config = $this->createMock(IConfig::class); - $this->depsCache = $this->createMock(ICache::class); + $this->cacheFactory = $this->createMock(ICacheFactory::class); $this->themingDefaults = $this->createMock(ThemingDefaults::class); } @@ -68,7 +69,7 @@ private function cssResourceLocator() { $this->config, $this->themingDefaults, \OC::$SERVERROOT, - $this->depsCache + $this->cacheFactory ); return new CSSResourceLocator( $this->logger, diff --git a/tests/lib/Template/JSCombinerTest.php b/tests/lib/Template/JSCombinerTest.php index d5f7000e0a5f6..e10e44aa35894 100644 --- a/tests/lib/Template/JSCombinerTest.php +++ b/tests/lib/Template/JSCombinerTest.php @@ -31,6 +31,7 @@ use OCP\Files\SimpleFS\ISimpleFile; use OCP\Files\SimpleFS\ISimpleFolder; use OCP\ICache; +use OCP\ICacheFactory; use OCP\ILogger; use OCP\IURLGenerator; @@ -47,6 +48,8 @@ class JSCombinerTest extends \Test\TestCase { protected $jsCombiner; /** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */ protected $logger; + /** @var ICacheFactory|\PHPUnit_Framework_MockObject_MockObject */ + protected $cacheFactory; protected function setUp() { parent::setUp(); @@ -54,15 +57,20 @@ protected function setUp() { $this->appData = $this->createMock(IAppData::class); $this->urlGenerator = $this->createMock(IURLGenerator::class); $this->config = $this->createMock(SystemConfig::class); + $this->cacheFactory = $this->createMock(ICacheFactory::class); $this->depsCache = $this->createMock(ICache::class); + $this->cacheFactory->expects($this->at(0)) + ->method('createDistributed') + ->willReturn($this->depsCache); $this->logger = $this->createMock(ILogger::class); $this->jsCombiner = new JSCombiner( $this->appData, $this->urlGenerator, - $this->depsCache, + $this->cacheFactory, $this->config, $this->logger ); + } public function testProcessDebugMode() { @@ -522,7 +530,11 @@ public function testResetCache() { ->method('getDirectoryListing') ->willReturn([$file]); - $this->depsCache->expects($this->once()) + $cache = $this->createMock(ICache::class); + $this->cacheFactory->expects($this->once()) + ->method('createDistributed') + ->willReturn($cache); + $cache->expects($this->once()) ->method('clear') ->with(''); $this->appData->expects($this->once()) diff --git a/tests/lib/Template/JSResourceLocatorTest.php b/tests/lib/Template/JSResourceLocatorTest.php index 6841ee2fee3b4..f5dff62729fa1 100644 --- a/tests/lib/Template/JSResourceLocatorTest.php +++ b/tests/lib/Template/JSResourceLocatorTest.php @@ -25,8 +25,8 @@ use OC\Template\JSCombiner; use OCP\Files\IAppData; +use OCP\ICacheFactory; use OCP\IURLGenerator; -use OCP\ICache; use OC\SystemConfig; use OCP\ILogger; use OC\Template\JSResourceLocator; @@ -38,8 +38,8 @@ class JSResourceLocatorTest extends \Test\TestCase { protected $urlGenerator; /** @var SystemConfig|\PHPUnit_Framework_MockObject_MockObject */ protected $config; - /** @var ICache|\PHPUnit_Framework_MockObject_MockObject */ - protected $depsCache; + /** @var ICacheFactory|\PHPUnit_Framework_MockObject_MockObject */ + protected $cacheFactory; /** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */ protected $logger; @@ -49,7 +49,7 @@ protected function setUp() { $this->appData = $this->createMock(IAppData::class); $this->urlGenerator = $this->createMock(IURLGenerator::class); $this->config = $this->createMock(SystemConfig::class); - $this->depsCache = $this->createMock(ICache::class); + $this->cacheFactory = $this->createMock(ICacheFactory::class); $this->logger = $this->createMock(ILogger::class); } @@ -57,7 +57,7 @@ private function jsResourceLocator() { $jsCombiner = new JSCombiner( $this->appData, $this->urlGenerator, - $this->depsCache, + $this->cacheFactory, $this->config, $this->logger ); diff --git a/tests/lib/Template/SCSSCacherTest.php b/tests/lib/Template/SCSSCacherTest.php index dfaeb80357844..adf49eec7963a 100644 --- a/tests/lib/Template/SCSSCacherTest.php +++ b/tests/lib/Template/SCSSCacherTest.php @@ -31,6 +31,7 @@ use OCP\Files\SimpleFS\ISimpleFile; use OCP\Files\SimpleFS\ISimpleFolder; use OCP\ICache; +use OCP\ICacheFactory; use OCP\IConfig; use OCP\ILogger; use OCP\IURLGenerator; @@ -50,6 +51,8 @@ class SCSSCacherTest extends \Test\TestCase { protected $scssCacher; /** @var ICache|\PHPUnit_Framework_MockObject_MockObject */ protected $depsCache; + /** @var ICacheFactory|\PHPUnit_Framework_MockObject_MockObject */ + protected $cacheFactory; protected function setUp() { parent::setUp(); @@ -60,7 +63,11 @@ protected function setUp() { $factory->method('get')->with('css')->willReturn($this->appData); $this->urlGenerator = $this->createMock(IURLGenerator::class); $this->config = $this->createMock(IConfig::class); + $this->cacheFactory = $this->createMock(ICacheFactory::class); $this->depsCache = $this->createMock(ICache::class); + $this->cacheFactory + ->method('createDistributed') + ->willReturn($this->depsCache); $this->themingDefaults = $this->createMock(ThemingDefaults::class); $this->scssCacher = new SCSSCacher( $this->logger, @@ -69,7 +76,7 @@ protected function setUp() { $this->config, $this->themingDefaults, \OC::$SERVERROOT, - $this->depsCache + $this->cacheFactory ); $this->themingDefaults->expects($this->any())->method('getScssVariables')->willReturn([]);