public function process(ContainerBuilder $container)
 {
     $reader = $container->get('annotation_reader');
     $factory = $container->get('jms_di_extra.metadata.metadata_factory');
     $converter = $container->get('jms_di_extra.metadata.converter');
     $disableGrep = $container->getParameter('jms_di_extra.disable_grep');
     $directories = $this->getScanDirectories($container);
     if (!$directories) {
         $container->getCompiler()->addLogMessage('No directories configured for AnnotationConfigurationPass.');
         return;
     }
     $finder = new PatternFinder('JMS\\DiExtraBundle\\Annotation', '*.php', $disableGrep);
     $files = $finder->findFiles($directories);
     $container->addResource(new ServiceFilesResource($files, $directories, $disableGrep));
     foreach ($files as $file) {
         $container->addResource(new FileResource($file));
         require_once $file;
         $className = $this->getClassName($file);
         if (null === ($metadata = $factory->getMetadataForClass($className))) {
             continue;
         }
         if (null === $metadata->getOutsideClassMetadata()->id) {
             continue;
         }
         foreach ($converter->convert($metadata) as $id => $definition) {
             $container->setDefinition($id, $definition);
         }
     }
 }
 /**
  * @param ContainerBuilder                 $container
  * @param string[]                         $directories
  * @param string                           $pattern
  * @param AdvancedMetadataFactoryInterface $factory
  * @param MetadataConverter                $converter
  * @param bool                             $disableGrep
  */
 private function handlePattern(ContainerBuilder $container, $directories, $pattern, $factory, $converter, $disableGrep)
 {
     $finder = new PatternFinder($pattern, '*.php', $disableGrep);
     $files = $finder->findFiles($directories);
     $container->addResource(new ServiceFilesResource($files, $directories, $disableGrep));
     foreach ($files as $file) {
         $container->addResource(new FileResource($file));
         require_once $file;
         $className = $this->getClassName($file);
         if (null === ($metadata = $factory->getMetadataForClass($className))) {
             continue;
         }
         if (null === $metadata->getOutsideClassMetadata()->id) {
             continue;
         }
         if (!$metadata->getOutsideClassMetadata()->isLoadedInEnvironment($container->getParameter('kernel.environment'))) {
             continue;
         }
         foreach ($converter->convert($metadata) as $id => $definition) {
             $container->setDefinition($id, $definition);
         }
     }
 }
 public function isFresh($timestamp)
 {
     $finder = new PatternFinder($this->pattern, '*.php', $this->disableGrep);
     $files = $finder->findFiles($this->dirs);
     return !array_diff($files, $this->files) && !array_diff($this->files, $files);
 }
 /**
  * @param $container
  * @return ServiceWrapperHelper[]
  */
 public function findFiles($container)
 {
     $directories = array();
     $bundles = $container->getParameter('kernel.bundles');
     foreach ($bundles as $name => $className) {
         if ('NfxAsyncBundle' === $name) {
             //    continue;
         }
         $bundleClass = new \ReflectionClass($className);
         $directories[] = dirname($bundleClass->getFileName());
     }
     $finder = new PatternFinder('Nfx\\AsyncBundle\\Annotation');
     $files = $finder->findFiles($directories);
     $files = array_flip($files);
     $possibleServices = array();
     foreach ($container->getDefinitions() as $definitionId => $definition) {
         if (!class_exists($definition->getClass())) {
             continue;
         }
         $reflection = new \ReflectionClass($definition->getClass());
         if (empty($files[$reflection->getFileName()])) {
             continue;
         }
         $possibleServices[$definitionId] = new ServiceWrapperHelper($reflection, $definition, $definitionId);
     }
     return $possibleServices;
 }
Example #5
0
 public function isFresh($timestamp)
 {
     $finder = new PatternFinder('JMS\\DiExtraBundle\\Annotation');
     $files = $finder->findFiles($this->dirs);
     return !array_diff($files, $this->files) && !array_diff($this->files, $files);
 }