Skip to content

Commit 1a05fb3

Browse files
author
Igor Melnikov
committed
MAGETWO-64224: Remove usages of AttributeCache from customer module
- reducing number of dependencies for AttributeMetadataCache
1 parent 0a6b612 commit 1a05fb3

File tree

2 files changed

+94
-64
lines changed

2 files changed

+94
-64
lines changed

app/code/Magento/Customer/Model/Metadata/AttributeMetadataCache.php

Lines changed: 4 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@
88
use Magento\Framework\App\CacheInterface;
99
use Magento\Framework\App\Cache\StateInterface;
1010
use Magento\Customer\Api\Data\AttributeMetadataInterface;
11-
use Magento\Customer\Api\Data\AttributeMetadataInterfaceFactory;
12-
use Magento\Customer\Api\Data\OptionInterface;
13-
use Magento\Customer\Api\Data\OptionInterfaceFactory;
14-
use Magento\Customer\Api\Data\ValidationRuleInterfaceFactory;
1511
use Magento\Framework\Serialize\SerializerInterface;
1612
use Magento\Eav\Model\Cache\Type;
1713
use Magento\Eav\Model\Entity\Attribute;
@@ -48,20 +44,10 @@ class AttributeMetadataCache
4844
private $isAttributeCacheEnabled;
4945

5046
/**
51-
* @var AttributeMetadataInterfaceFactory
47+
* @var AttributeMetadataFactory
5248
*/
5349
private $attributeMetadataFactory;
5450

55-
/**
56-
* @var OptionInterfaceFactory
57-
*/
58-
private $optionFactory;
59-
60-
/**
61-
* @var ValidationRuleInterfaceFactory
62-
*/
63-
private $validationRuleFactory;
64-
6551
/**
6652
* @var SerializerInterface
6753
*/
@@ -72,24 +58,18 @@ class AttributeMetadataCache
7258
*
7359
* @param CacheInterface $cache
7460
* @param StateInterface $state
75-
* @param AttributeMetadataInterfaceFactory $attributeMetadataFactory
76-
* @param OptionInterfaceFactory $optionFactory
77-
* @param ValidationRuleInterfaceFactory $validationRuleFactory
61+
* @param AttributeMetadataFactory $attributeMetadataFactory
7862
* @param SerializerInterface $serializer
7963
*/
8064
public function __construct(
8165
CacheInterface $cache,
8266
StateInterface $state,
83-
AttributeMetadataInterfaceFactory $attributeMetadataFactory,
84-
OptionInterfaceFactory $optionFactory,
85-
ValidationRuleInterfaceFactory $validationRuleFactory,
67+
AttributeMetadataFactory $attributeMetadataFactory,
8668
SerializerInterface $serializer
8769
) {
8870
$this->cache = $cache;
8971
$this->state = $state;
9072
$this->attributeMetadataFactory = $attributeMetadataFactory;
91-
$this->optionFactory = $optionFactory;
92-
$this->validationRuleFactory = $validationRuleFactory;
9373
$this->serializer = $serializer;
9474
}
9575

