Skip to content

Commit 35975f1

Browse files
chore(deps): bump spring-boot.version from 3.2.2 to 3.2.3 (#456)
* chore(deps): bump spring-boot.version from 3.2.2 to 3.2.3 Bumps `spring-boot.version` from 3.2.2 to 3.2.3. Updates `org.springframework.boot:spring-boot-dependencies` from 3.2.2 to 3.2.3 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](spring-projects/spring-boot@v3.2.2...v3.2.3) Updates `org.springframework.boot:spring-boot-maven-plugin` from 3.2.2 to 3.2.3 - [Release notes](https://github.com/spring-projects/spring-boot/releases) - [Commits](spring-projects/spring-boot@v3.2.2...v3.2.3) --- updated-dependencies: - dependency-name: org.springframework.boot:spring-boot-dependencies dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.springframework.boot:spring-boot-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> * Add batch loader registry configurer for Spring GraphQl Execution Service * Fix test * fix duplicate dataloader error * update batch dataloader test assertiion --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Igor Dianov <[email protected]>
1 parent 98257d8 commit 35975f1

File tree

7 files changed

+80
-3
lines changed

7 files changed

+80
-3
lines changed

autoconfigure/src/main/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLJpaQueryGraphQlExecutionAutoConfiguration.java

+36-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
package com.introproventures.graphql.jpa.query.autoconfigure;
22

3+
import static com.introproventures.graphql.jpa.query.schema.impl.BatchLoaderRegistry.getMappedBatchDataLoaderMap;
4+
35
import graphql.GraphQL;
6+
import java.util.Map;
7+
import java.util.concurrent.CompletableFuture;
8+
import org.dataloader.DataLoaderOptions;
9+
import org.springframework.beans.factory.InitializingBean;
410
import org.springframework.beans.factory.ListableBeanFactory;
511
import org.springframework.boot.autoconfigure.AutoConfiguration;
612
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
@@ -11,6 +17,7 @@
1117
import org.springframework.graphql.ExecutionGraphQlService;
1218
import org.springframework.graphql.execution.BatchLoaderRegistry;
1319
import org.springframework.graphql.execution.GraphQlSource;
20+
import reactor.core.publisher.Mono;
1421

1522
@AutoConfiguration(after = GraphQLJpaQueryGraphQlSourceAutoConfiguration.class)
1623
@ConditionalOnClass({ GraphQL.class, GraphQlSource.class })
@@ -19,7 +26,18 @@ public class GraphQLJpaQueryGraphQlExecutionAutoConfiguration {
1926
@Bean
2027
@ConditionalOnMissingBean
2128
BatchLoaderRegistry batchLoaderRegistry(ListableBeanFactory beanFactory) {
22-
return new GraphQlAutoConfiguration(beanFactory).batchLoaderRegistry();
29+
var batchLoaderRegistry = new GraphQlAutoConfiguration(beanFactory).batchLoaderRegistry();
30+
31+
DataLoaderOptions options = DataLoaderOptions.newOptions().setCachingEnabled(false);
32+
33+
batchLoaderRegistry
34+
.forName(GraphQLJpaQueryGraphQlExecutionAutoConfiguration.class.getName())
35+
.withOptions(options)
36+
.registerMappedBatchLoader((keys, env) ->
37+
Mono.fromCompletionStage(CompletableFuture.completedStage(Map.of()))
38+
);
39+
40+
return batchLoaderRegistry;
2341
}
2442

2543
@Bean
@@ -32,4 +50,21 @@ ExecutionGraphQlService executionGraphQlService(
3250
) {
3351
return new GraphQlAutoConfiguration(beanFactory).executionGraphQlService(graphQlSource, batchLoaderRegistry);
3452
}
53+
54+
@Bean
55+
InitializingBean batchLoaderRegistryConfigurer(BatchLoaderRegistry batchLoaderRegistry) {
56+
return () -> {
57+
DataLoaderOptions options = DataLoaderOptions.newOptions().setCachingEnabled(false);
58+
59+
getMappedBatchDataLoaderMap()
60+
.forEach((name, mappedBatchLoader) ->
61+
batchLoaderRegistry
62+
.forName(name)
63+
.withOptions(options)
64+
.registerMappedBatchLoader((keys, env) ->
65+
Mono.fromCompletionStage(mappedBatchLoader.load(keys, env))
66+
)
67+
);
68+
};
69+
}
3570
}

autoconfigure/src/test/java/com/introproventures/graphql/jpa/query/autoconfigure/GraphQLSchemaAutoConfigurationTest.java

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

3+
import static graphql.GraphQLContext.newContext;
34
import static graphql.annotations.AnnotationsSchemaCreator.newAnnotationsSchema;
45
import static graphql.schema.FieldCoordinates.coordinates;
56
import static graphql.schema.GraphQLCodeRegistry.newCodeRegistry;
@@ -9,6 +10,7 @@
910
import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring;
1011
import static java.util.Collections.emptyMap;
1112
import static org.assertj.core.api.Assertions.assertThat;
13+
import static org.dataloader.DataLoaderRegistry.newRegistry;
1214
import static org.springframework.transaction.TransactionDefinition.PROPAGATION_REQUIRED;
1315

1416
import com.introproventures.graphql.jpa.query.autoconfigure.support.AdditionalGraphQLType;
@@ -58,6 +60,7 @@
5860
import java.util.stream.Collectors;
5961
import java.util.stream.Stream;
6062
import org.assertj.core.api.InstanceOfAssertFactories;
63+
import org.dataloader.DataLoaderRegistry;
6164
import org.junit.jupiter.api.Test;
6265
import org.reactivestreams.Publisher;
6366
import org.reflections.Reflections;
@@ -69,6 +72,7 @@
6972
import org.springframework.context.annotation.Bean;
7073
import org.springframework.context.annotation.Configuration;
7174
import org.springframework.core.io.Resource;
75+
import org.springframework.graphql.execution.BatchLoaderRegistry;
7276
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
7377
import org.springframework.stereotype.Component;
7478
import org.springframework.transaction.TransactionDefinition;
@@ -101,6 +105,9 @@ public class GraphQLSchemaAutoConfigurationTest {
101105
@Autowired
102106
private GraphQLJpaQueryProperties graphQLJpaQueryProperties;
103107

108+
@Autowired
109+
BatchLoaderRegistry batchLoaderRegistry;
110+
104111
@SpringBootApplication
105112
@EnableGraphQLJpaQuerySchema(basePackageClasses = TestEntity.class)
106113
static class Application {
@@ -520,4 +527,12 @@ void configuresSubscriptionTransactionalExecutionStrategyCustomizer() {
520527
.isEqualTo(true);
521528
});
522529
}
530+
531+
@Test
532+
void batchLoaderRegistry() {
533+
DataLoaderRegistry dataLoaderRegistry = newRegistry().build();
534+
batchLoaderRegistry.registerDataLoaders(dataLoaderRegistry, newContext().build());
535+
536+
assertThat(dataLoaderRegistry.getDataLoadersMap()).isNotEmpty().containsKeys("TestEntity.children");
537+
}
523538
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.introproventures.graphql.jpa.query.autoconfigure.support;
2+
3+
import jakarta.persistence.Entity;
4+
import jakarta.persistence.Id;
5+
import lombok.Data;
6+
7+
@Entity
8+
@Data
9+
public class TestChildEntity {
10+
11+
@Id
12+
String id;
13+
}

autoconfigure/src/test/java/com/introproventures/graphql/jpa/query/autoconfigure/support/TestEntity.java

+5
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import jakarta.persistence.Entity;
44
import jakarta.persistence.Id;
5+
import jakarta.persistence.OneToMany;
6+
import java.util.Set;
57
import lombok.Data;
68

79
@Entity
@@ -10,4 +12,7 @@ public class TestEntity {
1012

1113
@Id
1214
private Long id;
15+
16+
@OneToMany
17+
Set<TestChildEntity> children;
1318
}

dependencies/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
</description>
1515

1616
<properties>
17-
<spring-boot.version>3.2.2</spring-boot.version>
17+
<spring-boot.version>3.2.3</spring-boot.version>
1818
<graphql-java.version>21.4</graphql-java.version>
1919
<evo-inflector.version>1.3</evo-inflector.version>
2020
<joda-time.version>2.12.7</joda-time.version>

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

+9
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,15 @@ public static void registerToOne(
3333
mappedToOneBatchLoaders.putIfAbsent(batchLoaderKey, mappedBatchLoader);
3434
}
3535

36+
public static Map<String, MappedBatchLoaderWithContext> getMappedBatchDataLoaderMap() {
37+
var loaders = new LinkedHashMap<String, MappedBatchLoaderWithContext>();
38+
39+
loaders.putAll(mappedToManyBatchLoaders);
40+
loaders.putAll(mappedToOneBatchLoaders);
41+
42+
return loaders;
43+
}
44+
3645
public static DataLoaderRegistry newDataLoaderRegistry(DataLoaderOptions dataLoaderOptions) {
3746
DataLoaderRegistry dataLoaderRegistry = new DataLoaderRegistry();
3847

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,6 @@ public void contextIsAutoConfigured() {
7979
DataLoaderRegistry dataLoaderRegistry = newRegistry().build();
8080
batchLoaderRegistry.registerDataLoaders(dataLoaderRegistry, newContext().build());
8181

82-
assertThat(dataLoaderRegistry.getDataLoadersMap()).isEmpty();
82+
assertThat(dataLoaderRegistry.getDataLoadersMap()).isNotEmpty().containsKeys("Author.books", "Book.author");
8383
}
8484
}

0 commit comments

Comments
 (0)