Skip to content

Commit 97fafa9

Browse files
authored
Remove legacy data loader registry lookup from execution context (#357)
* fix batch loader registry lookup to use fallback from environment * remove legacy dataLoaderRegistry lookup from execution context * fix missing import
1 parent f7fbd31 commit 97fafa9

File tree

6 files changed

+31
-66
lines changed

6 files changed

+31
-66
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package com.introproventures.graphql.jpa.query.autoconfigure;
22

33
import graphql.GraphQL;
4-
import org.dataloader.DataLoaderOptions;
5-
import org.dataloader.MappedBatchLoaderWithContext;
6-
import org.springframework.beans.factory.InitializingBean;
74
import org.springframework.beans.factory.ListableBeanFactory;
85
import org.springframework.boot.autoconfigure.AutoConfiguration;
96
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@@ -13,9 +10,6 @@
1310
import org.springframework.graphql.ExecutionGraphQlService;
1411
import org.springframework.graphql.execution.BatchLoaderRegistry;
1512
import org.springframework.graphql.execution.GraphQlSource;
16-
import reactor.core.publisher.Mono;
17-
18-
import static com.introproventures.graphql.jpa.query.schema.impl.BatchLoaderRegistry.newDataLoaderRegistry;
1913

2014
@AutoConfiguration(after = GraphQlAutoConfiguration.class)
2115
@ConditionalOnClass({GraphQL.class, GraphQlSource.class})
@@ -36,19 +30,4 @@ ExecutionGraphQlService executionGraphQlService(ListableBeanFactory beanFactory,
3630
batchLoaderRegistry);
3731
}
3832

39-
@Bean
40-
InitializingBean batchLoaderRegistryConfigurer(BatchLoaderRegistry batchLoaderRegistry) {
41-
return () -> {
42-
DataLoaderOptions options = DataLoaderOptions.newOptions()
43-
.setCachingEnabled(false);
44-
newDataLoaderRegistry(options)
45-
.getDataLoadersMap()
46-
.entrySet()
47-
.stream()
48-
.forEach(entry -> batchLoaderRegistry.forName(entry.getKey())
49-
.withOptions(options)
50-
.registerMappedBatchLoader((keys, env) ->
51-
Mono.fromCompletionStage(((MappedBatchLoaderWithContext) entry.getValue()).load(keys, env))));
52-
};
53-
}
5433
}

graphql-jpa-query-autoconfigure/src/main/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLSchemaFactoryBean.java

+17-15
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
package com.introproventures.graphql.jpa.query.autoconfigure;
22

3+
import java.util.Arrays;
4+
import java.util.Collection;
5+
import java.util.List;
6+
import java.util.Map;
7+
import java.util.Objects;
8+
import java.util.Optional;
9+
import java.util.Set;
10+
import java.util.concurrent.ConcurrentHashMap;
11+
import java.util.function.Function;
12+
import java.util.function.Predicate;
13+
import java.util.stream.Collectors;
14+
import java.util.stream.Stream;
315
import graphql.Internal;
416
import graphql.schema.DataFetcher;
517
import graphql.schema.FieldCoordinates;
@@ -20,19 +32,7 @@
2032
import graphql.util.TraversalControl;
2133
import graphql.util.TraverserContext;
2234
import org.springframework.beans.factory.config.AbstractFactoryBean;
23-
24-
import java.util.Arrays;
25-
import java.util.Collection;
26-
import java.util.List;
27-
import java.util.Map;
28-
import java.util.Objects;
29-
import java.util.Optional;
30-
import java.util.Set;
31-
import java.util.concurrent.ConcurrentHashMap;
32-
import java.util.function.Function;
33-
import java.util.function.Predicate;
34-
import java.util.stream.Collectors;
35-
import java.util.stream.Stream;
35+
import org.springframework.util.Assert;
3636

3737
import static graphql.Assert.assertTrue;
3838
import static graphql.schema.FieldCoordinates.coordinates;
@@ -62,12 +62,14 @@ public class GraphQLSchemaFactoryBean extends AbstractFactoryBean<GraphQLSchema>
6262

6363

6464
public GraphQLSchemaFactoryBean(GraphQLSchema[] managedGraphQLSchemas) {
65+
Assert.notEmpty(managedGraphQLSchemas, "Managed GraphQLSchema registrations can't be empty.");
66+
6567
this.managedGraphQLSchemas = managedGraphQLSchemas;
6668
}
6769

