Skip to content

Commit f6d39ea

Browse files
author
Alexander Paliarush
committed
MAGETWO-38565: Implement Extension Attribute Filter Mapping
- Changed schema of extension_attributes.xml - Renamed JoinDataFactory into JoinDataInterfaceFactory
1 parent 0a988d3 commit f6d39ea

File tree

14 files changed

+99
-108
lines changed

14 files changed

+99
-108
lines changed

dev/tests/integration/testsuite/Magento/ConfigurableProduct/etc/extension_attributes.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
reference_field="attribute_id"
1414
join_on_field="product_super_attribute_id"
1515
>
16-
<select_field>attribute_code</select_field>
16+
<field>attribute_code</field>
1717
</join>
1818
</attribute>
1919
</extension_attributes>

dev/tests/integration/testsuite/Magento/Customer/etc/extension_attributes.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
reference_field="entity_id"
1313
join_on_field="parent_id"
1414
>
15-
<select_field>group_id</select_field>
15+
<field>group_id</field>
1616
</join>
1717
</attribute>
1818
</extension_attributes>

dev/tests/integration/testsuite/Magento/Downloadable/etc/extension_attributes.xml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@
66
*/
77
-->
88
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9-
xsi:noNamespaceSchemaLocation="../../../../../../../../lib/internal/Magento/Framework/Api/etc/extension_attributes.xsd">
9+
xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/Api/etc/extension_attributes.xsd">
1010
<extension_attributes for="Magento\Downloadable\Api\Data\LinkInterface">
1111
<attribute code="testAttribute" type="Magento\User\Model\UserInterface">
1212
<join reference_table="admin_user"
1313
join_on_field="product_id"
1414
reference_field="user_id"
1515
>
16-
<select_field>firstname</select_field>
17-
<select_field>lastname</select_field>
18-
<select_field>email</select_field>
16+
<field>firstname</field>
17+
<field>lastname</field>
18+
<field>email</field>
1919
</join>
2020
</attribute>
2121
</extension_attributes>
@@ -25,9 +25,9 @@
2525
join_on_field="product_id"
2626
reference_field="user_id"
2727
>
28-
<select_field>firstname</select_field>
29-
<select_field>lastname</select_field>
30-
<select_field>email</select_field>
28+
<field>firstname</field>
29+
<field>lastname</field>
30+
<field>email</field>
3131
</join>
3232
</attribute>
3333
</extension_attributes>

dev/tests/integration/testsuite/Magento/Framework/Api/ExtensionAttribute/JoinProcessorTest.php

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use Magento\Framework\Api\ExtensionAttribute\Config\Converter;
99
use Magento\Framework\Api\ExtensionAttribute\Config\Reader;
1010
use Magento\Framework\Api\ExtensionAttribute\JoinData;
11-
use Magento\Framework\Api\ExtensionAttribute\JoinDataFactory;
11+
use Magento\Framework\Api\ExtensionAttribute\JoinDataInterfaceFactory;
1212
use Magento\Framework\Reflection\TypeProcessor;
1313
use Magento\Framework\App\Resource as AppResource;
1414

@@ -24,7 +24,7 @@ class JoinProcessorTest extends \PHPUnit_Framework_TestCase
2424
private $config;
2525

2626
/**
27-
* @var JoinDataFactory|\PHPUnit_Framework_MockObject_MockObject
27+
* @var JoinDataInterfaceFactory|\PHPUnit_Framework_MockObject_MockObject
2828
*/
2929
private $extensionAttributeJoinDataFactory;
3030

