#1130 DDC-3300 - optimizing performance (looping over existing classes first): throwing exceptions if the class is not found in the discriminator map
This commit is contained in:
parent
8579baf28c
commit
a36bea2951
@ -308,21 +308,37 @@ class ClassMetadataFactory extends AbstractClassMetadataFactory
|
||||
*
|
||||
* @param ClassMetadata $metadata
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @throws MappingException
|
||||
*/
|
||||
private function populateDiscriminatorValue(ClassMetadata $metadata)
|
||||
{
|
||||
if (! $metadata->discriminatorValue && $metadata->discriminatorMap) {
|
||||
foreach ($metadata->discriminatorMap as $discriminatorValue => $discriminatorClass) {
|
||||
if ($metadata->name === $this->getMetadataFor($discriminatorClass)->getName()) {
|
||||
$metadata->discriminatorValue = $discriminatorValue;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//throw MappingException::mappedClassNotPartOfDiscriminatorMap($metadata->name, $metadata->rootEntityName);
|
||||
if ($metadata->discriminatorValue
|
||||
|| ! $metadata->discriminatorMap
|
||||
|| $metadata->isMappedSuperclass
|
||||
|| $metadata->reflClass->isAbstract()
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($metadata->discriminatorMap as $discriminatorValue => $discriminatorClass) {
|
||||
if ($discriminatorClass === $metadata->name) {
|
||||
$metadata->discriminatorValue = $discriminatorValue;
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($metadata->discriminatorMap as $discriminatorValue => $discriminatorClass) {
|
||||
if ($metadata->name === $this->getMetadataFor($discriminatorClass)->getName()) {
|
||||
$metadata->discriminatorValue = $discriminatorValue;
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
throw MappingException::mappedClassNotPartOfDiscriminatorMap($metadata->name, $metadata->rootEntityName);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user