From 61a4a35694d790bd6ca76c30a84c1cdbf6a55d1d Mon Sep 17 00:00:00 2001 From: jwage Date: Fri, 26 Feb 2010 01:28:09 +0000 Subject: [PATCH] [2.0] Fixing ClassMetadataExporterTask to use existing configured annotation driver for given path instead of re-creating it --- .../Tools/Cli/Tasks/ConvertMappingTask.php | 23 +++++++++++++++---- .../Tools/Export/ClassMetadataExporter.php | 6 ++++- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/lib/Doctrine/ORM/Tools/Cli/Tasks/ConvertMappingTask.php b/lib/Doctrine/ORM/Tools/Cli/Tasks/ConvertMappingTask.php index 6cca6e929..fbe869246 100644 --- a/lib/Doctrine/ORM/Tools/Cli/Tasks/ConvertMappingTask.php +++ b/lib/Doctrine/ORM/Tools/Cli/Tasks/ConvertMappingTask.php @@ -215,13 +215,13 @@ class ConvertMappingTask extends AbstractTask // Check if it has a class definition in it for annotations if (preg_match("/class (.*)/", $contents)) { - return 'annotation'; + return 'annotation'; // Otherwise lets determine the type based on the extension of the // first file in the directory (yml, xml, etc) } else { - $info = pathinfo($files[0]); - - return $info['extension']; + $info = pathinfo($files[0]); + + return $info['extension']; } // Nothing special for database } else if ($source == 'database') { @@ -237,6 +237,21 @@ class ConvertMappingTask extends AbstractTask $em = $this->getConfiguration()->getAttribute('em'); return $em->getConnection()->getSchemaManager(); + } else if ($type == 'annotation') { + $em = $this->getConfiguration()->getAttribute('em'); + $metadataDriverImpl = $em->getConfiguration()->getMetadataDriverImpl(); + if ($metadataDriverImpl instanceof \Doctrine\ORM\Mapping\Driver\DriverChain) { + foreach ($metadataDriverImpl->getDrivers() as $namespace => $driver) { + if ($driver instanceof \Doctrine\ORM\Mapping\Driver\AnnotationDriver) { + $paths = $driver->getPaths(); + if (in_array($source, $paths)) { + return $driver; + } + } + } + } else if ($metadataDriverImpl instanceof \Doctrine\ORM\Mapping\Driver\AnnotationDriver) { + return $metadataDriverImpl; + } } else { return $source; } diff --git a/lib/Doctrine/ORM/Tools/Export/ClassMetadataExporter.php b/lib/Doctrine/ORM/Tools/Export/ClassMetadataExporter.php index 03057412d..449a5d519 100644 --- a/lib/Doctrine/ORM/Tools/Export/ClassMetadataExporter.php +++ b/lib/Doctrine/ORM/Tools/Export/ClassMetadataExporter.php @@ -105,10 +105,14 @@ class ClassMetadataExporter */ public function getMappingDriver($type, $source = null) { + if ($source instanceof \Doctrine\ORM\Mapping\Driver\Driver) { + return $source; + } + if ( ! isset($this->_mappingDrivers[$type])) { return false; } - + $class = $this->_mappingDrivers[$type]; if (is_subclass_of($class, 'Doctrine\ORM\Mapping\Driver\AbstractFileDriver')) {