Skip to content

Commit d83f3f5

Browse files
authored
Merge pull request #2612 from magento-obsessive-owls/MAGETWO-92219-incorrect-extension-types
[obsessive] MAGETWO-92219: Incorrect types of extensions for attributes
2 parents d849f99 + 753ace1 commit d83f3f5

File tree

2 files changed

+17
-16
lines changed

2 files changed

+17
-16
lines changed

app/code/Magento/Catalog/Model/ResourceModel/Eav/Attribute.php

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -895,18 +895,4 @@ public function setIsFilterableInGrid($isFilterableInGrid)
895895
$this->setData(self::IS_FILTERABLE_IN_GRID, $isFilterableInGrid);
896896
return $this;
897897
}
898-
899-
/**
900-
* @return \Magento\Eav\Api\Data\AttributeExtensionInterface
901-
*/
902-
public function getExtensionAttributes()
903-
{
904-
$extensionAttributes = $this->_getExtensionAttributes();
905-
if (null === $extensionAttributes) {
906-
/** @var \Magento\Eav\Api\Data\AttributeExtensionInterface $extensionAttributes */
907-
$extensionAttributes = $this->eavAttributeFactory->create();
908-
$this->setExtensionAttributes($extensionAttributes);
909-
}
910-
return $extensionAttributes;
911-
}
912898
}

app/code/Magento/Eav/Model/Entity/Attribute/AbstractAttribute.php

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,11 @@ abstract class AbstractAttribute extends \Magento\Framework\Model\AbstractExtens
141141
'static',
142142
];
143143

144+
/**
145+
* @var \Magento\Eav\Api\Data\AttributeExtensionFactory
146+
*/
147+
private $eavExtensionFactory;
148+
144149
/**
145150
* @param \Magento\Framework\Model\Context $context
146151
* @param \Magento\Framework\Registry $registry
@@ -157,6 +162,7 @@ abstract class AbstractAttribute extends \Magento\Framework\Model\AbstractExtens
157162
* @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
158163
* @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
159164
* @param array $data
165+
* @param \Magento\Eav\Api\Data\AttributeExtensionFactory|null $eavExtensionFactory
160166
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
161167
* @codeCoverageIgnore
162168
*/
@@ -175,7 +181,8 @@ public function __construct(
175181
\Magento\Framework\Api\DataObjectHelper $dataObjectHelper,
176182
\Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
177183
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
178-
array $data = []
184+
array $data = [],
185+
\Magento\Eav\Api\Data\AttributeExtensionFactory $eavExtensionFactory = null
179186
) {
180187
parent::__construct(
181188
$context,
@@ -194,6 +201,8 @@ public function __construct(
194201
$this->optionDataFactory = $optionDataFactory;
195202
$this->dataObjectProcessor = $dataObjectProcessor;
196203
$this->dataObjectHelper = $dataObjectHelper;
204+
$this->eavExtensionFactory = $eavExtensionFactory ?: \Magento\Framework\App\ObjectManager::getInstance()
205+
->get(\Magento\Eav\Api\Data\AttributeExtensionFactory::class);
197206
}
198207

199208
/**
@@ -1314,7 +1323,13 @@ public function setValidationRules(array $validationRules = null)
13141323
*/
13151324
public function getExtensionAttributes()
13161325
{
1317-
return $this->_getExtensionAttributes();
1326+
$extensionAttributes = $this->_getExtensionAttributes();
1327+
if (!($extensionAttributes instanceof \Magento\Eav\Api\Data\AttributeExtensionInterface)) {
1328+
/** @var \Magento\Eav\Api\Data\AttributeExtensionInterface $extensionAttributes */
1329+
$extensionAttributes = $this->eavExtensionFactory->create();
1330+
$this->setExtensionAttributes($extensionAttributes);
1331+
}
1332+
return $extensionAttributes;
13181333
}
13191334

13201335
/**

0 commit comments

Comments
 (0)