/** * {@inheritdoc} */ public function process($context, Result $result, Collection $collection) { $routes = $this->locateRoutesForClass($context->getContext()->getClass()); if (empty($routes)) { return; } $resource = $context->getAnnotation()->toModel(); foreach ($routes as $route) { $function = $this->extractFunctionFromRoute($route); foreach ($route->getMethods() as $method) { $operation = new Operation(sprintf('%s/%s/%s', $resource->getId(), $method, $function)); $operation->setMethod($method); $operation->setPath($route->getPath()); foreach ($this->extractParametersFromRoute($route) as $parameter) { $operation->addParameter($parameter); } if ($this->versionOperation) { $operation = $this->versionOperation->version($operation, $result, $route); } if (!is_array($operation)) { $operation = array($operation); } foreach ($operation as $value) { $resource->addOperation($value); } } } $result->set('resource', $resource->getId(), $resource); }