|
| 1 | +--- Code/Generator.php 2019-04-30 16:45:45.444157451 +0300 |
| 2 | ++++ Code/Generator.php 2019-04-30 17:19:49.014949518 +0300 |
| 3 | +@@ -8,11 +8,15 @@ |
| 4 | + use Magento\Framework\Code\Generator\DefinedClasses; |
| 5 | + use Magento\Framework\Code\Generator\EntityAbstract; |
| 6 | + use Magento\Framework\Code\Generator\Io; |
| 7 | ++use Magento\Framework\ObjectManager\ConfigInterface; |
| 8 | + use Magento\Framework\ObjectManagerInterface; |
| 9 | + use Magento\Framework\Phrase; |
| 10 | + use Magento\Framework\Filesystem\Driver\File; |
| 11 | + use Psr\Log\LoggerInterface; |
| 12 | + |
| 13 | ++/** |
| 14 | ++ * Class code generator. |
| 15 | ++ */ |
| 16 | + class Generator |
| 17 | + { |
| 18 | + const GENERATION_SUCCESS = 'success'; |
| 19 | +@@ -232,7 +236,21 @@ |
| 20 | + { |
| 21 | + if (!$resultEntityType || !$sourceClassName) { |
| 22 | + return self::GENERATION_ERROR; |
| 23 | +- } elseif ($this->definedClasses->isClassLoadableFromDisk($resultClass)) { |
| 24 | ++ } |
| 25 | ++ |
| 26 | ++ /** @var ConfigInterface $omConfig */ |
| 27 | ++ $omConfig = $this->objectManager->get(ConfigInterface::class); |
| 28 | ++ $virtualTypes = $omConfig->getVirtualTypes(); |
| 29 | ++ |
| 30 | ++ /** |
| 31 | ++ * Do not try to autogenerate virtual types |
| 32 | ++ * For example virtual types with names overlapping autogenerated suffixes |
| 33 | ++ */ |
| 34 | ++ if (isset($virtualTypes[$resultClass])) { |
| 35 | ++ return self::GENERATION_SKIP; |
| 36 | ++ } |
| 37 | ++ |
| 38 | ++ if ($this->definedClasses->isClassLoadableFromDisk($resultClass)) { |
| 39 | + $generatedFileName = $this->_ioObject->generateResultFileName($resultClass); |
| 40 | + /** |
| 41 | + * Must handle two edge cases: a competing process has generated the class and written it to disc already, |
| 42 | +@@ -244,9 +263,12 @@ |
| 43 | + $this->_ioObject->includeFile($generatedFileName); |
| 44 | + } |
| 45 | + return self::GENERATION_SKIP; |
| 46 | +- } elseif (!isset($this->_generatedEntities[$resultEntityType])) { |
| 47 | ++ } |
| 48 | ++ |
| 49 | ++ if (!isset($this->_generatedEntities[$resultEntityType])) { |
| 50 | + throw new \InvalidArgumentException('Unknown generation entity.'); |
| 51 | + } |
| 52 | ++ |
| 53 | + return false; |
| 54 | + } |
| 55 | + } |
0 commit comments