'onMetadataChange', ]; } /** * @var callable */ private $locator; /** * @param callable $locator CachedCaptionDataRepository provider */ public function __construct(callable $locator) { $this->locator = $locator; } public function onMetadataChange(MetadataChangedEvent $event) { $record = $event->getRecord(); $repository = $this->getCaptionRepository($record->getDataboxId()); $repository->invalidate($record->getRecordId()); } /** * @param int $databoxId * @return CachedCaptionDataRepository */ private function getCaptionRepository($databoxId) { $locator = $this->locator; /** @var DataboxBoundRepositoryProvider $repositoryProvider */ $repositoryProvider = $locator(); Assertion::isInstanceOf($repositoryProvider, DataboxBoundRepositoryProvider::class); $repository = $repositoryProvider->getRepositoryForDatabox($databoxId); Assertion::isInstanceOf($repository, CachedCaptionDataRepository::class); return $repository; } }