public function build(\ReflectionClass $reflClass, $annot)
 {
     $definitionHolder = parent::build($reflClass, $annot);
     $definition = $definitionHolder['definition'];
     $id = $annot->value ?: $annot->name;
     if (empty($id)) {
         $serviceIdGenerator = new ServiceIdGenerator();
         $id = $serviceIdGenerator->generate($reflClass);
     }
     $definition->addTag('loso.controller');
     return array('id' => $id, 'definition' => $definition);
 }
 public function build(\ReflectionClass $reflClass, $annot)
 {
     $definitionHolder = parent::build($reflClass, $annot);
     $definition = $definitionHolder['definition'];
     $id = $annot->name;
     if (empty($id)) {
         $serviceIdGenerator = new ServiceIdGenerator();
         $id = $serviceIdGenerator->generate($reflClass);
     }
     $entity = $annot->value ?: $annot->entity;
     $entityManager = !empty($annot->entityManager) ? $annot->entityManager : 'default';
     if (null === $entity) {
         throw new \InvalidArgumentException(sprintf('Entity name must be setted in @Repository for class "%s".', $reflClass->getName()));
     }
     $definition->addTag('loso.doctrine.repository', array('entity' => $entity, 'entityManager' => $entityManager));
     return array('id' => $id, 'definition' => $definition);
 }
 public function build(\ReflectionClass $reflClass, $annot)
 {
     $definitionHolder = parent::build($reflClass, $annot);
     $definition = $definitionHolder['definition'];
     $id = $annot->value ?: $annot->name;
     if (empty($id)) {
         $serviceIdGenerator = new ServiceIdGenerator();
         $id = $serviceIdGenerator->generate($reflClass);
     }
     if (isset($annot->scope)) {
         $definition->setScope($annot->scope);
     }
     if (isset($annot->public)) {
         $definition->setPublic($annot->public);
     }
     if (isset($annot->factoryMethod)) {
         $definition->setFactoryMethod($annot->factoryMethod);
     }
     if (isset($annot->factoryService)) {
         $definition->setFactoryService($annot->factoryService);
     }
     if (isset($annot->configurator)) {
         if (is_string($annot->configurator)) {
             $definition->setConfigurator($annot->configurator);
         } else {
             $definition->setConfigurator(array($this->resolveServices($annot->configurator[0]), $annot->configurator[1]));
         }
     }
     if (isset($annot->tags)) {
         if (!is_array($annot->tags)) {
             throw new \InvalidArgumentException(sprintf('Parameter "tags" must be an array for service "%s" in %s.', $id, $reflClass->getName()));
         }
         foreach ($annot->tags as $tag) {
             if (!isset($tag['name'])) {
                 throw new \InvalidArgumentException(sprintf('A "tags" entry is missing a "name" key must be an array for service "%s" in %s.', $id, $reflClass->getName()));
             }
             $name = $tag['name'];
             unset($tag['name']);
             $definition->addTag($name, $tag);
         }
     }
     return array('id' => $id, 'definition' => $definition);
 }