/**
  * @param ContainerBuilder $container
  * @param string           $contextId
  * @param string           $definitionName
  * @param array            $config
  *
  * @return Definition
  *
  * @throws InvalidDefinitionException
  */
 public function buildDefinition(ContainerBuilder $container, $contextId, $definitionName, array &$config)
 {
     $this->parameterValidator->validateParameters($contextId, $config);
     if (isset($config[self::SERVICE_PARAMETER])) {
         return $this->buildFromService($container, $definitionName, $config[self::SERVICE_PARAMETER]);
     }
     return $this->buildFromClass($container, $definitionName, $config[self::CLASS_PARAMETER]);
 }
 /**
  * {@inheritdoc}
  */
 protected function processParam($contextId, array &$paramConfig, ContainerBuilder $container)
 {
     $config = $paramConfig[self::SEARCHER_PARAMETER];
     $this->parametersValidator->validateParameters($contextId, $config);
     if (isset($config[self::SERVICE_PARAMETER])) {
         return $this->createFromService($container, $contextId, $config);
     }
     $definition = new Definition($config[self::CLASS_PARAMETER]);
     $this->configureDefinition($definition, $container, $config, $contextId);
     $definition = $this->wrapDefinition($definition, $config);
     return $container->setDefinition($this->buildServiceName($contextId, self::SEARCHER_PARAMETER), $definition);
 }
 /**
  * @expectedException \Symfony\Component\Config\Definition\Exception\InvalidDefinitionException
  * @expectedExceptionMessageRegExp /contextId/
  */
 public function testWrongValidation()
 {
     $validator = new ParametersValidator();
     $config = [];
     $validator->validateParameters('contextId', $config);
 }