/**
  * Creates metadata for testing.
  *
  * @param LoggerInterface|null $logger
  * @return TranslationMetadata
  */
 private function createMetadata(LoggerInterface $logger = null)
 {
     $reader = new AnnotationReader();
     $infrastructure = new ORMInfrastructure(array('\\Webfactory\\Bundle\\PolyglotBundle\\Tests\\TestEntity', '\\Webfactory\\Bundle\\PolyglotBundle\\Tests\\TestEntityTranslation'));
     $metadata = $infrastructure->getEntityManager()->getClassMetadata('Webfactory\\Bundle\\PolyglotBundle\\Tests\\TestEntity');
     $translationMetadata = TranslationMetadata::parseFromClassMetadata($metadata, $reader);
     if ($logger !== null) {
         $translationMetadata->setLogger($logger);
     }
     return $translationMetadata;
 }
 /**
  * @param $className
  * @param EntityManager $em
  * @return null|TranslationMetadata
  */
 protected function getTranslationMetadata($className, EntityManager $em)
 {
     // In memory cache
     if (isset($this->translatedClasses[$className])) {
         return $this->translatedClasses[$className];
     }
     $metadataFactory = $em->getMetadataFactory();
     $reflectionService = $metadataFactory->getReflectionService();
     $cacheDriver = $em->getConfiguration()->getMetadataCacheImpl();
     // Cache driver available and in cache
     if ($cacheDriver) {
         if (($cached = $cacheDriver->fetch($className . self::CACHE_SALT)) !== false) {
             $this->translatedClasses[$className] = $cached;
             if ($cached) {
                 // evtl. ist im Cache gespeichert, das die Klasse *nicht* übersetzt ist
                 $cached->wakeupReflection($reflectionService);
             }
             return $cached;
         }
     }
     // Load/parse
     /* @var $metadataInfo ClassMetadataInfo */
     $metadataInfo = $metadataFactory->getMetadataFor($className);
     $meta = TranslationMetadata::parseFromClassMetadata($metadataInfo, $this->reader);
     if ($meta !== null) {
         $this->translatedClasses[$className] = $meta;
     }
     // Save if cache driver available
     if ($cacheDriver) {
         $cacheDriver->save($className . self::CACHE_SALT, $meta);
     }
     return $meta;
 }