@@ -44,11 +44,11 @@ protected function setUp()
4444
->disableOriginalConstructor()
4545
->getMock();
4646
$this->extensionAttributeJoinDataFactory = $this
47-
->getMockBuilder('Magento\Framework\Api\ExtensionAttribute\JoinDataFactory')
47+
->getMockBuilder('Magento\Framework\Api\ExtensionAttribute\JoinDataInterfaceFactory')
4848
->disableOriginalConstructor()
4949
->getMock();
5050
$this->extensionAttributeJoinDataFactory = $this
51-
->getMockBuilder('Magento\Framework\Api\ExtensionAttribute\JoinDataFactory')
51+
->getMockBuilder('Magento\Framework\Api\ExtensionAttribute\JoinDataInterfaceFactory')
5252
->disableOriginalConstructor()
5353
->getMock();
5454
$this->typeProcessor = $this->getMockBuilder('Magento\Framework\Reflection\TypeProcessor')
@@ -103,9 +103,9 @@ public function testProcess()
103103
[
104104
[
105105
'external_alias' => 'review_id',
106-
'internal_alias' => 'extension_attribute_review_id_review_id',
107-
'with_db_prefix' => 'extension_attribute_review_id.review_id',
108-
'setter' => 'serReviewId',
106+
'internal_alias' => 'extension_attribute_review_id_db_review_id',
107+
'with_db_prefix' => 'extension_attribute_review_id.db_review_id',
108+
'setter' => 'setReviewId',
109109
]
110110
],
111111
$extensionAttributeJoinData->getSelectFields()
@@ -122,13 +122,13 @@ private function getConfig()
122122
Converter::JOIN_DIRECTIVE => [
123123
Converter::JOIN_REFERENCE_TABLE => "reviews",
124124
Converter::JOIN_REFERENCE_FIELD => "product_id",
125-
Converter::JOIN_SELECT_FIELDS => [
125+
Converter::JOIN_FIELDS => [
126126
[
127-
Converter::JOIN_SELECT_FIELD => "review_id",
128-
Converter::JOIN_SELECT_FIELD_SETTER => "serReviewId",
127+
Converter::JOIN_FIELD => "review_id",
128+
Converter::JOIN_FIELD_COLUMN => "db_review_id",
129129
],
130130
],
131-
Converter::JOIN_JOIN_ON_FIELD => "id",
131+
Converter::JOIN_ON_FIELD => "id",
132132
],
133133
],
134134
],
@@ -138,31 +138,31 @@ private function getConfig()
138138
Converter::RESOURCE_PERMISSIONS => [],
139139
Converter::JOIN_DIRECTIVE => [
140140
Converter::JOIN_REFERENCE_TABLE => "library_account",
141-
Converter::JOIN_SELECT_FIELDS => [
141+
Converter::JOIN_FIELDS => [
142142
[
143-
Converter::JOIN_SELECT_FIELD => "library_card_id",
144-
Converter::JOIN_SELECT_FIELD_SETTER => "",
143+
Converter::JOIN_FIELD => "library_card_id",
144+
Converter::JOIN_FIELD_COLUMN => "",
145145
],
146146
],
147-
Converter::JOIN_JOIN_ON_FIELD => "customer_id",
147+
Converter::JOIN_ON_FIELD => "customer_id",
148148
],
149149
],
150150
'reviews' => [
151151
Converter::DATA_TYPE => 'Magento\Reviews\Api\Data\Reviews[]',
152152
Converter::RESOURCE_PERMISSIONS => [],
153153
Converter::JOIN_DIRECTIVE => [
154154
Converter::JOIN_REFERENCE_TABLE => "reviews",
155-
Converter::JOIN_SELECT_FIELDS => [
155+
Converter::JOIN_FIELDS => [
156156
[
157-
Converter::JOIN_SELECT_FIELD => "comment",
158-
Converter::JOIN_SELECT_FIELD_SETTER => "",
157+
Converter::JOIN_FIELD => "comment",
158+
Converter::JOIN_FIELD_COLUMN => "",
159159
],
160160
[
161-
Converter::JOIN_SELECT_FIELD => "rating",
162-
Converter::JOIN_SELECT_FIELD_SETTER => "",
161+
Converter::JOIN_FIELD => "rating",
162+
Converter::JOIN_FIELD_COLUMN => "",
163163
],
164164
],
165-
Converter::JOIN_JOIN_ON_FIELD => "customer_id",
165+
Converter::JOIN_ON_FIELD => "customer_id",
166166
],
167167
],
168168
],

