Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a36bea2

Browse files
committed
#1130 DDC-3300 - optimizing performance (looping over existing classes first): throwing exceptions if the class is not found in the discriminator map
1 parent 8579baf commit a36bea2

1 file changed

Lines changed: 23 additions & 7 deletions

File tree

lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -308,21 +308,37 @@ protected function newClassMetadataInstance($className)
308308
*
309309
* @param ClassMetadata $metadata
310310
*
311+
* @return void
312+
*
311313
* @throws MappingException
312314
*/
313315
private function populateDiscriminatorValue(ClassMetadata $metadata)
314316
{
315-
if (! $metadata->discriminatorValue && $metadata->discriminatorMap) {
316-
foreach ($metadata->discriminatorMap as $discriminatorValue => $discriminatorClass) {
317-
if ($metadata->name === $this->getMetadataFor($discriminatorClass)->getName()) {
318-
$metadata->discriminatorValue = $discriminatorValue;
317+
if ($metadata->discriminatorValue
318+
|| ! $metadata->discriminatorMap
319+
|| $metadata->isMappedSuperclass
320+
|| $metadata->reflClass->isAbstract()
321+
) {
322+
return;
323+
}
319324

320-
break;
321-
}
325+
foreach ($metadata->discriminatorMap as $discriminatorValue => $discriminatorClass) {
326+
if ($discriminatorClass === $metadata->name) {
327+
$metadata->discriminatorValue = $discriminatorValue;
328+
329+
return;
322330
}
331+
}
332+
333+
foreach ($metadata->discriminatorMap as $discriminatorValue => $discriminatorClass) {
334+
if ($metadata->name === $this->getMetadataFor($discriminatorClass)->getName()) {
335+
$metadata->discriminatorValue = $discriminatorValue;
323336

324-
//throw MappingException::mappedClassNotPartOfDiscriminatorMap($metadata->name, $metadata->rootEntityName);
337+
return;
338+
}
325339
}
340+
341+
throw MappingException::mappedClassNotPartOfDiscriminatorMap($metadata->name, $metadata->rootEntityName);
326342
}
327343

328344
/**

0 commit comments

Comments
 (0)