From 16f4390d220df6de83ab6ab3b6ed4b95d544a5f8 Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Thu, 10 Feb 2022 12:50:31 +0000 Subject: [PATCH] Ignore duplicate schema resource registrations Closes gh-230 --- .../graphql/execution/DefaultGraphQlSourceBuilder.java | 4 +++- .../execution/DefaultGraphQlSourceBuilderTests.java | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/spring-graphql/src/main/java/org/springframework/graphql/execution/DefaultGraphQlSourceBuilder.java b/spring-graphql/src/main/java/org/springframework/graphql/execution/DefaultGraphQlSourceBuilder.java index 5a3b2185..1a4b284d 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/execution/DefaultGraphQlSourceBuilder.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/execution/DefaultGraphQlSourceBuilder.java @@ -21,8 +21,10 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.function.BiFunction; import java.util.function.Consumer; @@ -57,7 +59,7 @@ import org.springframework.util.Assert; */ class DefaultGraphQlSourceBuilder implements GraphQlSource.Builder { - private final List schemaResources = new ArrayList<>(); + private final Set schemaResources = new LinkedHashSet<>(); private final List runtimeWiringConfigurers = new ArrayList<>(); diff --git a/spring-graphql/src/test/java/org/springframework/graphql/execution/DefaultGraphQlSourceBuilderTests.java b/spring-graphql/src/test/java/org/springframework/graphql/execution/DefaultGraphQlSourceBuilderTests.java index 19fd6a30..d10c0a3a 100644 --- a/spring-graphql/src/test/java/org/springframework/graphql/execution/DefaultGraphQlSourceBuilderTests.java +++ b/spring-graphql/src/test/java/org/springframework/graphql/execution/DefaultGraphQlSourceBuilderTests.java @@ -26,6 +26,7 @@ import graphql.schema.idl.RuntimeWiring; import graphql.schema.idl.WiringFactory; import org.junit.jupiter.api.Test; +import org.springframework.graphql.BookSource; import org.springframework.graphql.GraphQlSetup; import static org.assertj.core.api.Assertions.assertThat; @@ -38,6 +39,12 @@ import static org.mockito.Mockito.mock; */ public class DefaultGraphQlSourceBuilderTests { + @Test // gh-230 + void duplicateResourcesAreIgnored() { + // This should not fail with schema errors + GraphQlSetup.schemaResource(BookSource.schema, BookSource.schema).toGraphQlSource(); + } + @Test void wiringFactoryList() {