diff --git a/lib/internal/Magento/Framework/Reflection/TypeProcessor.php b/lib/internal/Magento/Framework/Reflection/TypeProcessor.php index 173892316cd46..1990cdb039784 100644 --- a/lib/internal/Magento/Framework/Reflection/TypeProcessor.php +++ b/lib/internal/Magento/Framework/Reflection/TypeProcessor.php @@ -288,6 +288,7 @@ protected function dataObjectGetterDescriptionToFieldDescription($shortDescripti * 'type' => $type, * 'isRequired' => $isRequired, * 'description' => $description + * 'parameterCount' => $numberOfRequiredParameters * ) * @throws \InvalidArgumentException */ @@ -309,23 +310,13 @@ public function getGetterReturnType($methodReflection) } /** @var \Zend\Code\Reflection\DocBlock\Tag\ReturnTag $returnAnnotation */ $returnAnnotation = current($returnAnnotations); - $returnType = $returnAnnotation->getType(); - /* - * Adding this code as a workaround since \Zend\Code\Reflection\DocBlock\Tag\ReturnTag::initialize does not - * detect and return correct type for array of objects in annotation. - * eg @return \Magento\Webapi\Service\Entity\SimpleData[] is returned with type - * \Magento\Webapi\Service\Entity\SimpleData instead of \Magento\Webapi\Service\Entity\SimpleData[] - */ - $escapedReturnType = str_replace('[]', '\[\]', $returnType); - $escapedReturnType = str_replace('\\', '\\\\', $escapedReturnType); - - if (preg_match("/.*\\@return\\s+({$escapedReturnType}).*/i", $methodDocBlock->getContents(), $matches)) { - $returnType = $matches[1]; - } - $isNotRequired = (bool)preg_match("/.*\@return\s+\S+\|null.*/i", $methodDocBlock->getContents(), $matches); + $types = $returnAnnotation->getTypes(); + $returnType = current($types); + $nullable = in_array('null', $types); + return [ 'type' => $returnType, - 'isRequired' => !$isNotRequired, + 'isRequired' => !$nullable, 'description' => $returnAnnotation->getDescription(), 'parameterCount' => $methodReflection->getNumberOfRequiredParameters() ];