Skip to content

Commit c1cec3b

Browse files
author
Igor Melnikov
committed
MAGETWO-64224: Remove usages of AttributeCache from customer module
- refactoring to do not use methods that are not part of interface
1 parent 1a05fb3 commit c1cec3b

File tree

2 files changed

+37
-16
lines changed

2 files changed

+37
-16
lines changed

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ class AttributeMetadataCache
4444
private $isAttributeCacheEnabled;
4545

4646
/**
47-
* @var AttributeMetadataFactory
47+
* @var AttributeMetadataHydrator
4848
*/
49-
private $attributeMetadataFactory;
49+
private $attributeMetadataHydrator;
5050

5151
/**
5252
* @var SerializerInterface
@@ -58,19 +58,19 @@ class AttributeMetadataCache
5858
*
5959
* @param CacheInterface $cache
6060
* @param StateInterface $state
61-
* @param AttributeMetadataFactory $attributeMetadataFactory
6261
* @param SerializerInterface $serializer
62+
* @param AttributeMetadataHydrator $attributeMetadataHydrator
6363
*/
6464
public function __construct(
6565
CacheInterface $cache,
6666
StateInterface $state,
67-
AttributeMetadataFactory $attributeMetadataFactory,
68-
SerializerInterface $serializer
67+
SerializerInterface $serializer,
68+
AttributeMetadataHydrator $attributeMetadataHydrator
6969
) {
7070
$this->cache = $cache;
7171
$this->state = $state;
72-
$this->attributeMetadataFactory = $attributeMetadataFactory;
7372
$this->serializer = $serializer;
73+
$this->attributeMetadataHydrator = $attributeMetadataHydrator;
7474
}
7575

7676
/**
@@ -92,7 +92,7 @@ public function load($entityType, $suffix = '')
9292
$attributesData = $this->serializer->unserialize($serializedData);
9393
$attributes = [];
9494
foreach ($attributesData as $key => $attributeData) {
95-
$attributes[$key] = $this->attributeMetadataFactory->create($attributeData);
95+
$attributes[$key] = $this->attributeMetadataHydrator->hydrate($attributeData);
9696
}
9797
$this->attributes[$entityType . $suffix] = $attributes;
9898
return $attributes;
@@ -109,14 +109,14 @@ public function load($entityType, $suffix = '')
109109
* @param string $suffix
110110
* @return void
111111
*/
112-
public function save($entityType, $attributes, $suffix = '')
112+
public function save($entityType, array $attributes, $suffix = '')
113113
{
114114
$this->attributes[$entityType . $suffix] = $attributes;
115115
if ($this->isEnabled()) {
116116
$cacheKey = self::ATTRIBUTE_METADATA_CACHE_PREFIX . $entityType . $suffix;
117117
$attributesData = [];
118118
foreach ($attributes as $key => $attribute) {
119-
$attributesData[$key] = $attribute->__toArray();
119+
$attributesData[$key] = $this->attributeMetadataHydrator->extract($attribute);
120120
}
121121
$serializedData = $this->serializer->serialize($attributesData);
122122
$this->cache->save(

app/code/Magento/Customer/Model/Metadata/AttributeMetadataFactory.php renamed to app/code/Magento/Customer/Model/Metadata/AttributeMetadataHydrator.php

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@
1010
use Magento\Customer\Api\Data\OptionInterface;
1111
use Magento\Customer\Api\Data\OptionInterfaceFactory;
1212
use Magento\Customer\Api\Data\ValidationRuleInterfaceFactory;
13+
use Magento\Framework\Reflection\DataObjectProcessor;
1314

1415
/**
15-
* Factory for AttributeMetadataInterface
16+
* Hydrator for AttributeMetadataInterface
1617
*/
17-
class AttributeMetadataFactory
18+
class AttributeMetadataHydrator
1819
{
1920
/**
2021
* @var AttributeMetadataInterfaceFactory
@@ -31,30 +32,38 @@ class AttributeMetadataFactory
3132
*/
3233
private $validationRuleFactory;
3334

35+
/**
36+
* @var DataObjectProcessor
37+
*/
38+
private $dataObjectProcessor;
39+
3440
/**
3541
* Constructor
3642
*
3743
* @param AttributeMetadataInterfaceFactory $attributeMetadataFactory
3844
* @param OptionInterfaceFactory $optionFactory
3945
* @param ValidationRuleInterfaceFactory $validationRuleFactory
46+
* @param DataObjectProcessor $dataObjectProcessor
4047
*/
4148
public function __construct(
4249
AttributeMetadataInterfaceFactory $attributeMetadataFactory,
4350
OptionInterfaceFactory $optionFactory,
44-
ValidationRuleInterfaceFactory $validationRuleFactory
51+
ValidationRuleInterfaceFactory $validationRuleFactory,
52+
DataObjectProcessor $dataObjectProcessor
4553
) {
4654
$this->attributeMetadataFactory = $attributeMetadataFactory;
4755
$this->optionFactory = $optionFactory;
4856
$this->validationRuleFactory = $validationRuleFactory;
57+
$this->dataObjectProcessor = $dataObjectProcessor;
4958
}
5059

5160
/**
52-
* Create and populate with data AttributeMetadataInterface
61+
* Convert array to AttributeMetadataInterface
5362
*
5463
* @param array $data
5564
* @return AttributeMetadataInterface
5665
*/
57-
public function create($data)
66+
public function hydrate(array $data)
5867
{
5968
if (isset($data[AttributeMetadataInterface::OPTIONS])) {
6069
$data[AttributeMetadataInterface::OPTIONS] = $this->createOptions(
@@ -72,12 +81,12 @@ public function create($data)
7281
}
7382

7483
/**
75-
* Create and populate with data OptionInterface
84+
* Convert AttributeMetadataInterface to array
7685
*
7786
* @param array $data
7887
* @return OptionInterface[]
7988
*/
80-
private function createOptions($data)
89+
private function createOptions(array $data)
8190
{
8291
foreach ($data as $key => $optionData) {
8392
if (isset($optionData[OptionInterface::OPTIONS])) {
@@ -87,4 +96,16 @@ private function createOptions($data)
8796
}
8897
return $data;
8998
}
99+
100+
/**
101+
* @param $attributeMetadata
102+
* @return array
103+
*/
104+
public function extract($attributeMetadata)
105+
{
106+
return $this->dataObjectProcessor->buildOutputDataArray(
107+
$attributeMetadata,
108+
AttributeMetadataInterface::class
109+
);
110+
}
90111
}

0 commit comments

Comments
 (0)