77
88namespace Magento \Catalog \Model ;
99
10+ use Magento \Catalog \Model \CategoryRepository \PopulateWithValues ;
11+ use Magento \Catalog \Model \ResourceModel \Category as CategoryResource ;
12+ use Magento \Framework \Api \ExtensibleDataObjectConverter ;
13+ use Magento \Framework \App \ObjectManager ;
14+ use Magento \Framework \EntityManager \MetadataPool ;
1015use Magento \Framework \Exception \CouldNotSaveException ;
1116use Magento \Framework \Exception \NoSuchEntityException ;
1217use Magento \Framework \Exception \StateException ;
1318use Magento \Catalog \Api \Data \CategoryInterface ;
19+ use Magento \Store \Model \StoreManagerInterface ;
1420
1521/**
1622 * Repository for categories.
@@ -25,27 +31,27 @@ class CategoryRepository implements \Magento\Catalog\Api\CategoryRepositoryInter
2531 protected $ instances = [];
2632
2733 /**
28- * @var \Magento\Store\Model\ StoreManagerInterface
34+ * @var StoreManagerInterface
2935 */
3036 protected $ storeManager ;
3137
3238 /**
33- * @var \Magento\Catalog\Model\ CategoryFactory
39+ * @var CategoryFactory
3440 */
3541 protected $ categoryFactory ;
3642
3743 /**
38- * @var \Magento\Catalog\Model\ResourceModel\Category
44+ * @var CategoryResource
3945 */
4046 protected $ categoryResource ;
4147
4248 /**
43- * @var \Magento\Framework\EntityManager\ MetadataPool
49+ * @var MetadataPool
4450 */
4551 protected $ metadataPool ;
4652
4753 /**
48- * @var \Magento\Framework\Api\ ExtensibleDataObjectConverter
54+ * @var ExtensibleDataObjectConverter
4955 */
5056 private $ extensibleDataObjectConverter ;
5157
@@ -57,28 +63,37 @@ class CategoryRepository implements \Magento\Catalog\Api\CategoryRepositoryInter
5763 protected $ useConfigFields = ['available_sort_by ' , 'default_sort_by ' , 'filter_price_range ' ];
5864
5965 /**
60- * @param \Magento\Catalog\Model\CategoryFactory $categoryFactory
61- * @param \Magento\Catalog\Model\ResourceModel\Category $categoryResource
62- * @param \Magento\Store\Model\StoreManagerInterface $storeManager
66+ * @var PopulateWithValues
67+ */
68+ private $ populateWithValues ;
69+
70+ /**
71+ * @param CategoryFactory $categoryFactory
72+ * @param CategoryResource $categoryResource
73+ * @param StoreManagerInterface $storeManager
74+ * @param PopulateWithValues|null $populateWithValues
6375 */
6476 public function __construct (
65- \Magento \Catalog \Model \CategoryFactory $ categoryFactory ,
66- \Magento \Catalog \Model \ResourceModel \Category $ categoryResource ,
67- \Magento \Store \Model \StoreManagerInterface $ storeManager
77+ CategoryFactory $ categoryFactory ,
78+ CategoryResource $ categoryResource ,
79+ StoreManagerInterface $ storeManager ,
80+ ?PopulateWithValues $ populateWithValues
6881 ) {
6982 $ this ->categoryFactory = $ categoryFactory ;
7083 $ this ->categoryResource = $ categoryResource ;
7184 $ this ->storeManager = $ storeManager ;
85+ $ objectManager = ObjectManager::getInstance ();
86+ $ this ->populateWithValues = $ populateWithValues ?? $ objectManager ->get (PopulateWithValues::class);
7287 }
7388
7489 /**
7590 * @inheritdoc
7691 */
77- public function save (\ Magento \ Catalog \ Api \ Data \ CategoryInterface $ category )
92+ public function save (CategoryInterface $ category )
7893 {
7994 $ storeId = (int )$ this ->storeManager ->getStore ()->getId ();
8095 $ existingData = $ this ->getExtensibleDataObjectConverter ()
81- ->toNestedArray ($ category , [], \ Magento \ Catalog \ Api \ Data \ CategoryInterface::class);
96+ ->toNestedArray ($ category , [], CategoryInterface::class);
8297 $ existingData = array_diff_key ($ existingData , array_flip (['path ' , 'level ' , 'parent_id ' ]));
8398 $ existingData ['store_id ' ] = $ storeId ;
8499
@@ -110,7 +125,7 @@ public function save(\Magento\Catalog\Api\Data\CategoryInterface $category)
110125 $ existingData ['parent_id ' ] = $ parentId ;
111126 $ existingData ['level ' ] = null ;
112127 }
113- $ category -> addData ( $ existingData );
128+ $ this -> populateWithValues -> execute ( $ category , $ existingData );
114129 try {
115130 $ this ->validateCategory ($ category );
116131 $ this ->categoryResource ->save ($ category );
@@ -151,7 +166,7 @@ public function get($categoryId, $storeId = null)
151166 /**
152167 * @inheritdoc
153168 */
154- public function delete (\ Magento \ Catalog \ Api \ Data \ CategoryInterface $ category )
169+ public function delete (CategoryInterface $ category )
155170 {
156171 try {
157172 $ categoryId = $ category ->getId ();
@@ -213,29 +228,29 @@ protected function validateCategory(Category $category)
213228 /**
214229 * Lazy loader for the converter.
215230 *
216- * @return \Magento\Framework\Api\ ExtensibleDataObjectConverter
231+ * @return ExtensibleDataObjectConverter
217232 *
218233 * @deprecated 101.0.0
219234 */
220235 private function getExtensibleDataObjectConverter ()
221236 {
222237 if ($ this ->extensibleDataObjectConverter === null ) {
223- $ this ->extensibleDataObjectConverter = \ Magento \ Framework \ App \ ObjectManager::getInstance ()
224- ->get (\ Magento \ Framework \ Api \ ExtensibleDataObjectConverter::class);
238+ $ this ->extensibleDataObjectConverter = ObjectManager::getInstance ()
239+ ->get (ExtensibleDataObjectConverter::class);
225240 }
226241 return $ this ->extensibleDataObjectConverter ;
227242 }
228243
229244 /**
230245 * Lazy loader for the metadata pool.
231246 *
232- * @return \Magento\Framework\EntityManager\ MetadataPool
247+ * @return MetadataPool
233248 */
234249 private function getMetadataPool ()
235250 {
236251 if (null === $ this ->metadataPool ) {
237- $ this ->metadataPool = \ Magento \ Framework \ App \ ObjectManager::getInstance ()
238- ->get (\ Magento \ Framework \ EntityManager \ MetadataPool::class);
252+ $ this ->metadataPool = ObjectManager::getInstance ()
253+ ->get (MetadataPool::class);
239254 }
240255 return $ this ->metadataPool ;
241256 }
0 commit comments