@@ -141,6 +141,11 @@ abstract class AbstractAttribute extends \Magento\Framework\Model\AbstractExtens
141
141
'static ' ,
142
142
];
143
143
144
+ /**
145
+ * @var \Magento\Eav\Api\Data\AttributeExtensionFactory
146
+ */
147
+ private $ eavExtensionFactory ;
148
+
144
149
/**
145
150
* @param \Magento\Framework\Model\Context $context
146
151
* @param \Magento\Framework\Registry $registry
@@ -157,6 +162,7 @@ abstract class AbstractAttribute extends \Magento\Framework\Model\AbstractExtens
157
162
* @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
158
163
* @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
159
164
* @param array $data
165
+ * @param \Magento\Eav\Api\Data\AttributeExtensionFactory|null $eavExtensionFactory
160
166
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
161
167
* @codeCoverageIgnore
162
168
*/
@@ -175,7 +181,8 @@ public function __construct(
175
181
\Magento \Framework \Api \DataObjectHelper $ dataObjectHelper ,
176
182
\Magento \Framework \Model \ResourceModel \AbstractResource $ resource = null ,
177
183
\Magento \Framework \Data \Collection \AbstractDb $ resourceCollection = null ,
178
- array $ data = []
184
+ array $ data = [],
185
+ \Magento \Eav \Api \Data \AttributeExtensionFactory $ eavExtensionFactory = null
179
186
) {
180
187
parent ::__construct (
181
188
$ context ,
@@ -194,6 +201,8 @@ public function __construct(
194
201
$ this ->optionDataFactory = $ optionDataFactory ;
195
202
$ this ->dataObjectProcessor = $ dataObjectProcessor ;
196
203
$ this ->dataObjectHelper = $ dataObjectHelper ;
204
+ $ this ->eavExtensionFactory = $ eavExtensionFactory ?: \Magento \Framework \App \ObjectManager::getInstance ()
205
+ ->get (\Magento \Eav \Api \Data \AttributeExtensionFactory::class);
197
206
}
198
207
199
208
/**
@@ -1314,7 +1323,13 @@ public function setValidationRules(array $validationRules = null)
1314
1323
*/
1315
1324
public function getExtensionAttributes ()
1316
1325
{
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 ;
1318
1333
}
1319
1334
1320
1335
/**
0 commit comments