/**
  * Configures the metadata configuration instance.
  *
  * @param Configuration $configuration
  * @param array         $doctrineConfig
  * @param array         $databaseConfig
  *
  * @throws Exception
  */
 protected function configureMetadataConfiguration(Configuration $configuration, array $doctrineConfig, array $databaseConfig)
 {
     if (isset($doctrineConfig['filters'])) {
         foreach ($doctrineConfig['filters'] as $name => $filter) {
             $configuration->addFilter($name, $filter['class']);
         }
     }
     if (isset($doctrineConfig['proxy'])) {
         if (isset($doctrineConfig['proxy']['auto_generate'])) {
             $configuration->setAutoGenerateProxyClasses($doctrineConfig['proxy']['auto_generate']);
         }
         if (isset($doctrineConfig['proxy']['namespace'])) {
             $configuration->setProxyNamespace($doctrineConfig['proxy']['namespace']);
         }
         if (isset($doctrineConfig['proxy']['directory'])) {
             $configuration->setProxyDir($doctrineConfig['proxy']['directory']);
         }
     }
     if (!empty($doctrineConfig['repository'])) {
         $configuration->setDefaultRepositoryClassName($doctrineConfig['repository']);
     }
     if (isset($doctrineConfig['hydrator'])) {
         if (isset($doctrineConfig['hydrator']['directory'])) {
             $configuration->setHydratorDir($doctrineConfig['hydrator']['directory']);
         }
         if (isset($doctrineConfig['hydrator']['namespace'])) {
             $hydratorNamespace = $doctrineConfig['hydrator']['namespace'] ? $doctrineConfig['hydrator']['namespace'] : self::HYDRATOR_NAMESPACE;
             $configuration->setHydratorNamespace($hydratorNamespace);
         }
     }
     if (!empty($databaseConfig['connections'][$databaseConfig['default']]['database'])) {
         $configuration->setDefaultDB($databaseConfig['connections'][$databaseConfig['default']]['database']);
     }
 }