@@ -112,7 +92,7 @@ public function load($entityType, $suffix = '')
11292
$attributesData = $this->serializer->unserialize($serializedData);
11393
$attributes = [];
11494
foreach ($attributesData as $key => $attributeData) {
115-
$attributes[$key] = $this->createMetadataAttribute($attributeData);
95+
$attributes[$key] = $this->attributeMetadataFactory->create($attributeData);
11696
}
11797
$this->attributes[$entityType . $suffix] = $attributes;
11898
return $attributes;
@@ -181,44 +161,4 @@ private function isEnabled()
181161
}
182162
return $this->isAttributeCacheEnabled;
183163
}
184-
185-
/**
186-
* Create and populate with data AttributeMetadataInterface
187-
*
188-
* @param array $data
189-
* @return AttributeMetadataInterface
190-
*/
191-
private function createMetadataAttribute($data)
192-
{
193-
if (isset($data[AttributeMetadataInterface::OPTIONS])) {
194-
$data[AttributeMetadataInterface::OPTIONS] = $this->createOptions(
195-
$data[AttributeMetadataInterface::OPTIONS]
196-
);
197-
}
198-
if (isset($data[AttributeMetadataInterface::VALIDATION_RULES])) {
199-
$validationRules = [];
200-
foreach ($data[AttributeMetadataInterface::VALIDATION_RULES] as $validationRuleData) {
201-
$validationRules[] = $this->validationRuleFactory->create(['data' => $validationRuleData]);
202-
}
203-
$data[AttributeMetadataInterface::VALIDATION_RULES] = $validationRules;
204-
}
205-
return $this->attributeMetadataFactory->create(['data' => $data]);
206-
}
207-
208-
/**
209-
* Create and populate with data OptionInterface
210-
*
211-
* @param array $data
212-
* @return OptionInterface[]
213-
*/
214-
private function createOptions($data)
215-
{
216-
foreach ($data as $key => $optionData) {
217-
if (isset($optionData[OptionInterface::OPTIONS])) {
218-
$optionData[OptionInterface::OPTIONS] = $this->createOptions($optionData[OptionInterface::OPTIONS]);
219-
}
220-
$data[$key] = $this->optionFactory->create(['data' => $optionData]);
221-
}
222-
return $data;
223-
}
224164
}
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
<?php
2+
/**
3+
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Customer\Model\Metadata;
7+
8+
use Magento\Customer\Api\Data\AttributeMetadataInterface;
9+
use Magento\Customer\Api\Data\AttributeMetadataInterfaceFactory;
10+
use Magento\Customer\Api\Data\OptionInterface;
11+
use Magento\Customer\Api\Data\OptionInterfaceFactory;
12+
use Magento\Customer\Api\Data\ValidationRuleInterfaceFactory;
13+
14+
/**
15+
* Factory for AttributeMetadataInterface
16+
*/
17+
class AttributeMetadataFactory
18+
{
19+
/**
20+
* @var AttributeMetadataInterfaceFactory
21+
*/
22+
private $attributeMetadataFactory;
23+
24+
/**
25+
* @var OptionInterfaceFactory
26+
*/
27+
private $optionFactory;
28+
29+
/**
30+
* @var ValidationRuleInterfaceFactory
31+
*/
32+
private $validationRuleFactory;
33+
34+
/**
35+
* Constructor
36+
*
37+
* @param AttributeMetadataInterfaceFactory $attributeMetadataFactory
38+
* @param OptionInterfaceFactory $optionFactory
39+
* @param ValidationRuleInterfaceFactory $validationRuleFactory
40+
*/
41+
public function __construct(
42+
AttributeMetadataInterfaceFactory $attributeMetadataFactory,
43+
OptionInterfaceFactory $optionFactory,
44+
ValidationRuleInterfaceFactory $validationRuleFactory
45+
) {
46+
$this->attributeMetadataFactory = $attributeMetadataFactory;
47+
$this->optionFactory = $optionFactory;
48+
$this->validationRuleFactory = $validationRuleFactory;
49+
}
50+
51+
/**
52+
* Create and populate with data AttributeMetadataInterface
53+
*
54+
* @param array $data
55+
* @return AttributeMetadataInterface
56+
*/
57+
public function create($data)
58+
{
59+
if (isset($data[AttributeMetadataInterface::OPTIONS])) {
60+
$data[AttributeMetadataInterface::OPTIONS] = $this->createOptions(
61+
$data[AttributeMetadataInterface::OPTIONS]
62+
);
63+
}
64+
if (isset($data[AttributeMetadataInterface::VALIDATION_RULES])) {
65+
$validationRules = [];
66+
foreach ($data[AttributeMetadataInterface::VALIDATION_RULES] as $validationRuleData) {
67+
$validationRules[] = $this->validationRuleFactory->create(['data' => $validationRuleData]);
68+
}
69+
$data[AttributeMetadataInterface::VALIDATION_RULES] = $validationRules;
70+
}
71+
return $this->attributeMetadataFactory->create(['data' => $data]);
72+
}
73+
74+
/**
75+
* Create and populate with data OptionInterface
76+
*
77+
* @param array $data
78+
* @return OptionInterface[]
79+
*/
80+
private function createOptions($data)
81+
{
82+
foreach ($data as $key => $optionData) {
83+
if (isset($optionData[OptionInterface::OPTIONS])) {
84+
$optionData[OptionInterface::OPTIONS] = $this->createOptions($optionData[OptionInterface::OPTIONS]);
85+
}
86+
$data[$key] = $this->optionFactory->create(['data' => $optionData]);
87+
}
88+
return $data;
89+
}
90+
}

0 commit comments

Comments
 (0)