From a635bc246a12dcea4a6c328b524e3ddd4d259dbb Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Sun, 6 Mar 2022 17:55:39 +0200 Subject: [PATCH] type fixes --- application/Espo/Core/Job/Job/Data.php | 8 ++--- .../Core/Job/Job/Jobs/AbstractQueueJob.php | 11 ++----- .../Core/Job/Job/Jobs/ProcessJobGroup.php | 4 +-- .../Core/Job/Job/Jobs/ProcessJobQueueE0.php | 2 +- .../Core/Job/Job/Jobs/ProcessJobQueueQ0.php | 2 +- .../Core/Job/Job/Jobs/ProcessJobQueueQ1.php | 2 +- application/Espo/Core/Job/JobFactory.php | 11 ++++--- application/Espo/Core/Job/JobManager.php | 24 +++++++------- application/Espo/Core/Job/JobScheduler.php | 32 ++++++++----------- application/Espo/Core/Job/JobTask.php | 8 ++++- .../Espo/Core/Job/MetadataProvider.php | 8 ++++- .../Espo/Core/Job/PreparatorFactory.php | 5 +-- .../Core/Job/QueuePortionNumberProvider.php | 12 ++++--- .../Espo/Core/Job/QueueProcessorParams.php | 10 +++--- application/Espo/Core/Job/QueueUtil.php | 21 ++++++------ .../Espo/Core/Job/ScheduleProcessor.php | 3 ++ application/Espo/Core/Job/ScheduleUtil.php | 6 ++-- application/Espo/Core/Jobs/Base.php | 17 +++++----- 18 files changed, 97 insertions(+), 89 deletions(-) diff --git a/application/Espo/Core/Job/Job/Data.php b/application/Espo/Core/Job/Job/Data.php index 99eeda6756..6b9e903ac8 100644 --- a/application/Espo/Core/Job/Job/Data.php +++ b/application/Espo/Core/Job/Job/Data.php @@ -36,11 +36,11 @@ use stdClass; class Data { - private $data; + private stdClass $data; - private $targetId = null; + private ?string $targetId = null; - private $targetType = null; + private ?string $targetType = null; public function __construct(?stdClass $data = null) { @@ -50,7 +50,7 @@ class Data /** * Create an instance. * - * @param stdClass|array|null $data Raw data. + * @param stdClass|array|null $data Raw data. * @return self */ public static function create($data = null): self diff --git a/application/Espo/Core/Job/Job/Jobs/AbstractQueueJob.php b/application/Espo/Core/Job/Job/Jobs/AbstractQueueJob.php index 7027105065..b020fec6dd 100644 --- a/application/Espo/Core/Job/Job/Jobs/AbstractQueueJob.php +++ b/application/Espo/Core/Job/Job/Jobs/AbstractQueueJob.php @@ -29,18 +29,17 @@ namespace Espo\Core\Job\Job\Jobs; -use RuntimeException; use Espo\Core\Job\JobDataLess; use Espo\Core\Job\JobManager; use Espo\Core\Job\QueuePortionNumberProvider; abstract class AbstractQueueJob implements JobDataLess { - protected $queue = null; + protected string $queue; - private $jobManager; + private JobManager $jobManager; - private $portionNumberProvider; + private QueuePortionNumberProvider $portionNumberProvider; public function __construct(JobManager $jobManager, QueuePortionNumberProvider $portionNumberProvider) { @@ -50,10 +49,6 @@ abstract class AbstractQueueJob implements JobDataLess public function run(): void { - if (!$this->queue) { - throw new RuntimeException("No queue name."); - } - $limit = $this->portionNumberProvider->get($this->queue); $this->jobManager->processQueue($this->queue, $limit); diff --git a/application/Espo/Core/Job/Job/Jobs/ProcessJobGroup.php b/application/Espo/Core/Job/Job/Jobs/ProcessJobGroup.php index 5e6c168247..65bd40d7f8 100644 --- a/application/Espo/Core/Job/Job/Jobs/ProcessJobGroup.php +++ b/application/Espo/Core/Job/Job/Jobs/ProcessJobGroup.php @@ -38,9 +38,9 @@ class ProcessJobGroup implements Job { private const PORTION_NUMBER = 100; - private $jobManager; + private JobManager $jobManager; - private $config; + private Config $config; public function __construct( JobManager $jobManager, diff --git a/application/Espo/Core/Job/Job/Jobs/ProcessJobQueueE0.php b/application/Espo/Core/Job/Job/Jobs/ProcessJobQueueE0.php index 0248cf2883..dc5bea5d86 100644 --- a/application/Espo/Core/Job/Job/Jobs/ProcessJobQueueE0.php +++ b/application/Espo/Core/Job/Job/Jobs/ProcessJobQueueE0.php @@ -36,5 +36,5 @@ use Espo\Core\{ class ProcessJobQueueE0 extends AbstractQueueJob { - protected $queue = QueueName::E0; + protected string $queue = QueueName::E0; } diff --git a/application/Espo/Core/Job/Job/Jobs/ProcessJobQueueQ0.php b/application/Espo/Core/Job/Job/Jobs/ProcessJobQueueQ0.php index d3dcffdae4..cd26d56c36 100644 --- a/application/Espo/Core/Job/Job/Jobs/ProcessJobQueueQ0.php +++ b/application/Espo/Core/Job/Job/Jobs/ProcessJobQueueQ0.php @@ -36,5 +36,5 @@ use Espo\Core\{ class ProcessJobQueueQ0 extends AbstractQueueJob { - protected $queue = QueueName::Q0; + protected string $queue = QueueName::Q0; } diff --git a/application/Espo/Core/Job/Job/Jobs/ProcessJobQueueQ1.php b/application/Espo/Core/Job/Job/Jobs/ProcessJobQueueQ1.php index 83a650dbc4..03d7d8f633 100644 --- a/application/Espo/Core/Job/Job/Jobs/ProcessJobQueueQ1.php +++ b/application/Espo/Core/Job/Job/Jobs/ProcessJobQueueQ1.php @@ -36,5 +36,5 @@ use Espo\Core\{ class ProcessJobQueueQ1 extends AbstractQueueJob { - protected $queue = QueueName::Q1; + protected string $queue = QueueName::Q1; } diff --git a/application/Espo/Core/Job/JobFactory.php b/application/Espo/Core/Job/JobFactory.php index 299aa1f8f6..9a07c02210 100644 --- a/application/Espo/Core/Job/JobFactory.php +++ b/application/Espo/Core/Job/JobFactory.php @@ -39,11 +39,11 @@ use Espo\Core\{ class JobFactory { - private $classFinder; + private ClassFinder $classFinder; - private $injectableFactory; + private InjectableFactory $injectableFactory; - private $metadataProvider; + private MetadataProvider $metadataProvider; public function __construct( ClassFinder $classFinder, @@ -74,7 +74,7 @@ class JobFactory /** * Create a job by a class name. - + * @param class-string $className * @return Job|JobDataLess */ public function createByClassName(string $className): object @@ -84,6 +84,9 @@ class JobFactory return $job; } + /** + * @return ?class-string + */ private function getClassName(string $name): ?string { $className = $this->metadataProvider->getJobClassName($name); diff --git a/application/Espo/Core/Job/JobManager.php b/application/Espo/Core/Job/JobManager.php index 78255996f8..ce6e38b13c 100644 --- a/application/Espo/Core/Job/JobManager.php +++ b/application/Espo/Core/Job/JobManager.php @@ -35,9 +35,7 @@ use Espo\Core\{ Utils\Log, }; -use Espo\{ - Entities\Job as JobEntity, -}; +use Espo\Entities\Job as JobEntity; use Throwable; @@ -46,25 +44,25 @@ use Throwable; */ class JobManager { - private $useProcessPool = false; + private bool $useProcessPool = false; - protected $lastRunTimeFile = 'data/cache/application/cronLastRunTime.php'; + protected string $lastRunTimeFile = 'data/cache/application/cronLastRunTime.php'; - private $config; + private Config $config; - private $fileManager; + private FileManager $fileManager; - private $jobRunner; + private JobRunner $jobRunner; - private $log; + private Log $log; - private $scheduleProcessor; + private ScheduleProcessor $scheduleProcessor; - private $queueUtil; + private QueueUtil $queueUtil; - private $asyncPoolFactory; + private AsyncPoolFactory $asyncPoolFactory; - private $queueProcessorFactory; + private QueueProcessorFactory $queueProcessorFactory; public function __construct( Config $config, diff --git a/application/Espo/Core/Job/JobScheduler.php b/application/Espo/Core/Job/JobScheduler.php index e044ebf623..94a9739a11 100644 --- a/application/Espo/Core/Job/JobScheduler.php +++ b/application/Espo/Core/Job/JobScheduler.php @@ -48,28 +48,22 @@ use TypeError; */ class JobScheduler { - private $className = null; - - private $queue = null; - - private $group = null; - /** - * @var Data|null + * @var ?class-string */ - private $data = null; + private ?string $className = null; - /** - * @var DateTimeImmutable|null - */ - private $time = null; + private ?string $queue = null; - /** - * @var DateInterval|null - */ - private $delay = null; + private ?string $group = null; - private $entityManager; + private ?Data $data = null; + + private ?DateTimeImmutable $time = null; + + private ?DateInterval $delay = null; + + private EntityManager $entityManager; public function __construct(EntityManager $entityManager) { @@ -78,6 +72,8 @@ class JobScheduler /** * A class name of the job. Should implement the `Job` interface. + * + * @param class-string $className */ public function setClassName(string $className): self { @@ -152,7 +148,7 @@ class JobScheduler /** * Set data to be passed to the job. * - * @param Data|array|null $data + * @param Data|array|null $data */ public function setData($data): self { diff --git a/application/Espo/Core/Job/JobTask.php b/application/Espo/Core/Job/JobTask.php index ae5a99e1bf..a29cb3ecbc 100644 --- a/application/Espo/Core/Job/JobTask.php +++ b/application/Espo/Core/Job/JobTask.php @@ -41,17 +41,23 @@ use Throwable; class JobTask extends AsyncTask { - private $jobId; + private string $jobId; public function __construct(string $jobId) { $this->jobId = $jobId; } + /** + * @return void + */ public function configure() { } + /** + * @return void + */ public function run() { $app = new Application(); diff --git a/application/Espo/Core/Job/MetadataProvider.php b/application/Espo/Core/Job/MetadataProvider.php index 0bc45bc959..8045f2d00b 100644 --- a/application/Espo/Core/Job/MetadataProvider.php +++ b/application/Espo/Core/Job/MetadataProvider.php @@ -33,7 +33,7 @@ use Espo\Core\Utils\Metadata; class MetadataProvider { - private $metadata; + private Metadata $metadata; public function __construct(Metadata $metadata) { @@ -80,11 +80,17 @@ class MetadataProvider return $this->metadata->get(['app', 'scheduledJobs', $name, 'jobClassName']); } + /** + * @return string[] + */ public function getScheduledJobNameList(): array { return array_keys($this->metadata->get(['app', 'scheduledJobs']) ?? []); } + /** + * @return string[] + */ public function getNonSystemScheduledJobNameList(): array { return array_filter( diff --git a/application/Espo/Core/Job/PreparatorFactory.php b/application/Espo/Core/Job/PreparatorFactory.php index 06ac9c5fa4..842d244b9c 100644 --- a/application/Espo/Core/Job/PreparatorFactory.php +++ b/application/Espo/Core/Job/PreparatorFactory.php @@ -34,9 +34,9 @@ use Espo\Core\Exceptions\Error; class PreparatorFactory { - private $metadataProvider; + private MetadataProvider $metadataProvider; - private $injectableFactory; + private InjectableFactory $injectableFactory; public function __construct(MetadataProvider $metadataProvider, InjectableFactory $injectableFactory) { @@ -51,6 +51,7 @@ class PreparatorFactory */ public function create(string $name): Preparator { + /** @var class-string */ $className = $this->metadataProvider->getPreparatorClassName($name); if (!$className) { diff --git a/application/Espo/Core/Job/QueuePortionNumberProvider.php b/application/Espo/Core/Job/QueuePortionNumberProvider.php index 12a35bd666..7581598ab6 100644 --- a/application/Espo/Core/Job/QueuePortionNumberProvider.php +++ b/application/Espo/Core/Job/QueuePortionNumberProvider.php @@ -29,20 +29,24 @@ namespace Espo\Core\Job; -use Espo\Core\{ - Utils\Config, -}; +use Espo\Core\Utils\Config; class QueuePortionNumberProvider { - private $config; + private Config $config; + /** + * @var array + */ private $queueNumberMap = [ QueueName::Q0 => self::Q0_PORTION_NUMBER, QueueName::Q1 => self::Q1_PORTION_NUMBER, QueueName::E0 => self::E0_PORTION_NUMBER, ]; + /** + * @var array + */ private $queueParamNameMap = [ QueueName::Q0 => 'jobQ0MaxPortion', QueueName::Q1 => 'jobQ1MaxPortion', diff --git a/application/Espo/Core/Job/QueueProcessorParams.php b/application/Espo/Core/Job/QueueProcessorParams.php index ae472faece..80cb1c7a68 100644 --- a/application/Espo/Core/Job/QueueProcessorParams.php +++ b/application/Espo/Core/Job/QueueProcessorParams.php @@ -31,15 +31,15 @@ namespace Espo\Core\Job; class QueueProcessorParams { - private $useProcessPool = false; + private bool $useProcessPool = false; - private $noLock = false; + private bool $noLock = false; - private $queue = null; + private ?string $queue = null; - private $group = null; + private ?string $group = null; - private $limit = 0; + private int $limit = 0; public function withUseProcessPool(bool $useProcessPool): self { diff --git a/application/Espo/Core/Job/QueueUtil.php b/application/Espo/Core/Job/QueueUtil.php index b47df84009..ef901355e8 100644 --- a/application/Espo/Core/Job/QueueUtil.php +++ b/application/Espo/Core/Job/QueueUtil.php @@ -46,19 +46,13 @@ use DateTime; class QueueUtil { - /** - * @var Config - */ - private $config; + private Config $config; - /** - * @var EntityManager - */ - private $entityManager; + private EntityManager $entityManager; - private $scheduleUtil; + private ScheduleUtil $scheduleUtil; - private $metadataProvider; + private MetadataProvider $metadataProvider; private const NOT_EXISTING_PROCESS_PERIOD = 300; @@ -96,7 +90,7 @@ class QueueUtil /** * @return JobEntity[] - * @phpstan-return Collection&iterable + * @phpstan-return Collection */ public function getPendingJobList(?string $queue = null, ?string $group = null, int $limit = 0): Collection { @@ -128,7 +122,7 @@ class QueueUtil $builder->limit(0, $limit); } - /** @var Collection&iterable $collection */ + /** @var Collection $collection */ $collection = $builder->find(); return $collection; @@ -348,6 +342,9 @@ class QueueUtil $this->markJobListFailed($failedJobList); } + /** + * @param iterable $jobList + */ protected function markJobListFailed(iterable $jobList): void { if (!count($jobList)) { diff --git a/application/Espo/Core/Job/ScheduleProcessor.php b/application/Espo/Core/Job/ScheduleProcessor.php index 78dfef903a..c97746b7e0 100644 --- a/application/Espo/Core/Job/ScheduleProcessor.php +++ b/application/Espo/Core/Job/ScheduleProcessor.php @@ -55,6 +55,9 @@ use DateTimeImmutable; */ class ScheduleProcessor { + /** + * @var string[] + */ private $asSoonAsPossibleSchedulingList = [ '*', '* *', diff --git a/application/Espo/Core/Job/ScheduleUtil.php b/application/Espo/Core/Job/ScheduleUtil.php index bab8a98586..7d0cf61f74 100644 --- a/application/Espo/Core/Job/ScheduleUtil.php +++ b/application/Espo/Core/Job/ScheduleUtil.php @@ -45,7 +45,7 @@ use Espo\Entities\{ class ScheduleUtil { - private $entityManager; + private EntityManager $entityManager; public function __construct(EntityManager $entityManager) { @@ -55,11 +55,11 @@ class ScheduleUtil /** * Get active scheduled job list. * - * @phpstan-return iterable&Collection + * @return Collection */ public function getActiveScheduledJobList(): Collection { - /** @var iterable&Collection $collection */ + /** @var Collection */ $collection = $this->entityManager ->getRDBRepository(ScheduledJobEntity::ENTITY_TYPE) ->select([ diff --git a/application/Espo/Core/Jobs/Base.php b/application/Espo/Core/Jobs/Base.php index 8af35c2f41..6b71488218 100644 --- a/application/Espo/Core/Jobs/Base.php +++ b/application/Espo/Core/Jobs/Base.php @@ -36,41 +36,40 @@ use Espo\Core\Container; */ abstract class Base { - private $container; + private $container; /** @phpstan-ignore-line */ - protected function getContainer() + protected function getContainer() /** @phpstan-ignore-line */ { return $this->container; } - protected function getEntityManager() + protected function getEntityManager() /** @phpstan-ignore-line */ { return $this->getContainer()->get('entityManager'); } - protected function getServiceFactory() + protected function getServiceFactory() /** @phpstan-ignore-line */ { return $this->getContainer()->get('serviceFactory'); } - protected function getConfig() + protected function getConfig() /** @phpstan-ignore-line */ { return $this->getContainer()->get('config'); } - protected function getMetadata() + protected function getMetadata() /** @phpstan-ignore-line */ { return $this->getContainer()->get('metadata'); } - protected function getUser() + protected function getUser() /** @phpstan-ignore-line */ { return $this->getContainer()->get('user'); } - public function __construct(Container $container) + public function __construct(Container $container) /** @phpstan-ignore-line */ { $this->container = $container; } } -