[2.0] Fixing issue with converting mapping from annotations to other sources
This commit is contained in:
parent
19df601c25
commit
584491d462
1 changed files with 32 additions and 9 deletions
|
@ -25,7 +25,10 @@ use Doctrine\Common\Cli\Tasks\AbstractTask,
|
||||||
Doctrine\Common\Cli\CliException,
|
Doctrine\Common\Cli\CliException,
|
||||||
Doctrine\Common\Cli\Option,
|
Doctrine\Common\Cli\Option,
|
||||||
Doctrine\Common\Cli\OptionGroup,
|
Doctrine\Common\Cli\OptionGroup,
|
||||||
Doctrine\ORM\Tools\Export\ClassMetadataExporter;
|
Doctrine\ORM\Tools\Export\ClassMetadataExporter,
|
||||||
|
Doctrine\ORM\Mapping\Driver\DriverChain,
|
||||||
|
Doctrine\ORM\Mapping\Driver\AnnotationDriver,
|
||||||
|
Doctrine\ORM\Mapping\Driver\Driver;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CLI Task to convert your mapping information between the various formats
|
* CLI Task to convert your mapping information between the various formats
|
||||||
|
@ -242,23 +245,43 @@ class ConvertMappingTask extends AbstractTask
|
||||||
// If source is annotation then lets try and find the existing annotation
|
// If source is annotation then lets try and find the existing annotation
|
||||||
// driver for the source instead of re-creating a new instance
|
// driver for the source instead of re-creating a new instance
|
||||||
} else if ($type == 'annotation') {
|
} else if ($type == 'annotation') {
|
||||||
$source = realpath($source);
|
|
||||||
$em = $this->getConfiguration()->getAttribute('em');
|
$em = $this->getConfiguration()->getAttribute('em');
|
||||||
$metadataDriverImpl = $em->getConfiguration()->getMetadataDriverImpl();
|
$metadataDriverImpl = $em->getConfiguration()->getMetadataDriverImpl();
|
||||||
if ($metadataDriverImpl instanceof \Doctrine\ORM\Mapping\Driver\DriverChain) {
|
// Find the annotation driver in the chain of drivers
|
||||||
|
if ($metadataDriverImpl instanceof DriverChain) {
|
||||||
foreach ($metadataDriverImpl->getDrivers() as $namespace => $driver) {
|
foreach ($metadataDriverImpl->getDrivers() as $namespace => $driver) {
|
||||||
if ($driver instanceof \Doctrine\ORM\Mapping\Driver\AnnotationDriver) {
|
if ($this->_isAnnotationDriverForPath($driver, $source)) {
|
||||||
$paths = $driver->getPaths();
|
|
||||||
if (in_array($source, $paths)) {
|
|
||||||
return $driver;
|
return $driver;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else if ($this->_isAnnotationDriverForPath($metadataDriverImpl, $source)) {
|
||||||
} else if ($metadataDriverImpl instanceof \Doctrine\ORM\Mapping\Driver\AnnotationDriver) {
|
|
||||||
return $metadataDriverImpl;
|
return $metadataDriverImpl;
|
||||||
|
} else {
|
||||||
|
return $source;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return $source;
|
return $source;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check to see if the given metadata driver is the annotation driver for the
|
||||||
|
* given directory path
|
||||||
|
*
|
||||||
|
* @param Driver $driver
|
||||||
|
* @param string $path
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
private function _isAnnotationDriverForPath(Driver $driver, $path)
|
||||||
|
{
|
||||||
|
if ( ! $driver instanceof AnnotationDriver) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_array(realpath($path), $driver->getPaths())) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Add table
Reference in a new issue