dev/tests/integration/testsuite/Magento/Framework/Api/_files/extension_attributes.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,17 @@
1616
join_on_field="id"
1717
reference_field="id"
1818
>
19-
<select_field>qty</select_field>
19+
<field>qty</field>
2020
</join>
2121
</attribute>
2222
<attribute code="reviews" type="Magento\Reviews\Api\Data\Reviews[]">
2323
<join reference_table="reviews"
2424
reference_field="product_id"
2525
join_on_field="id"
2626
>
27-
<select_field>comment</select_field>
28-
<select_field>rating</select_field>
29-
<select_field>date</select_field>
27+
<field>comment</field>
28+
<field>rating</field>
29+
<field>date</field>
3030
</join>
3131
</attribute>
3232
</extension_attributes>

dev/tests/integration/testsuite/Magento/Framework/Api/etc/extension_attributes.xml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
join_on_field="entity_id"
1717
reference_field="product_id"
1818
>
19-
<select_field>qty</select_field>
20-
<select_field>item_id</select_field>
19+
<field>qty</field>
20+
<field>item_id</field>
2121
</join>
2222
</attribute>
2323
<attribute code="test_stock_item_qty" type="string">
@@ -28,7 +28,7 @@
2828
join_on_field="entity_id"
2929
reference_field="product_id"
3030
>
31-
<select_field>qty</select_field>
31+
<field>qty</field>
3232
</join>
3333
</attribute>
3434
</extension_attributes>
@@ -39,16 +39,16 @@
3939
join_on_field="group_id"
4040
reference_field="customer_group_id"
4141
>
42-
<select_field>customer_group_code</select_field>
42+
<field>customer_group_code</field>
4343
</join>
4444
</attribute>
4545
<attribute code="test_group" type="Magento\Customer\Api\Data\GroupInterface">
4646
<join reference_table="customer_group"
4747
join_on_field="group_id"
4848
reference_field="customer_group_id"
4949
>
50-
<select_field>tax_class_id</select_field>
51-
<select_field setter_name="setCode">customer_group_code</select_field>
50+
<field>tax_class_id</field>
51+
<field column="customer_group_code">code</field>
5252
</join>
5353
</attribute>
5454
</extension_attributes>
@@ -59,16 +59,16 @@
5959
reference_field="attribute_id"
6060
join_on_field="customer_group_id"
6161
>
62-
<select_field>attribute_code</select_field>
62+
<field>attribute_code</field>
6363
</join>
6464
</attribute>
6565
<attribute code="test_complex_dummy_attribute" type="Magento\Catalog\Api\Data\ProductAttributeInterface">
6666
<join reference_table="admin_user"
6767
reference_field="user_id"
6868
join_on_field="customer_group_id"
6969
>
70-
<select_field setter_name="setAttributeCode">username</select_field>
71-
<select_field setter_name="setFrontendLabel">firstname</select_field>
70+
<field column="username">attribute_code</field>
71+
<field column="firstname">frontend_label</field>
7272
</join>
7373
</attribute>
7474
</extension_attributes>
@@ -79,7 +79,7 @@
7979
reference_field="attribute_id"
8080
join_on_field="entity_id"
8181
>
82-
<select_field>attribute_code</select_field>
82+
<field>attribute_code</field>
8383
</join>
8484
</attribute>
8585
</extension_attributes>

