From b1bc6a397b8ebafa8b06f6edf96ec53bd05020b6 Mon Sep 17 00:00:00 2001
From: Igor Melnikov <imelnikov@magento.com>
Date: Wed, 28 Dec 2016 11:49:22 -0600
Subject: [PATCH] MAGETWO-62134: Create data converter that can process nested
 serialized data

Resolving code review feedback
---
 .../Sales/Order/Pdf/Items/AbstractItems.php   | 27 ++++-----------
 .../Unit/Helper/Product/ConfigurationTest.php |  2 +-
 .../Quote/Model/Quote/Address/Total.php       |  4 ++-
 app/code/Magento/Tax/Helper/Data.php          | 33 +++++++++----------
 4 files changed, 27 insertions(+), 39 deletions(-)

diff --git a/app/code/Magento/Bundle/Model/Sales/Order/Pdf/Items/AbstractItems.php b/app/code/Magento/Bundle/Model/Sales/Order/Pdf/Items/AbstractItems.php
index d1d5e44f077..ccba97b753b 100644
--- a/app/code/Magento/Bundle/Model/Sales/Order/Pdf/Items/AbstractItems.php
+++ b/app/code/Magento/Bundle/Model/Sales/Order/Pdf/Items/AbstractItems.php
@@ -9,7 +9,8 @@ use Magento\Catalog\Model\Product\Type\AbstractType;
 use Magento\Framework\Serialize\Serializer\Json;
 
 /**
- * Sales Order Pdf Items renderer
+ * Order pdf items renderer
+ *
  * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  */
 abstract class AbstractItems extends \Magento\Sales\Model\Order\Pdf\Items\AbstractItems
@@ -22,10 +23,12 @@ abstract class AbstractItems extends \Magento\Sales\Model\Order\Pdf\Items\Abstra
     private $serializer;
 
     /**
+     * Constructor
+     *
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Tax\Helper\Data $taxData
-     * @param \Magento\Framework\Filesystem $filesystem ,
+     * @param \Magento\Framework\Filesystem $filesystem
      * @param \Magento\Framework\Filter\FilterManager $filterManager
      * @param \Magento\Framework\Model\ResourceModel\AbstractResource $resource
      * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
@@ -43,8 +46,7 @@ abstract class AbstractItems extends \Magento\Sales\Model\Order\Pdf\Items\Abstra
         array $data = [],
         Json $serializer = null
     ) {
-        $this->serializer = $serializer;
-
+        $this->serializer = $serializer ?: \Magento\Framework\App\ObjectManager::getInstance()->get(Json::class);
         parent::__construct(
             $context,
             $registry,
@@ -202,7 +204,7 @@ abstract class AbstractItems extends \Magento\Sales\Model\Order\Pdf\Items\Abstra
             $options = $item->getOrderItem()->getProductOptions();
         }
         if (isset($options['bundle_selection_attributes'])) {
-            return $this->getSerializer()->unserialize($options['bundle_selection_attributes']);
+            return $this->serializer->unserialize($options['bundle_selection_attributes']);
         }
         return null;
     }
@@ -287,19 +289,4 @@ abstract class AbstractItems extends \Magento\Sales\Model\Order\Pdf\Items\Abstra
         }
         return false;
     }
-
-    /**
-     * The getter function to get serializer
-     *
-     * @return Json
-     *
-     * @deprecated
-     */
-    private function getSerializer()
-    {
-        if ($this->serializer === null) {
-            $this->serializer = \Magento\Framework\App\ObjectManager::getInstance()->get(Json::class);
-        }
-        return $this->serializer;
-    }
 }
diff --git a/app/code/Magento/Catalog/Test/Unit/Helper/Product/ConfigurationTest.php b/app/code/Magento/Catalog/Test/Unit/Helper/Product/ConfigurationTest.php
index 66a2b346868..902f63c578a 100644
--- a/app/code/Magento/Catalog/Test/Unit/Helper/Product/ConfigurationTest.php
+++ b/app/code/Magento/Catalog/Test/Unit/Helper/Product/ConfigurationTest.php
@@ -8,7 +8,7 @@ namespace Magento\Catalog\Test\Unit\Helper\Product;
 class ConfigurationTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @var \Magento\Framework\Serialize\Serializer\Json | \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Serialize\Serializer\Json|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $serializer;
 
