Skip to content

Commit 23e33eb

Browse files
author
Igor Melnikov
committed
MAGETWO-50549: Create Hydrator that allows convert data interface to array and array to data interface
Code review fixes
1 parent 9d9b89a commit 23e33eb

File tree

6 files changed

+53
-106
lines changed

6 files changed

+53
-106
lines changed

dev/tests/api-functional/_files/Magento/TestModuleDefaultHydrator/Model/ResourceModel/Address/ReadHandler.php

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,42 +5,47 @@
55
*/
66
namespace Magento\TestModuleDefaultHydrator\Model\ResourceModel\Address;
77

8-
use \Magento\Framework\EntityManager\Operation\ExtensionInterface;
9-
use Magento\Framework\EntityManager\MetadataPool;
10-
use Magento\Customer\Api\Data\AddressInterface;
8+
use Magento\Framework\EntityManager\Operation\ExtensionInterface;
9+
use Magento\Customer\Api\AddressRepositoryInterface;
10+
use Magento\Framework\Api\SearchCriteriaBuilder;
11+
use Magento\Customer\Api\Data\CustomerInterface;
1112
use Magento\Framework\EntityManager\EntityManager;
1213

1314
class ReadHandler implements ExtensionInterface
1415
{
1516
/**
1617
* @var EntityManager
1718
*/
18-
private $addressRepositoryInterface;
19+
private $addressRepository;
1920

21+
/**
22+
* @var SearchCriteriaBuilder
23+
*/
2024
private $searchCriteriaBuilder;
2125

2226
/**
23-
* @param \Magento\Customer\Api\AddressRepositoryInterface $addressRepositoryInterface
27+
* @param AddressRepositoryInterface $addressRepositoryInterface
28+
* @param SearchCriteriaBuilder $SearchCriteriaBuilder
2429
*/
2530
public function __construct(
26-
\Magento\Customer\Api\AddressRepositoryInterface $addressRepositoryInterface,
27-
\Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriBuilder
31+
\Magento\Customer\Api\AddressRepositoryInterface $addressRepository,
32+
\Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder
2833
) {
29-
$this->addressRepositoryInterface = $addressRepositoryInterface;
30-
$this->searchCriteriaBuilder = $searchCriteriBuilder;
34+
$this->addressRepository = $addressRepository;
35+
$this->searchCriteriaBuilder = $searchCriteriaBuilder;
3136
}
3237

3338
/**
34-
* @param object $entity
35-
* @return array
39+
* @param CustomerInterface $entity
40+
* @return CustomerInterface
3641
* @throws \Exception
3742
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
3843
*/
3944
public function execute($entity, $arguments = [])
4045
{
4146
$searchCriteria = $this->searchCriteriaBuilder->addFilter('parent_id', $entity->getId())
4247
->create();
43-
$addressesResult = $this->addressRepositoryInterface->getList($searchCriteria);
48+
$addressesResult = $this->addressRepository->getList($searchCriteria);
4449
$entity->setAddresses($addressesResult->getItems());
4550
return $entity;
4651
}

dev/tests/api-functional/_files/Magento/TestModuleDefaultHydrator/Model/ResourceModel/Address/SaveHandler.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Magento\Framework\EntityManager\Operation\ExtensionInterface;
99
use Magento\Framework\EntityManager\MetadataPool;
1010
use Magento\Framework\EntityManager\EntityManager;
11+
use Magento\Customer\Api\Data\CustomerInterface;
1112

1213
class SaveHandler implements ExtensionInterface
1314
{
@@ -26,9 +27,9 @@ public function __construct(
2627
}
2728

2829
/**
29-
* @param object $entity
30+
* @param CustomerInterface $entity
3031
* @param array $arguments
31-
* @return array
32+
* @return CustomerInterface
3233
* @throws \Exception
3334
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
3435
*/

dev/tests/api-functional/_files/Magento/TestModuleDefaultHydrator/Model/ResourceModel/ReadHandler.php

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
use Magento\Framework\EntityManager\MetadataPool;
1010
use Magento\Framework\EntityManager\EntityManager;
1111
use Magento\Framework\App\ResourceConnection;
12+
use Magento\Customer\Api\Data\CustomerInterface;
13+
use Magento\Customer\Api\Data\CustomerExtensionFactory;
14+
use Magento\TestModuleDefaultHydrator\Api\Data\ExtensionAttributeInterface;
15+
use Magento\TestModuleDefaultHydrator\Api\Data\ExtensionAttributeInterfaceFactory as ExtensionAttributeFactory;
1216

1317
class ReadHandler implements ExtensionInterface
1418
{
@@ -17,6 +21,16 @@ class ReadHandler implements ExtensionInterface
1721
*/
1822
private $entityManager;
1923

24+
/**
25+
* @var ExtensionAttributeFactory
26+
*/
27+
private $extensionAttributeFactory;
28+
29+
/**
30+
* @var CustomerExtensionFactory
31+
*/
32+
private $customerExtensionFactory;
33+
2034
/**
2135
* @var MetadataPool
2236
*/
@@ -29,52 +43,51 @@ class ReadHandler implements ExtensionInterface
2943

3044
/**
3145
* @param EntityManager $entityManager
46+
* @param ExtensionAttributeFactory $extensionAttributeFactory
47+
* @param CustomerExtensionFactory $customerExtensionFactory
48+
* @param MetadataPool $metadataPool
49+
* @param ResourceConnection $resourceConnection
3250
*/
3351
public function __construct(
3452
EntityManager $entityManager,
53+
ExtensionAttributeFactory $extensionAttributeFactory,
54+
CustomerExtensionFactory $customerExtensionFactory,
3555
MetadataPool $metadataPool,
3656
ResourceConnection $resourceConnection
3757
) {
3858
$this->entityManager = $entityManager;
59+
$this->extensionAttributeFactory = $extensionAttributeFactory;
60+
$this->customerExtensionFactory = $customerExtensionFactory;
3961
$this->metadataPool = $metadataPool;
4062
$this->resourceConnection = $resourceConnection;
4163
}
4264

4365
/**
44-
* @param object $entity
66+
* @param CustomerInterface $entity
4567
* @param array $arguments
46-
* @return array
68+
* @return CustomerInterface
4769
* @throws \Exception
4870
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
4971
*/
5072
public function execute($entity, $arguments = [])
5173
{
52-
$metadata = $this->metadataPool->getMetadata(
53-
\Magento\TestModuleDefaultHydrator\Api\Data\ExtensionAttributeInterface::class
54-
);
74+
$metadata = $this->metadataPool->getMetadata(ExtensionAttributeInterface::class);
5575
$connection = $this->resourceConnection->getConnectionByName(
5676
$metadata->getEntityConnectionName()
5777
);
58-
5978
$id = $connection->fetchOne(
6079
$connection->select()
6180
->from($metadata->getEntityTable(), [$metadata->getIdentifierField()])
6281
->where('customer_id = ?', $entity->getId())
6382
->limit(1)
6483
);
65-
66-
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
67-
68-
/** @var \Magento\TestModuleDefaultHydrator\Api\Data\ExtensionAttributeInterface $extensionAttribute */
69-
$extensionAttribute = $objectManager->create(
70-
\Magento\TestModuleDefaultHydrator\Api\Data\ExtensionAttributeInterface::class
71-
);
84+
$extensionAttribute = $this->extensionAttributeFactory->create();
7285
$extensionAttribute = $this->entityManager->load($extensionAttribute, $id);
73-
74-
/** @var \Magento\Customer\Api\Data\CustomerExtensionInterface $customerExtension */
75-
$customerExtension = $objectManager->create(\Magento\Customer\Api\Data\CustomerExtension::class);
76-
$customerExtension->setExtensionAttribute($extensionAttribute);
77-
86+
$customerExtension = $this->customerExtensionFactory->create(
87+
[
88+
'data' => ['extension_attribute' => $extensionAttribute]
89+
]
90+
);
7891
$entity->setExtensionAttributes($customerExtension);
7992
return $entity;
8093
}

dev/tests/api-functional/_files/Magento/TestModuleDefaultHydrator/Model/ResourceModel/SaveHandler.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ public function __construct(
2727
}
2828

2929
/**
30-
* @param object $entity
30+
* @param CustomerInterface $entity
3131
* @param array $arguments
32-
* @return array
32+
* @return CustomerInterface
3333
* @throws \Exception
3434
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
3535
*/

dev/tests/api-functional/_files/Magento/TestModuleDefaultHydrator/etc/di.xml

Lines changed: 0 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -74,75 +74,4 @@
7474
</argument>
7575
</arguments>
7676
</type>
77-
<!--<type name="Magento\Framework\Model\Resource\Db\Relation\ActionPool">
78-
<arguments>
79-
<argument name="relationActions" xsi:type="array">
80-
<item name="Magento\Customer\Api\Data\CustomerInterface" xsi:type="array">
81-
<item name="create" xsi:type="array">
82-
<item name="DefaultRelationsHandler" xsi:type="string">CustomerRelationsSaveAction</item>
83-
<item name="DefaultExtensionAttribtuesHandler" xsi:type="string">CustomerExtensionAttributesSaveAction</item>
84-
</item>
85-
</item>
86-
</argument>
87-
</arguments>
88-
</type>
89-
<virtualType name="CustomerRelationsSaveAction" type="Magento\Framework\Model\Resource\Db\Relation\DefaultSave">
90-
<arguments>
91-
<argument name="relationDefinitions" xsi:type="array">
92-
<item name="addresses" xsi:type="array">
93-
<item name="field" xsi:type="string">Addresses</item>
94-
<item name="entityType" xsi:type="string">Magento\Customer\Api\Data\AddressInterface</item>
95-
<item name="entityParentIdField" xsi:type="string">CustomerId</item>
96-
</item>
97-
</argument>
98-
</arguments>
99-
</virtualType>
100-
<virtualType name="CustomerExtensionAttributesSaveAction" type="Magento\Framework\Model\Resource\Db\Extension\DefaultSave">
101-
<arguments>
102-
<argument name="relationDefinitions" xsi:type="array">
103-
<item name="extension_attribute" xsi:type="array">
104-
<item name="field" xsi:type="string">ExtensionAttribute</item>
105-
<item name="entityType" xsi:type="string">Magento\CustomerExtensionAttribute\Api\Data\ExtensionAttributeInterface</item>
106-
<item name="entityParentIdField" xsi:type="string">CustomerId</item>
107-
</item>
108-
</argument>
109-
</arguments>
110-
</virtualType>
111-
<type name="Magento\Framework\Model\HookPool">
112-
<arguments>
113-
<argument name="hooks" xsi:type="array">
114-
<item name="Magento\Customer\Api\Data\CustomerInterface" xsi:type="array">
115-
<item name="beforeCreate" xsi:type="array">
116-
<item name="beforeSave" xsi:type="object">Magento\Customer\Model\Resource\Customer\BeforeSave</item>
117-
</item>
118-
<item name="afterCreate" xsi:type="array">
119-
<item name="afterSave" xsi:type="object">Magento\Customer\Model\Resource\Customer\AfterSave</item>
120-
</item>
121-
<item name="beforeUpdate" xsi:type="array">
122-
<item name="beforeSave" xsi:type="object">Magento\Customer\Model\Resource\Customer\BeforeSave</item>
123-
</item>
124-
<item name="afterUpdate" xsi:type="array">
125-
<item name="afterSave" xsi:type="object">Magento\Customer\Model\Resource\Customer\AfterSave</item>
126-
</item>
127-
<!- -<item name="afterRead" xsi:type="array">
128-
<item name="afterRead" xsi:type="object">Magento\Customer\Model\Resource\Customer\AfterRead</item>
129-
</item>- ->
130-
</item>
131-
</argument>
132-
</arguments>
133-
</type>
134-
<type name="Magento\Framework\Model\ValidatorPool">
135-
<arguments>
136-
<argument name="validators" xsi:type="array">
137-
<item name="Magento\Customer\Api\Data\CustomerInterface" xsi:type="array">
138-
<item name="beforeCreate" xsi:type="array">
139-
<item name="beforeSave" xsi:type="object">Magento\Customer\Model\Customer\Validator</item>
140-
</item>
141-
<item name="beforeUpdate" xsi:type="array">
142-
<item name="beforeSave" xsi:type="object">Magento\Customer\Model\Customer\Validator</item>
143-
</item>
144-
</item>
145-
</argument>
146-
</arguments>
147-
</type>-->
14877
</config>

lib/internal/Magento/Framework/EntityManager/CustomAttributesMapper.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ public function databaseToEntity($entityType, $data)
8787
AttributeInterface::ATTRIBUTE_CODE => $attribute->getAttributeCode(),
8888
AttributeInterface::VALUE => $data[$attribute->getAttributeCode()]
8989
];
90-
//unset($data[$attribute->getAttributeCode()]);
9190
}
9291
}
9392
return $data;

0 commit comments

Comments
 (0)