/**
  * Retrieves the generated hydrator FQCN
  *
  * @return string
  */
 public function getHydratorClass()
 {
     $inflector = $this->configuration->getClassNameInflector();
     $realClassName = $inflector->getUserClassName($this->configuration->getHydratedClassName());
     $hydratorClassName = $inflector->getGeneratedClassName($realClassName, array('factory' => get_class($this)));
     if (!class_exists($hydratorClassName) && $this->configuration->doesAutoGenerateProxies()) {
         $generator = new HydratorGenerator();
         $originalClass = new ReflectionClass($realClassName);
         $generatedAst = $generator->generate($originalClass);
         $traverser = new NodeTraverser();
         $traverser->addVisitor(new ClassRenamerVisitor($originalClass, $hydratorClassName));
         $this->configuration->getGeneratorStrategy()->generate($traverser->traverse($generatedAst));
         $this->configuration->getGeneratedClassAutoloader()->__invoke($hydratorClassName);
     }
     return $hydratorClassName;
 }
 /**
  * @covers \GeneratedHydrator\Configuration::getGeneratedClassAutoloader
  * @covers \GeneratedHydrator\Configuration::setGeneratedClassAutoloader
  */
 public function testSetGetGeneratedClassAutoloader()
 {
     $this->assertInstanceOf('CodeGenerationUtils\\Autoloader\\AutoloaderInterface', $this->configuration->getGeneratedClassAutoloader());
     $autoloader = $this->getMock('CodeGenerationUtils\\Autoloader\\AutoloaderInterface');
     $this->configuration->setGeneratedClassAutoloader($autoloader);
     $this->assertSame($autoloader, $this->configuration->getGeneratedClassAutoloader());
 }
 public function getHydrator($class)
 {
     if (isset($this->hydrators[$class])) {
         return $this->hydrators[$class];
     }
     $configuration = new Configuration($class);
     $configuration->setGeneratedClassesNamespace('Rogiel\\StarReplay\\Hydrator\\Generated');
     if ($this->directory !== null) {
         $configuration->setGeneratedClassesTargetDir($this->directory);
         spl_autoload_register($configuration->getGeneratedClassAutoloader());
     }
     $hydratorClass = $configuration->createFactory()->getHydratorClass();
     $this->hydrators[$class] = new $hydratorClass();
     return $this->hydrators[$class];
 }