dev/tests/integration/testsuite/Magento/Quote/etc/extension_attributes.xml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@
66
*/
77
-->
88
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9-
xsi:noNamespaceSchemaLocation="../../../../../../../../lib/internal/Magento/Framework/Api/etc/extension_attributes.xsd">
9+
xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/Api/etc/extension_attributes.xsd">
1010
<extension_attributes for="Magento\Quote\Api\Data\CartInterface">
1111
<attribute code="quoteTestAttribute" type="Magento\User\Model\UserInterface">
1212
<join reference_table="admin_user"
1313
join_on_field="store_id"
1414
reference_field="user_id"
1515
>
16-
<select_field>firstname</select_field>
17-
<select_field>lastname</select_field>
18-
<select_field>email</select_field>
16+
<field>firstname</field>
17+
<field>lastname</field>
18+
<field>email</field>
1919
</join>
2020
</attribute>
2121
</extension_attributes>
@@ -25,9 +25,9 @@
2525
join_on_field="store_id"
2626
reference_field="user_id"
2727
>
28-
<select_field>firstname</select_field>
29-
<select_field>lastname</select_field>
30-
<select_field>email</select_field>
28+
<field>firstname</field>
29+
<field>lastname</field>
30+
<field>email</field>
3131
</join>
3232
</attribute>
3333
</extension_attributes>

lib/internal/Magento/Framework/Api/ExtensionAttribute/Config/Converter.php

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@ class Converter implements \Magento\Framework\Config\ConverterInterface
99
{
1010
const RESOURCE_PERMISSIONS = "resourceRefs";
1111
const DATA_TYPE = "type";
12+
1213
const JOIN_DIRECTIVE = "join";
1314
const JOIN_REFERENCE_TABLE = "join_reference_table";
1415
const JOIN_REFERENCE_FIELD = "join_reference_field";
15-
const JOIN_SELECT_FIELDS = "join_select_fields";
16-
const JOIN_SELECT_FIELD = "select_field";
17-
const JOIN_SELECT_FIELD_SETTER = "setter_name";
18-
const JOIN_JOIN_ON_FIELD= "join_join_on_field";
16+
const JOIN_ON_FIELD= "join_on_field";
17+
18+
const JOIN_FIELDS = "fields";
19+
const JOIN_FIELD = "field";
20+
const JOIN_FIELD_COLUMN = "column";
1921

2022
/**
2123
* Convert dom node tree to array
@@ -83,16 +85,15 @@ private function processJoinElement($joinElement, $attribute)
8385
$joinAttributes = $joinElement->attributes;
8486
$join = [
8587
self::JOIN_REFERENCE_TABLE => $joinAttributes->getNamedItem('reference_table')->nodeValue,
86-
self::JOIN_JOIN_ON_FIELD => $joinAttributes->getNamedItem('join_on_field')->nodeValue,
88+
self::JOIN_ON_FIELD => $joinAttributes->getNamedItem('join_on_field')->nodeValue,
8789
self::JOIN_REFERENCE_FIELD => $joinAttributes->getNamedItem('reference_field')->nodeValue,
8890
];
89-
$selectElements = $attribute->getElementsByTagName('select_field');
90-
foreach ($selectElements as $selectElement) {
91-
$selectField = $selectElement->nodeValue;
92-
$setterName = $selectElement->getAttribute('setter_name');
93-
$join[self::JOIN_SELECT_FIELDS][] = [
94-
self::JOIN_SELECT_FIELD => $selectField,
95-
self::JOIN_SELECT_FIELD_SETTER => $setterName
91+
$fields = $attribute->getElementsByTagName('field');
92+
foreach ($fields as $field) {
93+
$column = $field->getAttribute('column');
94+
$join[self::JOIN_FIELDS][] = [
95+
self::JOIN_FIELD => $field->nodeValue,
96+
self::JOIN_FIELD_COLUMN => $column
9697
];
9798
}
9899
}

lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinDataFactory.php renamed to lib/internal/Magento/Framework/Api/ExtensionAttribute/JoinDataInterfaceFactory.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88

99
/**
1010
* Factory class for @see
11-
* \Magento\Framework\Api\ExtensionAttribute\JoinData
11+
* \Magento\Framework\Api\ExtensionAttribute\JoinDataInterface
1212
*/
13-
class JoinDataFactory
13+
class JoinDataInterfaceFactory
1414
{
1515
/**
1616
* Object Manager instance

0 commit comments

Comments
 (0)