6870
@Override
69-
protected GraphQLSchema createInstance() throws Exception {
70-
71+
protected GraphQLSchema createInstance() {
72+
7173
GraphQLSchema.Builder schemaBuilder = GraphQLSchema.newSchema();
7274
GraphQLCodeRegistry.Builder codeRegistryBuilder = GraphQLCodeRegistry.newCodeRegistry();
7375
TypeTraverser typeTraverser = new TypeTraverser();

graphql-jpa-query-boot-starter-graphql/src/test/java/com/introproventures/graphql/jpa/query/boot/test/boot/autoconfigure/GraphQLJpaQueryGraphQlSourceAutoConfigurationTest.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,6 @@ public void contextIsAutoConfigured() {
8484
DataLoaderRegistry dataLoaderRegistry = newRegistry().build();
8585
batchLoaderRegistry.registerDataLoaders(dataLoaderRegistry, newContext().build());
8686

87-
assertThat(dataLoaderRegistry.getDataLoadersMap())
88-
.isNotEmpty()
89-
.containsOnlyKeys("Author.books", "Book.author");
87+
assertThat(dataLoaderRegistry.getDataLoadersMap()).isEmpty();
9088
}
9189
}

graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaExecutorContext.java

+6-12
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,6 @@
1919
import java.util.Arrays;
2020
import java.util.List;
2121
import java.util.function.Supplier;
22-
23-
import org.dataloader.DataLoaderRegistry;
24-
import org.slf4j.Logger;
25-
import org.slf4j.LoggerFactory;
26-
2722
import com.introproventures.graphql.jpa.query.schema.GraphQLExecutionInputFactory;
2823
import com.introproventures.graphql.jpa.query.schema.GraphQLExecutorContext;
2924
import graphql.ExecutionInput;
@@ -37,6 +32,9 @@
3732
import graphql.schema.GraphQLCodeRegistry;
3833
import graphql.schema.GraphQLSchema;
3934
import graphql.schema.visibility.GraphqlFieldVisibility;
35+
import org.dataloader.DataLoaderRegistry;
36+
import org.slf4j.Logger;
37+
import org.slf4j.LoggerFactory;
4038

4139
public class GraphQLJpaExecutorContext implements GraphQLExecutorContext {
4240

@@ -69,7 +67,7 @@ private GraphQLJpaExecutorContext(Builder builder) {
6967
@Override
7068
public ExecutionInput.Builder newExecutionInput() {
7169
DataLoaderRegistry dataLoaderRegistry = newDataLoaderRegistry();
72-
GraphQLContext context = newGraphQLContext(dataLoaderRegistry);
70+
GraphQLContext context = newGraphQLContext();
7371

7472
return executionInputFactory.create()
7573
.dataLoaderRegistry(dataLoaderRegistry)
@@ -87,12 +85,8 @@ public GraphQL.Builder newGraphQL() {
8785
.subscriptionExecutionStrategy(subscriptionExecutionStrategy.get());
8886
}
8987

90-
public GraphQLContext newGraphQLContext(DataLoaderRegistry dataLoaderRegistry) {
91-
GraphQLContext context = graphqlContext.get();
92-
93-
context.put("dataLoaderRegistry", dataLoaderRegistry);
94-
95-
return context;
88+
public GraphQLContext newGraphQLContext() {
89+
return graphqlContext.get();
9690
}
9791

9892
public DataLoaderRegistry newDataLoaderRegistry() {

graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaToManyDataFetcher.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import org.dataloader.MappedBatchLoaderWithContext;
2929

3030
import com.introproventures.graphql.jpa.query.support.GraphQLSupport;
31-
import graphql.GraphQLContext;
3231
import graphql.language.Argument;
3332
import graphql.language.Field;
3433
import graphql.schema.DataFetcher;
@@ -79,8 +78,7 @@ public Object get(DataFetchingEnvironment environment) {
7978

8079
protected DataLoader<Object, List<Object>> getDataLoader(DataFetchingEnvironment environment,
8180
String dataLoaderKey) {
82-
GraphQLContext context = environment.getContext();
83-
DataLoaderRegistry dataLoaderRegistry = context.get("dataLoaderRegistry");
81+
DataLoaderRegistry dataLoaderRegistry = environment.getDataLoaderRegistry();
8482

8583
if (!dataLoaderRegistry.getKeys()
8684
.contains(dataLoaderKey)) {

graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/impl/GraphQLJpaToOneDataFetcher.java

+6-12
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,19 @@
1616

1717
package com.introproventures.graphql.jpa.query.schema.impl;
1818

19-
import static javax.persistence.metamodel.Attribute.PersistentAttributeType.EMBEDDED;
20-
2119
import java.util.Optional;
22-
2320
import javax.persistence.metamodel.SingularAttribute;
24-
21+
import graphql.language.Argument;
22+
import graphql.language.Field;
23+
import graphql.schema.DataFetcher;
24+
import graphql.schema.DataFetchingEnvironment;
2525
import graphql.schema.GraphQLNamedType;
2626
import org.dataloader.DataLoader;
2727
import org.dataloader.DataLoaderOptions;
2828
import org.dataloader.DataLoaderRegistry;
2929
import org.dataloader.MappedBatchLoaderWithContext;
3030

31-
import graphql.GraphQLContext;
32-
import graphql.language.Argument;
33-
import graphql.language.Field;
34-
import graphql.schema.DataFetcher;
35-
import graphql.schema.DataFetchingEnvironment;
36-
import graphql.schema.GraphQLType;
31+
import static javax.persistence.metamodel.Attribute.PersistentAttributeType.EMBEDDED;
3732

3833
/**
3934
* One-To-Many DataFetcher that uses where argument to filter collection attributes
@@ -81,8 +76,7 @@ public Object get(DataFetchingEnvironment environment) {
8176

8277
protected DataLoader<Object, Object> getDataLoader(DataFetchingEnvironment environment,
8378
String dataLoaderKey) {
84-
GraphQLContext context = environment.getContext();
85-
DataLoaderRegistry dataLoaderRegistry = context.get("dataLoaderRegistry");
79+
DataLoaderRegistry dataLoaderRegistry = environment.getDataLoaderRegistry();
8680

8781
if (!dataLoaderRegistry.getKeys()
8882
.contains(dataLoaderKey)) {

0 commit comments

Comments
 (0)