/** * @param int $release_id * @param int $component_id * @return IOpenStackApiVersion[] * @throws NotFoundEntityException * @throws InvalidAggregateRootException */ public function getReleaseSupportedVersionsByComponent($release_id, $component_id) { $release = $this->release_repository->getById($release_id); if (!$release) { throw new NotFoundEntityException('OpenStackRelease', sprintf('id %s', $release_id)); } $component = $this->component_repository->getById($component_id); if (!$component) { throw new NotFoundEntityException('OpenStackComponent', sprintf('id %s', $component)); } if (!$release->supportsComponent($component->getCodeName())) { throw new InvalidAggregateRootException('OpenStackRelease', $release_id, 'OpenStackComponent', $component_id); } $res = array(); foreach ($this->version_repository->getByReleaseAndComponent($release_id, $component_id) as $version) { if ($release->supportsApiVersion($version)) { array_push($res, $version); } } return $res; }