Skip to content

Commit fa079c9

Browse files
committed
FIX for issue #21916 - Elasticsearch6 generation does not exist
Magento was not checking concrete class while applying plugins, this commit prevents virtual types to be autogenerated
1 parent 08fbdf1 commit fa079c9

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

lib/internal/Magento/Framework/Code/Generator.php

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Magento\Framework\Code\Generator\DefinedClasses;
99
use Magento\Framework\Code\Generator\EntityAbstract;
1010
use Magento\Framework\Code\Generator\Io;
11+
use Magento\Framework\ObjectManager\ConfigInterface;
1112
use Magento\Framework\ObjectManagerInterface;
1213
use Magento\Framework\Phrase;
1314
use Magento\Framework\Filesystem\Driver\File;
@@ -232,7 +233,21 @@ protected function shouldSkipGeneration($resultEntityType, $sourceClassName, $re
232233
{
233234
if (!$resultEntityType || !$sourceClassName) {
234235
return self::GENERATION_ERROR;
235-
} elseif ($this->definedClasses->isClassLoadableFromDisk($resultClass)) {
236+
}
237+
238+
/** @var ConfigInterface $omConfig */
239+
$omConfig = $this->objectManager->get(ConfigInterface::class);
240+
$virtualTypes = $omConfig->getVirtualTypes();
241+
242+
/**
243+
* Do not try to autogenerate virtual types
244+
* For example virtual types with names overlapping autogenerated suffixes
245+
*/
246+
if (isset($virtualTypes[$resultClass])) {
247+
return self::GENERATION_SKIP;
248+
}
249+
250+
if ($this->definedClasses->isClassLoadableFromDisk($resultClass)) {
236251
$generatedFileName = $this->_ioObject->generateResultFileName($resultClass);
237252
/**
238253
* Must handle two edge cases: a competing process has generated the class and written it to disc already,
@@ -244,9 +259,12 @@ protected function shouldSkipGeneration($resultEntityType, $sourceClassName, $re
244259
$this->_ioObject->includeFile($generatedFileName);
245260
}
246261
return self::GENERATION_SKIP;
247-
} elseif (!isset($this->_generatedEntities[$resultEntityType])) {
262+
}
263+
264+
if (!isset($this->_generatedEntities[$resultEntityType])) {
248265
throw new \InvalidArgumentException('Unknown generation entity.');
249266
}
267+
250268
return false;
251269
}
252270
}

0 commit comments

Comments
 (0)