Skip to content

Commit 6edb1a7

Browse files
committed
B2B-2658: Implement GraphQL Resolver Cache for Customer query
1 parent 8e3146b commit 6edb1a7

File tree

2 files changed

+28
-9
lines changed

2 files changed

+28
-9
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
"Hydrator %1 configured for resolver %2 must implement %3.","Hydrator %1 configured for resolver %2 must implement %3."
2+
"Deydrator %1 configured for resolver %2 must implement %3.","Dehydrator %1 configured for resolver %2 must implement %3."

app/code/Magento/GraphQlResolverCache/Model/Resolver/Result/HydratorDehydratorProvider.php

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -145,23 +145,40 @@ private function getInstancesForResolver(
145145
return [];
146146
}
147147
$dataProcessingClassList = [];
148-
foreach ($resolverClassesConfig as $classChain) {
148+
foreach ($resolverClassesConfig as $resolverClass => $classChain) {
149149
foreach ($classChain as $classData) {
150-
$dataProcessingClassList[] = $classData;
150+
if (is_a($classData['class'], $interfaceName, true)) {
151+
$dataProcessingClassList[] = $classData;
152+
} else {
153+
if ($interfaceName == HydratorInterface::class) {
154+
throw new ConfigurationMismatchException(
155+
__(
156+
'Hydrator %1 configured for resolver %2 must implement %3.',
157+
$classData['class'],
158+
$resolverClass,
159+
$interfaceName
160+
)
161+
);
162+
} else {
163+
throw new ConfigurationMismatchException(
164+
__(
165+
'Dehydrator %1 configured for resolver %2 must implement %3.',
166+
$classData['class'],
167+
$resolverClass,
168+
$interfaceName
169+
)
170+
);
171+
}
172+
173+
}
151174
}
152175
}
153176
usort($dataProcessingClassList, function ($data1, $data2) {
154177
return ((int)$data1['sortOrder'] > (int)$data2['sortOrder']) ? 1 : -1;
155178
});
156179
$dataProcessingInstances = [];
157180
foreach ($dataProcessingClassList as $classData) {
158-
if (is_a($classData['class'], $interfaceName, true)) {
159-
$dataProcessingInstances[] = $this->objectManager->get($classData['class']);
160-
} else {
161-
throw new ConfigurationMismatchException(
162-
__('%1 must implement %2', $classData['class'], $interfaceName)
163-
);
164-
}
181+
$dataProcessingInstances[] = $this->objectManager->get($classData['class']);
165182
}
166183
return $dataProcessingInstances;
167184
}

0 commit comments

Comments
 (0)