diff --git a/app/code/Magento/Quote/Model/Quote/Address/Total.php b/app/code/Magento/Quote/Model/Quote/Address/Total.php
index 499147b9bf7..cd7aa54e149 100644
--- a/app/code/Magento/Quote/Model/Quote/Address/Total.php
+++ b/app/code/Magento/Quote/Model/Quote/Address/Total.php
@@ -25,7 +25,9 @@ class Total extends \Magento\Framework\DataObject
     private $serializer;
 
     /**
-     * @param array $data [optional]
+     * Constructor
+     *
+     * @param array $data
      * @param \Magento\Framework\Serialize\Serializer\Json|null $serializer
      */
     public function __construct(
diff --git a/app/code/Magento/Tax/Helper/Data.php b/app/code/Magento/Tax/Helper/Data.php
index 3d5179b8f61..0626b336b33 100644
--- a/app/code/Magento/Tax/Helper/Data.php
+++ b/app/code/Magento/Tax/Helper/Data.php
@@ -3,9 +3,6 @@
  * Copyright © 2016 Magento. All rights reserved.
  * See COPYING.txt for license details.
  */
-
-// @codingStandardsIgnoreFile
-
 namespace Magento\Tax\Helper;
 
 use Magento\Framework\Pricing\PriceCurrencyInterface;
@@ -22,9 +19,11 @@ use Magento\Framework\Serialize\Serializer\Json;
 use Magento\Framework\App\ObjectManager;
 
 /**
- * Catalog data helper
+ * Tax helper
+ *
  * @SuppressWarnings(PHPMD.TooManyFields)
  * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ * @codingStandardsIgnoreFile
  */
 class Data extends \Magento\Framework\App\Helper\AbstractHelper
 {
@@ -80,9 +79,7 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
     protected $_localeResolver;
 
     /**
-     * \Magento\Catalog\Helper\Data
-     *
-     * @var CatalogHelper
+     * @var \Magento\Catalog\Helper\Data
      */
     protected $catalogHelper;
 
@@ -102,17 +99,19 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
     private $serializer;
 
     /**
-     * @param \Magento\Framework\App\Helper\Context                         $context
-     * @param \Magento\Framework\Json\Helper\Data                           $jsonHelper
-     * @param Config                                                        $taxConfig
-     * @param \Magento\Store\Model\StoreManagerInterface                    $storeManager
-     * @param \Magento\Framework\Locale\FormatInterface                     $localeFormat
+     * Constructor
+     *
+     * @param \Magento\Framework\App\Helper\Context $context
+     * @param \Magento\Framework\Json\Helper\Data $jsonHelper
+     * @param Config $taxConfig
+     * @param \Magento\Store\Model\StoreManagerInterface $storeManager
+     * @param \Magento\Framework\Locale\FormatInterface $localeFormat
      * @param \Magento\Tax\Model\ResourceModel\Sales\Order\Tax\CollectionFactory $orderTaxCollectionFactory
-     * @param \Magento\Framework\Locale\ResolverInterface                   $localeResolver
-     * @param \Magento\Catalog\Helper\Data                                  $catalogHelper
-     * @param OrderTaxManagementInterface                                   $orderTaxManagement
-     * @param PriceCurrencyInterface                                        $priceCurrency
-     * @param Json                                           $serializer
+     * @param \Magento\Framework\Locale\ResolverInterface $localeResolver
+     * @param \Magento\Catalog\Helper\Data $catalogHelper
+     * @param OrderTaxManagementInterface $orderTaxManagement
+     * @param PriceCurrencyInterface $priceCurrency
+     * @param Json $serializer
      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
     public function __construct(
-- 
GitLab