/**
  * @param \Magento\Catalog\Api\ProductRepositoryInterface $subject
  * @param callable $proceed
  * @param string $productSku
  * @return bool
  * @throws \Exception
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function aroundDeleteById(\Magento\Catalog\Api\ProductRepositoryInterface $subject, \Closure $proceed, $productSku)
 {
     $this->resourceModel->beginTransaction();
     try {
         /** @var bool $result */
         $result = $proceed($productSku);
         $this->resourceModel->commit();
         return $result;
     } catch (\Exception $e) {
         $this->resourceModel->rollBack();
         throw $e;
     }
 }
Example #2
0
 /**
  * @param ResourceProduct $productResource
  * @param \Closure $proceed
  * @param AbstractModel $product
  * @return ResourceProduct
  * @throws \Exception
  */
 private function addCommitCallback(ResourceProduct $productResource, \Closure $proceed, AbstractModel $product)
 {
     try {
         $productResource->beginTransaction();
         $result = $proceed($product);
         $productResource->addCommitCallback(function () use($product) {
             $this->reindexRow($product->getEntityId());
         });
         $productResource->commit();
     } catch (\Exception $e) {
         $productResource->rollBack();
         throw $e;
     }
     return $result;
 }
 /**
  * {@inheritdoc}
  */
 public function rollBack()
 {
     $pluginInfo = $this->pluginList->getNext($this->subjectType, 'rollBack');
     if (!$pluginInfo) {
         return parent::rollBack();
     } else {
         return $this->___callPlugins('rollBack', func_get_args(), $pluginInfo);
     }
 }