7
7
8
8
namespace Magento \GraphQlResolverCache \Model \Resolver \Result ;
9
9
10
+ use Magento \Framework \Exception \ConfigurationMismatchException ;
10
11
use Magento \Framework \GraphQl \Query \ResolverInterface ;
11
12
use Magento \Framework \ObjectManagerInterface ;
12
13
@@ -64,7 +65,11 @@ public function getDehydratorForResolver(ResolverInterface $resolver): ?Dehydrat
64
65
if (array_key_exists ($ resolverClass , $ this ->dehydratorInstances )) {
65
66
return $ this ->dehydratorInstances [$ resolverClass ];
66
67
}
67
- $ resolverDehydrators = $ this ->getInstancesForResolver ($ resolver , $ this ->dehydratorConfig );
68
+ $ resolverDehydrators = $ this ->getInstancesForResolver (
69
+ $ resolver ,
70
+ $ this ->dehydratorConfig ,
71
+ DehydratorInterface::class
72
+ );
68
73
if (empty ($ resolverDehydrators )) {
69
74
$ this ->dehydratorInstances [$ resolverClass ] = null ;
70
75
} else {
@@ -87,7 +92,11 @@ public function getHydratorForResolver(ResolverInterface $resolver): ?HydratorIn
87
92
if (array_key_exists ($ resolverClass , $ this ->hydratorInstances )) {
88
93
return $ this ->hydratorInstances [$ resolverClass ];
89
94
}
90
- $ resolverHydrators = $ this ->getInstancesForResolver ($ resolver , $ this ->hydratorConfig );
95
+ $ resolverHydrators = $ this ->getInstancesForResolver (
96
+ $ resolver ,
97
+ $ this ->hydratorConfig ,
98
+ HydratorInterface::class
99
+ );
91
100
if (empty ($ resolverHydrators )) {
92
101
$ this ->hydratorInstances [$ resolverClass ] = null ;
93
102
} else {
@@ -117,10 +126,15 @@ private function getResolverClass(ResolverInterface $resolver): string
117
126
*
118
127
* @param ResolverInterface $resolver
119
128
* @param array $classesConfig
129
+ * @param string $interfaceName
120
130
* @return array
131
+ * @throws ConfigurationMismatchException
121
132
*/
122
- private function getInstancesForResolver (ResolverInterface $ resolver , array $ classesConfig ): array
123
- {
133
+ private function getInstancesForResolver (
134
+ ResolverInterface $ resolver ,
135
+ array $ classesConfig ,
136
+ string $ interfaceName
137
+ ): array {
124
138
$ resolverClassesConfig = [];
125
139
foreach ($ this ->getResolverClassChain ($ resolver ) as $ resolverClass ) {
126
140
if (isset ($ classesConfig [$ resolverClass ])) {
@@ -141,7 +155,13 @@ private function getInstancesForResolver(ResolverInterface $resolver, array $cla
141
155
});
142
156
$ dataProcessingInstances = [];
143
157
foreach ($ dataProcessingClassList as $ classData ) {
144
- $ dataProcessingInstances [] = $ this ->objectManager ->get ($ classData ['class ' ]);
158
+ if (is_a ($ classData ['class ' ], $ interfaceName , true )) {
159
+ $ dataProcessingInstances [] = $ this ->objectManager ->get ($ classData ['class ' ]);
160
+ } else {
161
+ throw new ConfigurationMismatchException (
162
+ __ ('%1 should implement %2 ' , $ classData ['class ' ], $ interfaceName )
163
+ );
164
+ }
145
165
}
146
166
return $ dataProcessingInstances ;
147
167
}
0 commit comments