From ebccc5b2b72c16e65b20626357350a62c3d35581 Mon Sep 17 00:00:00 2001
From: Cristian Partica <cpartica@magento.com>
Date: Mon, 9 Jan 2017 10:16:37 -0600
Subject: [PATCH] MAGETWO-58924: SQL error wait timeout error when saving
 categories

- fix issues with code review, add phpdocs for renaming and fixing unit tests
---
 .../Category/ChildrenUrlRewriteGenerator.php  | 22 +++++------
 .../CurrentUrlRewritesRegenerator.php         | 38 +++++++++---------
 .../Model/CategoryUrlRewriteGenerator.php     | 39 ++++++++++---------
 .../Model/Map/DataCategoryHashMap.php         |  2 +-
 .../Map/DataCategoryUrlRewriteDatabaseMap.php | 24 ++++++------
 .../Map/DataCategoryUsedInProductsHashMap.php |  2 +-
 .../Model/Map/DataProductHashMap.php          |  2 +-
 .../Map/DataProductUrlRewriteDatabaseMap.php  | 20 +++++-----
 .../Model/Map/DatabaseMapInterface.php        |  2 +-
 .../Model/Map/DatabaseMapPool.php             |  2 +-
 .../Model/Map/HashMapInterface.php            |  2 +-
 .../Model/Map/HashMapPool.php                 |  4 +-
 .../Model/Map/UrlRewriteFinder.php            |  8 ++--
 .../Product/CurrentUrlRewritesRegenerator.php | 32 +++++++--------
 .../Model/ProductScopeRewriteGenerator.php    | 34 ++++++++--------
 .../Model/ProductUrlRewriteGenerator.php      |  8 ++--
 .../Observer/AfterImportDataObserver.php      | 26 ++++++-------
 ...ategoryProcessUrlRewriteSavingObserver.php |  6 +--
 .../Observer/UrlRewriteHandler.php            | 32 +++++++--------
 .../ChildrenUrlRewriteGeneratorTest.php       | 12 +++---
 .../CurrentUrlRewritesRegeneratorTest.php     | 30 +++++++-------
 .../Model/CategoryUrlRewriteGeneratorTest.php | 12 +++---
 .../Model/Map/DataCategoryHashMapTest.php     |  2 +-
 .../DataCategoryUrlRewriteDatabaseMapTest.php | 10 ++---
 .../DataCategoryUsedInProductsHashMapTest.php | 18 ++++-----
 .../Unit/Model/Map/DataProductHashMapTest.php | 14 +++----
 .../DataProductUrlRewriteDatabaseMapTest.php  | 10 ++---
 .../Test/Unit/Model/Map/HashMapPoolTest.php   |  2 +-
 .../Unit/Model/Map/UrlRewriteFinderTest.php   | 20 +++++-----
 .../CurrentUrlRewritesRegeneratorTest.php     | 32 +++++++--------
 .../ProductScopeRewriteGeneratorTest.php      | 12 +++---
 .../Observer/AfterImportDataObserverTest.php  | 16 ++++----
 ...lRewritesSet.php => MergeDataProvider.php} |  5 ++-
 ...sSetTest.php => MergeDataProviderTest.php} | 10 ++---
 ...oryProcessUrlRewriteSavingObserverTest.php |  2 +-
 .../Framework/DB/TemporaryTableService.php    |  2 +-
 .../Test/Unit/TemporaryTableServiceTest.php   | 10 ++---
 37 files changed, 264 insertions(+), 260 deletions(-)
 rename app/code/Magento/UrlRewrite/Model/{UrlRewritesSet.php => MergeDataProvider.php} (93%)
 rename app/code/Magento/UrlRewrite/Test/Unit/Model/{UrlRewritesSetTest.php => MergeDataProviderTest.php} (92%)

diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Category/ChildrenUrlRewriteGenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/Category/ChildrenUrlRewriteGenerator.php
index 9db93af19af..920da739c8e 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/Category/ChildrenUrlRewriteGenerator.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/Category/ChildrenUrlRewriteGenerator.php
@@ -8,7 +8,7 @@ namespace Magento\CatalogUrlRewrite\Model\Category;
 use Magento\Catalog\Model\Category;
 use Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGeneratorFactory;
 use Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGenerator;
-use Magento\UrlRewrite\Model\UrlRewritesSetFactory;
+use Magento\UrlRewrite\Model\MergeDataProviderFactory;
 use Magento\Framework\App\ObjectManager;
 
 class ChildrenUrlRewriteGenerator
@@ -19,24 +19,24 @@ class ChildrenUrlRewriteGenerator
     /** @var \Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGeneratorFactory */
     protected $categoryUrlRewriteGeneratorFactory;
 
-    /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */
-    private $urlRewritesSetPrototype;
+    /** @var \Magento\UrlRewrite\Model\MergeDataProvider */
+    private $mergeDataProviderPrototype;
 
     /**
      * @param \Magento\CatalogUrlRewrite\Model\Category\ChildrenCategoriesProvider $childrenCategoriesProvider
      * @param \Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGeneratorFactory $categoryUrlRewriteGeneratorFactory
-     * @param \Magento\UrlRewrite\Model\UrlRewritesSetFactory|null $urlRewritesSetFactory
+     * @param \Magento\UrlRewrite\Model\MergeDataProviderFactory|null $mergeDataProviderFactory
      */
     public function __construct(
         ChildrenCategoriesProvider $childrenCategoriesProvider,
         CategoryUrlRewriteGeneratorFactory $categoryUrlRewriteGeneratorFactory,
-        UrlRewritesSetFactory $urlRewritesSetFactory = null
+        MergeDataProviderFactory $mergeDataProviderFactory = null
     ) {
         $this->childrenCategoriesProvider = $childrenCategoriesProvider;
         $this->categoryUrlRewriteGeneratorFactory = $categoryUrlRewriteGeneratorFactory;
-        $urlRewritesSetFactory = $urlRewritesSetFactory ?: ObjectManager::getInstance()
-            ->get(UrlRewritesSetFactory::class);
-        $this->urlRewritesSetPrototype = $urlRewritesSetFactory->create();
+        $mergeDataProviderFactory = $mergeDataProviderFactory ?: ObjectManager::getInstance()
+            ->get(MergeDataProviderFactory::class);
+        $this->mergeDataProviderPrototype = $mergeDataProviderFactory->create();
     }
 
     /**
@@ -49,17 +49,17 @@ class ChildrenUrlRewriteGenerator
      */
     public function generate($storeId, Category $category, $rootCategoryId = null)
     {
-        $urlRewritesSet = clone $this->urlRewritesSetPrototype;
+        $mergeDataProvider = clone $this->mergeDataProviderPrototype;
         foreach ($this->childrenCategoriesProvider->getChildren($category, true) as $childCategory) {
             $childCategory->setStoreId($storeId);
             $childCategory->setData('save_rewrites_history', $category->getData('save_rewrites_history'));
             /** @var CategoryUrlRewriteGenerator $categoryUrlRewriteGenerator */
             $categoryUrlRewriteGenerator = $this->categoryUrlRewriteGeneratorFactory->create();
-            $urlRewritesSet->merge(
+            $mergeDataProvider->merge(
                 $categoryUrlRewriteGenerator->generate($childCategory, false, $rootCategoryId)
             );
         }
 
-        return $urlRewritesSet->getData();
+        return $mergeDataProvider->getData();
     }
 }
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Category/CurrentUrlRewritesRegenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/Category/CurrentUrlRewritesRegenerator.php
index 5f3d5437715..eb3fd3954bd 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/Category/CurrentUrlRewritesRegenerator.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/Category/CurrentUrlRewritesRegenerator.php
@@ -32,34 +32,34 @@ class CurrentUrlRewritesRegenerator
     protected $urlFinder;
 
     /** @var \Magento\CatalogUrlRewrite\Model\Map\UrlRewriteFinder */
-    private $urlRewriteMap;
+    private $urlRewriteFinder;
 
