#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
|
* @param ClassMetadata $metadata
|
||||||
*
|
*
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
* @throws MappingException
|
* @throws MappingException
|
||||||
*/
|
*/
|
||||||
private function populateDiscriminatorValue(ClassMetadata $metadata)
|
private function populateDiscriminatorValue(ClassMetadata $metadata)
|
||||||
{
|
{
|
||||||
if (! $metadata->discriminatorValue && $metadata->discriminatorMap) {
|
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) {
|
foreach ($metadata->discriminatorMap as $discriminatorValue => $discriminatorClass) {
|
||||||
if ($metadata->name === $this->getMetadataFor($discriminatorClass)->getName()) {
|
if ($metadata->name === $this->getMetadataFor($discriminatorClass)->getName()) {
|
||||||
$metadata->discriminatorValue = $discriminatorValue;
|
$metadata->discriminatorValue = $discriminatorValue;
|
||||||
|
|
||||||
break;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//throw MappingException::mappedClassNotPartOfDiscriminatorMap($metadata->name, $metadata->rootEntityName);
|
throw MappingException::mappedClassNotPartOfDiscriminatorMap($metadata->name, $metadata->rootEntityName);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user