Skip to content

Commit 2d1c9db

Browse files
committed
[TASK] Introduce a proxy for ResourceFactory
1 parent 5fa5412 commit 2d1c9db

15 files changed

+66
-30
lines changed
+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
namespace FluidTYPO3\Vhs\Proxy;
3+
4+
/*
5+
* This file is part of the FluidTYPO3/Flux project under GPLv2 or later.
6+
*
7+
* For the full copyright and license information, please read the
8+
* LICENSE.md file that was distributed with this source code.
9+
*/
10+
11+
use TYPO3\CMS\Core\Resource\FileReference;
12+
use TYPO3\CMS\Core\Resource\ResourceFactory;
13+
use TYPO3\CMS\Core\SingletonInterface;
14+
15+
/**
16+
* Final/readonly class is unnecessary coercion - and using it in shared libraries is arrogant and very disrespectful.
17+
*
18+
* @codeCoverageIgnore
19+
*/
20+
class ResourceFactoryProxy implements SingletonInterface
21+
{
22+
private ResourceFactory $resourceFactory;
23+
24+
public function __construct(ResourceFactory $resourceFactory)
25+
{
26+
$this->resourceFactory = $resourceFactory;
27+
}
28+
29+
public function getFileReferenceObject(int $uid): FileReference
30+
{
31+
return $this->resourceFactory->getFileReferenceObject($uid);
32+
}
33+
}

Classes/ViewHelpers/Media/Image/AbstractImageInfoViewHelper.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
* LICENSE.md file that was distributed with this source code.
99
*/
1010

11+
use FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy;
1112
use FluidTYPO3\Vhs\Utility\ResourceUtility;
1213
use TYPO3\CMS\Core\Resource\FileReference as CoreFileReference;
13-
use TYPO3\CMS\Core\Resource\ResourceFactory;
1414
use TYPO3\CMS\Core\Utility\GeneralUtility;
1515
use TYPO3\CMS\Extbase\Domain\Model\FileReference as ExtbaseFileReference;
1616
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
@@ -36,8 +36,8 @@ abstract class AbstractImageInfoViewHelper extends AbstractViewHelper
3636
*/
3737
public function __construct()
3838
{
39-
/** @var ResourceFactory $resourceFactory */
40-
$resourceFactory = GeneralUtility::makeInstance(ResourceFactory::class);
39+
/** @var ResourceFactoryProxy $resourceFactory */
40+
$resourceFactory = GeneralUtility::makeInstance(ResourceFactoryProxy::class);
4141
$this->resourceFactory = $resourceFactory;
4242
}
4343

Classes/ViewHelpers/Resource/AbstractResourceViewHelper.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@
99
*/
1010

1111
use FluidTYPO3\Vhs\Proxy\DoctrineQueryProxy;
12+
use FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy;
1213
use FluidTYPO3\Vhs\Traits\TagViewHelperCompatibility;
1314
use FluidTYPO3\Vhs\Utility\ResourceUtility;
1415
use TYPO3\CMS\Core\Database\Connection;
1516
use TYPO3\CMS\Core\Database\ConnectionPool;
1617
use TYPO3\CMS\Core\Resource\File;
1718
use TYPO3\CMS\Core\Resource\ProcessedFile;
18-
use TYPO3\CMS\Core\Resource\ResourceFactory;
1919
use TYPO3\CMS\Core\Utility\GeneralUtility;
2020
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper;
2121

@@ -93,8 +93,8 @@ public function getFiles(bool $onlyProperties = false, ?string $identifier = nul
9393
}
9494

9595
$files = [];
96-
/** @var ResourceFactory $resourceFactory */
97-
$resourceFactory = GeneralUtility::makeInstance(ResourceFactory::class);
96+
/** @var ResourceFactoryProxy $resourceFactory */
97+
$resourceFactory = GeneralUtility::makeInstance(ResourceFactoryProxy::class);
9898

