/** * @param JobTypeInterface $jobType * @param ContextInterface $context * @param array|null $parameters * @return array */ public static function resolveParameters(JobTypeInterface $jobType, ContextInterface $context, $parameters = null) { $result = array(); $parameters = $parameters == null ? array() : $parameters; foreach ($jobType->getParameterTypes() as $parameterType) { if (0 === strpos($parameterType, '@')) { $key = substr($parameterType, 1); $result[] = $context->has($key) ? $context->get($key) : null; } else { $result[] = array_shift($parameters); } } return $result; }
/** * @param JobTypeInterface $jobType * @return DeserializationContext */ protected function getResponseDeserializationContext(JobTypeInterface $jobType) { $context = new DeserializationContext(); $this->configureContext($context, $jobType->getReturnTypeOptions()); return $context; }
/** * @param JobTypeInterface $jobType * @param bool $loadClassMetadata Whether to load class metadata of the job class */ public function register(JobTypeInterface $jobType, $loadClassMetadata = false) { if ($loadClassMetadata) { /** * @var ClassMetadata $classMetadata */ $classMetadata = $this->metadataFactory->getMetadataForClass($jobType->getClass())->getRootClassMetadata(); $jobType->setParameterTypes($classMetadata->getParameterTypes($jobType->getMethod())); $jobType->setParameterTypeOptions($classMetadata->getParameterOptions($jobType->getMethod())); $jobType->setReturnType($classMetadata->getReturnType($jobType->getMethod())); $jobType->setReturnTypeOptions($classMetadata->getReturnOptions($jobType->getMethod())); } $jobType->setQueue($this->queueConfig->getQueue($jobType->getName())); $this->types[$jobType->getName()] = $jobType; }