Skip to content

Commit 161eef0

Browse files
committed
MAGETWO-93042: [Backport to 2.2 ] Write Logs for Failed Process of Generating Factories in Extensions
1 parent a366578 commit 161eef0

File tree

4 files changed

+24
-66
lines changed

4 files changed

+24
-66
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ class Generator
5252
* @param Generator\Io $ioObject
5353
* @param array $generatedEntities
5454
* @param DefinedClasses $definedClasses
55-
* @param LoggerInterface|null $logger
55+
* @param LoggerInterface $logger
5656
*/
5757
public function __construct(
5858
Io $ioObject = null,
@@ -232,7 +232,7 @@ protected function shouldSkipGeneration($resultEntityType, $sourceClassName, $re
232232
{
233233
if (!$resultEntityType || !$sourceClassName) {
234234
return self::GENERATION_ERROR;
235-
} elseif ($this->definedClasses->isClassLoadableFromDisk($resultClass)) {
235+
} elseif ($this->definedClasses->isClassLoadableFromDisc($resultClass)) {
236236
$generatedFileName = $this->_ioObject->generateResultFileName($resultClass);
237237
/**
238238
* Must handle two edge cases: a competing process has generated the class and written it to disc already,

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

Lines changed: 20 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
*/
66
namespace Magento\Framework\Code\Generator;
77

8-
use Zend\Code\Generator\ValueGenerator;
9-
108
abstract class EntityAbstract
119
{
1210
/**
@@ -295,64 +293,11 @@ protected function _fixCodeStyle($sourceCode)
295293
/**
296294
* Get value generator for null default value
297295
*
298-
* @return ValueGenerator
296+
* @return \Zend\Code\Generator\ValueGenerator
299297
*/
300298
protected function _getNullDefaultValue()
301299
{
302-
$value = new ValueGenerator(null, ValueGenerator::TYPE_NULL);
303-
304-
return $value;
305-
}
306-
307-
/**
308-
* @param \ReflectionParameter $parameter
309-
*
310-
* @return null|string
311-
*/
312-
private function extractParameterType(
313-
\ReflectionParameter $parameter
314-
): ?string {
315-
/** @var string|null $typeName */
316-
$typeName = null;
317-
if ($parameter->hasType()) {
318-
if ($parameter->isArray()) {
319-
$typeName = 'array';
320-
} elseif ($parameter->getClass()) {
321-
$typeName = $this->_getFullyQualifiedClassName(
322-
$parameter->getClass()->getName()
323-
);
324-
} elseif ($parameter->isCallable()) {
325-
$typeName = 'callable';
326-
} else {
327-
$typeName = $parameter->getType()->getName();
328-
}
329-
330-
if ($parameter->allowsNull()) {
331-
$typeName = '?' .$typeName;
332-
}
333-
}
334-
335-
return $typeName;
336-
}
337-
338-
/**
339-
* @param \ReflectionParameter $parameter
340-
*
341-
* @return null|ValueGenerator
342-
*/
343-
private function extractParameterDefaultValue(
344-
\ReflectionParameter $parameter
345-
): ?ValueGenerator {
346-
/** @var ValueGenerator|null $value */
347-
$value = null;
348-
if ($parameter->isOptional() && $parameter->isDefaultValueAvailable()) {
349-
$valueType = ValueGenerator::TYPE_AUTO;
350-
$defaultValue = $parameter->getDefaultValue();
351-
if ($defaultValue === null) {
352-
$valueType = ValueGenerator::TYPE_NULL;
353-
}
354-
$value = new ValueGenerator($defaultValue, $valueType);
355-
}
300+
$value = new \Zend\Code\Generator\ValueGenerator(null, \Zend\Code\Generator\ValueGenerator::TYPE_NULL);
356301

357302
return $value;
358303
}
@@ -368,13 +313,26 @@ protected function _getMethodParameterInfo(\ReflectionParameter $parameter)
368313
$parameterInfo = [
369314
'name' => $parameter->getName(),
370315
'passedByReference' => $parameter->isPassedByReference(),
371-
'variadic' => $parameter->isVariadic()
316+
'type' => $parameter->getType()
372317
];
373-
if ($type = $this->extractParameterType($parameter)) {
374-
$parameterInfo['type'] = $type;
318+
319+
if ($parameter->isArray()) {
320+
$parameterInfo['type'] = 'array';
321+
} elseif ($parameter->getClass()) {
322+
$parameterInfo['type'] = $this->_getFullyQualifiedClassName($parameter->getClass()->getName());
323+
} elseif ($parameter->isCallable()) {
324+
$parameterInfo['type'] = 'callable';
375325
}
376-
if ($default = $this->extractParameterDefaultValue($parameter)) {
377-
$parameterInfo['defaultValue'] = $default;
326+
327+
if ($parameter->isOptional() && $parameter->isDefaultValueAvailable()) {
328+
$defaultValue = $parameter->getDefaultValue();
329+
if (is_string($defaultValue)) {
330+
$parameterInfo['defaultValue'] = $parameter->getDefaultValue();
331+
} elseif ($defaultValue === null) {
332+
$parameterInfo['defaultValue'] = $this->_getNullDefaultValue();
333+
} else {
334+
$parameterInfo['defaultValue'] = $defaultValue;
335+
}
378336
}
379337

380338
return $parameterInfo;

lib/internal/Magento/Framework/Code/Test/Unit/Generator/EntityAbstractTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ protected function _prepareMocksForValidateData(
233233
->willReturn($sourceClassExists);
234234
if ($resultClassExists) {
235235
$definedClassesMock->expects($this->once())
236-
->method('isClassLoadableFromDisk')
236+
->method('isClassLoadableFromDisc')
237237
->with($this->resultClass)
238238
->willReturn($resultClassExists);
239239
}

lib/internal/Magento/Framework/Code/Test/Unit/GeneratorTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ public function testGenerateClassWithErrors()
187187
public function testGenerateClassWithExistName($fileExists)
188188
{
189189
$this->definedClassesMock->expects($this->any())
190-
->method('isClassLoadableFromDisk')
190+
->method('isClassLoadableFromDisc')
191191
->willReturn(true);
192192

193193
$resultClassFileName = '/Magento/Path/To/Class.php';

0 commit comments

Comments
 (0)