9999
if (!empty($categories)) {
100100
/** @var ConnectionPool $connectionPool */

Classes/ViewHelpers/Resource/Record/FalViewHelper.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@
99
*/
1010

1111
use FluidTYPO3\Vhs\Proxy\DoctrineQueryProxy;
12+
use FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy;
1213
use FluidTYPO3\Vhs\Utility\ResourceUtility;
1314
use TYPO3\CMS\Core\Database\Connection;
1415
use TYPO3\CMS\Core\Database\ConnectionPool;
1516
use TYPO3\CMS\Core\Database\Query\QueryBuilder;
1617
use TYPO3\CMS\Core\Resource\Exception\ResourceDoesNotExistException;
1718
use TYPO3\CMS\Core\Resource\FileReference;
1819
use TYPO3\CMS\Core\Resource\FileRepository;
19-
use TYPO3\CMS\Core\Resource\ResourceFactory;
2020
use TYPO3\CMS\Core\Utility\ArrayUtility;
2121
use TYPO3\CMS\Core\Utility\GeneralUtility;
2222
use TYPO3\CMS\Core\Versioning\VersionState;
@@ -69,8 +69,8 @@ class FalViewHelper extends AbstractRecordResourceViewHelper
6969
*/
7070
public function __construct()
7171
{
72-
/** @var ResourceFactory $resourceFactory */
73-
$resourceFactory = GeneralUtility::makeInstance(ResourceFactory::class);
72+
/** @var ResourceFactoryProxy $resourceFactory */
73+
$resourceFactory = GeneralUtility::makeInstance(ResourceFactoryProxy::class);
7474
$this->resourceFactory = $resourceFactory;
7575
/** @var FileRepository $fileRepository */
7676
$fileRepository = GeneralUtility::makeInstance(FileRepository::class);

Configuration/Services.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ services:
1717
FluidTYPO3\Vhs\Proxy\SiteFinderProxy:
1818
public: true
1919

20+
FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy:
21+
public: true
22+
2023
FluidTYPO3\Vhs\Service\AssetService:
2124
public: true
2225

Tests/Unit/ViewHelpers/Condition/Form/HasValidatorViewHelperTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,20 @@
88
* LICENSE.md file that was distributed with this source code.
99
*/
1010

11+
use FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy;
1112
use FluidTYPO3\Vhs\Tests\Fixtures\Domain\Model\Bar;
1213
use FluidTYPO3\Vhs\Tests\Fixtures\Domain\Model\Foo;
1314
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest;
1415
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
1516
use TYPO3\CMS\Core\Resource\FileRepository;
16-
use TYPO3\CMS\Core\Resource\ResourceFactory;
1717
use TYPO3\CMS\Extbase\Reflection\ReflectionService;
1818

1919
class HasValidatorViewHelperTest extends AbstractViewHelperTestCase
2020
{
2121

2222
protected function setUp(): void
2323
{
24-
$this->singletonInstances[ResourceFactory::class] = $this->getMockBuilder(ResourceFactory::class)->disableOriginalConstructor()->getMock();
24+
$this->singletonInstances[ResourceFactoryProxy::class] = $this->getMockBuilder(ResourceFactoryProxy::class)->disableOriginalConstructor()->getMock();
2525
$this->singletonInstances[FileRepository::class] = $this->getMockBuilder(FileRepository::class)->disableOriginalConstructor()->getMock();
2626
$this->singletonInstances[ReflectionService::class] = $this->getMockBuilder(ReflectionService::class)
2727
->setMethods(['__destruct'])

Tests/Unit/ViewHelpers/Content/Resources/FalViewHelperTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
* LICENSE.md file that was distributed with this source code.
99
*/
1010

11+
use FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy;
1112
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest;
1213
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
1314
use TYPO3\CMS\Core\Resource\FileRepository;
14-
use TYPO3\CMS\Core\Resource\ResourceFactory;
1515

1616
/**
1717
* Class FalViewHelperTest
@@ -20,7 +20,7 @@ class FalViewHelperTest extends AbstractViewHelperTestCase
2020
{
2121
protected function setUp(): void
2222
{
23-
$this->singletonInstances[ResourceFactory::class] = $this->getMockBuilder(ResourceFactory::class)->disableOriginalConstructor()->getMock();
23+
$this->singletonInstances[ResourceFactoryProxy::class] = $this->getMockBuilder(ResourceFactoryProxy::class)->disableOriginalConstructor()->getMock();
2424
$this->singletonInstances[FileRepository::class] = $this->getMockBuilder(FileRepository::class)->disableOriginalConstructor()->getMock();
2525

2626
parent::setUp();

Tests/Unit/ViewHelpers/Media/ExtensionViewHelperTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
* LICENSE.md file that was distributed with this source code.
99
*/
1010

11+
use FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy;
1112
use FluidTYPO3\Vhs\Tests\Fixtures\Classes\AccessibleExtensionManagementUtility;
1213
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest;
1314
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
1415
use TYPO3\CMS\Core\Package\PackageManager;
15-
use TYPO3\CMS\Core\Resource\ResourceFactory;
1616

1717
/**
1818
* Class ExtensionViewHelperTest
@@ -29,7 +29,7 @@ class ExtensionViewHelperTest extends AbstractViewHelperTestCase
2929
*/
3030
public function setUp(): void
3131
{
32-
$this->singletonInstances[ResourceFactory::class] = $this->getMockBuilder(ResourceFactory::class)->disableOriginalConstructor()->getMock();
32+
$this->singletonInstances[ResourceFactoryProxy::class] = $this->getMockBuilder(ResourceFactoryProxy::class)->disableOriginalConstructor()->getMock();
3333
parent::setUp();
3434
$this->fixturesPath = 'Tests/Fixtures/Files';
3535
$packageManager = $this->getMockBuilder(PackageManager::class)->setMethods(['resolvePackagePath'])->disableOriginalConstructor()->getMock();

Tests/Unit/ViewHelpers/Media/FilesViewHelperTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
* LICENSE.md file that was distributed with this source code.
99
*/
1010

11+
use FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy;
1112
use FluidTYPO3\Vhs\Tests\Fixtures\Classes\AccessibleExtensionManagementUtility;
1213
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest;
1314
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
1415
use TYPO3\CMS\Core\Package\PackageManager;
15-
use TYPO3\CMS\Core\Resource\ResourceFactory;
1616

1717
/**
1818
* Class FilesViewHelperTest
@@ -29,7 +29,7 @@ class FilesViewHelperTest extends AbstractViewHelperTestCase
2929
*/
3030
public function setUp(): void
3131
{
32-
$this->singletonInstances[ResourceFactory::class] = $this->getMockBuilder(ResourceFactory::class)->disableOriginalConstructor()->getMock();
32+
$this->singletonInstances[ResourceFactoryProxy::class] = $this->getMockBuilder(ResourceFactoryProxy::class)->disableOriginalConstructor()->getMock();
3333
parent::setUp();
3434
$this->fixturesPath = 'EXT:vhs/Tests/Fixtures/Files';
3535
$packageManager = $this->getMockBuilder(PackageManager::class)->setMethods(['resolvePackagePath'])->disableOriginalConstructor()->getMock();

Tests/Unit/ViewHelpers/Media/Image/HeightViewHelperTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
* LICENSE.md file that was distributed with this source code.
99
*/
1010

11+
use FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy;
1112
use FluidTYPO3\Vhs\Tests\Fixtures\Classes\AccessibleExtensionManagementUtility;
1213
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest;
1314
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
1415
use TYPO3\CMS\Core\Package\PackageManager;
15-
use TYPO3\CMS\Core\Resource\ResourceFactory;
1616

1717
/**
1818
* Class HeightViewHelperTest
@@ -29,7 +29,7 @@ class HeightViewHelperTest extends AbstractViewHelperTestCase
2929
*/
3030
public function setUp(): void
3131
{
32-
$this->singletonInstances[ResourceFactory::class] = $this->getMockBuilder(ResourceFactory::class)->disableOriginalConstructor()->getMock();
32+
$this->singletonInstances[ResourceFactoryProxy::class] = $this->getMockBuilder(ResourceFactoryProxy::class)->disableOriginalConstructor()->getMock();
3333
parent::setUp();
3434
$this->fixturesPath = realpath(__DIR__ . '/../../../../../Tests/Fixtures/Files');
3535
$packageManager = $this->getMockBuilder(PackageManager::class)->setMethods(['resolvePackagePath'])->disableOriginalConstructor()->getMock();

Tests/Unit/ViewHelpers/Media/Image/MimetypeViewHelperTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
* LICENSE.md file that was distributed with this source code.
99
*/
1010

11+
use FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy;
1112
use FluidTYPO3\Vhs\Tests\Fixtures\Classes\AccessibleExtensionManagementUtility;
1213
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest;
1314
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
1415
use TYPO3\CMS\Core\Package\PackageManager;
15-
use TYPO3\CMS\Core\Resource\ResourceFactory;
1616

1717
/**
1818
* Class MimetypeViewHelperTest
@@ -29,7 +29,7 @@ class MimetypeViewHelperTest extends AbstractViewHelperTestCase
2929
*/
3030
public function setUp(): void
3131
{
32-
$this->singletonInstances[ResourceFactory::class] = $this->getMockBuilder(ResourceFactory::class)->disableOriginalConstructor()->getMock();
32+
$this->singletonInstances[ResourceFactoryProxy::class] = $this->getMockBuilder(ResourceFactoryProxy::class)->disableOriginalConstructor()->getMock();
3333
parent::setUp();
3434
$this->fixturesPath = realpath(__DIR__ . '/../../../../../Tests/Fixtures/Files');
3535
$packageManager = $this->getMockBuilder(PackageManager::class)->setMethods(['resolvePackagePath'])->disableOriginalConstructor()->getMock();

Tests/Unit/ViewHelpers/Media/Image/WidthViewHelperTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
* LICENSE.md file that was distributed with this source code.
99
*/
1010

11+
use FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy;
1112
use FluidTYPO3\Vhs\Tests\Fixtures\Classes\AccessibleExtensionManagementUtility;
1213
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest;
1314
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
1415
use TYPO3\CMS\Core\Package\PackageManager;
15-
use TYPO3\CMS\Core\Resource\ResourceFactory;
1616

1717
/**
1818
* Class WidthViewHelperTest
@@ -29,7 +29,7 @@ class WidthViewHelperTest extends AbstractViewHelperTestCase
2929
*/
3030
public function setUp(): void
3131
{
32-
$this->singletonInstances[ResourceFactory::class] = $this->getMockBuilder(ResourceFactory::class)->disableOriginalConstructor()->getMock();
32+
$this->singletonInstances[ResourceFactoryProxy::class] = $this->getMockBuilder(ResourceFactoryProxy::class)->disableOriginalConstructor()->getMock();
3333
parent::setUp();
3434
$this->fixturesPath = realpath(__DIR__ . '/../../../../../Tests/Fixtures/Files');
3535
$packageManager = $this->getMockBuilder(PackageManager::class)->setMethods(['resolvePackagePath'])->disableOriginalConstructor()->getMock();

Tests/Unit/ViewHelpers/Media/SizeViewHelperTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
* LICENSE.md file that was distributed with this source code.
99
*/
1010

11+
use FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy;
1112
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest;
1213
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
13-
use TYPO3\CMS\Core\Resource\ResourceFactory;
1414

1515
/**
1616
* Class SizeViewHelperTest
@@ -27,7 +27,7 @@ class SizeViewHelperTest extends AbstractViewHelperTestCase
2727
*/
2828
public function setUp(): void
2929
{
30-
$this->singletonInstances[ResourceFactory::class] = $this->getMockBuilder(ResourceFactory::class)->disableOriginalConstructor()->getMock();
30+
$this->singletonInstances[ResourceFactoryProxy::class] = $this->getMockBuilder(ResourceFactoryProxy::class)->disableOriginalConstructor()->getMock();
3131
parent::setUp();
3232
$this->fixturesPath = realpath(__DIR__ . '/../../../../Tests/Fixtures/Files');
3333
}

Tests/Unit/ViewHelpers/Page/Resources/FalViewHelperTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
* LICENSE.md file that was distributed with this source code.
99
*/
1010

11+
use FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy;
1112
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest;
1213
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
1314
use TYPO3\CMS\Core\Resource\FileRepository;
14-
use TYPO3\CMS\Core\Resource\ResourceFactory;
1515

1616
/**
1717
* Class FalViewHelperTest
@@ -20,7 +20,7 @@ class FalViewHelperTest extends AbstractViewHelperTestCase
2020
{
2121
protected function setUp(): void
2222
{
23-
$this->singletonInstances[ResourceFactory::class] = $this->getMockBuilder(ResourceFactory::class)->disableOriginalConstructor()->getMock();
23+
$this->singletonInstances[ResourceFactoryProxy::class] = $this->getMockBuilder(ResourceFactoryProxy::class)->disableOriginalConstructor()->getMock();
2424
$this->singletonInstances[FileRepository::class] = $this->getMockBuilder(FileRepository::class)->disableOriginalConstructor()->getMock();
2525

2626
parent::setUp();

Tests/Unit/ViewHelpers/Resource/Record/FalViewHelperTest.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,21 @@
88
* LICENSE.md file that was distributed with this source code.
99
*/
1010

11+
use FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy;
1112
use FluidTYPO3\Vhs\Tests\Fixtures\Classes\DummyQueryBuilder;
1213
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest;
1314
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
1415
use FluidTYPO3\Vhs\ViewHelpers\Resource\Record\FalViewHelper;
1516
use TYPO3\CMS\Core\Resource\File;
1617
use TYPO3\CMS\Core\Resource\FileReference;
1718
use TYPO3\CMS\Core\Resource\FileRepository;
18-
use TYPO3\CMS\Core\Resource\ResourceFactory;
1919
use TYPO3\CMS\Core\Resource\ResourceStorage;
2020

2121
class FalViewHelperTest extends AbstractViewHelperTestCase
2222
{
2323
protected function setUp(): void
2424
{
25-
$this->singletonInstances[ResourceFactory::class] = $this->getMockBuilder(ResourceFactory::class)
25+
$this->singletonInstances[ResourceFactoryProxy::class] = $this->getMockBuilder(ResourceFactoryProxy::class)
2626
->setMethods(['getFileReferenceObject'])
2727
->disableOriginalConstructor()
2828
->getMock();
@@ -90,7 +90,7 @@ public function testGetResourcesInNonPageContext(int $workspaceUid): void
9090
{
9191
$file = $this->getMockBuilder(FileReference::class)->disableOriginalConstructor()->getMock();
9292

93-
$this->singletonInstances[ResourceFactory::class]->method('getFileReferenceObject')->willReturn($file);
93+
$this->singletonInstances[ResourceFactoryProxy::class]->method('getFileReferenceObject')->willReturn($file);
9494

9595
$mockQueryBuilder = new DummyQueryBuilder($this);
9696
$mockQueryBuilder->result->method('fetchAllAssociative')->willReturn([['uid' => 1]]);

0 commit comments

Comments
 (0)