Skip to content

Commit 00f052a

Browse files
author
Yu Tang
committed
MAGETWO-33661: Refactor CatalogInventory module to use mutable data object interfaces
1 parent e41246b commit 00f052a

File tree

16 files changed

+692
-94
lines changed

16 files changed

+692
-94
lines changed

app/code/Magento/Catalog/Controller/Adminhtml/Product/Action/Attribute/Save.php

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Action\Attribut
3232
protected $_catalogProduct;
3333

3434
/**
35-
* @var \Magento\CatalogInventory\Api\Data\StockItemDataBuilder
35+
* @var \Magento\CatalogInventory\Api\Data\StockItemInterfaceFactory
3636
*/
37-
protected $stockItemBuilder;
37+
protected $stockItemFactory;
3838

3939
/**
4040
* Stock Indexer
@@ -48,15 +48,21 @@ class Save extends \Magento\Catalog\Controller\Adminhtml\Product\Action\Attribut
4848
*/
4949
protected $resultRedirectFactory;
5050

51+
/**
52+
* @var \Magento\Framework\Api\DataObjectHelper
53+
*/
54+
protected $dataObjectHelper;
55+
5156
/**
5257
* @param Action\Context $context
5358
* @param \Magento\Catalog\Helper\Product\Edit\Action\Attribute $attributeHelper
5459
* @param \Magento\Catalog\Model\Indexer\Product\Flat\Processor $productFlatIndexerProcessor
5560
* @param \Magento\Catalog\Model\Indexer\Product\Price\Processor $productPriceIndexerProcessor
5661
* @param \Magento\CatalogInventory\Model\Indexer\Stock\Processor $stockIndexerProcessor
5762
* @param \Magento\Catalog\Helper\Product $catalogProduct
58-
* @param \Magento\CatalogInventory\Api\Data\StockItemDataBuilder $stockItemBuilder
63+
* @param \Magento\CatalogInventory\Api\Data\StockItemInterfaceFactory $stockItemFactory
5964
* @param \Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
65+
* @param \Magento\Framework\Api\DataObjectHelper $dataObjectHelper
6066
*/
6167
public function __construct(
6268
Action\Context $context,
@@ -65,16 +71,18 @@ public function __construct(
6571
\Magento\Catalog\Model\Indexer\Product\Price\Processor $productPriceIndexerProcessor,
6672
\Magento\CatalogInventory\Model\Indexer\Stock\Processor $stockIndexerProcessor,
6773
\Magento\Catalog\Helper\Product $catalogProduct,
68-
\Magento\CatalogInventory\Api\Data\StockItemDataBuilder $stockItemBuilder,
69-
\Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory
74+
\Magento\CatalogInventory\Api\Data\StockItemInterfaceFactory $stockItemFactory,
75+
\Magento\Backend\Model\View\Result\RedirectFactory $resultRedirectFactory,
76+
\Magento\Framework\Api\DataObjectHelper $dataObjectHelper
7077
) {
7178
$this->_productFlatIndexerProcessor = $productFlatIndexerProcessor;
7279
$this->_productPriceIndexerProcessor = $productPriceIndexerProcessor;
7380
$this->_stockIndexerProcessor = $stockIndexerProcessor;
7481
$this->_catalogProduct = $catalogProduct;
75-
$this->stockItemBuilder = $stockItemBuilder;
82+
$this->stockItemFactory = $stockItemFactory;
7683
parent::__construct($context, $attributeHelper);
7784
$this->resultRedirectFactory = $resultRedirectFactory;
85+
$this->dataObjectHelper = $dataObjectHelper;
7886
}
7987

8088
/**
@@ -166,10 +174,13 @@ public function execute()
166174
}
167175

168176
$stockItemId = $stockItemDo->getId();
169-
$stockItemBuilder = $this->stockItemBuilder->mergeDataObjectWithArray($stockItemDo, $inventoryData);
170-
$stockItemToSave = $stockItemBuilder->create();
171-
$stockItemToSave->setItemId($stockItemId);
172-
$stockItemRepository->save($stockItemToSave);
177+
$this->dataObjectHelper->populateWithArray(
178+
$stockItemDo,
179+
$inventoryData,
180+
'\Magento\CatalogInventory\Api\Data\StockItemInterface'
181+
);
182+
$stockItemDo->setItemId($stockItemId);
183+
$stockItemRepository->save($stockItemDo);
173184
}
174185
$this->_stockIndexerProcessor->reindexList($this->attributeHelper->getProductIds());
175186
}

app/code/Magento/Catalog/Model/Product.php

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -186,9 +186,9 @@ class Product extends \Magento\Catalog\Model\AbstractModel implements
186186
/**
187187
* Stock item factory
188188
*
189-
* @var \Magento\CatalogInventory\Api\Data\StockItemDataBuilder
189+
* @var \Magento\CatalogInventory\Api\Data\StockItemInterfaceFactory
190190
*/
191-
protected $_stockItemBuilder;
191+
protected $_stockItemFactory;
192192

193193
/**
194194
* Item option factory
@@ -237,6 +237,11 @@ class Product extends \Magento\Catalog\Model\AbstractModel implements
237237
*/
238238
protected $imageCacheFactory;
239239

240+
/**
241+
* @var \Magento\Framework\Api\DataObjectHelper
242+
*/
243+
protected $dataObjectHelper;
244+
240245
/**
241246
* @param \Magento\Framework\Model\Context $context
242247
* @param \Magento\Framework\Registry $registry
@@ -246,7 +251,7 @@ class Product extends \Magento\Catalog\Model\AbstractModel implements
246251
* @param Product\Url $url
247252
* @param Product\Link $productLink
248253
* @param Product\Configuration\Item\OptionFactory $itemOptionFactory
249-
* @param \Magento\CatalogInventory\Api\Data\StockItemDataBuilder $stockItemBuilder
254+
* @param \Magento\CatalogInventory\Api\Data\StockItemInterfaceFactory $stockItemFactory
250255
* @param Product\Option $catalogProductOption
251256
* @param Product\Visibility $catalogProductVisibility
252257
* @param Product\Attribute\Source\Status $catalogProductStatus
@@ -264,6 +269,7 @@ class Product extends \Magento\Catalog\Model\AbstractModel implements
264269
* @param Indexer\Product\Eav\Processor $productEavIndexerProcessor
265270
* @param CategoryRepositoryInterface $categoryRepository
266271
* @param Product\Image\CacheFactory $imageCacheFactory
272+
* @param \Magento\Framework\Api\DataObjectHelper $dataObjectHelper
267273
* @param array $data
268274
*
269275
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
@@ -277,7 +283,7 @@ public function __construct(
277283
Product\Url $url,
278284
Product\Link $productLink,
279285
\Magento\Catalog\Model\Product\Configuration\Item\OptionFactory $itemOptionFactory,
280-
\Magento\CatalogInventory\Api\Data\StockItemDataBuilder $stockItemBuilder,
286+
\Magento\CatalogInventory\Api\Data\StockItemInterfaceFactory $stockItemFactory,
281287
\Magento\Catalog\Model\Product\Option $catalogProductOption,
282288
\Magento\Catalog\Model\Product\Visibility $catalogProductVisibility,
283289
\Magento\Catalog\Model\Product\Attribute\Source\Status $catalogProductStatus,
@@ -295,10 +301,11 @@ public function __construct(
295301
\Magento\Catalog\Model\Indexer\Product\Eav\Processor $productEavIndexerProcessor,
296302
CategoryRepositoryInterface $categoryRepository,
297303
Product\Image\CacheFactory $imageCacheFactory,
304+
\Magento\Framework\Api\DataObjectHelper $dataObjectHelper,
298305
array $data = []
299306
) {
300307
$this->_itemOptionFactory = $itemOptionFactory;
301-
$this->_stockItemBuilder = $stockItemBuilder;
308+
$this->_stockItemFactory = $stockItemFactory;
302309
$this->_optionInstance = $catalogProductOption;
303310
$this->_catalogProductVisibility = $catalogProductVisibility;
304311
$this->_catalogProductStatus = $catalogProductStatus;
@@ -316,6 +323,7 @@ public function __construct(
316323
$this->_productEavIndexerProcessor = $productEavIndexerProcessor;
317324
$this->categoryRepository = $categoryRepository;
318325
$this->imageCacheFactory = $imageCacheFactory;
326+
$this->dataObjectHelper = $dataObjectHelper;
319327
parent::__construct(
320328
$context,
321329
$registry,
@@ -1560,7 +1568,12 @@ public function fromArray(array $data)
15601568
{
15611569
if (isset($data['stock_item'])) {
15621570
if ($this->moduleManager->isEnabled('Magento_CatalogInventory')) {
1563-
$stockItem = $this->_stockItemBuilder->populateWithArray($data['stock_item'])->create();
1571+
$stockItem = $this->_stockItemFactory->create();
1572+
$this->dataObjectHelper->populateWithArray(
1573+
$stockItem,
1574+
$data['stock_item'],
1575+
'\Magento\CatalogInventory\Api\Data\StockItemInterface'
1576+
);
15641577
$stockItem->setProduct($this);
15651578
$this->setStockItem($stockItem);
15661579
}

app/code/Magento/CatalogInventory/Api/Data/StockInterface.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,41 @@ interface StockInterface extends ExtensibleDataInterface
2525
*/
2626
public function getStockId();
2727

28+
/**
29+
* Set stock identifier
30+
*
31+
* @param int $stockId
32+
* @return $this
33+
*/
34+
public function setStockId($stockId);
35+
2836
/**
2937
* Retrieve website identifier
3038
*
3139
* @return int
3240
*/
3341
public function getWebsiteId();
3442

43+
/**
44+
* Retrieve website identifier
45+
*
46+
* @param int $websiteId
47+
* @return $this
48+
*/
49+
public function setWebsiteId($websiteId);
50+
3551
/**
3652
* Retrieve stock name
3753
*
3854
* @return string
3955
*/
4056
public function getStockName();
57+
58+
/**
59+
* Set stock name
60+
*
61+
* @param string $stockName
62+
* @return $this
63+
*/
64+
public function setStockName($stockName);
4165
}

0 commit comments

Comments
 (0)