18
18
import graphql .servlet .core .DefaultGraphQLRootObjectBuilder ;
19
19
import graphql .servlet .config .DefaultGraphQLSchemaProvider ;
20
20
import graphql .servlet .config .ExecutionStrategyProvider ;
21
+ import graphql .servlet .config .GraphQLCodeRegistryProvider ;
21
22
import graphql .servlet .context .GraphQLContextBuilder ;
22
23
import graphql .servlet .core .GraphQLErrorHandler ;
23
24
import graphql .servlet .config .GraphQLMutationProvider ;
45
46
import graphql .execution .preparsed .PreparsedDocumentProvider ;
46
47
import graphql .schema .GraphQLObjectType ;
47
48
import graphql .schema .GraphQLType ;
49
+ import graphql .schema .GraphQLCodeRegistry ;
48
50
49
51
@ Component (
50
52
service ={javax .servlet .http .HttpServlet .class ,javax .servlet .Servlet .class },
@@ -67,6 +69,7 @@ public class OsgiGraphQLHttpServlet extends AbstractGraphQLHttpServlet {
67
69
private InstrumentationProvider instrumentationProvider = new NoOpInstrumentationProvider ();
68
70
private GraphQLErrorHandler errorHandler = new DefaultGraphQLErrorHandler ();
69
71
private PreparsedDocumentProvider preparsedDocumentProvider = NoOpPreparsedDocumentProvider .INSTANCE ;
72
+ private GraphQLCodeRegistryProvider codeRegistryProvider = () -> GraphQLCodeRegistry .newCodeRegistry ().build ();
70
73
71
74
private GraphQLSchemaProvider schemaProvider ;
72
75
@@ -191,6 +194,7 @@ private void doUpdateSchema() {
191
194
.mutation (mutationType )
192
195
.subscription (subscriptionType )
193
196
.additionalTypes (types )
197
+ .codeRegistry (codeRegistryProvider .getCodeRegistry ())
194
198
.build ());
195
199
}
196
200
@@ -208,6 +212,9 @@ public void bindProvider(GraphQLProvider provider) {
208
212
if (provider instanceof GraphQLTypesProvider ) {
209
213
typesProviders .add ((GraphQLTypesProvider ) provider );
210
214
}
215
+ if (provider instanceof GraphQLCodeRegistryProvider ) {
216
+ codeRegistryProvider = (GraphQLCodeRegistryProvider ) provider ;
217
+ }
211
218
updateSchema ();
212
219
}
213
220
public void unbindProvider (GraphQLProvider provider ) {
@@ -223,6 +230,9 @@ public void unbindProvider(GraphQLProvider provider) {
223
230
if (provider instanceof GraphQLTypesProvider ) {
224
231
typesProviders .remove (provider );
225
232
}
233
+ if (provider instanceof GraphQLCodeRegistryProvider ) {
234
+ codeRegistryProvider = () -> GraphQLCodeRegistry .newCodeRegistry ().build ();
235
+ }
226
236
updateSchema ();
227
237
}
228
238
@@ -322,6 +332,16 @@ public void unsetPreparsedDocumentProvider(PreparsedDocumentProvider preparsedDo
322
332
this .preparsedDocumentProvider = NoOpPreparsedDocumentProvider .INSTANCE ;
323
333
}
324
334
335
+ @ Reference (cardinality = ReferenceCardinality .OPTIONAL , policy = ReferencePolicy .DYNAMIC , policyOption = ReferencePolicyOption .GREEDY )
336
+ public void bindCodeRegistryProvider (GraphQLCodeRegistryProvider graphQLCodeRegistryProvider ) {
337
+ this .codeRegistryProvider = graphQLCodeRegistryProvider ;
338
+ updateSchema ();
339
+ }
340
+ public void unbindCodeRegistryProvider (GraphQLCodeRegistryProvider graphQLCodeRegistryProvider ) {
341
+ this .codeRegistryProvider = () -> GraphQLCodeRegistry .newCodeRegistry ().build ();
342
+ updateSchema ();
343
+ }
344
+
325
345
public GraphQLContextBuilder getContextBuilder () {
326
346
return contextBuilder ;
327
347
}
0 commit comments