-    /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */
-    private $urlRewritesSetPrototype;
+    /** @var \Magento\UrlRewrite\Model\MergeDataProvider */
+    private $mergeDataProviderPrototype;
 
     /**
      * @param \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator $categoryUrlPathGenerator
      * @param \Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory $urlRewriteFactory
      * @param \Magento\UrlRewrite\Model\UrlFinderInterface $urlFinder
-     * @param \Magento\CatalogUrlRewrite\Model\Map\UrlRewriteFinder|null $urlRewriteMap
-     * @param \Magento\UrlRewrite\Model\UrlRewritesSetFactory|null $urlRewritesSetFactory
+     * @param \Magento\CatalogUrlRewrite\Model\Map\UrlRewriteFinder|null $urlRewriteFinder
+     * @param \Magento\UrlRewrite\Model\MergeDataProviderFactory|null $mergeDataProviderFactory
      */
     public function __construct(
         \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator $categoryUrlPathGenerator,
         \Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory $urlRewriteFactory,
         \Magento\UrlRewrite\Model\UrlFinderInterface $urlFinder,
-        \Magento\CatalogUrlRewrite\Model\Map\UrlRewriteFinder $urlRewriteMap = null,
-        \Magento\UrlRewrite\Model\UrlRewritesSetFactory $urlRewritesSetFactory = null
+        \Magento\CatalogUrlRewrite\Model\Map\UrlRewriteFinder $urlRewriteFinder = null,
+        \Magento\UrlRewrite\Model\MergeDataProviderFactory $mergeDataProviderFactory = null
     ) {
         $this->categoryUrlPathGenerator = $categoryUrlPathGenerator;
         $this->urlRewriteFactory = $urlRewriteFactory;
         $this->urlRewritePrototype = $urlRewriteFactory->create();
         $this->urlFinder = $urlFinder;
-        $this->urlRewriteMap = $urlRewriteMap ?: \Magento\Framework\App\ObjectManager::getInstance()
+        $this->urlRewriteFinder = $urlRewriteFinder ?: \Magento\Framework\App\ObjectManager::getInstance()
             ->get(\Magento\CatalogUrlRewrite\Model\Map\UrlRewriteFinder::class);
-        $urlRewritesSetFactory = $urlRewritesSetFactory ?: \Magento\Framework\App\ObjectManager::getInstance()
-            ->get(\Magento\UrlRewrite\Model\UrlRewritesSetFactory::class);
-        $this->urlRewritesSetPrototype = $urlRewritesSetFactory->create();
+        $mergeDataProviderFactory = $mergeDataProviderFactory ?: \Magento\Framework\App\ObjectManager::getInstance()
+            ->get(\Magento\UrlRewrite\Model\MergeDataProviderFactory::class);
+        $this->mergeDataProviderPrototype = $mergeDataProviderFactory->create();
     }
 
     /**
@@ -72,8 +72,8 @@ class CurrentUrlRewritesRegenerator
      */
     public function generate($storeId, \Magento\Catalog\Model\Category $category, $rootCategoryId = null)
     {
-        $urlRewritesSet = clone $this->urlRewritesSetPrototype;
-        $currentUrlRewrites = $this->urlRewriteMap->findAllByData(
+        $mergeDataProvider = clone $this->mergeDataProviderPrototype;
+        $currentUrlRewrites = $this->urlRewriteFinder->findAllByData(
             $category->getEntityId(),
             $storeId,
             CategoryUrlRewriteGenerator::ENTITY_TYPE,
@@ -81,23 +81,23 @@ class CurrentUrlRewritesRegenerator
         );
 
         foreach ($currentUrlRewrites as $rewrite) {
-            $urlRewritesSet->merge(
+            $mergeDataProvider->merge(
                 $rewrite->getIsAutogenerated()
                 ? $this->generateForAutogenerated($rewrite, $storeId, $category)
                 : $this->generateForCustom($rewrite, $storeId, $category)
             );
         }
 
-        return $urlRewritesSet->getData();
+        return $mergeDataProvider->getData();
     }
 
     /**
      * @param \Magento\UrlRewrite\Service\V1\Data\UrlRewrite $url
      * @param int $storeId
-     * @param \Magento\Catalog\Model\Category $category
+     * @param \Magento\Catalog\Model\Category|null $category
      * @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[]
      */
-    protected function generateForAutogenerated($url, $storeId, \Magento\Catalog\Model\Category $category)
+    protected function generateForAutogenerated($url, $storeId, \Magento\Catalog\Model\Category $category = null)
     {
         if ($category->getData('save_rewrites_history')) {
             $targetPath = $this->categoryUrlPathGenerator->getUrlPathWithSuffix($category, $storeId);
@@ -119,10 +119,10 @@ class CurrentUrlRewritesRegenerator
     /**
      * @param \Magento\UrlRewrite\Service\V1\Data\UrlRewrite $url
      * @param int $storeId
-     * @param \Magento\Catalog\Model\Category $category
+     * @param \Magento\Catalog\Model\Category|null $category
      * @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[]
      */
-    protected function generateForCustom($url, $storeId, \Magento\Catalog\Model\Category $category)
+    protected function generateForCustom($url, $storeId, \Magento\Catalog\Model\Category $category = null)
     {
         $targetPath = !$url->getRedirectType()
             ? $url->getTargetPath()
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGenerator.php
index 5eb72ff560b..f95c72515c4 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGenerator.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/CategoryUrlRewriteGenerator.php
@@ -13,7 +13,7 @@ use Magento\CatalogUrlRewrite\Service\V1\StoreViewService;
 use Magento\Store\Model\Store;
 use Magento\Catalog\Api\CategoryRepositoryInterface;
 use Magento\Framework\App\ObjectManager;
-use Magento\UrlRewrite\Model\UrlRewritesSetFactory;
+use Magento\UrlRewrite\Model\MergeDataProviderFactory;
 
 class CategoryUrlRewriteGenerator
 {
@@ -38,8 +38,8 @@ class CategoryUrlRewriteGenerator
     /** @var \Magento\CatalogUrlRewrite\Model\Category\ChildrenUrlRewriteGenerator */
     protected $childrenUrlRewriteGenerator;
 
-    /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */
-    private $urlRewritesSetPrototype;
+    /** @var \Magento\UrlRewrite\Model\MergeDataProvider */
+    private $mergeDataProviderPrototype;
 
     /**
      * @var bool
@@ -52,7 +52,7 @@ class CategoryUrlRewriteGenerator
      * @param \Magento\CatalogUrlRewrite\Model\Category\ChildrenUrlRewriteGenerator $childrenUrlRewriteGenerator
      * @param \Magento\CatalogUrlRewrite\Service\V1\StoreViewService $storeViewService
      * @param \Magento\Catalog\Api\CategoryRepositoryInterface $categoryRepository
-     * @param \Magento\UrlRewrite\Model\UrlRewritesSetFactory|null $urlRewritesSetFactory
+     * @param \Magento\UrlRewrite\Model\MergeDataProviderFactory|null $mergeDataProviderFactory
      */
     public function __construct(
         CanonicalUrlRewriteGenerator $canonicalUrlRewriteGenerator,
@@ -60,16 +60,16 @@ class CategoryUrlRewriteGenerator
         ChildrenUrlRewriteGenerator $childrenUrlRewriteGenerator,
         StoreViewService $storeViewService,
         CategoryRepositoryInterface $categoryRepository,
-        UrlRewritesSetFactory $urlRewritesSetFactory = null
+        MergeDataProviderFactory $mergeDataProviderFactory = null
     ) {
         $this->storeViewService = $storeViewService;
         $this->canonicalUrlRewriteGenerator = $canonicalUrlRewriteGenerator;
         $this->childrenUrlRewriteGenerator = $childrenUrlRewriteGenerator;
         $this->currentUrlRewritesRegenerator = $currentUrlRewritesRegenerator;
         $this->categoryRepository = $categoryRepository;
-        $urlRewritesSetFactory = $urlRewritesSetFactory ?: ObjectManager::getInstance()
-            ->get(UrlRewritesSetFactory::class);
-        $this->urlRewritesSetPrototype = $urlRewritesSetFactory->create();
+        $mergeDataProviderFactory = $mergeDataProviderFactory ?: ObjectManager::getInstance()
+            ->get(MergeDataProviderFactory::class);
+        $this->mergeDataProviderPrototype = $mergeDataProviderFactory->create();
     }
 
     /**
@@ -100,19 +100,22 @@ class CategoryUrlRewriteGenerator
      * @param int|null $rootCategoryId
      * @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[]
      */
-    protected function generateForGlobalScope(Category $category = null, $overrideStoreUrls = false, $rootCategoryId = null)
-    {
-        $urlRewritesSet = clone $this->urlRewritesSetPrototype;
+    protected function generateForGlobalScope(
+        Category $category = null,
+        $overrideStoreUrls = false,
+        $rootCategoryId = null
+    ) {
+        $mergeDataProvider = clone $this->mergeDataProviderPrototype;
         $categoryId = $category->getId();
         foreach ($category->getStoreIds() as $storeId) {
             if (!$this->isGlobalScope($storeId)
                 && $this->isOverrideUrlsForStore($storeId, $categoryId, $overrideStoreUrls)
             ) {
                 $this->updateCategoryUrlForStore($storeId, $category);
-                $urlRewritesSet->merge($this->generateForSpecificStoreView($storeId, $category, $rootCategoryId));
+                $mergeDataProvider->merge($this->generateForSpecificStoreView($storeId, $category, $rootCategoryId));
             }
         }
-        $result = $urlRewritesSet->getData();
+        $result = $mergeDataProvider->getData();
         return $result;
     }
 
@@ -170,16 +173,16 @@ class CategoryUrlRewriteGenerator
      */
     protected function generateForSpecificStoreView($storeId, Category $category = null, $rootCategoryId = null)
     {
-        $urlRewritesSet = clone $this->urlRewritesSetPrototype;
-        $urlRewritesSet->merge(
+        $mergeDataProvider = clone $this->mergeDataProviderPrototype;
+        $mergeDataProvider->merge(
             $this->canonicalUrlRewriteGenerator->generate($storeId, $category)
         );
-        $urlRewritesSet->merge(
+        $mergeDataProvider->merge(
             $this->childrenUrlRewriteGenerator->generate($storeId, $category, $rootCategoryId)
         );
-        $urlRewritesSet->merge(
+        $mergeDataProvider->merge(
             $this->currentUrlRewritesRegenerator->generate($storeId, $category, $rootCategoryId)
         );
-        return $urlRewritesSet->getData();
+        return $mergeDataProvider->getData();
     }
 }
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Map/DataCategoryHashMap.php b/app/code/Magento/CatalogUrlRewrite/Model/Map/DataCategoryHashMap.php
index 88c4ea81326..acb8c4a8971 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/Map/DataCategoryHashMap.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/Map/DataCategoryHashMap.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\CatalogUrlRewrite\Model\Map;
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Map/DataCategoryUrlRewriteDatabaseMap.php b/app/code/Magento/CatalogUrlRewrite/Model/Map/DataCategoryUrlRewriteDatabaseMap.php
index 9d8894f6c5c..bcc82ce8e44 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/Map/DataCategoryUrlRewriteDatabaseMap.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/Map/DataCategoryUrlRewriteDatabaseMap.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\CatalogUrlRewrite\Model\Map;
@@ -8,7 +8,7 @@ namespace Magento\CatalogUrlRewrite\Model\Map;
 use Magento\Framework\App\ResourceConnection;
 use Magento\Framework\DB\TemporaryTableService;
 use Magento\Framework\DB\Select;
-use Magento\UrlRewrite\Model\UrlRewritesSet;
+use Magento\UrlRewrite\Model\MergeDataProvider;
 
 /**
  * Map that holds data for category url rewrites entity
@@ -21,7 +21,7 @@ class DataCategoryUrlRewriteDatabaseMap implements DatabaseMapInterface
     private $createdTableAdapters = [];
 
     /** @var HashMapPool */
-    private $dataMapPool;
+    private $hashMapPool;
 
     /** @var ResourceConnection */
     private $connection;
@@ -31,23 +31,23 @@ class DataCategoryUrlRewriteDatabaseMap implements DatabaseMapInterface
 
     /**
      * @param ResourceConnection $connection
-     * @param HashMapPool $dataMapPool,
+     * @param HashMapPool $hashMapPool,
      * @param TemporaryTableService $temporaryTableService
      */
     public function __construct(
         ResourceConnection $connection,
-        HashMapPool $dataMapPool,
+        HashMapPool $hashMapPool,
         TemporaryTableService $temporaryTableService
     ) {
         $this->connection = $connection;
-        $this->dataMapPool = $dataMapPool;
+        $this->hashMapPool = $hashMapPool;
         $this->temporaryTableService = $temporaryTableService;
     }
 
     /**
      * Generates data from categoryId and stores it into a temporary table
      *
-     * @param $categoryId
+     * @param int $categoryId
      * @return void
      */
     private function generateTableAdapter($categoryId)
@@ -70,7 +70,7 @@ class DataCategoryUrlRewriteDatabaseMap implements DatabaseMapInterface
             ->from(
                 ['e' => $this->connection->getTableName('url_rewrite')],
                 ['e.*', 'hash_key' => new \Zend_Db_Expr(
-                    "CONCAT(e.store_id,'" . UrlRewritesSet::SEPARATOR . "', e.entity_id)"
+                    "CONCAT(e.store_id,'" . MergeDataProvider::SEPARATOR . "', e.entity_id)"
                 )
                 ]
             )
@@ -80,9 +80,9 @@ class DataCategoryUrlRewriteDatabaseMap implements DatabaseMapInterface
                     'entity_id',
                     [
                         'in' => array_merge(
-                            $this->dataMapPool->getDataMap(DataCategoryUsedInProductsHashMap::class, $categoryId)
+                            $this->hashMapPool->getDataMap(DataCategoryUsedInProductsHashMap::class, $categoryId)
                                 ->getAllData($categoryId),
-                            $this->dataMapPool->getDataMap(DataCategoryHashMap::class, $categoryId)
+                            $this->hashMapPool->getDataMap(DataCategoryHashMap::class, $categoryId)
                                 ->getAllData($categoryId)
                         )
                     ]
@@ -105,8 +105,8 @@ class DataCategoryUrlRewriteDatabaseMap implements DatabaseMapInterface
      */
     public function destroyTableAdapter($categoryId)
     {
-        $this->dataMapPool->resetMap(DataCategoryUsedInProductsHashMap::class, $categoryId);
-        $this->dataMapPool->resetMap(DataCategoryHashMap::class, $categoryId);
+        $this->hashMapPool->resetMap(DataCategoryUsedInProductsHashMap::class, $categoryId);
+        $this->hashMapPool->resetMap(DataCategoryHashMap::class, $categoryId);
         if (isset($this->createdTableAdapters[$categoryId])) {
             $this->temporaryTableService->dropTable($this->createdTableAdapters[$categoryId]);
             unset($this->createdTableAdapters[$categoryId]);
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Map/DataCategoryUsedInProductsHashMap.php b/app/code/Magento/CatalogUrlRewrite/Model/Map/DataCategoryUsedInProductsHashMap.php
index 9f142ef5652..0a3a99f8a0e 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/Map/DataCategoryUsedInProductsHashMap.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/Map/DataCategoryUsedInProductsHashMap.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\CatalogUrlRewrite\Model\Map;
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Map/DataProductHashMap.php b/app/code/Magento/CatalogUrlRewrite/Model/Map/DataProductHashMap.php
index 44aaca3b466..74731a7d40e 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/Map/DataProductHashMap.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/Map/DataProductHashMap.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\CatalogUrlRewrite\Model\Map;
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Map/DataProductUrlRewriteDatabaseMap.php b/app/code/Magento/CatalogUrlRewrite/Model/Map/DataProductUrlRewriteDatabaseMap.php
index 609841a2a87..bca04d727ae 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/Map/DataProductUrlRewriteDatabaseMap.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/Map/DataProductUrlRewriteDatabaseMap.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\CatalogUrlRewrite\Model\Map;
@@ -8,7 +8,7 @@ namespace Magento\CatalogUrlRewrite\Model\Map;
 use Magento\Framework\App\ResourceConnection;
 use Magento\Framework\DB\TemporaryTableService;
 use Magento\Framework\DB\Select;
-use Magento\UrlRewrite\Model\UrlRewritesSet;
+use Magento\UrlRewrite\Model\MergeDataProvider;
 
 /**
  * Map that holds data for category url rewrites entity
@@ -22,7 +22,7 @@ class DataProductUrlRewriteDatabaseMap implements DatabaseMapInterface
     private $createdTableAdapters = [];
 
     /** @var HashMapPool */
-    private $dataMapPool;
+    private $hashMapPool;
 
     /** @var ResourceConnection */
     private $connection;
@@ -32,23 +32,23 @@ class DataProductUrlRewriteDatabaseMap implements DatabaseMapInterface
 
     /**
      * @param ResourceConnection $connection
-     * @param HashMapPool $dataMapPool,
+     * @param HashMapPool $hashMapPool,
      * @param TemporaryTableService $temporaryTableService
      */
     public function __construct(
         ResourceConnection $connection,
-        HashMapPool $dataMapPool,
+        HashMapPool $hashMapPool,
         TemporaryTableService $temporaryTableService
     ) {
         $this->connection = $connection;
-        $this->dataMapPool = $dataMapPool;
+        $this->hashMapPool = $hashMapPool;
         $this->temporaryTableService = $temporaryTableService;
     }
 
     /**
      * Generates data from categoryId and stores it into a temporary table
      *
-     * @param $categoryId
+     * @param int $categoryId
      * @return void
      */
     private function generateTableAdapter($categoryId)
@@ -84,7 +84,7 @@ class DataProductUrlRewriteDatabaseMap implements DatabaseMapInterface
             ->from(
                 ['e' => $this->connection->getTableName('url_rewrite')],
                 ['e.*', 'hash_key' => new \Zend_Db_Expr(
-                    "CONCAT(e.store_id,'" . UrlRewritesSet::SEPARATOR . "', e.entity_id)"
+                    "CONCAT(e.store_id,'" . MergeDataProvider::SEPARATOR . "', e.entity_id)"
                 )
                 ]
             )
@@ -93,7 +93,7 @@ class DataProductUrlRewriteDatabaseMap implements DatabaseMapInterface
                 $urlRewritesConnection->prepareSqlCondition(
                     'entity_id',
                     [
-                        'in' => $this->dataMapPool->getDataMap(DataProductHashMap::class, $categoryId)
+                        'in' => $this->hashMapPool->getDataMap(DataProductHashMap::class, $categoryId)
                             ->getAllData($categoryId)
                     ]
                 )
@@ -115,7 +115,7 @@ class DataProductUrlRewriteDatabaseMap implements DatabaseMapInterface
      */
     public function destroyTableAdapter($categoryId)
     {
-        $this->dataMapPool->resetMap(DataProductHashMap::class, $categoryId);
+        $this->hashMapPool->resetMap(DataProductHashMap::class, $categoryId);
         if (isset($this->createdTableAdapters[$categoryId])) {
             $this->temporaryTableService->dropTable($this->createdTableAdapters[$categoryId]);
             unset($this->createdTableAdapters[$categoryId]);
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Map/DatabaseMapInterface.php b/app/code/Magento/CatalogUrlRewrite/Model/Map/DatabaseMapInterface.php
index 6090baf3d90..32f81e24615 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/Map/DatabaseMapInterface.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/Map/DatabaseMapInterface.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\CatalogUrlRewrite\Model\Map;
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Map/DatabaseMapPool.php b/app/code/Magento/CatalogUrlRewrite/Model/Map/DatabaseMapPool.php
index 942f92c234c..5dbe1ed12b8 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/Map/DatabaseMapPool.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/Map/DatabaseMapPool.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\CatalogUrlRewrite\Model\Map;
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Map/HashMapInterface.php b/app/code/Magento/CatalogUrlRewrite/Model/Map/HashMapInterface.php
index ec23104f5d8..3e806fcbd80 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/Map/HashMapInterface.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/Map/HashMapInterface.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\CatalogUrlRewrite\Model\Map;
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Map/HashMapPool.php b/app/code/Magento/CatalogUrlRewrite/Model/Map/HashMapPool.php
index 7c424cd7738..74ede5393cf 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/Map/HashMapPool.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/Map/HashMapPool.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\CatalogUrlRewrite\Model\Map;
@@ -46,7 +46,7 @@ class HashMapPool
         $key = $instanceName . '-' . $categoryId;
         $reflectionClass = new \ReflectionClass($instanceName);
         if (!$reflectionClass->implementsInterface(HashMapInterface::class)) {
-           throw new \Exception($instanceName . ' does not implement interface ' . HashMapInterface::class);
+            throw new \Exception($instanceName . ' does not implement interface ' . HashMapInterface::class);
         }
         if (!isset($this->dataArray[$key])) {
             $this->dataArray[$key] = $this->objectManager->create(
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Map/UrlRewriteFinder.php b/app/code/Magento/CatalogUrlRewrite/Model/Map/UrlRewriteFinder.php
index 52bf538aa34..dfa8d87644a 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/Map/UrlRewriteFinder.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/Map/UrlRewriteFinder.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\CatalogUrlRewrite\Model\Map;
@@ -41,9 +41,9 @@ class UrlRewriteFinder
         DatabaseMapPool $databaseMapPool,
         UrlFinderInterface $urlFinder,
         UrlRewriteFactory $urlRewriteFactory,
-        array $urlRewriteClassNames = [
-            self::ENTITY_TYPE_PRODUCT => DataProductUrlRewriteDatabaseMap::class,
-            self::ENTITY_TYPE_CATEGORY => DataCategoryUrlRewriteDatabaseMap::class
+        $urlRewriteClassNames = [
+        self::ENTITY_TYPE_PRODUCT => DataProductUrlRewriteDatabaseMap::class,
+        self::ENTITY_TYPE_CATEGORY => DataCategoryUrlRewriteDatabaseMap::class
         ]
     ) {
         $this->databaseMapPool = $databaseMapPool;
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/Product/CurrentUrlRewritesRegenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/Product/CurrentUrlRewritesRegenerator.php
index 979e3007eba..b801a84cc48 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/Product/CurrentUrlRewritesRegenerator.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/Product/CurrentUrlRewritesRegenerator.php
@@ -16,7 +16,7 @@ use Magento\CatalogUrlRewrite\Model\ProductUrlPathGenerator;
 use Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory;
 use Magento\CatalogUrlRewrite\Model\Map\UrlRewriteFinder;
 use Magento\Framework\App\ObjectManager;
-use Magento\UrlRewrite\Model\UrlRewritesSetFactory;
+use Magento\UrlRewrite\Model\MergeDataProviderFactory;
 
 /**
  * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
@@ -51,33 +51,33 @@ class CurrentUrlRewritesRegenerator
     private $urlRewritePrototype;
 
     /** @var UrlRewriteFinder */
-    private $urlRewriteMap;
+    private $urlRewriteFinder;
 
-    /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */
-    private $urlRewritesSetPrototype;
+    /** @var \Magento\UrlRewrite\Model\MergeDataProvider */
+    private $mergeDataProviderPrototype;
 
     /**
      * @param UrlFinderInterface $urlFinder
      * @param ProductUrlPathGenerator $productUrlPathGenerator
      * @param UrlRewriteFactory $urlRewriteFactory
-     * @param UrlRewriteFinder|null $urlRewriteMap
-     * @param \Magento\UrlRewrite\Model\UrlRewritesSetFactory|null $urlRewritesSetFactory
+     * @param UrlRewriteFinder|null $urlRewriteFinder
+     * @param \Magento\UrlRewrite\Model\MergeDataProviderFactory|null $mergeDataProviderFactory
      */
     public function __construct(
         UrlFinderInterface $urlFinder,
         ProductUrlPathGenerator $productUrlPathGenerator,
         UrlRewriteFactory $urlRewriteFactory,
-        UrlRewriteFinder $urlRewriteMap = null,
-        UrlRewritesSetFactory $urlRewritesSetFactory = null
+        UrlRewriteFinder $urlRewriteFinder = null,
+        MergeDataProviderFactory $mergeDataProviderFactory = null
     ) {
         $this->urlFinder = $urlFinder;
         $this->productUrlPathGenerator = $productUrlPathGenerator;
         $this->urlRewriteFactory = $urlRewriteFactory;
         $this->urlRewritePrototype = $urlRewriteFactory->create();
-        $this->urlRewriteMap = $urlRewriteMap ?: ObjectManager::getInstance()->get(UrlRewriteFinder::class);
-        $urlRewritesSetFactory = $urlRewritesSetFactory ?: ObjectManager::getInstance()
-            ->get(UrlRewritesSetFactory::class);
-        $this->urlRewritesSetPrototype = $urlRewritesSetFactory->create();
+        $this->urlRewriteFinder = $urlRewriteFinder ?: ObjectManager::getInstance()->get(UrlRewriteFinder::class);
+        $mergeDataProviderFactory = $mergeDataProviderFactory ?: ObjectManager::getInstance()
+            ->get(MergeDataProviderFactory::class);
+        $this->mergeDataProviderPrototype = $mergeDataProviderFactory->create();
     }
 
     /**
@@ -91,8 +91,8 @@ class CurrentUrlRewritesRegenerator
      */
     public function generate($storeId, Product $product, ObjectRegistry $productCategories, $rootCategoryId = null)
     {
-        $urlRewritesSet = clone $this->urlRewritesSetPrototype;
-        $currentUrlRewrites = $this->urlRewriteMap->findAllByData(
+        $mergeDataProvider = clone $this->mergeDataProviderPrototype;
+        $currentUrlRewrites = $this->urlRewriteFinder->findAllByData(
             $product->getEntityId(),
             $storeId,
             ProductUrlRewriteGenerator::ENTITY_TYPE,
@@ -104,14 +104,14 @@ class CurrentUrlRewritesRegenerator
             if ($category === false) {
                 continue;
             }
-            $urlRewritesSet->merge(
+            $mergeDataProvider->merge(
                 $currentUrlRewrite->getIsAutogenerated()
                 ? $this->generateForAutogenerated($currentUrlRewrite, $storeId, $category, $product)
                 : $this->generateForCustom($currentUrlRewrite, $storeId, $category, $product)
             );
         }
 
-        return $urlRewritesSet->getData();
+        return $mergeDataProvider->getData();
     }
 
     /**
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/ProductScopeRewriteGenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/ProductScopeRewriteGenerator.php
index 3dc0b6572d5..4df9fde0f26 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/ProductScopeRewriteGenerator.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/ProductScopeRewriteGenerator.php
@@ -14,7 +14,7 @@ use Magento\CatalogUrlRewrite\Model\Product\AnchorUrlRewriteGenerator;
 use Magento\CatalogUrlRewrite\Service\V1\StoreViewService;
 use Magento\Store\Model\Store;
 use Magento\Store\Model\StoreManagerInterface;
-use Magento\UrlRewrite\Model\UrlRewritesSetFactory;
+use Magento\UrlRewrite\Model\MergeDataProviderFactory;
 use Magento\Framework\App\ObjectManager;
 
 /**
@@ -58,8 +58,8 @@ class ProductScopeRewriteGenerator
      */
     private $canonicalUrlRewriteGenerator;
 
-    /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */
-    private $urlRewritesSetPrototype;
+    /** @var \Magento\UrlRewrite\Model\MergeDataProvider */
+    private $mergeDataProviderPrototype;
 
     /**
      * @param StoreViewService $storeViewService
@@ -69,7 +69,7 @@ class ProductScopeRewriteGenerator
      * @param CategoriesUrlRewriteGenerator $categoriesUrlRewriteGenerator
      * @param CurrentUrlRewritesRegenerator $currentUrlRewritesRegenerator
      * @param AnchorUrlRewriteGenerator $anchorUrlRewriteGenerator
-     * @param \Magento\UrlRewrite\Model\UrlRewritesSetFactory|null $urlRewritesSetFactory
+     * @param \Magento\UrlRewrite\Model\MergeDataProviderFactory|null $mergeDataProviderFactory
      */
     public function __construct(
         StoreViewService $storeViewService,
@@ -79,7 +79,7 @@ class ProductScopeRewriteGenerator
         CategoriesUrlRewriteGenerator $categoriesUrlRewriteGenerator,
         CurrentUrlRewritesRegenerator $currentUrlRewritesRegenerator,
         AnchorUrlRewriteGenerator $anchorUrlRewriteGenerator,
-        UrlRewritesSetFactory $urlRewritesSetFactory = null
+        MergeDataProviderFactory $mergeDataProviderFactory = null
     ) {
         $this->storeViewService = $storeViewService;
         $this->storeManager = $storeManager;
@@ -88,9 +88,9 @@ class ProductScopeRewriteGenerator
         $this->categoriesUrlRewriteGenerator = $categoriesUrlRewriteGenerator;
         $this->currentUrlRewritesRegenerator = $currentUrlRewritesRegenerator;
         $this->anchorUrlRewriteGenerator = $anchorUrlRewriteGenerator;
-        $urlRewritesSetFactory = $urlRewritesSetFactory ?: ObjectManager::getInstance()
-            ->get(UrlRewritesSetFactory::class);
-        $this->urlRewritesSetPrototype = $urlRewritesSetFactory->create();
+        $mergeDataProviderFactory = $mergeDataProviderFactory ?: ObjectManager::getInstance()
+            ->get(MergeDataProviderFactory::class);
+        $this->mergeDataProviderPrototype = $mergeDataProviderFactory->create();
     }
 
     /**
@@ -115,7 +115,7 @@ class ProductScopeRewriteGenerator
     public function generateForGlobalScope($productCategories, Product $product, $rootCategoryId = null)
     {
         $productId = $product->getEntityId();
-        $urlRewritesSet = clone $this->urlRewritesSetPrototype;
+        $mergeDataProvider = clone $this->mergeDataProviderPrototype;
 
         foreach ($product->getStoreIds() as $id) {
             if (!$this->isGlobalScope($id) &&
@@ -124,13 +124,13 @@ class ProductScopeRewriteGenerator
                     $productId,
                     Product::ENTITY
                 )) {
-                $urlRewritesSet->merge(
+                $mergeDataProvider->merge(
                     $this->generateForSpecificStoreView($id, $productCategories, $product, $rootCategoryId)
                 );
             }
         }
 
-        return $urlRewritesSet->getData();
+        return $mergeDataProvider->getData();
     }
 
     /**
@@ -144,7 +144,7 @@ class ProductScopeRewriteGenerator
      */
     public function generateForSpecificStoreView($storeId, $productCategories, Product $product, $rootCategoryId = null)
     {
-        $urlRewritesSet = clone $this->urlRewritesSetPrototype;
+        $mergeDataProvider = clone $this->mergeDataProviderPrototype;
         $categories = [];
         foreach ($productCategories as $category) {
             if ($this->isCategoryProperForGenerating($category, $storeId)) {
@@ -153,13 +153,13 @@ class ProductScopeRewriteGenerator
         }
         $productCategories = $this->objectRegistryFactory->create(['entities' => $categories]);
 
-        $urlRewritesSet->merge(
+        $mergeDataProvider->merge(
             $this->canonicalUrlRewriteGenerator->generate($storeId, $product)
         );
-        $urlRewritesSet->merge(
+        $mergeDataProvider->merge(
             $this->categoriesUrlRewriteGenerator->generate($storeId, $product, $productCategories)
         );
-        $urlRewritesSet->merge(
+        $mergeDataProvider->merge(
             $this->currentUrlRewritesRegenerator->generate(
                 $storeId,
                 $product,
@@ -167,11 +167,11 @@ class ProductScopeRewriteGenerator
                 $rootCategoryId
             )
         );
-        $urlRewritesSet->merge(
+        $mergeDataProvider->merge(
             $this->anchorUrlRewriteGenerator->generate($storeId, $product, $productCategories)
         );
 
-        return $urlRewritesSet->getData();
+        return $mergeDataProvider->getData();
     }
 
     /**
diff --git a/app/code/Magento/CatalogUrlRewrite/Model/ProductUrlRewriteGenerator.php b/app/code/Magento/CatalogUrlRewrite/Model/ProductUrlRewriteGenerator.php
index 777a10bc050..a45b33bcc52 100644
--- a/app/code/Magento/CatalogUrlRewrite/Model/ProductUrlRewriteGenerator.php
+++ b/app/code/Magento/CatalogUrlRewrite/Model/ProductUrlRewriteGenerator.php
@@ -161,11 +161,11 @@ class ProductUrlRewriteGenerator
      *
      * @deprecated
      * @param \Magento\Framework\Data\Collection $productCategories
-     * @param \Magento\Catalog\Model\Product $product
+     * @param \Magento\Catalog\Model\Product|null $product
      * @param int|null $rootCategoryId
      * @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[]
      */
-    protected function generateForGlobalScope($productCategories, Product $product, $rootCategoryId = null)
+    protected function generateForGlobalScope($productCategories, $product = null, $rootCategoryId = null)
     {
         return $this->getProductScopeRewriteGenerator()->generateForGlobalScope(
             $productCategories,
@@ -180,14 +180,14 @@ class ProductUrlRewriteGenerator
      * @deprecated
      * @param int $storeId
      * @param \Magento\Framework\Data\Collection $productCategories
-     * @param Product $product
+     * @param Product|null $product
      * @param int|null $rootCategoryId
      * @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[]
      */
     protected function generateForSpecificStoreView(
         $storeId,
         $productCategories,
-        Product $product,
+        $product = null,
         $rootCategoryId = null
     ) {
         return $this->getProductScopeRewriteGenerator()
diff --git a/app/code/Magento/CatalogUrlRewrite/Observer/AfterImportDataObserver.php b/app/code/Magento/CatalogUrlRewrite/Observer/AfterImportDataObserver.php
index 6781619b45e..27053c21cff 100644
--- a/app/code/Magento/CatalogUrlRewrite/Observer/AfterImportDataObserver.php
+++ b/app/code/Magento/CatalogUrlRewrite/Observer/AfterImportDataObserver.php
@@ -21,7 +21,7 @@ use Magento\UrlRewrite\Model\UrlFinderInterface;
 use Magento\Framework\Event\ObserverInterface;
 use Magento\Catalog\Model\Product\Visibility;
 use Magento\Framework\App\ObjectManager;
-use Magento\UrlRewrite\Model\UrlRewritesSetFactory;
+use Magento\UrlRewrite\Model\MergeDataProviderFactory;
 
 /**
  * Class AfterImportDataObserver
@@ -99,8 +99,8 @@ class AfterImportDataObserver implements ObserverInterface
         'visibility',
     ];
 
-    /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */
-    private $urlRewritesSetPrototype;
+    /** @var \Magento\UrlRewrite\Model\MergeDataProvider */
+    private $mergeDataProviderPrototype;
 
     /**
      * @param \Magento\Catalog\Model\ProductFactory $catalogProductFactory
@@ -111,7 +111,7 @@ class AfterImportDataObserver implements ObserverInterface
      * @param UrlPersistInterface $urlPersist
      * @param UrlRewriteFactory $urlRewriteFactory
      * @param UrlFinderInterface $urlFinder
-     * @param \Magento\UrlRewrite\Model\UrlRewritesSetFactory|null $urlRewritesSetFactory
+     * @param \Magento\UrlRewrite\Model\MergeDataProviderFactory|null $mergeDataProviderFactory
      * @throws \InvalidArgumentException
      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
@@ -124,7 +124,7 @@ class AfterImportDataObserver implements ObserverInterface
         UrlPersistInterface $urlPersist,
         UrlRewriteFactory $urlRewriteFactory,
         UrlFinderInterface $urlFinder,
-        UrlRewritesSetFactory $urlRewritesSetFactory = null
+        MergeDataProviderFactory $mergeDataProviderFactory = null
     ) {
         $this->urlPersist = $urlPersist;
         $this->catalogProductFactory = $catalogProductFactory;
@@ -134,9 +134,9 @@ class AfterImportDataObserver implements ObserverInterface
         $this->storeManager = $storeManager;
         $this->urlRewriteFactory = $urlRewriteFactory;
         $this->urlFinder = $urlFinder;
-        $urlRewritesSetFactory = $urlRewritesSetFactory ?: ObjectManager::getInstance()
-            ->get(UrlRewritesSetFactory::class);
-        $this->urlRewritesSetPrototype = $urlRewritesSetFactory->create();
+        $mergeDataProviderFactory = $mergeDataProviderFactory ?: ObjectManager::getInstance()
+            ->get(MergeDataProviderFactory::class);
+        $this->mergeDataProviderPrototype = $mergeDataProviderFactory->create();
     }
 
     /**
@@ -269,16 +269,16 @@ class AfterImportDataObserver implements ObserverInterface
      */
     protected function generateUrls()
     {
-        $urlRewritesSet = clone $this->urlRewritesSetPrototype;
-        $urlRewritesSet->merge($this->canonicalUrlRewriteGenerate());
-        $urlRewritesSet->merge($this->categoriesUrlRewriteGenerate());
-        $urlRewritesSet->merge($this->currentUrlRewritesRegenerate());
+        $mergeDataProvider = clone $this->mergeDataProviderPrototype;
+        $mergeDataProvider->merge($this->canonicalUrlRewriteGenerate());
+        $mergeDataProvider->merge($this->categoriesUrlRewriteGenerate());
+        $mergeDataProvider->merge($this->currentUrlRewritesRegenerate());
         $this->productCategories = null;
 
         unset($this->products);
         $this->products = [];
 
-        return $urlRewritesSet->getData();
+        return $mergeDataProvider->getData();
     }
 
     /**
diff --git a/app/code/Magento/CatalogUrlRewrite/Observer/CategoryProcessUrlRewriteSavingObserver.php b/app/code/Magento/CatalogUrlRewrite/Observer/CategoryProcessUrlRewriteSavingObserver.php
index 0911bdb8a2d..b864285b06a 100644
--- a/app/code/Magento/CatalogUrlRewrite/Observer/CategoryProcessUrlRewriteSavingObserver.php
+++ b/app/code/Magento/CatalogUrlRewrite/Observer/CategoryProcessUrlRewriteSavingObserver.php
@@ -42,9 +42,9 @@ class CategoryProcessUrlRewriteSavingObserver implements ObserverInterface
         UrlRewriteHandler $urlRewriteHandler,
         UrlRewriteBunchReplacer $urlRewriteBunchReplacer,
         DatabaseMapPool $databaseMapPool,
-        array $dataUrlRewriteClassNames = [
-            DataCategoryUrlRewriteDatabaseMap::class,
-            DataProductUrlRewriteDatabaseMap::class
+        $dataUrlRewriteClassNames = [
+        DataCategoryUrlRewriteDatabaseMap::class,
+        DataProductUrlRewriteDatabaseMap::class
         ]
     ) {
         $this->categoryUrlRewriteGenerator = $categoryUrlRewriteGenerator;
diff --git a/app/code/Magento/CatalogUrlRewrite/Observer/UrlRewriteHandler.php b/app/code/Magento/CatalogUrlRewrite/Observer/UrlRewriteHandler.php
index 028c86b046e..464824e7eef 100644
--- a/app/code/Magento/CatalogUrlRewrite/Observer/UrlRewriteHandler.php
+++ b/app/code/Magento/CatalogUrlRewrite/Observer/UrlRewriteHandler.php
@@ -13,7 +13,7 @@ use Magento\Framework\App\ObjectManager;
 use Magento\Framework\Event\Observer as EventObserver;
 use Magento\UrlRewrite\Model\UrlPersistInterface;
 use Magento\UrlRewrite\Service\V1\Data\UrlRewrite;
-use Magento\UrlRewrite\Model\UrlRewritesSetFactory;
+use Magento\UrlRewrite\Model\MergeDataProviderFactory;
 
 class UrlRewriteHandler
 {
@@ -40,8 +40,8 @@ class UrlRewriteHandler
      */
     private $categoryBasedProductRewriteGenerator;
 
-    /** @var \Magento\UrlRewrite\Model\UrlRewritesSet */
-    private $urlRewritesSetPrototype;
+    /** @var \Magento\UrlRewrite\Model\MergeDataProvider */
+    private $mergeDataProviderPrototype;
 
     /**
      * @param \Magento\CatalogUrlRewrite\Model\Category\ChildrenCategoriesProvider $childrenCategoriesProvider
@@ -49,7 +49,7 @@ class UrlRewriteHandler
      * @param ProductUrlRewriteGenerator $productUrlRewriteGenerator
      * @param UrlPersistInterface $urlPersist
      * @param \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory
-     * @param \Magento\UrlRewrite\Model\UrlRewritesSetFactory|null $urlRewritesSetFactory
+     * @param \Magento\UrlRewrite\Model\MergeDataProviderFactory|null $mergeDataProviderFactory
      */
     public function __construct(
         \Magento\CatalogUrlRewrite\Model\Category\ChildrenCategoriesProvider $childrenCategoriesProvider,
@@ -57,16 +57,16 @@ class UrlRewriteHandler
         ProductUrlRewriteGenerator $productUrlRewriteGenerator,
         UrlPersistInterface $urlPersist,
         \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,
-        UrlRewritesSetFactory $urlRewritesSetFactory = null
+        MergeDataProviderFactory $mergeDataProviderFactory = null
     ) {
         $this->childrenCategoriesProvider = $childrenCategoriesProvider;
         $this->categoryUrlRewriteGenerator = $categoryUrlRewriteGenerator;
         $this->productUrlRewriteGenerator = $productUrlRewriteGenerator;
         $this->urlPersist = $urlPersist;
         $this->productCollectionFactory = $productCollectionFactory;
-        $urlRewritesSetFactory = $urlRewritesSetFactory ?: ObjectManager::getInstance()
-            ->get(UrlRewritesSetFactory::class);
-        $this->urlRewritesSetPrototype = $urlRewritesSetFactory->create();
+        $mergeDataProviderFactory = $mergeDataProviderFactory ?: ObjectManager::getInstance()
+            ->get(MergeDataProviderFactory::class);
+        $this->mergeDataProviderPrototype = $mergeDataProviderFactory->create();
     }
 
     /**
@@ -77,7 +77,7 @@ class UrlRewriteHandler
      */
     public function generateProductUrlRewrites(Category $category)
     {
-        $urlRewritesSet = clone $this->urlRewritesSetPrototype;
+        $mergeDataProvider = clone $this->mergeDataProviderPrototype;
         $this->isSkippedProduct = [];
         $saveRewriteHistory = $category->getData('save_rewrites_history');
         $storeId = $category->getStoreId();
@@ -93,12 +93,12 @@ class UrlRewriteHandler
             foreach ($collection as $product) {
                 $product->setStoreId($storeId);
                 $product->setData('save_rewrites_history', $saveRewriteHistory);
-                $urlRewritesSet->merge(
+                $mergeDataProvider->merge(
                     $this->productUrlRewriteGenerator->generate($product, $category->getEntityId())
                 );
             }
         } else {
-            $urlRewritesSet->merge(
+            $mergeDataProvider->merge(
                 $this->getCategoryProductsUrlRewrites(
                     $category,
                     $storeId,
@@ -108,7 +108,7 @@ class UrlRewriteHandler
             );
         }
         foreach ($this->childrenCategoriesProvider->getChildren($category, true) as $childCategory) {
-            $urlRewritesSet->merge(
+            $mergeDataProvider->merge(
                 $this->getCategoryProductsUrlRewrites(
                     $childCategory,
                     $storeId,
@@ -118,7 +118,7 @@ class UrlRewriteHandler
             );
         }
 
-        return $urlRewritesSet->getData();
+        return $mergeDataProvider->getData();
     }
 
     /**
@@ -134,7 +134,7 @@ class UrlRewriteHandler
         $saveRewriteHistory,
         $rootCategoryId = null
     ) {
-        $urlRewritesSet = clone $this->urlRewritesSetPrototype;
+        $mergeDataProvider = clone $this->mergeDataProviderPrototype;
         /** @var \Magento\Catalog\Model\ResourceModel\Product\Collection $productCollection */
         $productCollection = $category->getProductCollection()
             ->addAttributeToSelect('name')
@@ -148,12 +148,12 @@ class UrlRewriteHandler
             $this->isSkippedProduct[] = $product->getId();
             $product->setStoreId($storeId);
             $product->setData('save_rewrites_history', $saveRewriteHistory);
-            $urlRewritesSet->merge(
+            $mergeDataProvider->merge(
                 $this->getCategoryBasedProductRewriteGenerator()->generate($product, $category, $rootCategoryId)
             );
         }
 
-        return $urlRewritesSet->getData();
+        return $mergeDataProvider->getData();
     }
 
     /**
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/ChildrenUrlRewriteGeneratorTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/ChildrenUrlRewriteGeneratorTest.php
index 99553f81410..f41d35f7688 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/ChildrenUrlRewriteGeneratorTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/ChildrenUrlRewriteGeneratorTest.php
@@ -25,7 +25,7 @@ class ChildrenUrlRewriteGeneratorTest extends \PHPUnit_Framework_TestCase
     private $categoryUrlRewriteGenerator;
 
     /** @var \PHPUnit_Framework_MockObject_MockObject */
-    private $urlRewritesSet;
+    private $mergeDataProvider;
 
     protected function setUp()
     {
@@ -40,22 +40,22 @@ class ChildrenUrlRewriteGeneratorTest extends \PHPUnit_Framework_TestCase
         $this->categoryUrlRewriteGenerator = $this->getMockBuilder(
             \Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGenerator::class
         )->disableOriginalConstructor()->getMock();
-        $urlRewritesSetFactory = $this->getMock(
-            \Magento\UrlRewrite\Model\UrlRewritesSetFactory::class,
+        $mergeDataProviderFactory = $this->getMock(
+            \Magento\UrlRewrite\Model\MergeDataProviderFactory::class,
             ['create'],
             [],
             '',
             false
         );
-        $this->urlRewritesSet = new \Magento\UrlRewrite\Model\UrlRewritesSet;
-        $urlRewritesSetFactory->expects($this->once())->method('create')->willReturn($this->urlRewritesSet);
+        $this->mergeDataProvider = new \Magento\UrlRewrite\Model\MergeDataProvider;
+        $mergeDataProviderFactory->expects($this->once())->method('create')->willReturn($this->mergeDataProvider);
 
         $this->childrenUrlRewriteGenerator = (new ObjectManager($this))->getObject(
             \Magento\CatalogUrlRewrite\Model\Category\ChildrenUrlRewriteGenerator::class,
             [
                 'childrenCategoriesProvider' => $this->childrenCategoriesProvider,
                 'categoryUrlRewriteGeneratorFactory' => $this->categoryUrlRewriteGeneratorFactory,
-                'urlRewritesSetFactory' => $urlRewritesSetFactory
+                'mergeDataProviderFactory' => $mergeDataProviderFactory
             ]
         );
     }
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/CurrentUrlRewritesRegeneratorTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/CurrentUrlRewritesRegeneratorTest.php
index 8a5bb18a6f3..483df828fb0 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/CurrentUrlRewritesRegeneratorTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/CurrentUrlRewritesRegeneratorTest.php
@@ -29,10 +29,10 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
     private $urlRewrite;
 
     /** @var \PHPUnit_Framework_MockObject_MockObject */
-    private $urlRewritesSet;
+    private $mergeDataProvider;
 
     /** @var \PHPUnit_Framework_MockObject_MockObject */
-    private $urlRewriteMap;
+    private $urlRewriteFinder;
 
     protected function setUp()
     {
@@ -46,34 +46,34 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
         $this->categoryUrlPathGenerator = $this->getMockBuilder(
             \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator::class
         )->disableOriginalConstructor()->getMock();
-        $this->urlRewriteMap = $this->getMockBuilder(\Magento\CatalogUrlRewrite\Model\Map\UrlRewriteFinder::class)
+        $this->urlRewriteFinder = $this->getMockBuilder(\Magento\CatalogUrlRewrite\Model\Map\UrlRewriteFinder::class)
             ->disableOriginalConstructor()->getMock();
         $this->urlRewriteFactory->expects($this->once())->method('create')
             ->willReturn($this->urlRewrite);
-        $urlRewritesSetFactory = $this->getMock(
-            \Magento\UrlRewrite\Model\UrlRewritesSetFactory::class,
+        $mergeDataProviderFactory = $this->getMock(
+            \Magento\UrlRewrite\Model\MergeDataProviderFactory::class,
             ['create'],
             [],
             '',
             false
         );
-        $this->urlRewritesSet = new \Magento\UrlRewrite\Model\UrlRewritesSet;
-        $urlRewritesSetFactory->expects($this->once())->method('create')->willReturn($this->urlRewritesSet);
+        $this->mergeDataProvider = new \Magento\UrlRewrite\Model\MergeDataProvider;
+        $mergeDataProviderFactory->expects($this->once())->method('create')->willReturn($this->mergeDataProvider);
 
         $this->currentUrlRewritesRegenerator = (new ObjectManager($this))->getObject(   
             \Magento\CatalogUrlRewrite\Model\Category\CurrentUrlRewritesRegenerator::class,
             [
                 'categoryUrlPathGenerator' => $this->categoryUrlPathGenerator,
                 'urlRewriteFactory' => $this->urlRewriteFactory,
-                'urlRewritesSetFactory' => $urlRewritesSetFactory,
-                'urlRewriteMap' => $this->urlRewriteMap
+                'mergeDataProviderFactory' => $mergeDataProviderFactory,
+                'urlRewriteFinder' => $this->urlRewriteFinder
             ]
         );
     }
 
     public function testIsAutogeneratedWithoutSaveRewriteHistory()
     {
-        $this->urlRewriteMap->expects($this->once())->method('getByIdentifiers')
+        $this->urlRewriteFinder->expects($this->once())->method('findAllByData')
             ->will($this->returnValue($this->getCurrentRewritesMocks([[UrlRewrite::IS_AUTOGENERATED => 1]])));
         $this->category->expects($this->once())->method('getData')->with('save_rewrites_history')
             ->will($this->returnValue(false));
@@ -86,7 +86,7 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
 
     public function testSkipGenerationForAutogenerated()
     {
-        $this->urlRewriteMap->expects($this->once())->method('getByIdentifiers')
+        $this->urlRewriteFinder->expects($this->once())->method('findAllByData')
             ->will(
                 $this->returnValue(
                     $this->getCurrentRewritesMocks(
@@ -113,7 +113,7 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
         $targetPath = 'some-path.html';
         $storeId = 2;
         $categoryId = 12;
-        $this->urlRewriteMap->expects($this->once())->method('getByIdentifiers')
+        $this->urlRewriteFinder->expects($this->once())->method('findAllByData')
             ->will(
                 $this->returnValue(
                     $this->getCurrentRewritesMocks(
@@ -146,7 +146,7 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
 
     public function testSkipGenerationForCustom()
     {
-        $this->urlRewriteMap->expects($this->once())->method('getByIdentifiers')
+        $this->urlRewriteFinder->expects($this->once())->method('findAllByData')
             ->will(
                 $this->returnValue(
                     $this->getCurrentRewritesMocks(
@@ -176,7 +176,7 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
         $requestPath = 'generate-for-custom-without-redirect-type.html';
         $targetPath = 'custom-target-path.html';
         $description = 'description';
-        $this->urlRewriteMap->expects($this->once())->method('getByIdentifiers')
+        $this->urlRewriteFinder->expects($this->once())->method('findAllByData')
             ->will(
                 $this->returnValue(
                     $this->getCurrentRewritesMocks(
@@ -212,7 +212,7 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
         $requestPath = 'generate-for-custom-without-redirect-type.html';
         $targetPath = 'generated-target-path.html';
         $description = 'description';
-        $this->urlRewriteMap->expects($this->once())->method('getByIdentifiers')
+        $this->urlRewriteFinder->expects($this->once())->method('findAllByData')
             ->will(
                 $this->returnValue(
                     $this->getCurrentRewritesMocks(
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/CategoryUrlRewriteGeneratorTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/CategoryUrlRewriteGeneratorTest.php
index 7cef92d7c9a..c3a2ebb47b1 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/CategoryUrlRewriteGeneratorTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/CategoryUrlRewriteGeneratorTest.php
@@ -35,7 +35,7 @@ class CategoryUrlRewriteGeneratorTest extends \PHPUnit_Framework_TestCase
     private $categoryRepository;
 
     /** @var \PHPUnit_Framework_MockObject_MockObject */
-    private $urlRewritesSet;
+    private $mergeDataProvider;
 
     /**
      * Test method
@@ -55,15 +55,15 @@ class CategoryUrlRewriteGeneratorTest extends \PHPUnit_Framework_TestCase
             ->disableOriginalConstructor()->getMock();
         $this->category = $this->getMock(\Magento\Catalog\Model\Category::class, [], [], '', false);
         $this->categoryRepository = $this->getMock(\Magento\Catalog\Api\CategoryRepositoryInterface::class);
-        $urlRewritesSetFactory = $this->getMock(
-            \Magento\UrlRewrite\Model\UrlRewritesSetFactory::class,
+        $mergeDataProviderFactory = $this->getMock(
+            \Magento\UrlRewrite\Model\MergeDataProviderFactory::class,
             ['create'],
             [],
             '',
             false
         );
-        $this->urlRewritesSet = new \Magento\UrlRewrite\Model\UrlRewritesSet;
-        $urlRewritesSetFactory->expects($this->once())->method('create')->willReturn($this->urlRewritesSet);
+        $this->mergeDataProvider = new \Magento\UrlRewrite\Model\MergeDataProvider;
+        $mergeDataProviderFactory->expects($this->once())->method('create')->willReturn($this->mergeDataProvider);
 
         $this->categoryUrlRewriteGenerator = (new ObjectManager($this))->getObject(
             \Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGenerator::class,
@@ -73,7 +73,7 @@ class CategoryUrlRewriteGeneratorTest extends \PHPUnit_Framework_TestCase
                 'currentUrlRewritesRegenerator' => $this->currentUrlRewritesRegenerator,
                 'storeViewService' => $this->storeViewService,
                 'categoryRepository' => $this->categoryRepository,
-                'urlRewritesSetFactory' => $urlRewritesSetFactory
+                'mergeDataProviderFactory' => $mergeDataProviderFactory
             ]
         );
     }
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataCategoryHashMapTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataCategoryHashMapTest.php
index bdca177eee3..1df5391f9d9 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataCategoryHashMapTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataCategoryHashMapTest.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\CatalogUrlRewrite\Test\Unit\Model\Map;
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataCategoryUrlRewriteDatabaseMapTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataCategoryUrlRewriteDatabaseMapTest.php
index 396e00310fe..7891c56be13 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataCategoryUrlRewriteDatabaseMapTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataCategoryUrlRewriteDatabaseMapTest.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\CatalogUrlRewrite\Test\Unit\Model\Map;
@@ -22,7 +22,7 @@ use Magento\Framework\DB\TemporaryTableService;
 class DataCategoryUrlRewriteDatabaseMapTest extends \PHPUnit_Framework_TestCase
 {
     /** @var HashMapPool|\PHPUnit_Framework_MockObject_MockObject */
-    private $dataMapPoolMock;
+    private $hashMapPoolMock;
 
     /** @var DataCategoryHashMap|\PHPUnit_Framework_MockObject_MockObject */
     private $dataCategoryMapMock;
@@ -41,7 +41,7 @@ class DataCategoryUrlRewriteDatabaseMapTest extends \PHPUnit_Framework_TestCase
 
     protected function setUp()
     {
-        $this->dataMapPoolMock = $this->getMock(HashMapPool::class, [], [], '', false);
+        $this->hashMapPoolMock = $this->getMock(HashMapPool::class, [], [], '', false);
         $this->dataCategoryMapMock = $this->getMock(DataProductHashMap::class, [], [], '', false);
         $this->dataCategoryUsedInProductsMapMock = $this->getMock(
             DataCategoryUsedInProductsHashMap::class,
@@ -53,7 +53,7 @@ class DataCategoryUrlRewriteDatabaseMapTest extends \PHPUnit_Framework_TestCase
         $this->temporaryTableServiceMock = $this->getMock(TemporaryTableService::class, [], [], '', false);
         $this->connectionMock = $this->getMock(ResourceConnection::class, [], [], '', false);
 
-        $this->dataMapPoolMock->expects($this->any())
+        $this->hashMapPoolMock->expects($this->any())
             ->method('getDataMap')
             ->willReturnOnConsecutiveCalls($this->dataCategoryUsedInProductsMapMock, $this->dataCategoryMapMock);
 
@@ -61,7 +61,7 @@ class DataCategoryUrlRewriteDatabaseMapTest extends \PHPUnit_Framework_TestCase
             DataCategoryUrlRewriteDatabaseMap::class,
             [
                 'connection' => $this->connectionMock,
-                'dataMapPool' => $this->dataMapPoolMock,
+                'hashMapPool' => $this->hashMapPoolMock,
                 'temporaryTableService' => $this->temporaryTableServiceMock
             ]
         );
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataCategoryUsedInProductsHashMapTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataCategoryUsedInProductsHashMapTest.php
index 0647c30b43f..74353d3a924 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataCategoryUsedInProductsHashMapTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataCategoryUsedInProductsHashMapTest.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\CatalogUrlRewrite\Test\Unit\Model\Map;
@@ -20,7 +20,7 @@ use Magento\Framework\App\ResourceConnection;
 class DataCategoryUsedInProductsHashMapTest extends \PHPUnit_Framework_TestCase
 {
     /** @var HashMapPool|\PHPUnit_Framework_MockObject_MockObject */
-    private $dataMapPoolMock;
+    private $hashMapPoolMock;
 
     /** @var DataCategoryHashMap|\PHPUnit_Framework_MockObject_MockObject */
     private $dataCategoryMapMock;
@@ -36,12 +36,12 @@ class DataCategoryUsedInProductsHashMapTest extends \PHPUnit_Framework_TestCase
 
     protected function setUp()
     {
-        $this->dataMapPoolMock = $this->getMock(HashMapPool::class, [], [], '', false);
+        $this->hashMapPoolMock = $this->getMock(HashMapPool::class, [], [], '', false);
         $this->dataCategoryMapMock = $this->getMock(DataCategoryHashMap::class, [], [], '', false);
         $this->dataProductMapMock = $this->getMock(DataProductHashMap::class, [], [], '', false);
         $this->connectionMock = $this->getMock(ResourceConnection::class, [], [], '', false);
 
-        $this->dataMapPoolMock->expects($this->any())
+        $this->hashMapPoolMock->expects($this->any())
             ->method('getDataMap')
             ->willReturnOnConsecutiveCalls(
                 $this->dataProductMapMock,
@@ -56,7 +56,7 @@ class DataCategoryUsedInProductsHashMapTest extends \PHPUnit_Framework_TestCase
             DataCategoryUsedInProductsHashMap::class,
             [
                 'connection' => $this->connectionMock,
-                'hashMapPool' => $this->dataMapPoolMock
+                'hashMapPool' => $this->hashMapPoolMock
             ]
         );
     }
@@ -90,11 +90,11 @@ class DataCategoryUsedInProductsHashMapTest extends \PHPUnit_Framework_TestCase
         $selectMock->expects($this->any())
             ->method('where')
             ->willReturnSelf();
-        $this->dataMapPoolMock->expects($this->at(4))
-            ->method('resetDataMap')
+        $this->hashMapPoolMock->expects($this->at(4))
+            ->method('resetMap')
             ->with(DataProductHashMap::class, 1);
-        $this->dataMapPoolMock->expects($this->at(5))
-            ->method('resetDataMap')
+        $this->hashMapPoolMock->expects($this->at(5))
+            ->method('resetMap')
             ->with(DataCategoryHashMap::class, 1);
 
         $this->assertEquals($categoryIds, $this->model->getAllData(1));
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataProductHashMapTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataProductHashMapTest.php
index 024c3ee4911..53e4d225977 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataProductHashMapTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataProductHashMapTest.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\CatalogUrlRewrite\Test\Unit\Model\Map;
@@ -24,7 +24,7 @@ use Magento\Catalog\Model\ResourceModel\Product\Collection as ProductCollection;
 class DataProductHashMapTest extends \PHPUnit_Framework_TestCase
 {
     /** @var HashMapPool|\PHPUnit_Framework_MockObject_MockObject */
-    private $dataMapPoolMock;
+    private $hashMapPoolMock;
 
     /** @var DataCategoryHashMap|\PHPUnit_Framework_MockObject_MockObject */
     private $dataCategoryMapMock;
@@ -44,7 +44,7 @@ class DataProductHashMapTest extends \PHPUnit_Framework_TestCase
 
     protected function setUp()
     {
-        $this->dataMapPoolMock = $this->getMock(HashMapPool::class, [], [], '', false);
+        $this->hashMapPoolMock = $this->getMock(HashMapPool::class, [], [], '', false);
         $this->dataCategoryMapMock = $this->getMock(DataCategoryHashMap::class, [], [], '', false);
         $this->collectionFactoryMock = $this->getMock(CollectionFactory::class, ['create'], [], '', false);
         $this->productCollectionMock = $this->getMock(
@@ -59,7 +59,7 @@ class DataProductHashMapTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->willReturn($this->productCollectionMock);
 
-        $this->dataMapPoolMock->expects($this->any())
+        $this->hashMapPoolMock->expects($this->any())
             ->method('getDataMap')
             ->willReturn($this->dataCategoryMapMock);
 
@@ -67,7 +67,7 @@ class DataProductHashMapTest extends \PHPUnit_Framework_TestCase
             DataProductHashMap::class,
             [
                 'collectionFactory' => $this->collectionFactoryMock,
-                'hashMapPool' => $this->dataMapPoolMock
+                'hashMapPool' => $this->hashMapPoolMock
             ]
         );
     }
@@ -107,8 +107,8 @@ class DataProductHashMapTest extends \PHPUnit_Framework_TestCase
         $this->dataCategoryMapMock->expects($this->any())
             ->method('getAllData')
             ->willReturn([]);
-        $this->dataMapPoolMock->expects($this->any())
-            ->method('resetDataMap')
+        $this->hashMapPoolMock->expects($this->any())
+            ->method('resetMap')
             ->with(DataCategoryHashMap::class, 1);
         $this->assertEquals($productIds, $this->model->getAllData(1));
         $this->assertEquals($productIds[2], $this->model->getData(1, 2));
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataProductUrlRewriteDatabaseMapTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataProductUrlRewriteDatabaseMapTest.php
index 5999b884a47..d283c6d3f04 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataProductUrlRewriteDatabaseMapTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/DataProductUrlRewriteDatabaseMapTest.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\CatalogUrlRewrite\Test\Unit\Model\Map;
@@ -20,7 +20,7 @@ use Magento\Framework\DB\TemporaryTableService;
 class DataProductUrlRewriteDatabaseMapTest extends \PHPUnit_Framework_TestCase
 {
     /** @var HashMapPool|\PHPUnit_Framework_MockObject_MockObject */
-    private $dataMapPoolMock;
+    private $hashMapPoolMock;
 
     /** @var DataProductHashMap|\PHPUnit_Framework_MockObject_MockObject */
     private $dataProductMapMock;
@@ -36,12 +36,12 @@ class DataProductUrlRewriteDatabaseMapTest extends \PHPUnit_Framework_TestCase
 
     protected function setUp()
     {
-        $this->dataMapPoolMock = $this->getMock(HashMapPool::class, [], [], '', false);
+        $this->hashMapPoolMock = $this->getMock(HashMapPool::class, [], [], '', false);
         $this->dataProductMapMock = $this->getMock(DataProductHashMap::class, [], [], '', false);
         $this->temporaryTableServiceMock = $this->getMock(TemporaryTableService::class, [], [], '', false);
         $this->connectionMock = $this->getMock(ResourceConnection::class, [], [], '', false);
 
-        $this->dataMapPoolMock->expects($this->any())
+        $this->hashMapPoolMock->expects($this->any())
             ->method('getDataMap')
             ->willReturn($this->dataProductMapMock);
 
@@ -49,7 +49,7 @@ class DataProductUrlRewriteDatabaseMapTest extends \PHPUnit_Framework_TestCase
             DataProductUrlRewriteDatabaseMap::class,
             [
                 'connection' => $this->connectionMock,
-                'dataMapPool' => $this->dataMapPoolMock,
+                'hashMapPool' => $this->hashMapPoolMock,
                 'temporaryTableService' => $this->temporaryTableServiceMock
             ]
         );
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/HashMapPoolTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/HashMapPoolTest.php
index 213e56595e9..d9351b4e426 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/HashMapPoolTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/HashMapPoolTest.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\CatalogUrlRewrite\Test\Unit\Model\Map;
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/UrlRewriteFinderTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/UrlRewriteFinderTest.php
index 6b79d5e2f8a..2a8149960c6 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/UrlRewriteFinderTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/UrlRewriteFinderTest.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\CatalogUrlRewrite\Test\Unit\Model\Map;
@@ -20,7 +20,7 @@ use Magento\CatalogUrlRewrite\Model\Map\DataProductUrlRewriteDatabaseMap;
 class UrlRewriteFinderTest extends \PHPUnit_Framework_TestCase
 {
     /** @var DatabaseMapPool|\PHPUnit_Framework_MockObject_MockObject */
-    private $dataMapPoolMock;
+    private $databaseMapPoolMock;
 
     /** @var UrlRewriteFactory|\PHPUnit_Framework_MockObject_MockObject */
     private $urlRewriteFactoryMock;
@@ -36,7 +36,7 @@ class UrlRewriteFinderTest extends \PHPUnit_Framework_TestCase
 
     protected function setUp()
     {
-        $this->dataMapPoolMock = $this->getMock(DatabaseMapPool::class, [], [], '', false);
+        $this->databaseMapPoolMock = $this->getMock(DatabaseMapPool::class, [], [], '', false);
         $this->urlFinderMock = $this->getMock(UrlFinderInterface::class);
         $this->urlRewriteFactoryMock = $this->getMock(UrlRewriteFactory::class, ['create'], [], '', false);
         $this->urlRewritePrototypeMock = new UrlRewrite();
@@ -48,7 +48,7 @@ class UrlRewriteFinderTest extends \PHPUnit_Framework_TestCase
         $this->model = (new ObjectManager($this))->getObject(
             UrlRewriteFinder::class,
             [
-                'databaseMapPool' => $this->dataMapPoolMock,
+                'databaseMapPool' => $this->databaseMapPoolMock,
                 'urlFinder' => $this->urlFinderMock,
                 'urlRewriteFactory' => $this->urlRewriteFactoryMock
             ]
@@ -56,12 +56,12 @@ class UrlRewriteFinderTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * test getByIdentifiers using findAllByData
+     * test findAllByData using urlFinder
      */
     public function testGetByIdentifiersFallback()
     {
         $expected = [1, 2, 3];
-        $this->dataMapPoolMock->expects($this->never())
+        $this->databaseMapPoolMock->expects($this->never())
             ->method('getDataMap');
 
         $this->urlFinderMock->expects($this->exactly(7))
@@ -78,7 +78,7 @@ class UrlRewriteFinderTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * test getByIdentifiers Product URL rewrites
+     * test findAllByData Product URL rewrites
      */
     public function testGetByIdentifiersProduct()
     {
@@ -98,7 +98,7 @@ class UrlRewriteFinderTest extends \PHPUnit_Framework_TestCase
         ];
 
         $dataProductMapMock = $this->getMock(DataProductUrlRewriteDatabaseMap::class, [], [], '', false);
-        $this->dataMapPoolMock->expects($this->once())
+        $this->databaseMapPoolMock->expects($this->once())
             ->method('getDataMap')
             ->with(DataProductUrlRewriteDatabaseMap::class, 1)
             ->willReturn($dataProductMapMock);
@@ -116,7 +116,7 @@ class UrlRewriteFinderTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
-     * test getByIdentifiers Category URL rewrites
+     * test findAllByData Category URL rewrites
      */
     public function testGetByIdentifiersCategory()
     {
@@ -136,7 +136,7 @@ class UrlRewriteFinderTest extends \PHPUnit_Framework_TestCase
         ];
 
         $dataCategoryMapMock = $this->getMock(DataCategoryUrlRewriteDatabaseMap::class, [], [], '', false);
-        $this->dataMapPoolMock->expects($this->once())
+        $this->databaseMapPoolMock->expects($this->once())
             ->method('getDataMap')
             ->with(DataCategoryUrlRewriteDatabaseMap::class, 1)
             ->willReturn($dataCategoryMapMock);
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Product/CurrentUrlRewritesRegeneratorTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Product/CurrentUrlRewritesRegeneratorTest.php
index e96e6a66d6c..b5515c2c254 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Product/CurrentUrlRewritesRegeneratorTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Product/CurrentUrlRewritesRegeneratorTest.php
@@ -37,10 +37,10 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
     private $urlRewrite;
 
     /** @var \PHPUnit_Framework_MockObject_MockObject */
-    private $urlRewritesSet;
+    private $mergeDataProvider;
 
     /** @var \PHPUnit_Framework_MockObject_MockObject */
-    private $urlRewriteMap;
+    private $urlRewriteFinder;
 
     protected function setUp()
     {
@@ -55,36 +55,36 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
             ->disableOriginalConstructor()->getMock();
         $this->objectRegistry = $this->getMockBuilder(\Magento\CatalogUrlRewrite\Model\ObjectRegistry::class)
             ->disableOriginalConstructor()->getMock();
-        $this->urlRewriteMap = $this->getMockBuilder(\Magento\CatalogUrlRewrite\Model\Map\UrlRewriteFinder::class)
+        $this->urlRewriteFinder = $this->getMockBuilder(\Magento\CatalogUrlRewrite\Model\Map\UrlRewriteFinder::class)
             ->disableOriginalConstructor()->getMock();
         $this->urlRewriteFactory->expects($this->once())->method('create')
             ->willReturn($this->urlRewrite);
         $this->productUrlPathGenerator = $this->getMockBuilder(
             \Magento\CatalogUrlRewrite\Model\ProductUrlPathGenerator::class
         )->disableOriginalConstructor()->getMock();
-        $urlRewritesSetFactory = $this->getMock(
-            \Magento\UrlRewrite\Model\UrlRewritesSetFactory::class,
+        $mergeDataProviderFactory = $this->getMock(
+            \Magento\UrlRewrite\Model\MergeDataProviderFactory::class,
             ['create'],
             [],
             '',
             false
         );
-        $this->urlRewritesSet = new \Magento\UrlRewrite\Model\UrlRewritesSet;
-        $urlRewritesSetFactory->expects($this->once())->method('create')->willReturn($this->urlRewritesSet);
+        $this->mergeDataProvider = new \Magento\UrlRewrite\Model\MergeDataProvider;
+        $mergeDataProviderFactory->expects($this->once())->method('create')->willReturn($this->mergeDataProvider);
         $this->currentUrlRewritesRegenerator = (new ObjectManager($this))->getObject(
             \Magento\CatalogUrlRewrite\Model\Product\CurrentUrlRewritesRegenerator::class,
             [
                 'productUrlPathGenerator' => $this->productUrlPathGenerator,
                 'urlRewriteFactory' => $this->urlRewriteFactory,
-                'urlRewritesSetFactory' => $urlRewritesSetFactory,
-                'urlRewriteMap' => $this->urlRewriteMap
+                'mergeDataProviderFactory' => $mergeDataProviderFactory,
+                'urlRewriteFinder' => $this->urlRewriteFinder
             ]
         );
     }
 
     public function testIsAutogeneratedWithoutSaveRewriteHistory()
     {
-        $this->urlRewriteMap->expects($this->once())->method('getByIdentifiers')
+        $this->urlRewriteFinder->expects($this->once())->method('findAllByData')
             ->will($this->returnValue($this->getCurrentRewritesMocks([[UrlRewrite::IS_AUTOGENERATED => 1]])));
         $this->product->expects($this->once())->method('getData')->with('save_rewrites_history')
             ->will($this->returnValue(false));
@@ -97,7 +97,7 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
 
     public function testSkipGenerationForAutogenerated()
     {
-        $this->urlRewriteMap->expects($this->once())->method('getByIdentifiers')
+        $this->urlRewriteFinder->expects($this->once())->method('findAllByData')
             ->will($this->returnValue($this->getCurrentRewritesMocks([
                 [UrlRewrite::IS_AUTOGENERATED => 1, UrlRewrite::REQUEST_PATH => 'same-path'],
             ])));
@@ -120,7 +120,7 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
         $storeId = 2;
         $productId = 12;
         $description = 'description';
-        $this->urlRewriteMap->expects($this->once())->method('getByIdentifiers')
+        $this->urlRewriteFinder->expects($this->once())->method('findAllByData')
             ->will($this->returnValue($this->getCurrentRewritesMocks([
                 [
                     UrlRewrite::REQUEST_PATH => $requestPath,
@@ -163,7 +163,7 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
         $storeId = 2;
         $metadata = ['category_id' => 2, 'some_another_data' => 1];
         $description = 'description';
-        $this->urlRewriteMap->expects($this->once())->method('getByIdentifiers')
+        $this->urlRewriteFinder->expects($this->once())->method('findAllByData')
             ->will($this->returnValue($this->getCurrentRewritesMocks([
                 [
                     UrlRewrite::REQUEST_PATH => $requestPath,
@@ -199,7 +199,7 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
 
     public function testSkipGenerationForCustom()
     {
-        $this->urlRewriteMap->expects($this->once())->method('getByIdentifiers')
+        $this->urlRewriteFinder->expects($this->once())->method('findAllByData')
             ->will($this->returnValue($this->getCurrentRewritesMocks([
                 [
                     UrlRewrite::IS_AUTOGENERATED => 0,
@@ -224,7 +224,7 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
         $targetPath = 'custom-target-path.html';
         $autoGenerated = 0;
         $description = 'description';
-        $this->urlRewriteMap->expects($this->once())->method('getByIdentifiers')
+        $this->urlRewriteFinder->expects($this->once())->method('findAllByData')
             ->will($this->returnValue($this->getCurrentRewritesMocks([
                 [
                     UrlRewrite::REQUEST_PATH => $requestPath,
@@ -262,7 +262,7 @@ class CurrentUrlRewritesRegeneratorTest extends \PHPUnit_Framework_TestCase
         $targetPath = 'generated-target-path.html';
         $autoGenerated = 0;
         $description = 'description';
-        $this->urlRewriteMap->expects($this->once())->method('getByIdentifiers')
+        $this->urlRewriteFinder->expects($this->once())->method('findAllByData')
             ->will($this->returnValue($this->getCurrentRewritesMocks([
                 [
                     UrlRewrite::REQUEST_PATH => $requestPath,
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/ProductScopeRewriteGeneratorTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/ProductScopeRewriteGeneratorTest.php
index a670b96b3fa..15d93a5026f 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/ProductScopeRewriteGeneratorTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/ProductScopeRewriteGeneratorTest.php
@@ -42,7 +42,7 @@ class ProductScopeRewriteGeneratorTest extends \PHPUnit_Framework_TestCase
     private $productScopeGenerator;
 
     /** @var \PHPUnit_Framework_MockObject_MockObject */
-    private $urlRewritesSet;
+    private $mergeDataProvider;
 
     public function setUp()
     {
@@ -64,15 +64,15 @@ class ProductScopeRewriteGeneratorTest extends \PHPUnit_Framework_TestCase
         $this->storeViewService = $this->getMockBuilder(\Magento\CatalogUrlRewrite\Service\V1\StoreViewService::class)
             ->disableOriginalConstructor()->getMock();
         $this->storeManager = $this->getMock(StoreManagerInterface::class);
-        $urlRewritesSetFactory = $this->getMock(
-            \Magento\UrlRewrite\Model\UrlRewritesSetFactory::class,
+        $mergeDataProviderFactory = $this->getMock(
+            \Magento\UrlRewrite\Model\MergeDataProviderFactory::class,
             ['create'],
             [],
             '',
             false
         );
-        $this->urlRewritesSet = new \Magento\UrlRewrite\Model\UrlRewritesSet;
-        $urlRewritesSetFactory->expects($this->once())->method('create')->willReturn($this->urlRewritesSet);
+        $this->mergeDataProvider = new \Magento\UrlRewrite\Model\MergeDataProvider;
+        $mergeDataProviderFactory->expects($this->once())->method('create')->willReturn($this->mergeDataProvider);
 
         $this->productScopeGenerator = (new ObjectManager($this))->getObject(
             \Magento\CatalogUrlRewrite\Model\ProductScopeRewriteGenerator::class,
@@ -84,7 +84,7 @@ class ProductScopeRewriteGeneratorTest extends \PHPUnit_Framework_TestCase
                 'objectRegistryFactory' => $this->objectRegistryFactory,
                 'storeViewService' => $this->storeViewService,
                 'storeManager' => $this->storeManager,
-                'urlRewritesSetFactory' => $urlRewritesSetFactory
+                'mergeDataProviderFactory' => $mergeDataProviderFactory
             ]
         );
     }
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/AfterImportDataObserverTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/AfterImportDataObserverTest.php
index eaaf460008c..069fa1a859a 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/AfterImportDataObserverTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/AfterImportDataObserverTest.php
@@ -110,8 +110,8 @@ class AfterImportDataObserverTest extends \PHPUnit_Framework_TestCase
      */
     private $product;
 
-    /** @var \Magento\UrlRewrite\Model\UrlRewritesSet|\PHPUnit_Framework_MockObject_MockObject */
-    private $urlRewritesSet;
+    /** @var \Magento\UrlRewrite\Model\MergeDataProvider|\PHPUnit_Framework_MockObject_MockObject */
+    private $mergeDataProvider;
 
     /**
      * Test products returned by getBunch method of event object.
@@ -276,15 +276,15 @@ class AfterImportDataObserverTest extends \PHPUnit_Framework_TestCase
             ->expects($this->any())
             ->method('getCategoryProcessor')
             ->willReturn($categoryProcessor);
-        $urlRewritesSetFactory = $this->getMock(
-            \Magento\UrlRewrite\Model\UrlRewritesSetFactory::class,
+        $mergeDataProviderFactory = $this->getMock(
+            \Magento\UrlRewrite\Model\MergeDataProviderFactory::class,
             ['create'],
             [],
             '',
             false
         );
-        $this->urlRewritesSet = new \Magento\UrlRewrite\Model\UrlRewritesSet;
-        $urlRewritesSetFactory->expects($this->once())->method('create')->willReturn($this->urlRewritesSet);
+        $this->mergeDataProvider = new \Magento\UrlRewrite\Model\MergeDataProvider;
+        $mergeDataProviderFactory->expects($this->once())->method('create')->willReturn($this->mergeDataProvider);
 
         $this->objectManager = new ObjectManager($this);
         $this->import = $this->objectManager->getObject(
@@ -298,7 +298,7 @@ class AfterImportDataObserverTest extends \PHPUnit_Framework_TestCase
                 'urlPersist' => $this->urlPersist,
                 'urlRewriteFactory' => $this->urlRewriteFactory,
                 'urlFinder' => $this->urlFinder,
-                'urlRewritesSetFactory' => $urlRewritesSetFactory
+                'mergeDataProviderFactory' => $mergeDataProviderFactory
             ]
         );
     }
@@ -448,7 +448,7 @@ class AfterImportDataObserverTest extends \PHPUnit_Framework_TestCase
         $this->urlRewriteFactory->expects($this->any())->method('create')->willReturn($this->urlRewrite);
 
         $productUrls = [
-            'requestPath_' => $this->urlRewrite,
+            'requestPath_0' => $this->urlRewrite,
             'requestPath_not global' => $this->urlRewrite
         ];
 
diff --git a/app/code/Magento/UrlRewrite/Model/UrlRewritesSet.php b/app/code/Magento/UrlRewrite/Model/MergeDataProvider.php
similarity index 93%
rename from app/code/Magento/UrlRewrite/Model/UrlRewritesSet.php
rename to app/code/Magento/UrlRewrite/Model/MergeDataProvider.php
index b395a922d65..f37e6cbde7d 100644
--- a/app/code/Magento/UrlRewrite/Model/UrlRewritesSet.php
+++ b/app/code/Magento/UrlRewrite/Model/MergeDataProvider.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\UrlRewrite\Model;
@@ -12,9 +12,10 @@ use Magento\UrlRewrite\Service\V1\Data\UrlRewrite;
  * Removes duplicates for a set/array of Url Rewrites based on the unique key of the url_rewrites table
  *
  */
-class UrlRewritesSet
+class MergeDataProvider
 {
     const SEPARATOR = '_';
+
     /**
      * @var $rewritesArray[]
      */
diff --git a/app/code/Magento/UrlRewrite/Test/Unit/Model/UrlRewritesSetTest.php b/app/code/Magento/UrlRewrite/Test/Unit/Model/MergeDataProviderTest.php
similarity index 92%
rename from app/code/Magento/UrlRewrite/Test/Unit/Model/UrlRewritesSetTest.php
rename to app/code/Magento/UrlRewrite/Test/Unit/Model/MergeDataProviderTest.php
index aaabb1499b7..3e57c7176b7 100644
--- a/app/code/Magento/UrlRewrite/Test/Unit/Model/UrlRewritesSetTest.php
+++ b/app/code/Magento/UrlRewrite/Test/Unit/Model/MergeDataProviderTest.php
@@ -1,18 +1,18 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\UrlRewrite\Test\Unit\Model;
 
-use Magento\UrlRewrite\Model\UrlRewritesSet;
+use Magento\UrlRewrite\Model\MergeDataProvider;
 use Magento\UrlRewrite\Service\V1\Data\UrlRewrite;
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 
-class UrlRewritesSetTest extends \PHPUnit_Framework_TestCase
+class MergeDataProviderTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @var UrlRewritesSet|\PHPUnit_Framework_MockObject_MockObject
+     * @var MergeDataProvider|\PHPUnit_Framework_MockObject_MockObject
      */
     private $urlRewritesSet;
 
@@ -24,7 +24,7 @@ class UrlRewritesSetTest extends \PHPUnit_Framework_TestCase
     protected function setUp()
     {
         $this->urlRewritesSet = (new ObjectManager($this))->getObject(
-            UrlRewritesSet::class,
+            MergeDataProvider::class,
             []
         );
     }
diff --git a/dev/tests/integration/testsuite/Magento/CatalogUrlRewrite/Observer/CategoryProcessUrlRewriteSavingObserverTest.php b/dev/tests/integration/testsuite/Magento/CatalogUrlRewrite/Observer/CategoryProcessUrlRewriteSavingObserverTest.php
index 9f92a2400cf..101ce61c779 100644
--- a/dev/tests/integration/testsuite/Magento/CatalogUrlRewrite/Observer/CategoryProcessUrlRewriteSavingObserverTest.php
+++ b/dev/tests/integration/testsuite/Magento/CatalogUrlRewrite/Observer/CategoryProcessUrlRewriteSavingObserverTest.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\CatalogUrlRewrite\Observer;
diff --git a/lib/internal/Magento/Framework/DB/TemporaryTableService.php b/lib/internal/Magento/Framework/DB/TemporaryTableService.php
index 36223d5b060..afc4d884638 100644
--- a/lib/internal/Magento/Framework/DB/TemporaryTableService.php
+++ b/lib/internal/Magento/Framework/DB/TemporaryTableService.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\Framework\DB;
diff --git a/lib/internal/Magento/Framework/DB/Test/Unit/TemporaryTableServiceTest.php b/lib/internal/Magento/Framework/DB/Test/Unit/TemporaryTableServiceTest.php
index 123592bff8e..4105fefb578 100644
--- a/lib/internal/Magento/Framework/DB/Test/Unit/TemporaryTableServiceTest.php
+++ b/lib/internal/Magento/Framework/DB/Test/Unit/TemporaryTableServiceTest.php
@@ -1,6 +1,6 @@
 <?php
 /**
- * Copyright © 2017 Magento. All rights reserved.
+ * Copyright © 2013-2017 Magento, Inc. All rights reserved.
  * See COPYING.txt for license details.
  */
 namespace Magento\Framework\DB\Test\Unit;
@@ -120,10 +120,10 @@ class TemporaryTableServiceTest extends \PHPUnit_Framework_TestCase
      */
     public function testDropTableWhenCreatedTablesArrayNotEmpty($tableName, $assertion)
     {
-        $createdTables = new \ReflectionProperty($this->temporaryTableService, 'createdTables');
-        $createdTables->setAccessible(true);
-        $createdTables->setValue($this->temporaryTableService, ['tmp_select_table' => $this->adapterMock]);
-        $createdTables->setAccessible(false);
+        $createdTableAdapters = new \ReflectionProperty($this->temporaryTableService, 'createdTableAdapters');
+        $createdTableAdapters->setAccessible(true);
+        $createdTableAdapters->setValue($this->temporaryTableService, ['tmp_select_table' => $this->adapterMock]);
+        $createdTableAdapters->setAccessible(false);
 
         $this->adapterMock->expects($this->any())
             ->method('dropTemporaryTable')
-- 
GitLab